Showing results for 
Search instead for 
Did you mean: 

Address bits: CPU = 32, GPU = 64?

I was playing around with the new 2014 Intel OpenCL SDK, and I noticed that when compiling for Win32, CL_DEVICE_ADDRESS_BITS query returned 32 for the CPU, but 64 for the GPU.  That seems quite odd to me, is that correct?  If I compile for x64, then both return 64, which isn't too strange.


Also, is there any good reason why my CPU's CL_DEVICE_NAME starts with six spaces, e.g., "      Intel(R) Core(TM) i7-3630QM CPU @ 2.40GHz"?  My GPU's CL_DEVICE_NAME starts immediately with "Intel(R)...".

0 Kudos
1 Reply

Hi Sean,

OpenCL CPU device shares the same process with your application and Windows OS does not support processes with mixed 32/64 architecture. So YES, when you compile you application for 32bit architecture you will get 32-bit OpenCL CPU device. When you compile your application for 64-bit architecture you will get 64-bit OpenCL CPU device.

GPU is a separate piece of hardware with its own architecture and it is always seen as 64-bit OpenCL device.

Regarding the OpenCL CPU device name - it is extracted from the CPU hardware using cpuid assembler instruction. Unfortunately CPU HW returns a string with leading spaces.


0 Kudos