GPUプログラミング
GPUのカーネルで、1スレッドあたりのレジスタの使用量が多すぎると起こりうることとして正しいものはどれか。
- Aレジスタが自動で増えて、性能が必ず上がる
- B計算結果が必ず間違う
- CSMのレジスタの総数は決まっているので、同時に載せられるスレッドの数が減り、メモリの遅延を隠しにくくなる
答えと解説を見る
正解:C. SMのレジスタの総数は決まっているので、同時に載せられるスレッドの数が減り、メモリの遅延を隠しにくくなる
GPUは、実行中のすべてのスレッドのレジスタをチップ上に持っておくことで、ワープの切り替えを一瞬で行います。そのため1スレッドが使うレジスタが多いと、SMに同時に載せられるスレッドの数が減ります。足りない分はメモリに追い出され(スピル)、遅くなることもあります。コンパイラの設定でレジスタの上限を指定し、スレッドの数との釣り合いを取ることがあります。
- A. レジスタの総数は回路で決まっています。
- B. 結果は正しいままで、速さに影響します。
- C. 正しい。レジスタはスレッド数を決める資源の1つです。