私のコンピューターが可能なフロップの量を決定する方法


15

私のコンピューターでできるFLOP(浮動小数点演算)の理論的な数を決定したいと思います。誰かがこれで私を助けてくれますか?(自分のコンピューターをいくつかのスーパーコンピューターと比較して、それらの違いを理解したいだけです)

回答:


9

:理論ピークFLOP / sがで与えられる のコアの数が簡単です。理論的には、平均周波数はある程度のTurbo Boost(Intel)またはTurbo Core(AMD)を考慮すべきですが、動作周波数は適切な下限です。サイクルごとの操作はアーキテクチャに依存しており、見つけにくい場合があります(SandyBridgeおよびIvyBridgeの場合は8、スライド26を参照)。これは、このスタックオーバーフローの質問の主題であり、多数の最新のアーキテクチャの数字が含まれています。

コアの数平均頻度サイクルごとの操作

1
1.8 GHzの、インテル®ターボ・ブースト・テクノロジー:[OK]を、私は2個のコア、動作周波数3.00 GHzの持っているが、私はサイクルごとの操作を見つけることができない、ここのウェブサイトは次のとおりです。ark.intel.com/products/75460/... 感謝
オール

Haswellは16 DP /サイクルを実行できます。SO回答への回答本文にリンクを追加しました。
マックスハッチンソン14

これは私のコンピューターができることを意味します:2 x 3,000,000,000 Hz x 16 = 96 Giga FLOPs?
Ol '信頼できる2014

これは、実際の平均周波数に応じて、2 * 1.8 GHz * 16 DP = 57.6 GFLOP / s〜96 GFLOP / sの間で実行できることを意味します。単一の番号を使用する必要がある場合は、57.6がより公平なIMOです。
マックスハッチンソン14

2
一般に、FLOPレートは、プロセッサの「良さ」の貧弱な尺度です。たとえば、scicomp.stackexchange.com / questions / 114 /…を参照してください。タスクの制限コスト(たとえば、コンピュートバウンド対メモリバウンド対ディスクバウンド)を検討し、関連するハードウェア(計算システム、メモリシステム、I / O)に焦点を当てることができます。
マックスハッチンソン

4

マシンのCPUのモデルとベンダーを知る必要があります。それができたら、クロックレート、チップ/ソケットの数、チップごとのコアの数、サイクルごとの浮動小数点演算の数、およびそれらの演算のベクトル幅をベンダーのWebサイト(またはWikipediaで)で調べることができます。 。次に、単に乗算します。

たとえば、私が働いているStampedeのIntel Xeon E5-2680「Sandy Bridge」プロセッサを考えてみましょう。仕様は次のとおりです。

  • 2.7GHz
  • 2チップ/ノード、8コア/チップ
  • 2ベクトル命令/サイクル
  • 256ビット幅のAVX命令(4つの同時倍精度オペランド)

これらを乗算すると、システムの加速されていない部分に対して345.6 GF /ノードまたは2.2 PFが得られます。

私たちは通常、倍精度(64ビット)演算の観点から考えます。これは、大部分のユーザーに必要な精度であるためです。ただし、必要に応じて単精度で計算をやり直すことができます。これは通常、最後の要因、たとえば4 DP Flops / instではなく8 SP Flops / instructionのみを変更しますが、それとは大きく異なる場合があります。たとえば、古いGPUでは、SPの約1/8のレートでのみDPを実行していました。システムの数値を引用する場合、倍精度でない場合は、それを使用したとみなされるため、使用したものを明示する必要があります。

また、チップがFMA(Fused Multiply-Add)命令をサポートし、フルレートで実行できる場合、ほとんどの人はこれを2つの浮動小数点演算としてカウントしますが、ハードウェアパフォーマンスカウンターでは1つの命令としてカウントされる場合があります。

最後に、システムに存在する可能性のあるアクセラレータ(GPUやXeon Phiなど)に対してこれを実行し、そのパフォーマンスをCPUパフォーマンスに追加して、理論的な合計を取得することもできます。


CPUモデルを知るだけでは十分ではありません。実際の動作周波数を調べる必要があります
Aksakal 14

@Aksakal、理論的分析のために、おそらく名目上の周波数を選択しても大丈夫です。作業負荷と空調の品質に依存する可能性があるため、チップが実際に動作する周波数を知ることは困難です。
ビルバース14

2

あなたは理論的な値を求めたことを理解していますが、これは実際のコードではほとんど常にアクセスできないため、LINPACKであっても、非常に大きな行列に対してDGEMMを実行(最適化)することができます。私がこの方法を好む理由は、特定のプロセッサの理論上のピークフロップ値を達成するのを妨げる特定のプロセッサの欠点のいくつかを明らかにするからです。

たとえば、NVIDIA GPUは現在、同じパイプラインで整数および浮動小数点演算を実行します。これは、整数計算をまったく行わない場合にのみ、理論的なピークフロップを達成できることを意味します。配列のインデックス付けやその他の形式のデータアクセスには整数演算が必要になるため、NVIDIA GPUで理論上のピークフロップを達成できるコードはありません。ほとんどの場合、上限として〜80%が見られます。整数演算と浮動小数点演算を同時に発行するCPUの場合、これは問題ではありません。

Intel Knights CornerやBlue Gene / Qのような一部のGPUのようなマルチコアプロセッサでは、同様のパイプラインの問題に対して、従来のCPUよりもピークフロップを達成するのが困難です(ただし、両方とも少なくとも大規模なDGEMMで〜90% )。


NVIDIA GPUで理論上のピークフロップを達成できないコードがあるのはなぜですか?
スカイツリー

パラグラフ2を参照してください。ただし、これはすべて古いアーキテクチャに関連していました。より最近のNVIDIAアーキテクチャは、整数と浮動小数点を同時に実行し、大規模なDGEMMで90%を超えるピークを達成できます。
ジェフ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.