GPUプログラミング

GPUのキャッシュについて、CPUと比べた一般的な特徴として正しいものはどれか。

  1. AGPUにはキャッシュがまったくない
  2. BGPUにもL1やL2のキャッシュはあるが、同時に動くスレッドの数が非常に多いので、1スレッドあたりのキャッシュの容量はずっと小さい
  3. CGPUのキャッシュは1スレッドあたりCPUの何倍も大きい
答えと解説を見る

正解:B. GPUにもL1やL2のキャッシュはあるが、同時に動くスレッドの数が非常に多いので、1スレッドあたりのキャッシュの容量はずっと小さい

GPUもSMごとのL1キャッシュやチップ全体で共有するL2キャッシュを持っていますが、数万本のスレッドが同時に動くので、1スレッドあたりに使える容量はCPUの1スレッドより桁違いに小さくなります。キャッシュに頼って遅延を減らすのではなく、多数のワープの切り替えで遅延を隠し、合体アクセスや共有メモリでメモリの使い方を工夫するのがGPUの考え方です。

  • A. L1やL2のキャッシュはあります。
  • B. 正しい。だから合体アクセスや共有メモリの工夫が大切です。
  • C. スレッドの数が多いので、1スレッドあたりは小さくなります。
この分野を解く 分野ページへ

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

  1. NVIDIA以外のGPUでも使える、GPUなどの並列計算のためのプログラミングの仕組みの例として正しいものはどれか。
  2. GPUで、条件に合う要素だけを配列から取り出して別の配列に詰めて書き出したい(各スレッドが出力する数は0か1)。各スレッドの書き込み先の番地を決めるのによく使われる並列の計算はどれか。
  3. GPUのカーネルを書くときに守るべき前提として正しいものはどれか。
  4. GPUで大きな行列を転置する(b[j][i] = a[i][j])とき、共有メモリを経由させる主な目的はどれか。
  5. CUDAで、CPU側のプログラムがカーネルを起動した直後の動作として一般に正しいものはどれか。