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 个工作项目 512x1x1
或 256x2x1
等...
但是限制可能是:16x16x16
。因此,即使你总共可以 运行 512,你也被限制在 16x16x2
、8x8x8
或 16x8x4
等。不允许的值将是 32x16x1
或 512x1x1
.
注意:受形状限制的情况并不少见。 nVIDIA 设备通常有 4096 个工作组大小,1024x1024x1024
limits.My 猜测他们这样做是为了将工作维度 ID 存储在一个寄存器中。而 4096x4096x4096
需要 2 个寄存器。
我有以下系统参数:
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 个工作项目 512x1x1
或 256x2x1
等...
但是限制可能是:16x16x16
。因此,即使你总共可以 运行 512,你也被限制在 16x16x2
、8x8x8
或 16x8x4
等。不允许的值将是 32x16x1
或 512x1x1
.
注意:受形状限制的情况并不少见。 nVIDIA 设备通常有 4096 个工作组大小,1024x1024x1024
limits.My 猜测他们这样做是为了将工作维度 ID 存储在一个寄存器中。而 4096x4096x4096
需要 2 个寄存器。