0

全部で 256 のスレッドを立ち上げています。単一のブロックを起動して実行すると、すべて正常に動作します。しかし、スレッドをそれぞれ (8x8 スレッド) で 2x2 ブロックで起動すると、カーネルが無限にループします。実際の問題は、私のカーネル コードが他のブロックからの部分的な結果を待っていることです。いくつかのテストを実行した後、ブロックがランダムな順序で起動され、順番に実行されているように見えました。

同じカーネルから起動された場合、CUDA ブロックは並行して実行されますか? 私が使用している GPU は、256 スレッドのみを起動しており、GTX 580 がそれらを処理できるため、制限ではありません。(16x16 スレッドの 1 つのブロック起動ですべてが正常に動作します) 実行順序を知る方法、または指定する方法はありますか?

4

1 に答える 1

6

はい、ブロックは並行して実行されます。並列に実行されるブロックの数は、GPU のパフォーマンスによって決まりますが、重要なことは、ブロックの起動順序が定義されておらず、定義できないことです。詳しくは、2.2 章の最後の 3 段落をお読みください

于 2013-03-11T13:10:06.813 に答える