4

コンピューティング ワークロード分析には、さまざまなコンピューティング パイプラインの使用率が表示されます。最新の GPU では、整数パイプラインと浮動小数点パイプラインは異なるハードウェア ユニットであり、並列で実行できることを知っています。ただし、どのパイプラインが他のパイプラインのどのハードウェア ユニットを表しているかは明確ではありません。また、パイプラインの略語と解釈に関するドキュメントをオンラインで見つけることもできませんでした。

私の質問は次のとおりです。

1) ADU、CBU、TEX、XUのフルネームは? それらはハードウェアにどのようにマッピングされますか?

2) 同じハードウェア ユニットを使用するパイプラインはどれですか (たとえば、FP16、FMA、FP64 は浮動小数点ユニットを使用します)。

3) 最新の GPU のワープ スケジューラは、サイクルごとに 2 つの命令をスケジュールできます (異なるパイプラインを使用)。同時に使用できるパイプラインはどれですか (FMA-ALU、FMA-SFU、ALU-Tensor など)?

Ps: Nsight Compute に慣れていない方のためにスクリーンショットを追加します。ここに画像の説明を入力

4

1 に答える 1

8

Volta (CC 7.0) および Turing (CC 7.5) SM は、4 つのサブパーティション (SMSP) で構成されます。各サブパーティションには

  • ワープスケジューラー
  • 登録ファイル
  • 即時定数キャッシュ
  • 実行ユニット
    • ALU、FMA、FP16、UDP (7.5+)、および XU
    • コンピューティング セントリック パーツ (GV100) 上の FP64
    • テンソル単位

には、4 つのサブパーティションによって共有される実行ユニットとリソースを含む他のいくつかのパーティションが含まれています。

  • 命令キャッシュ
  • インデックス定数キャッシュ
  • タグ付き RAM と共有メモリに分割された L1 データ キャッシュ
  • 実行ユニット
    • ADU、LSU、TEX
    • 非計算部分では、FP64 と Tensor を共有実行ユニットとして実装できます。

Volta (CC7.0、7.2) および Turing (CC7.5) では、各 SM サブパーティションはサイクルごとに 1 つの命令を発行できます。命令は、ローカル実行ユニットまたは SM 共有実行ユニットに発行できます。

  • ADU - アドレス発散ユニット。ADU は、命令が他の実行ユニットに転送される前に、分岐/ジャンプおよびインデックス付き定数ロードのスレッド アドレス分岐処理ごとに責任があります。
  • ALU - 算術論理ユニット。ALU は、ほとんどの整数命令、ビット操作命令、および論理命令の実行を担当します。
  • CBU - コンバージェンス バリア ユニット。CBU は、バリア、収束、および分岐命令を担当します。
  • FMA - 浮動小数点乗算および累算ユニット。FMA は、ほとんどの FP32 命令、整数の乗算と累算の命令、および整数の内積を処理します。
  • FP16 - ペアの半精度浮動小数点ユニット。FP16 ユニットは、対になった半精度浮動小数点命令の実行を担当します。
  • FP64 - 倍精度浮動小数点ユニット。FP64 ユニットは、すべての FP64 命令を担当します。FP64 は、NVIDIA GPU で複数の異なるパイプとして実装されることがよくあります。スループットはチップごとに大きく異なります。
  • LSU - ロード ストア ユニット。LSU は、グローバル、ローカル、および共有メモリへのロード、ストア、およびアトミック命令を担当します。
  • Tensor (FP16) - 半精度浮動小数点行列の乗算および累算ユニット。
  • Tensor (INT) - 整数行列の乗算および累算ユニット。
  • TEX - テクスチャ ユニット。テクスチャ ユニットは、テクスチャとサーフェスのサンプリング、ロード、およびフィルタリング命令を担当します。
  • UDP (Uniform) - Uniform Data Path - ワープ内のすべてのスレッドで入力と出力が同一である命令を実行するために使用されるスカラー ユニット。
  • XU - 超越およびデータ型変換ユニット - XU は、データ型変換だけでなく、sin、cos、平方根の逆数などの特別な機能を担当します。
于 2020-04-25T19:40:37.350 に答える