OpenGL:计算着色器工作组是否并行执行?

OpenGL:计算着色器工作组是否并行执行?,opengl,parallel-processing,synchronization,glsl,Opengl,Parallel Processing,Synchronization,Glsl,显然,计算着色器调用是在单个工作组中并行执行的。我们可以通过单个组中的barrier()+memoryBarrier()函数同步它们对内存的访问 但实际上可以在单个分派命令中并行执行着色器工作组吗? 如果是这样的话,那么我是对的,不可能使用任何GLSL语言函数同步它们对内存的访问?因为barrier()仅在单个工作组内工作,因此我们只能通过glMemoryBarrier使用外部同步来同步所有工作组的内存访问,但在这种情况下,我们必须将计算着色器拆分为多个不同的着色器,并从单独的分派命令执行它们。

显然,计算着色器调用是在单个工作组中并行执行的。我们可以通过单个组中的
barrier()+memoryBarrier()
函数同步它们对内存的访问

但实际上可以在单个分派命令中并行执行着色器工作组吗?


如果是这样的话,那么我是对的,不可能使用任何GLSL语言函数同步它们对内存的访问?因为
barrier()
仅在单个工作组内工作,因此我们只能通过
glMemoryBarrier
使用外部同步来同步所有工作组的内存访问,但在这种情况下,我们必须将计算着色器拆分为多个不同的着色器,并从单独的分派命令执行它们。

来自不同工作组的调用可以并行执行,是的。这几乎适用于任何着色器阶段的调用

是的,您不能执行工作组间同步。这也适用于几乎任何着色器阶段;除了另一个例外,您不能在同一阶段的任何调用之间进行同步

除非您可以访问扩展,正如其名称所示,扩展仅限于片段着色器