我正在用 Unity 编写一个计算着色器。我了解工作组中的一组线程可以在硬件上以任何顺序/完全并行执行。我不确定的是一组工作组是否按特定顺序执行?
如果我的内核用 注释numthreads(256, 1, 1)
,这是否意味着SV_GroupID
首先执行零,其线程SV_GroupIndex
从 0 到 255(以任何顺序),然后是SV_GroupID
数字 1,等等?
如果不是默认情况下,有没有办法强制执行它......?我可以将线程数设置为等于硬件上可用的数量,以确保它一次只能执行一组吗?(听起来很老套!)
上下文:我有一个稀疏的有序数据数组,我试图在保留顺序的同时将其压缩成一个密集的数组。事实证明,利用并行算法利用现有排序非常棘手!