1

CUDA アーキテクチャを理解するのに苦労したため、multiProcessorCount プロパティによって指定された値が何を表しているのか、ほとんどわかりません。

以下の記述のいくつかがナイーブに見える場合は、申し訳ありません。これまでに理解したことから、ハードウェアの「レイヤー」は次のとおりです。

  • CUDA プロセッサはビルディング ブロックのグリッドです。
  • ビルディング ブロックは、2 つ以上のストリーミング マルチプロセッサで構成されます。
  • ストリーミング マルチプロセッサは、コアとも呼ばれる多くのストリーミング プロセッサで構成されます。
  • ストリーミング プロセッサは「大規模に」スレッド化されています。つまり、多くのハードウェア マネージド スレッドが実装されています。1 つのストリーミング プロセッサ、1 つのコアは、実際には一度に 1 つのスレッドしか計算できませんが、SP によって順番に計算されるのを待っている間にデータをロードできる多くの「ハードウェア スレッド」があります。

ソフトウェア側:

  • ブロックはスレッドで構成され、ストリーミング マルチプロセッサによって実行されます。
  • カード上のストリーミング マルチプロセッサの数よりも多くのブロックを起動した場合、ブロックは何らかのキューで待機し、実行されると思います。
  • ソフトウェア スレッドはストリーミング プロセッサに分散され、ストリーミング プロセッサはそれらをハードウェア スレッドに分散します。前のケースと同様に、ストリーミング プロセッサがハードウェア スレッドで処理できるスレッドをさらに起動すると、ソフトウェア スレッドはキューで待機します。

どちらの場合も、起動できるスレッドとブロックの最大数は、カード上に実際に存在するストリーミング マルチプロセッサ、ストリーミング プロセッサ、および各ストリーミング プロセッサのハードウェア スレッドの数とは無関係です。それらの概念はソフトウェアです!

私は少なくとも現実に近づいていますか?

そうは言っても、multiProcessorCount プロパティは何を提供するのでしょうか? 私の 610M では、マルチプロセッサが 1 つしかないと表示されます... これは、ストリーミング マルチプロセッサが 1 つしかないということですか? 1 つのストリーミング マルチプロセッサのみで構成されたビルディング ブロックを使用できますか? それは私には不可能に思えます。つまり、一度に 1 つのブロックしか実行できないということです。また、カードの仕様に 48 個の cuda コアがあると記載されている場合、それはストリーミング プロセッサのことでしょうか?

4

1 に答える 1