计算最大并发工作组

时间:2012-03-22 19:05:26

标签: opencl gpu gpgpu

我想知道是否有一种标准的方法来以编程方式确定可以在GPU上运行的最大并发工作组的数量。

例如,在具有5个计算单元(或SM)的NVIDIA卡上,每个计算单元最多可以有8个工作组(或块),因此可以同时运行的最大工作组数为40。 / p>

由于我可以找到clGetDeviceInfo的计算单元数,所以我只需要在计算单元上运行的最大工作组数。

谢谢!

2 个答案:

答案 0 :(得分:3)

每个执行单元/ SM的最大组数受硬件资源的限制。让我举个英特尔Gen8 GPU的例子。每个子片包含16个屏障寄存器。因此,不能超过16个工作组同时运行。

此外,每个子片可用的共享本地内存量(64KB)。例如,如果工作组需要32KB的共享本地内存,则无论工作组大小如何,这些工作组中只有2个可以并发运行。

答案 1 :(得分:-1)

我通常使用计算单位数作为工作组的数量。我喜欢扩大组的大小以使硬件饱和,而不是强迫gpu同时安排许多工作组。

我不知道如何在不查看供应商规格的情况下确定最大组数。