oclDeviceQuery not returning CPU

I have 2 identical Dell Precision T3500 PCs (Xeon W3570 CPUs), running CentOS 5.5, with SDK 3.2. One system contains 2 NVIDIA GPUs (GTX 285 and a FX 1800), and the other a single AMD/ATI Radeon 5870. When I run oclDeviceQuery on the NVIDIA system, it finds the 2 GPUs but no mention of a CPU. When running it on the AMD system, it finds the CPU and GPU just fine. One difference is the NVIDIA system is running OpenCL 1.0 while the AMD system runs OpenCL 1.1. Could that be the problem? Is there a known issue with 1.0? I’d upgrade to OpenCL 1.1 but it’s a networked system so getting the IT guys to install OpenCL 1.1 could take a while.

Thanks for any insight…


That’s by design. As NVIDIA is not a CPU manufacturer like AMD is, NVIDIA’s OpenCL implementation only supports (NVIDIA) GPUs. AMD/ATI on the other hand manufacture both CPUs and GPUs, so it seems natural their OpenCL implementation supports both processor types. However, if you also want OpenCL support for the CPU in the NVIDIA system, you can install the AMD APP SDK in addition to the NVIDIA driver, or the Intel OpenCL SDK (I’d recommend the latter, as you’re using an Intel CPU).

Thanks…I was curious about this, wondering if I would encounter dueling drivers problems. So if were to install, say, the AMD APP driver on my NVIDIA system, the OpenCL runtime would know which compiler to use based on the targeted device? Perhaps I’d need to separate the CPU and GPU into different contexts?

Yes, exactly. If you’re interested in the technical details how this works, see the OpenCL ICD extension documentation.

Yes. AFAIK, there’s currently no OpenCL implementation that would allow to create a single context with mixed CPU and GPU devices, not even the AMD APP SDK with an AMD CPU and ATI GPU. So you’ll have to split the work manually across the CPU and GPU, very much as if you were using e.g. two GPUs by different vendors.