質問

私は現在、フロップの一部のコードのパフォーマンスを測定しています。このコードは、このような算術否定の指示を提示します。

d = -a

どこ da 浮動小数点変数です。 私が現在使用しているアーキテクチャには、特定の否定的な指示があります。 フロップを測定するために、この種の操作を考慮する必要がありますか?どのような操作がフロップを占めていますか?コンベンションなどはありますか?

役に立ちましたか?

解決

@andreyが言ったように、分解したコードを確認する必要があることを確認してください。

しかし、一般的に、はい、命令はFPUで実行される可能性があります。それは単に少しひっくり返るので、それ たぶん......だろう 整数ユニットでも行われますが、浮動小数点値で動作しているため、これらはすでにFPレジスタにロードされている可能性が高いため、汎用レジスタに移動するためのかなりの量のオーバーヘッドがあります。ビットとそれらを動かします。

「フロップとしてカウントされるべきもの」の完全な普遍的なガイドがあるかどうかはわかりませんが、これはおそらくFPUで実行される命令であるため、CPUのリソースの他のFP指示と競合しています、そう、私はそれをフロップカウントに含めます。

他のヒント

コードを分解して、この操作の実行方法を確認してください。

命令を使用する場合 FCHS (サインを変更)その後、浮動小数点操作を考慮することができます。

MSVC(Visual Studio 2008)

    double c = -b;
00971397  fld         qword ptr [b] 
0097139A  fchs             
0097139C  fstp        qword ptr [c] 

FCHS-それを見ますか?

Linpackを使用して標準ベンチマークとして使用してフロップを計算するための一種の慣習があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top