作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在编写一个必须执行块间同步的代码(N 维和其他内存传输操作的总和)。当我增加问题的维度时,结果是错误的。
我正在与 __threadfence()
同步和第一个维度(N<192)没关系,但如果我插入其他 __threadfence()
在这段代码中,结果对于更多维度是正确的。
一个threadfence()
是不够同步?此外,数据结果在同一块中使用。
在编程指南中,信息表明 threadfence
等待所有内存空间准备好(共享和全局)
最佳答案
没有好的方法可以在块之间执行同步。您可以采用一种自旋等待并占用 GPU 内存带宽的 hacky 方法,或者您可以终止内核并启动一个新内核。__threadfence()
不是用于块之间的同步。 __threadfence()
用于暂停当前线程,直到其他线程可以看到所有先前对共享和全局内存的写入。它不会停止,也不会影响其他线程的位置!
您可以检查以下问题:
关于synchronization - CUDA 线程围栏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11570789/
我是一名优秀的程序员,十分优秀!