最終更新:2012-04-12 (木) 17:28:28 (4396d)  

CUDA/スレッドブロック
Top / CUDA / スレッドブロック

  • GPUがグリッドを実行する際に、マルチプロセッサで並列処理を行うため、グリッドを複数の「ブロック」と呼ばれる単位に分割し、分割されたブロックをマルチプロセッサへ割り当てる。
  • 一般に、ブロック当たりのスレッド数はマルチプロセッサ当たりのストリーム・プロセッサ数よりも多いため、時分割でスレッドを割り当てる
  • 単純に並列動作させたいスレッドの総数を指定するのではなく、わざわざスレッドブロックに分割するのは次の理由からです。
  • GPU内部は複数のマルチプロセッサ(SM)に分割されている。
  • 1つのマルチプロセッサ(SM)で同時に扱えるスレッド数には制限がある。
  • CUDAはスレッドブロックをマルチプロセッサ(SM)へ割り当てる単位にしている。

メモ

  • 現行のGPUでは1スレッドブロック?あたり512スレッドが上限 (Fermiだと1024)

関連

参考