CUDA マニュアルで __threadfence() を見つけました! __threadfence() とは何ですか? どのように役立ちますか? また、__threadfence() を使用してブロック レベルの同期をシミュレートできますか?
質問する
805 次
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 に答える