微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

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

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

代码

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

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

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

解决方法

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。