14 Replies Latest reply on Aug 27, 2012 2:19 PM by rouellet

    AMD APP KernelAnalyzer and cl_amd_vec3

    settle

      I'm using AMD APP KernelAnalyzer 1.12.1288 with CAL 12.4 and attempting to use vec3 data types in my kernels.

       

      Source Code:

      #pragma OPENCL EXTENSION cl_amd_vec3 : enable

      __kernel void u3d(uint3 n, uint3 pitch, float h, __global float *u)

      {

          uint3 global_offset = (uint3)(get_global_offset(0), get_global_id(1), get_global_id(2));

          uint3 global_id = (uint3)(get_global_id(0), get_global_id(1), get_global_id(2));

       

          uint l = dot(convert_float3(global_id - global_offset), convert_float3(pitch));

          float3 x = -1 + convert_float3(global_id - global_offset) * h;

       

          u[l] = dot(sin(M_PI_F * x), 1);

      }

       

      If I include the pragma line I get:

      OpenCL Compile Error: clBuildProgram failed (CL_BUILD_PROGRAM_FAILURE).

       

      error: can't enable all OpenCL extensions or unrecognized OpenCL extension

        #pragma OPENCL EXTENSION cl_amd_vec3 : enable

                                                                             ^

       

      1 error detected.

       

       

      If I exclude the pragma line I get:

      OpenCL Compile Error: clBuildProgram failed (CL_BUILD_PROGRAM_FAILURE).

       

      calclCompile failedError: Creating kernel u3d failed!

       

       

      Can anyone tell me what I may be doing wrong or if this is a problem with the KernelAnalyzer?  Thanks!

        • Re: AMD APP KernelAnalyzer and cl_amd_vec3
          binying

          One question, by using the command clinfo, you see that the extension cl_amd_vec3 is supported on your GPUs?

          • Re: AMD APP KernelAnalyzer and cl_amd_vec3
            rouellet

            This appears to be a bug in the OpenCL support.

            When I add these pragmas to one of the APP SDK samples I see the same errors.

            I used the BoxFilter example, because it has code to report compilation errors.

            I will report open a bug report.

             

            c:\Users\rouellet.AMD\Documents\AMD APP\samples\opencl\bin\x86_64>BoxFilter.exe

            Running SAT version..

            Platform 0 : Advanced Micro Devices, Inc.

            Platform found : Advanced Micro Devices, Inc.

             

            Selected Platform Vendor : Advanced Micro Devices, Inc.

            Device 0 : Capeverde Device ID is 00000000001DF650

             

                                    BUILD LOG

            ************************************************

            "C:\Users\rouellet.AMD\AppData\Local\Temp\OCLE085.tmp.cl", line 1: error:

                      can't enable all OpenCL extensions or unrecognized OpenCL extension

              #pragma OPENCL EXTENSION cl_amd_vec3 : enable

                                                     ^

             

            "C:\Users\rouellet.AMD\AppData\Local\Temp\OCLE085.tmp.cl", line 2: warning:

                      ignore unrecognized OpenCL extension

              #pragma OPENCL EXTENSION cl_khr_fp64 : enable

                                                           ^

             

            1 error detected in the compilation of "C:\Users\rouellet.AMD\AppData\Local\Temp\OCLE085.tmp.cl".

             

            Internal error: clc compiler invocation failed.

             

            ************************************************

            Error: clBuildProgram failed. Error code : CL_BUILD_PROGRAM_FAILURE

            Location : SDKCommon.cpp:1614

            Error: sampleCommon::buildOpenCLProgram() failed

            Location : BoxFilterSAT.cpp:338

            • Re: AMD APP KernelAnalyzer and cl_amd_vec3
              settle

              Just a quick follow-up about the original issue with cl_amd_vec3 not being recognized.  If you query a device using clGetDeviceInfo for CL_DEVICE_OPENCL_C_VERSION and it returns OpenCL C 1.1 or 1.2 (and probably anything thereafter), then vec3's are already supported as per those specifications, so no extensions required.   So maybe the cl_amd_vec3 extension is only an issue for OpenCL C 1.0 devices.