GPUプログラミング

配列の要素を1回だけ足し算するような軽い処理のためにデータをGPUへ送ると、CPUで計算するより遅くなることがある。主な理由はどれか。

  1. AGPUは足し算ができないから
  2. BPCI Expressでのデータのコピーにかかる時間が、GPUで速くなる計算の時間より長くなるから
  3. CデータをGPUへ送ると値が変わってしまうから
答えと解説を見る

正解:B. PCI Expressでのデータのコピーにかかる時間が、GPUで速くなる計算の時間より長くなるから

PCI Expressの帯域は、GPUのメモリの帯域より1桁以上小さいので、データを送るだけで時間がかかります。1要素あたり1回の足し算しかしないなら、送る時間に比べて計算の時間はごくわずかで、GPUの速さを生かせません。GPUが得をするのは、送ったデータに対して多くの計算をするときや、データをGPUのメモリに置いたまま何度も処理するときです。

  • A. GPUは足し算が得意です。
  • B. 正しい。転送の割に計算が少なすぎます。
  • C. 値は変わりません。
この分野を解く 分野ページへ

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

  1. CPUのメモリをピン留め(ページロック)してからGPUへ転送すると速くなる理由として正しいものはどれか。
  2. CUDAのストリームを複数使う主な目的はどれか。
  3. 非常に小さなカーネルを何千回も続けて起動するプログラムが遅いとき、改善の方法として最も適切なものはどれか。
  4. CUDAのユニファイドメモリ(統合メモリ)の説明として正しいものはどれか。
  5. GPUで2つの大きな配列の要素ごとの足し算(c[i] = a[i] + b[i])を行うとき、性能を主に決めるものはどれか。