gpt4 book ai didi

synchronization - CUDA 线程围栏

转载 作者:行者123 更新时间:2023-12-01 09:04:04 25 4
gpt4 key购买 nike

我正在编写一个必须执行块间同步的代码(N 维和其他内存传输操作的总和)。当我增加问题的维度时,结果是错误的。

我正在与 __threadfence() 同步和第一个维度(N<192)没关系,但如果我插入其他 __threadfence()在这段代码中,结果对于更多维度是正确的。

一个threadfence()是不够同步?此外,数据结果在同一块中使用。

在编程指南中,信息表明 threadfence等待所有内存空间准备好(共享和全局)

最佳答案

没有好的方法可以在块之间执行同步。您可以采用一种自旋等待并占用 GPU 内存带宽的 hacky 方法,或者您可以终止内核并启动一个新内核。
__threadfence()不是用于块之间的同步。 __threadfence()用于暂停当前线程,直到其他线程可以看到所有先前对共享和全局内存的写入。它不会停止,也不会影响其他线程的位置!

您可以检查以下问题:

  • cuda block synchronization
  • CUDA __threadfence()
  • 关于synchronization - CUDA 线程围栏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11570789/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com