cancel
Showing results for 
Search instead for 
Did you mean: 

Archives Discussions

eynuel
Journeyman III

AMD OpenCL compiler ignores kernel attribute “work_group_size_hint”

I'm currently optimizing an OpenCL kernel, and have been trying to find optimal values for workgroup sizes and vector widths.

Currently I'm using an ubuntu system with an Intel i7-3930k (6 cores @ 3.5 GHz, HT disabled) and an AMD HD6870. Both Intel and AMD OpenCL implementations are installed to allow for comparisons. ( APP SDK v2.7 Linux 64b & Catalyst 12.4, Intel OpenCL SDK 1.5 ).

Running on the CPU (on Intel Platform) I've found that:

- By choosing a wg size of 256 I can gain about 13.5% performance in comparison to wgsize=1.

- By specifying `__attribute__((vec_type_hint(float4)))` I can gain a 30% boost.

- By specifying `__attribute__((work_group_size_hint(WG_SIZE, 1, 1)))` I get another ~90%

So, in total, theses options can result in close to a 3x performance increase. Unfortunately, when running this case on the the CPU using the AMD OpenCL platform, I've found that i can only get about 4% performance gain from specifying thw wgSize and the optional attributes are ignored.

Kernel declaration is:

    kernel

   __attribute__(( work_group_size_hint(WG_SIZE, 1, 1) ))

   __attribute__(( vec_type_hint(VEC_SIZE) ))

    void solveEikonalEq( global      env_packed_t*   env_packed_in,

                                  global      float*          packedEnvData_in,

                                  private     float           ds,

                                  private     float           freq,

                                  global      ray_t*          ray,

                                  global      rayMembers_t*   rayMembers){

And compiler output is:

    "/tmp/OCLVAvDqR.cl", line 2637: warning: unknown attribute "work_group_size_hint"

      kernel  __attribute__((work_group_size_hint(WG_SIZE, 1, 1)))

                                    ^

    "/tmp/OCLVAvDqR.cl", line 2638: warning: unknown attribute "vec_type_hint"

              __attribute__(( vec_type_hint(VEC_SIZE)))

                                    ^

Does AMD always ignore these hints? Or is there something i have to do to enable these attributes on the AMD platform?

From reading the opencl 1.1 spec i had the impression that supporting these kernel attributes was not optional (even if actually acting on them is)

0 Likes
4 Replies

Support for work group size hint has been added internally and should be in the next release. vec_type_hint is optional and not supported, but I'll file a request to add support to the parser.

Thank you Micah.

Guess for now I'll just leave it as it is.

0 Likes

Btw: any estimate as to when the  "next release" is?

0 Likes

new releases takes 3-6 months.

0 Likes