GPUプログラミング
CUDAで1ブロックあたりのスレッドの数を決めるときの一般的な目安として正しいものはどれか。
- Aワープの大きさの32の倍数にする(128や256など)
- B必ず1にする
- C必ず素数にする
答えと解説を見る
正解:A. ワープの大きさの32の倍数にする(128や256など)
ブロックのスレッドは32本ずつワープに分けられるので、例えば100本にすると最後のワープは4本しか使わず、残りの28本分の実行の枠がむだになります。32の倍数にしておけば、どのワープもいっぱいに使えます。実際には128〜256本程度がよく使われ、占有率や共有メモリの使い方を見ながら調整します。
- A. 正しい。端数のワープができないようにします。
- B. 1スレッドでは、ワープの31本がむだになります。
- C. 素数にすると、端数のワープができます。