GPUプログラミング
CUDAの共有メモリのバンク競合の説明として正しいものはどれか。
- A2つのGPUが同じ銀行口座を使う問題
- B共有メモリの容量が足りなくなって、プログラムが止まる問題
- C共有メモリは32個のバンクに分かれていて、ワープの複数のスレッドが同じバンクの別の番地を同時に読むと、アクセスが順番に行われて遅くなる
答えと解説を見る
正解:C. 共有メモリは32個のバンクに分かれていて、ワープの複数のスレッドが同じバンクの別の番地を同時に読むと、アクセスが順番に行われて遅くなる
共有メモリは、4バイトごとに順番に割り当てた32個のバンクでできていて、それぞれのバンクは1回に1つの番地しか読み書きできません。ワープの32本が別々のバンクを使えば1回で済みますが、2本が同じバンクの違う番地を使うと2回に分かれます。例えば32要素おきに読むと、全員が同じバンクに集まり、32回に分かれてしまいます。全員が同じ番地を読む場合は、一斉に配られるので競合しません。
- A. お金の話ではありません。
- B. 容量の問題ではありません。
- C. 正しい。同じ番地なら一斉に配れるので競合しません。