2013-05-03 89 views
0

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

回答

1

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

Threadfence指令实际上是一个内存篱笆 - 它可以确保内存访问出现在篱笆之前的篱笆实际执行之前。正如您在手册中可能看到的那样,共有(block)内存,全局内存和主机内存的围栏有3种变化。

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

手册中的例子是一个很好的例子。

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