NDRange 内工作项、工作组的最大数量

Maximum number of work items, work groups within NDRange

我有以下系统参数:

CL_DEVICE_TYPE_GPU
Device maximum compute units = 20
Device maximum Work Item Dimensions = 3
Device maximum Work Item Sizes = 512 x 512 x 512
Device maximum Work Group Size = 512 

据我了解,如果 Item Dimensions = 1 -- 工作组中存在工作项的一维数组。如果 Item Dimensions = 2——工作组中有工作项的二维数组或矩阵等等。反过来,工作组一起代表一个集合 (NDRange)。 但我不明白如何: 1) 确定工作组中数组或矩阵中工作项的最大数量 2) 确定集合中工作组元素的最大数量

我试图找到类似的问题和明确的答案,但没有成功。 感谢您的帮助!

只需关注设备的最大工作 Item/Group 限制。 计算单元仅用于设备融合功能。

工作组大小的限制由下式给出:

Device maximum Work Group Size = 512

这是工作组中工作项的最大数量。并且符合硬件中的限制。

然后,您必须向组的 "shape" 添加一个额外的约束,在您的情况下:

Device maximum Work Item Dimensions = 3
Device maximum Work Item Sizes = 512 x 512 x 512

也就是说限制是3个维度,每个维度512个,所以你没有限制!您可以按照自己喜欢的方式塑造 512 个工作项目 512x1x1256x2x1 等...

但是限制可能是:16x16x16。因此,即使你总共可以 运行 512,你也被限制在 16x16x28x8x816x8x4 等。不允许的值将是 32x16x1512x1x1.

注意:受形状限制的情况并不少见。 nVIDIA 设备通常有 4096 个工作组大小,1024x1024x1024 limits.My 猜测他们这样做是为了将工作维度 ID 存储在一个寄存器中。而 4096x4096x4096 需要 2 个寄存器。