CUDA threadfence和块级同步

时间:2013-05-03 14:33:22

标签: cuda gpu

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

1 个答案:

答案 0 :(得分:1)

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

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

另一方面,

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

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

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