アプリケーションの FLOPS を計算するにはどうすればよいですか? 実行された命令の総数があれば、それを実行時間で割ることができます。しかし、実行された命令の数をカウントするにはどうすればよいでしょうか。
私の質問は一般的なものであり、どの言語に対する回答も高く評価されています。しかし、C/C++ と CUDA で開発されたアプリケーションのソリューションを探しています。
タグが適切かどうかわかりませんが、間違っていたら訂正してください。
データで行われたことを数学的にモデル化する必要があります。1 つのループ反復を分離します。次に、すべての単純な浮動小数点の加算、乗算、除算などを数えます。たとえば、
y = x * 2 * (y + z*w)
4 つの浮動小数点演算です。結果の数値に反復回数を掛けます。結果は、検索している命令の数になります。
浮動小数点演算の数を簡単にモデル化できない場合に私が行うことは、2 つの実行可能ファイルを作成することです。遅くなりますが、それは私たちの目的には関係ありません)。次に、2 番目の実行可能ファイルの浮動小数点演算の数を最初の実行可能ファイルの時間で割ることで、FLOP/s の値を計算できます。
これはおそらく自動化することもできますが、これまでのところ必要ありませんでした。