GPUプログラミング

GPUで速く処理できる仕事の特徴として最も適切なものはどれか。

  1. A前の結果を使って次を計算する、1本につながった逐次の計算
  2. B大量のデータの各要素に、互いに独立した同じ計算を行う
  3. Cデータの量は少なく、条件分岐が非常に多い計算
答えと解説を見る

正解:B. 大量のデータの各要素に、互いに独立した同じ計算を行う

GPUは何千ものスレッドに同じ処理を割り振って並列に動かすので、画像の各画素の処理、行列の掛け算、ベクトルの演算のように、多数の要素を独立に計算できる仕事(データ並列)で力を発揮します。前の結果に依存する逐次の計算や、データが少なく分岐の多い計算では並列にできる部分が少なく、CPUの方が速いことがよくあります。

  • A. 逐次の計算は並列にできないので、CPUが向いています。
  • B. 正しい。データ並列の仕事に向いています。
  • C. 分岐が多いとGPUの効率が下がります。
この分野を解く 分野ページへ

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

  1. GPUで実行すると効率が悪くなりやすい処理はどれか。
  2. CUDAなどのGPUプログラミングでいう「カーネル」の説明として正しいものはどれか。
  3. CUDAのスレッドの階層の組み合わせとして正しいものはどれか(大きい順)。
  4. CUDAのカーネルで上の式により各スレッドの番号iを求める。blockIdx.x=2、blockDim.x=256、threadIdx.x=5のスレッドのiはいくらか。
  5. 要素数1000の配列を、1ブロック256スレッドで1スレッド1要素ずつ処理したい。起動するブロックの数として正しいものはどれか。