我可以假设所有平台上OpenCL中第一个工作组的本地id等于全局id吗

我可以假设所有平台上OpenCL中第一个工作组的本地id等于全局id吗,opencl,Opencl,对于所有硬件/平台上的OpenCL中的第一个工作组,我是否可以假定get\u local\u id(0)等于get\u global\u id(0) 问题是,如果生成的每个工作项在全局空间中被赋予id0,1,2,3,4,5,6,7,然后在局部空间中被赋予id0,1,2,3 | 0,1,2,3 或者它可以是局部空间,0,2,4,6 | 1,3,5,7。其中|在两个工作组和8个工作项的示例中拆分两个工作组。这在的第3.2节(执行模型)中有描述,但在后面的第6.12.1节(工作项功能)中没有提及 如果

对于所有硬件/平台上的OpenCL中的第一个工作组,我是否可以假定
get\u local\u id(0)
等于
get\u global\u id(0)

问题是,如果生成的每个工作项在全局空间中被赋予id
0,1,2,3,4,5,6,7
,然后在局部空间中被赋予id
0,1,2,3 | 0,1,2,3


或者它可以是局部空间,
0,2,4,6 | 1,3,5,7
。其中|在两个工作组和8个工作项的示例中拆分两个工作组。

这在的第3.2节(执行模型)中有描述,但在后面的第6.12.1节(工作项功能)中没有提及


如果全局偏移量为(0,0,0),则您的假设是正确的。

谢谢。我没读那部分。但是根据规范:当使用en..NDkernel时,全局_偏移量当前必须为空值。我不确定这个限制是否仍然适用于OpenCL 1.2.OK。我又问了一个问题,因为我正在考虑合并内存访问。但是,如果我的所有工作项都需要同时访问全局内存m[0],该怎么办。(每个工作组的所有本地id)。他们是在等待对方获得内存,还是会很快将一个项目加载到每个工作项中。备选方案i可以将所有值移位1,这样每个工作项都可以访问一个合并的项?向所有工作项广播相同的值通常是实现的,而且速度很快。特别是对于GPU,调整代码需要分析和基准测试。
global_id(d) = global_offset(d) + local_id(d) + group_id(d) * local_size(d)
global_size(d) = local_size(d) * num_groups(d)