GPUプログラミング

CUDAなどのGPUプログラミングでいう「カーネル」の説明として正しいものはどれか。

  1. AGPUのOSの中心となる部分
  2. BGPUの上で、多数のスレッドが同時に実行する関数
  3. CGPUのチップを冷やす部品
答えと解説を見る

正解:B. GPUの上で、多数のスレッドが同時に実行する関数

GPUプログラミングのカーネルは、CPU側のプログラムから起動され、GPUの上で多数のスレッドが同じコードを実行する関数です。各スレッドは自分の番号を使って、担当するデータの要素を選びます。例えば配列の足し算なら、1つのスレッドが1つの要素を足すようにカーネルを書き、要素の数だけスレッドを起動します。OSのカーネルとは同じ言葉ですが意味が違います。

  • A. OSのカーネルとは別の意味です。
  • B. 正しい。CPUから起動して、GPUで並列に実行されます。
  • C. 冷却の部品ではありません。
この分野を解く 分野ページへ

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

  1. CUDAのスレッドの階層の組み合わせとして正しいものはどれか(大きい順)。
  2. CUDAのカーネルで上の式により各スレッドの番号iを求める。blockIdx.x=2、blockDim.x=256、threadIdx.x=5のスレッドのiはいくらか。
  3. 要素数1000の配列を、1ブロック256スレッドで1スレッド1要素ずつ処理したい。起動するブロックの数として正しいものはどれか。
  4. 上のCUDAのカーネルで「if (i < n)」を入れている理由として正しいものはどれか。
  5. NVIDIAのGPUで、32本のスレッドを1つの束にして、同じ命令を一斉に実行する単位を何と呼ぶか。