最終更新:2014-02-10 (月) 11:20:03 (3990d)
CUDA/用語
ハードウェア
ホスト
- CPUのこと
デバイス
- GPUのこと。
ストリーミングマルチプロセッサ (SM)
CUDAコア
- 1つのスレッドを処理する単位。旧称SP
CUDA/メモリ
- スレッド単位
- ブロック単位
- デバイス単位
のメモリがある
ソフトウェア
CUDA/カーネル
- ホストから呼び出され、デバイス上で実行される関数。
グリッド
- ホストから実行を指令する単位で、グリッド内の全スレッドは同じプログラム(カーネルと呼ぶ)を実行する。
- X,Y,Zの3次元。
- 0≦X,Y≦65,535、Zは1
- GPUがグリッドを実行する際に、マルチプロセッサで並列処理を行うため、グリッドを複数の「ブロック」と呼ばれる単位に分割し、分割されたブロックをマルチプロセッサへ割り当てる。
CUDA/スレッドブロック (ブロック?)
- 1つのストリーミングマルチプロセッサ(SM)上で実行するスレッドの塊。
- 一般に、ブロック当たりのスレッド数はマルチプロセッサ当たりのストリーム・プロセッサ数よりも多いため、時分割でスレッドを割り当てる
- 単純に並列動作させたいスレッドの総数を指定するのではなく、わざわざスレッドブロックに分割するのは次の理由から。
- GPU内部は複数のマルチプロセッサ(SM)に分割されている。
- 1つのマルチプロセッサ(SM)で同時に扱えるスレッド数には制限がある。(最大で512)
- CUDAはスレッドブロックをマルチプロセッサ(SM)へ割り当てる単位にしている。
スレッド
- 1つのCUDAコアで実行。
- ブロック内のスレッドは32個単位で分割されワープ単位で実行されます。
CUDA/ワープ
- 並列実行されるスレッドのグループ。
- 1つのブロック内のスレッドは32個ずつの「ワープ」という単位にまとめられて処理される。
- ワープ内の全スレッドは同一命令を実行
- Fermiでは2cycleで2warpを処理
- SM1個に含まれる32個のCuda Coreは16個でひとつの塊となっており、 ふたつのスレッドの命令は、それぞれの塊へディスパッチされます。