I have some OpenCL1.1 application (Win7/64) that works fine when running on the CPU (Core i7) of one machine where the only GPU is nvidia.
Running the same app on another machine (Phenom X4 955 + HD 5750) will
1. only list one platform with only the GPU - no CPU device is visible
2. often crash on the first clWaitForEvents - no matter if the event is for a clEnqueue*Buffer, -Task or -NDRangeKernel, or multiple of them.
for 1.: How can I enable the CPU as an OpenCL device?
for 2.: As the stack indicates an invalid pointer read:
Attempt to read from address 00000000002cfff8
I assume a bug either already corrupted the memory, or I pass bad parameters. To verify that, I enabled page heap (gflags /p /full /enable my.exe). But this results in an abort in the very first CL-call, clGetPlatformIDs(0, NULL, &numplatforms):
And strange again, on the Core i7-box with the nvidia-GPU, enabling page heap reveals no error. For a last test I enabled page heap for one of the sample programs, and it crashes the same way as my app. Therefore the conclusion is that on my AMD box, without page heap, clGetPlatformIDs already corrupts the heap, just the crash happens later.
3. Is it possible to get the debug symbols for the OpenCL dlls so that the stack traces are more meaningful? Maybe there is some symbol server available?
4. Is this bug in clGetPlatformIDs already known (if it is there)? Is there some fix or workaround available (I updated the drivers, Windows tells its version 8.850.0.0, OpenCL says driver version: CAL 1.4.1385 (VM))? If not, where could I file a bug report?