0

我碰巧在 CUDA 手册中遇到了 __threadfence() !什么是 __threadfence() 以及它有什么用处?我们也可以使用 __threadfence() 来模拟块级同步吗?

4

1 回答 1

1

现代架构具有宽松的内存模型,这意味着内存访问不一定按照它们在程序中出现的顺序执行。

Threadfence 指令实际上是一个内存栅栏——它确保出现在栅栏之前的内存访问实际上在栅栏之前执行。正如您可能在手册中看到的那样,栅栏有 3 种变体处理共享(块)内存、全局内存和主机内存。

另一方面,__syncthreads 提供块级同步,即块中的线程将等待。请注意,__syncthreads 还充当同一块中线程的内存栅栏。

手册中的示例是一个很好的说明。

查看来自 nv 论坛的回复 https://devtalk.nvidia.com/default/topic/412600/trying-to-understand-memory-fence-function-example/

于 2013-05-03T15:24:07.127 回答