有没有办法停止 GPU 线程,直到所有正在执行的线程都达到那个点?

问题描述

我目前正在研究一种基于 CA 的流体模拟的计算着色器。我当前的算法写入当前正在计算的单元格的直接邻居。我目前的想法是让一个线程计算我的 CA 网格的 3x3 区域,然后每个 3x3 区域与另一个相邻。这在理论上可以确保正在写入的像素不会被过早读取。

我需要一些方法来阻止一个线程继续运行,直到所有其他线程都达到同一点。

伪代码:

for (int i = 0; i < 9; i+) {
    // do all calculations necessary

    while(true) {
       if (allThreadsDone)
            break;
    }
}

如果每个线程的计算都是常数时间,这可能没有必要,我不知道这是不是真的。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)