OpenGL:为计算着色器使用多个全局工作组是否有好处

OpenGL: Is there a benefit to using multiple global work groups for compute shaders

在 OpenGL 中使用多个全局工作组而不是仅使用一个工作组来计算着色器是否有好处?我需要同步对大图像的调用,因此全局工作组将无法工作。我想知道为什么不能只使用一个本地工作组来完成所有工作。

多个工作组的好处更大space。

工作组有最大规模,但也不是特别大。 GL 4.5 只要求 GL_MAX_COMPUTE_WORK_GROUP_INVOCATIONS 在一个工作组中至少有 1024 次调用。一些实现支持 1536,但 none 高于 1792。

限制的原因是存储。

每个调用都有自己的本地存储。要实现 barrier 调用,系统必须能够将此数据保存在计算单元之外并加载一些新数据。如果您在单个工作组中有数百万次调用,那将需要大量数据的。而对于当前的设计,您只需要足够的存储空间就可以 运行 几千次调用。

您需要设计您的算法以在此限制内工作;让 GPU 计算 hard.

的一件事