GPUプログラミング

CUDAのスレッドの階層の組み合わせとして正しいものはどれか(大きい順)。

  1. Aグリッド → ブロック → スレッド
  2. Bスレッド → ブロック → グリッド
  3. Cブロック → スレッド → グリッド
答えと解説を見る

正解:A. グリッド → ブロック → スレッド

カーネルを1回起動すると、全体がグリッドになり、グリッドは多数のブロックに、ブロックは多数のスレッドに分かれます。1つのブロックのスレッドは同じSM(演算器の集まり)で実行され、共有メモリで協力したり、同期を取ったりできます。異なるブロックは独立に実行されるので、GPUの規模に応じて同時に動くブロックの数が変わり、同じプログラムが大小のGPUで動きます。

  • A. 正しい。1回の起動の全体がグリッドです。
  • B. 小さい順になっています。
  • C. 順番が合っていません。
この分野を解く 分野ページへ

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

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