在OpenGL中使用多个全局工作组而不仅仅是单个工作组用于计算着色器是否有好处?我需要为大图像同步调用,因此全局工作组将无法工作。我想知道为什么不能只使用一个本地工作组来完成所有工作。
答案 0 :(得分:2)
多个工作组的好处是更大的空间。
工作组的最大尺寸,也不是一个非常大的工作组。 GL 4.5仅要求GL_MAX_COMPUTE_WORK_GROUP_INVOCATIONS
在工作组中至少进行1024次调用。一些实现支持1536,但没有高于1792。
限制的原因是存储。
每次调用都有自己的本地存储。要实现barrier
调用,系统必须能够将这些数据保存在计算单元之外并加载一些新数据。如果在一个工作组中有数百万次调用,则需要大量调用数据的。而对于当前的设计,您只需要足够的存储空间来运行几千次调用。
您需要设计算法才能在此限制范围内工作;有一件事让GPU计算很难。