GPUプログラミング
CUDAで、ブロックとSM(ストリーミングマルチプロセッサ)の関係として正しいものはどれか。
- A1つのブロックのスレッドは、すべてのSMに分散して実行される
- BSMの数とブロックの数は、必ず同じでなければならない
- C各ブロックは1つのSMに割り当てられて最後までそこで実行され、1つのSMには複数のブロックが同時に載ることがある
答えと解説を見る
正解:C. 各ブロックは1つのSMに割り当てられて最後までそこで実行され、1つのSMには複数のブロックが同時に載ることがある
GPUは多数のSMを持ち、カーネルのブロックを空いているSMに順に割り当てます。1つのブロックは1つのSMで実行されるので、ブロックの中のスレッドはそのSMの共有メモリを使い、同期も取れます。ブロックの数をSMの数より十分に多くしておくと、GPUの規模が違っても全部のSMに仕事が行き渡り、終わったSMには次のブロックが割り当てられます。
- A. ブロックは1つのSMの中で実行されます。
- B. ブロックの数はSMの数よりずっと多くてかまいません。
- C. 正しい。だからブロックの中では共有メモリが使えます。