4
ライブラリ関数のFLOPカウント
単純な関数でFLOPの数を評価するとき、基本的な算術演算子を集計する式を単純にたどることができます。ただし、偶数除算を含む数学ステートメントの場合、これを行うことはできず、加算と乗算のみの関数からのFLOPカウントと比較できると期待されます。操作がライブラリに実装されると、状況はさらに悪化します。したがって、特別な機能のパフォーマンスについて合理的な考えを持つことが不可欠です。 特別な機能とは、次のようなものを意味します。 exp() sqrt() sin / cos / tan() 通常はシステムライブラリによって提供されます。 これらの複雑さの決定は、それらの多くが適応性があり、入力依存の複雑さを持っているという事実によってさらに混乱します。たとえば、exp()の数値的に安定した実装は、多くの場合、適応的に再スケーリングしてルックアップを使用します。ここでの私の最初の印象は、この場合にできる最善の方法は、関数の平均的な動作を確認することです。 この議論全体は、もちろん、アーキテクチャに大きく依存しています。この議論では、従来の汎用アーキテクチャに限定し、特別な機能ユニット(GPUなど)を持つアーキテクチャを除外できます。 システムとシステムの比較のために、特定のアーキテクチャ向けにこれらを標準化するかなり簡単な試みを見つけることができますが、メソッドとメソッドのパフォーマンスを重視する場合、これは受け入れられません。これらの関数のフロップの複雑さを決定するためのどの方法論が受け入れられると考えられますか?大きな落とし穴はありますか?