4

Nvidia GPU のリスト - GeForce 900 シリーズ- そこには次のように書かれています。

4 単精度のパフォーマンスは、シェーダー数の2 倍にベース コア クロック速度を掛けて計算されます。

たとえば、GeForce GTX 970 の場合、パフォーマンスを計算できます。

1664 コア * 1050 MHz * 2 = 3 494 GFlops ピーク (3 494 400 MFlops)

この値は列 - 処理能力 (ピーク) GFLOPS - 単精度で確認できます。

しかし、なぜ2 倍しなければならないのでしょうか?

書かれています:http://devblogs.nvidia.com/parallelforall/maxwell-most-advanced-cuda-gpu-ever-made/

SMM は、クロックごとに 2 つの命令をディスパッチできる専用のワープ スケジューラを備えた 4 つの 32 コア処理ブロックを備えた象限ベースの設計を使用します。

OK、nVidia Maxwell はスーパースカラー アーキテクチャであり、クロックごとに 2 つの命令をディスパッチしますが、1 つの CUDA コア (FP32-ALU) はクロックごとに 1 つ以上の命令を処理できますか?

1 つの CUDA-Core には、FP32 ユニットと INT ユニットの 2 つのユニットが含まれていることがわかっています。ただし、INT ユニットは GFlops (浮動小数点操作/秒) とは無関係です。

つまり、1 つの SMM には以下が含まれます。

  • 128 FP32ユニット
  • 128 INTユニット
  • 32 SFUユニット
  • 32 LD/STユニット

GFlopsでパフォーマンスを得るには、128 個の FP32 ユニットと 32 個の SFU ユニットのみを使用する必要があります。

つまり、128 個の FP32 ユニットと 32 個の SFU ユニットの両方を同時に使用する場合、1 クロックあたり 1 SM あたり、浮動小数点演算で 160 の命令を取得できます。

つまり、2 の代わりに1,2 =(160/132) を掛ける必要があります。

1664 コア * 1050 MHz * 1,2 = 2 096 GFlops ピーク

Cores*MHz を 2 倍にする必要があると wiki に書いているのはなぜですか?

ここに画像の説明を入力

ここに画像の説明を入力

4

1 に答える 1

12

概要: 1 つの FMA は、FP スループットの標準的な計算では 2 FLOPとしてカウントされます。これは、単一の実行ユニットに対して単一の命令でそれを実行するマシンでも (これにより、FMA の融合部分である中間の丸めを回避する方法です)。


CUDA「コア」(SP - ストリーミング プロセッサとも呼ばれる) は、SM (ストリーミング マルチプロセッサ) の単精度浮動小数点ユニットを指すのが最も一般的です。CUDA コアは、クロック サイクルごとに 1 つの単精度浮動小数点命令を開始できます。(ユニットはパイプライン化されているため、クロックごとに 1 つの命令を開始し、クロックごとに 1 つの命令を破棄できますが、特定のクロック サイクルで特定の命令を完全に処理することはできません。)

たとえば、その命令が単精度の加算または単精度の乗算である場合、加算または乗算は 1 つの浮動小数点演算としてカウントされるため、そのコアはクロックごとに 1 つの浮動小数点演算に寄与できます。一方、命令が FMA 命令 (浮動小数点乗算加算) である場合、コアは浮動小数点乗算と浮動小数点加算の両方の演算を同じ時間内に実行します。これは、実質的に 2 つの操作が 1 つの命令で実行されることを意味します。FMA をこのように使用すると、理論上のピーク スループットを計算するときに乗数が 2 になります。

したがって、コアはクロックごとに 1 つの命令しか処理 (つまり、開始、リタイア) できませんが、その命令が FMA の場合、2 つの浮動小数点演算としてカウントされます。

于 2015-10-03T18:17:59.823 に答える