GPUプログラミング

CUDAのユニファイドメモリ(統合メモリ)の説明として正しいものはどれか。

  1. ACPUとGPUから同じポインタで使えるメモリで、必要に応じてデータが自動で移動する
  2. BCPUとGPUのチップを物理的に1つにしたもの
  3. CGPUのメモリをすべて読み取り専用にしたもの
答えと解説を見る

正解:A. CPUとGPUから同じポインタで使えるメモリで、必要に応じてデータが自動で移動する

ユニファイドメモリでは、確保した領域にCPUからもGPUからも同じポインタでアクセスでき、アクセスがあったときにページの単位でデータが必要な側へ移動します。プログラムが簡単になり、GPUのメモリより大きなデータも扱いやすくなります。ただし移動のたびにページフォルトと転送が起きるので、性能が必要なときは、前もって移動させる指示を出すなどの工夫をします。

  • A. 正しい。コピーを自分で書く手間が減ります。
  • B. チップを1つにすることではありません。
  • C. 読み書きできます。
この分野を解く 分野ページへ

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

  1. GPUで2つの大きな配列の要素ごとの足し算(c[i] = a[i] + b[i])を行うとき、性能を主に決めるものはどれか。
  2. 家庭用のゲーム向けGPUの多くで、倍精度(FP64)の計算性能が単精度(FP32)よりずっと低い(数十分の一など)理由として最も適切なものはどれか。
  3. 最近のGPUに搭載されているテンソルコア(行列演算ユニット)の特徴として正しいものはどれか。
  4. GPUの混合精度の計算で、掛け算をFP16などの低い精度で行い、足し合わせ(累積)をFP32で行うことが多い理由として正しいものはどれか。
  5. GPUで同じデータの浮動小数点数の総和を求めたところ、実行するたびに結果の最後の桁がわずかに違った。最も考えられる原因はどれか。