我可以假设所有硬件/平台上OpenCL中第一个工作组的get_local_id(0)
等于get_global_id(0)
吗?
问题在于,如果生成的每个工作项在全局空间中都为0,1,2,3,4,5,6,7
,在本地空间中为0,1,2,3 | 0,1,2,3
。
替代方案可能是本地空间0,2,4,6 | 1,3,5,7
。哪里|在这个包含两个工作组和8个工作项的示例中拆分两个工作组。
答案 0 :(得分:7)
这在OpenCL 1.2 specification的第3.2节(执行模型)中有描述,但在后面的第6.12.1节(工作项功能)中没有引用。
global_id(d) = global_offset(d) + local_id(d) + group_id(d) * local_size(d)
global_size(d) = local_size(d) * num_groups(d)
如果global_offset是(0,0,0),那么您的假设是正确的。