GPUプログラミング

NVIDIAのGPUで、32本のスレッドを1つの束にして、同じ命令を一斉に実行する単位を何と呼ぶか。

  1. Aワープ
  2. Bグリッド
  3. Cページ
答えと解説を見る

正解:A. ワープ

ブロックの中のスレッドは、ハードウェアの中では32本ずつのワープに分けられ、1つのワープの32本は同じ命令を同時に別々のデータに対して実行します。このように、スレッドとして書いたプログラムを束にして同じ命令で動かす方式をSIMTと呼びます。AMDのGPUでは同じような単位をウェーブフロントと呼び、64本または32本です。ブロックの大きさは32の倍数にするのが基本です。

  • A. 正しい。ハードウェアが実行を管理する単位です。
  • B. グリッドはカーネル1回の起動の全体です。
  • C. ページは仮想記憶の単位です。
この分野を解く 分野ページへ

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

  1. GPUのSIMT(単一命令・複数スレッド)の方式と、CPUのSIMD命令の違いとして正しいものはどれか。
  2. 1つのワープの中で、条件分岐によってスレッドの半分がif側、残りの半分がelse側に分かれた(ワープダイバージェンス)。一般にどう実行されるか。
  3. 上の(1)と(2)は、どちらもスレッドの半分にA、残りにBを実行させる。ワープの効率の点で正しい説明はどれか(1ワープ32スレッドとする)。
  4. GPUのメモリ合体アクセス(コアレッシング)の説明として正しいものはどれか。
  5. 各スレッドの番号をiとして、上のように32要素おきに配列を読むと、a[i]を読む場合に比べて遅くなる。主な理由はどれか。