OpenCL getDeviceInfo:如何获取有关CPU内核的信息?

时间:2011-05-01 21:08:06

标签: opencl gpgpu

使用OpenCL的getDeviceInfo,可以获得可用计算单元的数量(CL_DEVICE_MAX_COMPUTE_UNITS)。在我的nVidia Geforce 8600GTS上,我有4个计算单元,每个单元有8个核心。使用getDeviceInfo(... CL_DEVICE_MAX_COMPUTE_UNITS ...),我得到4作为计算单元的答案。但是,如何获取有关每个计算单元的内核数量的信息?

OpenCL规范没有提供有关该主题的任何提示。有谁知道如何以标准方式检索每个计算单元的核心数量?

1 个答案:

答案 0 :(得分:5)

我无法察觉 - 即使底层的CUDA API目前也没有公开多处理器内部配置。在OpenCL的上下文中,计算单元可能是CPU的核心,通过API公开内部SIMD配置并没有多大意义,而且无论如何都不是那么有用。

NVIDIA确实提供了cl_nv_device_attribute_query扩展,它将为您提供设备的CUDA计算能力。然后,这将映射到每个计算单元的核心:

1.0, 1.1, 1.2, 1.3: 8 cores per execution unit
2.0: 32 cores per execution unit
2.1: 48 cores per execution unit

您可以将此代码编写为子程序,并在硬件更改时使其保持最新状态。基于NVIDIA硬件的细节并依赖于NVIDIA OpenCL扩展,上述所有内容都完全不可移植到其他平台。