2016-12-25 4 views
0

除算演算がある場合は、アルゴリズムを測定するときに、FOPと浮動小数点数の合計数を計算する方法は?特殊演算のFOPと浮動小数点演算の総数の計算方法(exp sin sqrt)?

たとえば、n2行列乗算、n3 * 2flops(乗算、加算)の計算では、同じデータセットn2を使用して、行列乗算の乗算演算を除算演算に変更し、計算する方法フロップ。行列乗算の結果と同じですか?

答えて

1

ああ、浮動小数点演算が何であるかを指定する標準はありません。
これは、異なるアーキテクチャが異なる一連の操作をネイティブにサポートしている可能性があるためです。
そこで、例えば、アーキテクチャ 月はすべての4つの基本的な操作、 添加のみと すべての基本的な操作に加えべき乗をサポートします。

一般に、浮動小数点演算という用語は、特定のマシンに高度にコンテキスト化されています。

しかし、あらゆる種類の操作を別々に数えることで、機械に依存しない優れた分析を行うことができます。
これは、基本的にハードウェアと同じ操作であるため、加重と減算は一緒に数えられるなど、いくつかの専門知識とブードーが必要です。
乗算と除算は、複雑な演算(べき乗、三角関数など)と同じように、別々にカウントされます。

最後に、すべての異なる操作の数がカウントされます。 mでN×メートル行列を乗算例えば
×K NKメートル乗算とNK・(メートルを含みます-1)追加。その結果は、メートル MUL + NK・(メートル -1)を追加する・NKあります。

この「フル情報」式は、通常は独自の結果であるため、参照マシーンと測定単位をピックアップすることで、「浮動小数点演算」の数を近似することができます。

例えばインテルからSkylakeマイクロアーキテクチャのマイクロアーキテクチャはこれを持って、非常に単純化されたtimings table

Operation    Cycles 

Addition    0.5 
Subtraction   0.5 
Division    3 
Multiplication  0.5 

我々は1 FLOPの測定単位として加算を取るならば、我々は分裂がいる限りであると言うことができます6追加として、それは6フロップのようです。乗算と加算のすべてが完了するだけ1 FLOPを取るので -

Operation    FLOPs 

Addition    1 (By definition) 
Subtraction   1 
Division    6 
Multiplication  1 

そこで上記の例は、NK・(1 2・メートル)まで減少します。

これは簡略化された表示であり、実際のマシンははるかに複雑です(たとえばSkylakeにベクトル単位があり、測定単位とタイミングが変更される可能性があるFMAがサポートされています)。
とにかく、異なる種類の操作の表現はマシンに依存せず、後で特定のケースを作るときに単一の数に変換することができます。