cancel
Showing results for 
Search instead for 
Did you mean: 

Archives Discussions

maxdz8
Elite

CL_DEVICE_LINKER_AVAILABLE

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, 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.

0 Likes
1 Reply
sudarshan
Staff

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.