我已经浏览了很多论坛帖子和NVIDIA文档,但我无法理解它是什么__threadfence()
以及如何使用它.有人可以解释一下内在的目的是什么吗?
Cyg*_*sX1 45
通常,不能保证如果一个块将某些内容写入全局内存,则另一个块将"看到"它.除了发出它的块之外,对全局存储器的写入顺序也不保证.
有两个例外:
想象一下,一个块产生一些数据,然后使用原子操作来标记数据存在的标志.但是有可能,另一个块将看到该标志,但会读取不正确或不完整的数据.
__threadfence
函数停止当前线程,直到其对全局内存的写入保证被网格中的所有其他线程可见.所以,如果你做的事情如下:
__threadfence()
保证如果另一个块看到标志,它也会看到数据.
进一步阅读:Cuda编程指南,第B.2.4章和第B.5章
归档时间: |
|
查看次数: |
12795 次 |
最近记录: |