2

以下が分かりません。

カーネルを起動して、たとえば thread 0in block0を呼び出した後、__syncthreads()他のすべてのブロック内の他のすべてのスレッドは0、 block 内のスレッドによってグローバル メモリに加えられた変更を確認でき0ますか?

私の推測ではノーです。実際、CUDA C プログラミング ガイドの同期関数セクションでは、次のように述べられています。

void __syncthreads();スレッド ブロック内のすべてのスレッドがこのポイントに到達し、これらのスレッドによって以前に行われたすべてのグローバルおよび共有メモリ アクセスが、ブロック内のすべてのスレッド__syncthreads()から見えるように なるまで待機します。

ただし、動的並列処理におけるグローバル メモリの一貫性について話す場合、CUDA C プログラミング ガイドには次のように記載されています。

これらの変更は、2 回目の呼び出し後にのみ、親グリッドの他のスレッドで使用できるようになります。__syncthreads()

__syncthreads()動的並列処理が関係している場合、ブロック全体で変更を利用できるようにしますか?

ありがとう

4

1 に答える 1