Parallel processing NDRange中工作项、工作组的最大数量

Parallel processing NDRange中工作项、工作组的最大数量,parallel-processing,opencl,gpu,gpgpu,Parallel Processing,Opencl,Gpu,Gpgpu,我有以下系统参数: 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=

我有以下系统参数:

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) 确定集合中工作组元素的最大数量

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

只需关注设备最大工作项/组限制。 计算单位仅用于设备功能

工作组大小的限制如下所示:

Device maximum Work Group Size = 512
这是工作组中工作项的最大数量。并且它与硬件中的限制相匹配

然后,您必须为组的“形状”添加额外的约束,在您的情况下:

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
限制。我猜他们这样做是为了将工作维度id存储在单个寄存器中。而
4096x4096x4096
需要两个寄存器。

谢谢!这很有帮助。我在这里找到了一些基础知识,并用示例和图片进行了很好的说明: