OpenCL、PyopenCL,为什么GTX970只有13个计算单元?如何找出并行进程的数量
OpenCL, PyopenCL, why GTX970 only has 13 compute units? How to find out the amount of processes in parallel
谁能告诉我为什么 OpenCL 告诉我我的 Nvidia Geforce GTX 970 只有 13 个最大计算单元?另外,最大计算单元是否等于执行单元 (EU)?因为在我的 Iris 6100 笔记本电脑上,device.max_compute_units 是 48,这与显卡的 EUs 相同。
import pyopencl as cl
platform = cl.get_platforms()[0]
device = platform.get_devices()[0] # Get the GPU ID
print device.max_compute_units
有人可以阐明这个问题吗?我想弄清楚这里可以并行执行多少个进程。所以也许我看错了参数?
万分感谢...
您无法查询核心数,只能查询计算单元数。 Intel 集成 GPU 通常每个计算单元只有 8 个内核,而 Nvidia 每个计算单元有 192 或 128 个内核。 Max_compute_units 是计算单元的数量,应该可用于设备分区以查找(和限制)分区,但通常只支持 CPU 进行设备分区。
可以并行执行多少个进程(工作项)取决于硬件的能力。对于 AMD 显卡,核心数可以达到 40 倍(即计算单元数的 64 倍)。例如,一个 8 个计算单元的 AMD GPU 可以有 20k(8 * 64 * 40) 个运行中的线程,在一个队列中还有更多。
可以从驱动程序更改最大计算单元数,我看到一个集成的 Intel GPU 尽管有 12 个计算单元但只显示 8 个计算单元,在 beta 驱动程序中,新的 AMD GPU 获得了对保留一些计算单元的支持用于某些应用程序中的音频计算,因此通用计算内核可能只会看到这些应用程序中剩余的计算单元。
如果 Nvidia GPU 只有 13 个计算单元并且驱动程序启用所有 13 个计算单元,则 OpenCL 可以使用所有 13 个计算单元。 GTX970 的内核总数比 Intel Iris GPU 多。
排队的 OpenCL 内核的工作组由计算单元作为一个整体执行,因此每个工作组的工作项与同一工作组中的其他工作项共享计算单元的相同内存。但是一些供应商可以稍微扩展规则,并且可以为单个工作组协作使用更多的计算单元。比如英特尔igpu。
谁能告诉我为什么 OpenCL 告诉我我的 Nvidia Geforce GTX 970 只有 13 个最大计算单元?另外,最大计算单元是否等于执行单元 (EU)?因为在我的 Iris 6100 笔记本电脑上,device.max_compute_units 是 48,这与显卡的 EUs 相同。
import pyopencl as cl
platform = cl.get_platforms()[0]
device = platform.get_devices()[0] # Get the GPU ID
print device.max_compute_units
有人可以阐明这个问题吗?我想弄清楚这里可以并行执行多少个进程。所以也许我看错了参数?
万分感谢...
您无法查询核心数,只能查询计算单元数。 Intel 集成 GPU 通常每个计算单元只有 8 个内核,而 Nvidia 每个计算单元有 192 或 128 个内核。 Max_compute_units 是计算单元的数量,应该可用于设备分区以查找(和限制)分区,但通常只支持 CPU 进行设备分区。
可以并行执行多少个进程(工作项)取决于硬件的能力。对于 AMD 显卡,核心数可以达到 40 倍(即计算单元数的 64 倍)。例如,一个 8 个计算单元的 AMD GPU 可以有 20k(8 * 64 * 40) 个运行中的线程,在一个队列中还有更多。
可以从驱动程序更改最大计算单元数,我看到一个集成的 Intel GPU 尽管有 12 个计算单元但只显示 8 个计算单元,在 beta 驱动程序中,新的 AMD GPU 获得了对保留一些计算单元的支持用于某些应用程序中的音频计算,因此通用计算内核可能只会看到这些应用程序中剩余的计算单元。
如果 Nvidia GPU 只有 13 个计算单元并且驱动程序启用所有 13 个计算单元,则 OpenCL 可以使用所有 13 个计算单元。 GTX970 的内核总数比 Intel Iris GPU 多。
排队的 OpenCL 内核的工作组由计算单元作为一个整体执行,因此每个工作组的工作项与同一工作组中的其他工作项共享计算单元的相同内存。但是一些供应商可以稍微扩展规则,并且可以为单个工作组协作使用更多的计算单元。比如英特尔igpu。