GPUプログラミング

1024個の値を木の形のリダクションで合計するとき、必要な段の数はいくつか。

  1. A10
  2. B512
  3. C1023
答えと解説を見る

正解:A. 10

各段で値の数が半分になるので、1024→512→256→…→1と、1になるまで10回半分にします。つまり段の数はlog2 1024=10です。足し算の総回数は512+256+…+1=1023回で、1つのスレッドが順に足す場合と同じですが、段が10しかないので、十分な数のスレッドがあれば非常に速く終わります。

  • A. 正しい。2の10乗が1024です。
  • B. 512は1段目に必要なスレッドの数です。
  • C. 1023は足し算の総回数です。
この分野を解く 分野ページへ

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

  1. 単体のGPUを使うプログラムで、CPU側のメモリとGPU側のメモリについて一般的に正しいものはどれか。
  2. 配列の要素を1回だけ足し算するような軽い処理のためにデータをGPUへ送ると、CPUで計算するより遅くなることがある。主な理由はどれか。
  3. CPUのメモリをピン留め(ページロック)してからGPUへ転送すると速くなる理由として正しいものはどれか。
  4. CUDAのストリームを複数使う主な目的はどれか。
  5. 非常に小さなカーネルを何千回も続けて起動するプログラムが遅いとき、改善の方法として最も適切なものはどれか。