GPUプログラミング

GPUの占有率(オキュパンシー)の説明として正しいものはどれか。

  1. AGPUのチップの面積のうち、演算器が占める割合
  2. BSMに同時に載せられるワープの最大数に対する、実際に載っているワープの数の割合
  3. CGPUのメモリのうち、データで埋まっている割合
答えと解説を見る

正解:B. SMに同時に載せられるワープの最大数に対する、実際に載っているワープの数の割合

各SMが同時に載せられるワープの数には上限があり、実際に載る数は、1スレッドあたりのレジスタ、1ブロックあたりの共有メモリ、ブロックの大きさなどで決まります。その割合が占有率です。占有率が低いと、メモリを待っているワープの代わりに実行できるワープが少なく、演算器が遊びやすくなります。CUDAには占有率を計算する道具も用意されています。

  • A. 面積の割合のことではありません。
  • B. 正しい。レジスタや共有メモリの使用量などで決まります。
  • C. メモリの使用率のことではありません。
この分野を解く 分野ページへ

GPUプログラミングのほかの問題

  1. GPUがメモリの長い遅延(数百クロック)を隠す主な方法として正しいものはどれか。
  2. GPUの占有率について正しいものはどれか。
  3. CUDAで、ブロックとSM(ストリーミングマルチプロセッサ)の関係として正しいものはどれか。
  4. CUDAで、カーネルの途中で、ほかのすべてのブロックの計算が終わるのを待ってから次の段階に進みたい。一般的な方法はどれか。
  5. GPUで画素の値のヒストグラムを作るとき、全スレッドがグローバルメモリの256個のビンにatomicAddで直接足すと遅いことがある。改善の方法として正しいものはどれか。