6

GPU の予測モデルに関するこの記事をフォローしています。5 ページの 2 番目の列のほぼ最後に、彼らは次のように述べています。

最後に、GPU 上の SM 内の Nc 個のコア (SP) のそれぞれに、D スレッドを並列で実行する効果を持つ D ディープ パイプラインがあるという事実に注意する必要があります。

私の質問は、D-deep パイプラインに関連しています。このパイプラインはどのように見えますか? フェッチ、デコード、実行、ライトバックについては、CPU のパイプライン (GPU と CPU はアーキテクチャがまったく異なるため、アイデアのみを意味します) に似たものですか?

これが文書化されているドキュメントはありますか?

4

2 に答える 2

10

はい、GPU SM のパイプラインは CPU のパイプラインに少し似ています。違いは、パイプラインのフロントエンド/バックエンドの比率にあります。GPU には単一のフェッチ/デコードと、SM 内の「Cuda コア」としてグループ化された小さな ALU (32 個の並列実行サブパイプラインがあると考えてください) があります。これは、スーパースカラー CPU に似ています (たとえば、Core-i7 には 6 ~ 8 個の発行ポートがあり、独立した ALU パイプラインごとに 1 つのポートがあります)。

GTX 460 SM があります (画像はdestructoid.comです。各 CUDA コアの 2 つのパイプライン (ディスパッチ ポート、次にオペランド コレクター、次に 2 つの並列ユニット、1 つは Int 用、もう 1 つは FP 用、もう 1 つは Result キュー) の内部にあるものも見ることができます):GTX460SM

(または、 http ://www.legitreviews.com/article/1193/2/からのより高品質の画像 http://www.legitreviews.com/images/reviews/1193/sm.jpg )

この SM には命令キャッシュが 1 つ、ワープ スケジューラが 2 つ、ディスパッチ ユニットが 4 つあることがわかります。そして、単一のレジスタファイルがあります。したがって、GPU SM パイプラインの最初のステージは、SM の共通リソースです。命令計画の後、それらは CUDA コアにディスパッチされ、各コアは、特に複雑な操作のために、独自のマルチステージ (パイプライン) ALU を持つ場合があります。

パイプラインの長さはアーキテクチャ内に隠されていますが、パイプラインの深さの合計は 4 をはるかに超えると想定しています。 20 段階以上: https://devtalk.nvidia.com/default/topic/390366/instruction-latency/ )

命令のフル レイテンシに関する追加情報があります: https://devtalk.nvidia.com/default/topic/419456/how-to-schedule-warps-/ - SP では 24 ~ 28 クロック、DP では 48 ~ 52 クロック。

Anandtech は AMD GPU の写真をいくつか投稿しており、パイプライン処理の主な考え方は両方のベンダーで類似していると推測できます。アーキテクト フォー コンピュート/4

AnandtechによるAMDコア

したがって、フェッチ、デコード、分岐ユニットはすべての SIMD コアに共通であり、多くの ALU パイプラインがあります。AMD では、レジスタ ファイルは ALU のグループ間でセグメント化され、Nvidia では単一のユニットとして示されていました (ただし、セグメント化されて実装され、相互接続ネットワーク経由でアクセスされる場合があります)。

この作品で言ったように

ただし、GPU を際立たせているのは、細粒度の並列処理です。スレッドは、ワープと呼ばれるバンドルで同期的に実行されることを思い出してください。飛行中のワープの数が多い場合、GPU は最も効率的に実行されます。サイクルごとにサービスできるワープは 1 つだけですが (Fermi は技術的にシェーダー サイクルごとに 2 つのハーフ ワープをサービスします)、SM のスケジューラは危険に遭遇するとすぐに別のアクティブなワープに切り替えます。CUDA コンパイラーによって生成された命令ストリームが 3.0 の ILP を表し (つまり、ハザードの前に平均 3 つの命令を実行できる)、命令パイプラインの深さが 22 ステージの場合、わずか 8 つのアクティブなワープ (22 / 3) で、命令のレイテンシを完全に隠し、最大の算術スループットを達成するのに十分な場合があります。GPU レイテンシーの隠蔽により、プログラマーにほとんど負担をかけることなく、GPU の膨大な実行リソースを有効に活用できます。

そのため、一度に 1 つのワープのみがパイプライン フロントエンド (SM スケジューラ) からクロックごとにディスパッチされ、スケジューラのディスパッチと ALU が計算を終了する時間との間には、ある程度の待ち時間があります。

Realworldtech http://www.realworldtech.com/cayman/5/およびhttp://www.realworldtech.com/cayman/11/から Fermi パイプラインを使用した画像の一部があります。すべての ALU/FPUのメモに注意[16]してください。これは、16 個の同じ ALU が物理的に存在することを意味します。

Realwordtechによるfermiパイプライン

于 2013-05-22T14:54:10.390 に答える
2

通常のスレッド レベルの並列処理は、複数のワープを実行できる場合に GPU SM で発生します。ハードウェアマルチスレッドについては、こちらで説明しています

この論文はかなり古く、GTX 280 GPU が視野に入っています。Fermi 世代より前の GPU には、Fermi 以降の GPU の SM 配置とは少し異なるように見える SM 処理配置がありました。高レベルの処理効果は同じです -- ワープの 32 スレッドが「ロックステップ」で実行されます -- しかし、後の SM は SM ごとに少なくとも 32 個の SP (コア) を持っていますが、Fermi 世代より前の GPU は SM ごとのコアが少なくなっています。 -- 通常 8. その効果は、特定のワープ命令が段階的に実行され、各「コア」または「SP」が、特定のワープを処理するためにワープ内の複数のレーンを (段階的に) 処理することです。命令。私は、これが参照されている「パイプライン」であると信じています (論文で見たものに基づく)。実際には、それぞれの「コア」GTX 280 には、4 つのスレッド (ワープ外) を処理する「4 ディープ パイプライン」があるため、割り当てられたワープ内の 4 つのスレッドの処理を実際に完了するには 4 クロック (最小) が必要です。これは文書化されていますここで、ここ で与えられた cc 2.0 の説明のような後の世代の GPU について与えられた説明と比較したいと思うかもしれません。

はい、私の「コア」と「SP」の使用法に異議を唱える人のために、GPU SM のコンピューティング リソースが実際にどのように配置されているかについての説明が不十分であることに同意しますが、この説明は NVIDIA と一致していると思います。マーケティングおよびトレーニングの文献に記載されており、参照されている論文で使用されている「コア」または「SP」という用語と一致しています。

于 2013-05-22T13:29:19.987 に答える