2013-05-03 88 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/