最終更新:2012-04-12 (木) 17:28:28 (4396d)
CUDA/スレッドブロック
- GPUがグリッドを実行する際に、マルチプロセッサで並列処理を行うため、グリッドを複数の「ブロック」と呼ばれる単位に分割し、分割されたブロックをマルチプロセッサへ割り当てる。
- 一般に、ブロック当たりのスレッド数はマルチプロセッサ当たりのストリーム・プロセッサ数よりも多いため、時分割でスレッドを割り当てる
- 単純に並列動作させたいスレッドの総数を指定するのではなく、わざわざスレッドブロックに分割するのは次の理由からです。
- GPU内部は複数のマルチプロセッサ(SM)に分割されている。
- 1つのマルチプロセッサ(SM)で同時に扱えるスレッド数には制限がある。
- CUDAはスレッドブロックをマルチプロセッサ(SM)へ割り当てる単位にしている。
メモ
- 現行のGPUでは1スレッドブロック?あたり512スレッドが上限 (Fermiだと1024)
関連
- CUDA/スレッド?
- ストリーミングマルチプロセッサ