1 Reply Latest reply on Apr 28, 2014 11:58 PM by sudarshan

    CL_DEVICE_LINKER_AVAILABLE

    maxdz8

      Hello, I'm trying to refresh my skills to more modern practices and after a small trip in DirectCompute, I'm now taking a look at OpenCL.

      For the time being, I'm just dumping some data about my GPU (a Capeverde, running driver 13.35.1005-140312a-169198E), I've written the following.

      cl_bool boolValue;
      #define QUERYBOOL(what) clGetDeviceInfo(devices[i], what, sizeof(boolValue), &boolValue, NULL);    cout<<#what<<"="<<boolValue<<endl;
      ...
      QUERYBOOL(CL_DEVICE_COMPILER_AVAILABLE);
      QUERYBOOL(CL_DEVICE_LINKER_AVAILABLE);
      ...
      

      To my surprise, output is:

      CL_DEVICE_COMPILER_AVAILABLE=1

      CL_DEVICE_LINKER_AVAILABLE=0

      Is this supposed to happen?

      Spec reads:

      Is CL_FALSE if the implementation does not have a linker available.

      Is CL_TRUE if the linker is available.

      This can be CL_FALSE for the embedded platform profile only.

      This must be CL_TRUE if CL_DEVICE_COMPILER_AVAILABLE is CL_TRUE.

      It is my understanding the macro should output 1.

      I assume this implies only full compile is supported.

        • Re: CL_DEVICE_LINKER_AVAILABLE
          sudarshan

          Hi,

          We have verified from our side and and the OCL runtime indeed returns CL_DEVICE_LINKER_AVAILABLE = 0. This seems to be a bug in OCL tool-chain and we will refer it to appropriate team for a fix.

           

          However the linker is actually available as could be checked by calling clCompileProgram() and clLinkProgram() APIs.

           

          Thank you for pointing this out.

          1 of 1 people found this helpful