Address bits: CPU = 32, GPU = 64?

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)...".

2 posts / 0 new
Last post
For more complete information about compiler optimizations, see our Optimization Notice.

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.


Leave a Comment

Please sign in to add a comment. Not a member? Join today