RTX3000とRTX2000、FP32のパフォーマンスの違いの説明

RTX3000とRTX2000

の主張のXNUMXつ NVIDIA 彼らに関して RTX 3000 浮動小数点がXNUMX倍になったということです 電力 彼らのGPUの、それは全体のパワー、したがってパフォーマンスを意味するものではありません GPU RTX 2000と比較して、すべてが同じですがGPUの一部にすぎませんが、過度に技術的な詳細に立ち入ることなく、最も初心者のユーザーでも理解できるように、理由を説明するのが最善です。 。

NVIDIAによると、新しいRTX3000シリーズはRTX3000と比較して(浮動小数点パフォーマンスの点で)XNUMX倍強力ですが、実際には、ゲームではパフォーマンスがXNUMX倍になったわけではありません。これが発生する理由私たちは、その理由を説明する結論に達するために一連の前提を理解する必要があります。

Nvidia Diapositiva アンペア

NVIDIAは浮動小数点パフォーマンスとはどういう意味ですか? これは数値データの一種であり、その計算速度はFLOPS、XNUMX秒あたりの浮動小数点演算と呼ばれる量で測定されますが、次の理由でデバイスを比較する場合、少なくとも誤解を招く可能性があります。

  • すべての命令が同じクロックサイクル数で解決されるわけではありません。
  • すべてのプロセッサは、その性質に関係なく、すべてのサイクルでXNUMXつ以上の操作を実行します。
  • すべての命令、同等のもの、または同等のものは、同じサイクル数のすべてのアーキテクチャで解決されるわけではありません。

つまり、10 TFLOPSの電力を持つXNUMXつのシステムを使用でき、一方は他方よりも高速です。一方のシステムはより強力で、アーキテクチャに変更が組み込まれているため、そのモデルのパフォーマンスが他方よりもはるかに優れています。浮動小数点率が同じで、さらに低い場合でも。

RTX3000の進化形としてのRTX2000

関心のあるポイントに到達するには、両方のアーキテクチャのそれぞれのSMユニットから始めて、アーキテクチャをダブルズームする必要があります。

SM内で私たちが興味を持っているのは、各アーキテクチャの「サブコア」です。これにより、RTX2000に対してRTX3000で発生した浮動小数点のパフォーマンスの変化をよりよく理解できるようになります。

NVIDIAのエンジニアは、RTX 3000のAmpereアーキテクチャを設計するときに電球をオンにし、可能な限り少ない項目を変更することで、浮動小数点のパフォーマンスを向上させるために、「サブコア」にあまり興味のない変更を加えることにしました。 。

TuringサブコアとAmpereサブコアの両方が同じワープスケジューラを使用し、レジスタの数が同じであるとすると、小さなトラップを利用して、各「サブコア」の浮動小数点パワーを16倍にすることができます。 その罠は何ですか? NVIDIAが行ったことは、32ビット浮動小数点にさらにXNUMX個のALUを追加することです。

TuringとAmpereの両方で、16個のInt32ALUと16個のFP32ALUをアクティブにすることができます。これは、スケジューラーが32個のスレッドをレジスターに送信し、対応するALUが後で実行するためです。

RTX2000 / 3000同時実行

NVIDIAはこれを同時実行と呼び、整数ALUと浮動小数点ALUを連携させることに依存しています。

チューリング同時実行

RTX 2000の問題は、浮動小数点に32スレッドのウェーブがある場合に発生します。整数ALUはそのコードを実行できないため、そのタイプのウェーブがある場合は、XNUMXつだけではなくXNUMXつのステップで解決する必要があります。

Nvidia RTX 2000 32 FP

NVIDIAがFP32のALUを32倍にすることでAmpereアーキテクチャで行ったことは、XNUMX個の浮動小数点スレッドの波をチューリングの半分の時間で解決できることです。これにより速度がXNUMX倍になります(解決にXNUMXサイクルしかかからないという意味で) XNUMXつではなく)。

RTX 3000 32 ALU FP

したがって、整数と浮動小数点の同時モード間でRTX3000とRTX2000の間に違いはなく、Ampereアーキテクチャグラフィックスカードでの浮動小数点の利点は、最大32個の浮動小数点スレッドのウェーブを実行している場合にのみ発生します。

技術仕様は、現実と一致しないコンテキストから来ています

ディブジョ・シルキート・アルテ

RTX3000がRTX2000のXNUMX倍の速度であることがわかったら、方程式に別の要素を追加する必要があります。つまり、FLOPSレートについて話すときは、で発生しない理論上のレートについて話します。実際のシナリオ、およびGPUのTFLOPSの問題は、メーカーが提供する数値が以下に基づくレートであるということです。

  • 最速のタイプの命令、つまり最も少ないサイクルで実行されるGPU。 FMADD / FMAは、同じサイクルで解かれる加算と乗算で構成される算術命令であるため、通常はFMADD / FMAを使用します。
  • 同じ命令が常に繰り返し実行され、コードやその他のタイプの命令に改行はありません。
  • データはレジスタにあり、キャッシュやVRAMメモリにはデータルックアップがないため、この命令は可能な限り低いレイテンシで実行されます。

まるで、限界まで加速できるストレートでのパフォーマンスのためにスポーツカーを購入したかのようです。 現実には、道路は単純な直線よりもはるかに複雑であり、ゲームのグラフィックコードでも同じことが起こります。 これは、すべてのメーカーが提供するこれらの印象的なレートが決して与えられず、実際のシナリオと相関しないことを意味します。

では、NVIDIA RTX3000はRTX2000のXNUMX倍強力ではありませんか?

RTX3000対2000

いいえ、そうではありません。記事のこの時点で明確になっているはずです。 リアルタイム3Dグラフィックスは、いくつかのステージに分割されたパイプラインに従うことを理解する必要があります。それらの大部分では、RTX3000は同等のRTX2000よりも高速ではありませんが、浮動小数点パワーが重要な他のステージでは、アンペアチャートが主導権を握り、グラフパイプラインのその部分での実行を高速化するとき。ただし、パフォーマンスの向上はXNUMX倍になることはありません。

DX12パイプライン

パイプラインは、SM(Compute Units in AMDの専門用語)、シェーダーステージとは図では緑色で、青色の部分は固定機能です。 これらは有線およびスケジュールされていないユニットによって実行され、この場合、RTX2000からRTX3000への改善はありません(RTコアを除くが、ラスタライズパイプラインの一部ではありません)。

状況をよりよく理解するには、直喩を使用するのが最善です。同じ速度で直進できる7台の異なる車AとBがありますが、B車には4倍の速さでコーナリングするという特徴があると想像してください。車A.3つのストレートとXNUMXつのコーナーのXNUMXつのセグメントに分割された回路でそれらをテストしたとします。

ダイアグラムコーチ

ご覧のとおり、B号車はライバルよりもサーキットの各ラップをカバーするのにかかる時間が短く、3000倍速くなることなく、コーナーで速くなることでかなりの利点があります。 RTX2000とRTXXNUMXの間でも同じことが起こり、パフォーマンスは常にXNUMX倍になるとは限りませんが、特定の状況ではXNUMX倍になります。

RTX3000がRTX2000よりも優れている点はどこですか?

Quake 2 RTX

特に、後処理効果やハイブリッドレンダリングのレイトレーシング段階で今日使用されている計算パイプラインなど、固定関数単位に依存しないすべてのもので。 これが、Quake 2RTXのようなアプリケーションでRTX3000のパフォーマンスがRTX2000のXNUMX倍になる理由です。これは、浮動小数点での実行を大いに活用し、機能単位を使用しないゲームであるためです。まったく。 ラスタライズを修正しました。

これらすべてを使用して、FLOPSを3000倍にしたにもかかわらずRTX XNUMXが、以前のバージョンと比較してパフォーマンスをXNUMX倍にしない理由を理解できます。