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

问题描述

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

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

代码

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

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

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

解决方法

我对它进行了更多研究,似乎无法停止 GPU 线程。我还被告知,如果线程具有恒定数量的指令,则它们会同时结束。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...