GPUプログラミング
GPUのSIMT(単一命令・複数スレッド)の方式と、CPUのSIMD命令の違いとして正しいものはどれか。
- ASIMTは1つのデータに複数の命令を同時に行い、SIMDは1つの命令を1つのデータに行う
- BSIMTとSIMDはまったく同じもので、名前が違うだけである
- CSIMTでは各スレッドを独立したプログラムとして書け、分岐もハードウェアが処理するが、SIMDではプログラマやコンパイラが幅の決まったベクトルの命令を明示的に使う
答えと解説を見る
正解:C. SIMTでは各スレッドを独立したプログラムとして書け、分岐もハードウェアが処理するが、SIMDではプログラマやコンパイラが幅の決まったベクトルの命令を明示的に使う
CPUのSIMDでは、4個や8個のデータをまとめたベクトルのレジスタに1つの命令をかけるので、プログラムはベクトルの幅を意識して書きます。GPUのSIMTでは、プログラマは1本のスレッドの処理を普通に書き、ハードウェアが32本ずつ束ねて同じ命令で動かします。スレッドごとに分岐してもよく、ハードウェアが分岐した経路を順に実行しますが、そのときは効率が下がります。
- A. どちらも1つの命令を複数のデータに行います。
- B. プログラムの書き方と分岐の扱いが違います。
- C. 正しい。中では同じ命令で動きますが、書き方が違います。