gpt4 book ai didi

opencl - 如何获取 OpenCL 设备的内核数?

转载 作者:行者123 更新时间:2023-12-01 15:43:21 26 4
gpt4 key购买 nike

在我的应用程序中,我想向用户显示各种 OpenCL 设备。
我无法决定如何显示设备中的内核数。
这只是为了了解有多少线程可以同时并行运行。

计算单位告诉我们多处理器的数量,这可以通过CL_DEVICE_MAX_COMPUTE_UNITS获得.
确定每个多处理器支持多少线程是CL_DEVICE_MAX_WORK_GROUP_SIZE正确的参数?

在我的笔记本电脑上获得了以下结果:

ATI 7670m GPU
CL_DEVICE_MAX_COMPUTE_UNITS = 6
CL_DEVICE_MAX_WORK_GROUP_SIZE = 256

Intel 3rd gen i5
CL_DEVICE_MAX_COMPUTE_UNITS = 4
CL_DEVICE_MAX_WORK_GROUP_SIZE = 1024

所以我的 GPU 有 1536 个线程 支持同时 CPU 支持 4096 个线程 ?
这显然不是真的,因此需要一些帮助。

最佳答案

CL_DEVICE_MAX_WORK_GROUP_SIZE 是工作组中允许的最大元素数。这与并行量无关。也就是说,没有规定工作组中的所有工作项都并行执行,而且我知道它们没有的实现。 (有一些方法可以处理像障碍这样的工作组同步结构。)

不幸的是,另一个值 CL_DEVICE_MAX_COMPUTE_UNITS 的定义也很模糊。至少对于英特尔来说,“计算单元”的数量通常是处理器,但对于 CPU 来说,它是一个硬件线程,而 GPU 是一个具有多个执行 channel 的 EU。我也不知道 ATI,但我敢打赌,在 CPU 实现中,6 个单元可能比 4 个“单元”提供更多的并行性。换句话说,“单位”是苹果和橙子。最大工作组大小中的 1024 和 256 与计算无关。

关于opencl - 如何获取 OpenCL 设备的内核数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23027029/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com