1

私の GPU は能力 2.1 で、2 つの SM があり、各 SM には 48 コアがあります。CUDA-C プログラミング ガイドで提供されている技術仕様によると、グリッドの最大ブロック数は 65535 で、マルチプロセッサあたりの常駐ブロックの最大数は 8 です。

起動できるブロックの数について混乱しています。SM あたりのブロックの最大数が 8 である場合、SM が 2 つしかない場合、最大で 16 ブロックを起動できるということではないですか? しかし、私はより多くのブロックを成功裏に起動しました。

アクティブブロックと非アクティブブロックのようなものがあるのでしょうか?これが事実である場合、これらのブロックはどのようにスケジュールされますか? 非アクティブは、8 つのアクティブ ブロックがすべて終了するまで待機しますか? しかし、これにより同期の問題が発生します...


さらに質問があります...各 SM に 48 個のコアがある場合、同時に 3 つのハーフワープを実行できます。ただし、共有メモリには 32 バンクしかありません。2 つのスレッドが同じバンドから同時に読み込もうとすると、別のハーフワープに属していてもバンクコンフリクトが発生しませんか?

4

2 に答える 2