GPUプログラミング
CUDAの定数メモリ(コンスタントメモリ)が特に速く働くのはどのようなアクセスのときか。
- Aワープのすべてのスレッドが同じ番地を読むとき(1回の読み出しを全員に配れる)
- Bワープのスレッドがそれぞれ違う番地に書き込むとき
- Cワープのスレッドがそれぞれ違う番地をランダムに読むとき
答えと解説を見る
正解:A. ワープのすべてのスレッドが同じ番地を読むとき(1回の読み出しを全員に配れる)
定数メモリは、カーネルの実行中は書き換えない小さな領域で、専用のキャッシュを持っています。ワープの全員が同じ番地を読むと、1回の読み出しの結果を全員に一斉に配れるので非常に速く読めます。画像のフィルタの係数や、物理のシミュレーションのパラメータのように、全スレッドが同じ値を使う場合に向いています。番地がばらばらだと読み出しが分かれ、かえって遅くなります。
- A. 正しい。フィルタの係数のように全員が同じ値を使う場合に向いています。
- B. 定数メモリはカーネルからは書き込めません。
- C. 違う番地を読むと、読み出しが順番に分かれて遅くなります。