2

いくつかのCUDA資料で次の単語を頻繁に見つけました。

「いつでも、SMによって実行されるワープは1つだけです」。

ここでは、各SMが数百から数千のスレッドを同時に実行できるため、よくわかりません。ある時点で実行できるワープは32スレッドであるのはなぜですか。

ありがとう!

4

2 に答える 2

4

詳細はCUDAハードウェアの世代によって異なりますが、たとえば以前の世代では、各SMに8つの実行ユニットがあり、それぞれが4つのスレッドを実行します(4サイクルごとに各スレッドから1つの命令)。したがって、SMごとに32の同時スレッドを提供する4ウェイSMTを取得します。

もちろん、GPUごとに複数のSMがあります(例:30)。これは、30x32スレッドワープ=960スレッドが任意の瞬間に実行されることを意味します。このワープに加えて、ワープのインとアウトを切り替えることができるため、実際に実行されているスレッドは960個だけですが、たとえば960個の「ライブ」スレッドよりもはるかに多くのスレッドを使用できます。

于 2012-11-19T22:36:19.067 に答える
3

このステートメントはテスラアーキテクチャに当てはまりますが、FermiとKeplerには正しくありません。ワープスケジューラの観点からSMを見る方が簡単です。各サイクルで、ワープスケジューラは適格なワープ(ストールされていないワープ)を選択し、ワープから実行ユニットに1つまたは2つの命令をディスパッチします。SMあたりの実行ユニットの数は、FermiおよびKeplerのホワイトペーパーに記載されています。CUDAコアは、整数および単精度浮動小数点演算を実行できる実行ユニットの数とほぼ同じです。ロード/ストア操作、分岐などのための追加の実行ユニットがあります。

コンピューティング機能1.x(テスラ)

  • SMごとに1つのワープスケジューラ
  • ワープスケジューラごとに1つの命令をディスパッチします

Compute Capability 2.0(Fermi第1世代)

  • SMごとに2つのワープスケジューラ
  • ワープスケジューラごとに1つの命令をディスパッチします

コンピューティング機能2.1(Fermi第2世代)

  • SMごとに2つのワープスケジューラ
  • ワープスケジューラごとに1つまたは2つの命令をディスパッチします

Compute Capability 3.x(Kepler)

  • SMごとに4つのワープスケジューラ
  • ワープスケジューラごとに1つまたは2つの命令をディスパッチします
于 2012-11-20T02:49:57.930 に答える