GPUプログラミング

CPUのメモリをピン留め(ページロック)してからGPUへ転送すると速くなる理由として正しいものはどれか。

  1. AOSがそのページを動かしたり追い出したりしないので、GPUがDMAで直接読み書きでき、途中のコピーが要らず、非同期の転送もできるから
  2. Bピン留めするとデータが圧縮されるから
  3. Cピン留めするとPCI Expressの世代が上がるから
答えと解説を見る

正解:A. OSがそのページを動かしたり追い出したりしないので、GPUがDMAで直接読み書きでき、途中のコピーが要らず、非同期の転送もできるから

普通のメモリは、OSがいつでも別の物理ページに移したりストレージに追い出したりできるので、GPUのDMAがそのまま読み書きするのは危険です。そのため通常は、いったんピン留めした一時的な領域にコピーしてから転送します。最初からピン留めしたメモリを使えば、この余分なコピーがなくなり、CPUの処理と重ねて非同期に転送することもできます。

  • A. 正しい。ただし使いすぎるとOSのメモリが足りなくなります。
  • B. 圧縮はされません。
  • C. 世代は変わりません。
この分野を解く 分野ページへ

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

  1. CUDAのストリームを複数使う主な目的はどれか。
  2. 非常に小さなカーネルを何千回も続けて起動するプログラムが遅いとき、改善の方法として最も適切なものはどれか。
  3. CUDAのユニファイドメモリ(統合メモリ)の説明として正しいものはどれか。
  4. GPUで2つの大きな配列の要素ごとの足し算(c[i] = a[i] + b[i])を行うとき、性能を主に決めるものはどれか。
  5. 家庭用のゲーム向けGPUの多くで、倍精度(FP64)の計算性能が単精度(FP32)よりずっと低い(数十分の一など)理由として最も適切なものはどれか。