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

发布于 2024-11-04 14:22:30 字数 282 浏览 4 评论 0原文

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

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

With OpenCL's getDeviceInfo one can get the number of available compute units (CL_DEVICE_MAX_COMPUTE_UNITS). On my nVidia Geforce 8600GTS I have 4 compute units with 8 cores per unit. With getDeviceInfo(...CL_DEVICE_MAX_COMPUTE_UNITS...) I get 4 as answer for the compute units. But, how can I get the information about the number of cores per compute unit?

The OpenCL specification does not give any hint on that subject. Does anyone know how to retrieve the number of core per computation unit in a standard way?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

戈亓 2024-11-11 14:22:30

据我所知,即使是底层 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 扩展,以上所有内容完全不可移植到其他平台。

There is no way I am aware of - even the underlying CUDA APIs don't presently expose the multiprocessor internal configuration. In the context of OpenCL, where a compute unit might well be the core of a CPU, exposing the internal SIMD configuration via the API doesn't make that much sense, and isn't really all that useful anyway.

NVIDIA do provide the cl_nv_device_attribute_query extension which will give you the CUDA compute capability of the device. This then maps to cores per compute unit as:

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

It would be up to you to code this into a subroutine and keep it up to date as hardware changes. Being based on specifics of NVIDIA hardware and relying on an NVIDIA OpenCL extension, all of the above is totally non-portable to other platforms.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文