关于为什么使用work group,我觉得有以下原因:
1, work group可以让你对 work item进行同步,例如设置barrier等
2, workgroup可以利用local memory进行数据交互, local memory的速度极快
3, 对于某些特定的算法,使用workgroup方便算法的设计,当然也跟前两点有关系。比如并行的粒子滤波算法,可以用一个workgroup进行一个粒子的运算,这里粒子相关的计算,同步,资源等等均可以在此workgroup内进行。
ps: 全局的数据交互可以使用 global memory,但是这个很慢,最好先workgroup内交互,再全局交互