GPUプログラミング
GPUがメモリの長い遅延(数百クロック)を隠す主な方法として正しいものはどれか。
- ACPUより何倍も大きなキャッシュを1スレッドごとに持つ
- Bあるワープがメモリを待つ間に、ほかの実行できるワープに切り替えて演算器を動かし続ける
- Cメモリを待たずに、データの値を推測して計算する
答えと解説を見る
正解:B. あるワープがメモリを待つ間に、ほかの実行できるワープに切り替えて演算器を動かし続ける
CPUは大きなキャッシュと複雑な回路で1つのスレッドの待ちを減らしますが、GPUは数多くのワープを載せておき、メモリを待っているワープを脇に置いて、すぐに実行できる別のワープの命令を出します。レジスタがすべてチップ上にあるので、切り替えに手間がかかりません。十分な数のワープがあれば、メモリの遅延の間も演算器を休ませずに済みます。
- A. 1スレッドあたりのキャッシュはむしろ小さいです。
- B. 正しい。多数のスレッドで待ち時間を埋めます。
- C. 値を推測して計算することはしません。