0

現在、FLOPSでいくつかのコードのパフォーマンスを測定しています。このコードは、次のような算術否定命令を示します。

d = -a

ここでd、およびaは浮動小数点変数です。私が現在使用しているアーキテクチャには、特定の否定命令があります。FLOPSを測定するには、この種の操作を考慮する必要がありますか?FLOPSの原因となる操作はどのようなものですか?コンベンションなどはありますか?

4

3 に答える 3

2

コードを分解して、この操作がどのように実行されるかを確認してください。

命令FCHS(符号変更)を使用する場合は、浮動小数点演算と見なすことができます。

MSVC(Visual Studio 2008)

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

fchs-わかりますか?

于 2010-06-24T11:00:09.033 に答える
2

@Andreyが言ったように、分解されたコードを確認する必要があります。

しかし、一般的には、そうです、命令はFPUで実行される可能性があります。少し反転するだけなので、整数単位でも実行できますが、浮動小数点値を操作しているため、これらはすでにFPレジスタにロードされている可能性が高く、かなりのオーバーヘッドが発生します。それらを汎用レジスタに移動し、ビットを反転して元に戻します。

「FLOPとして数えるべきもの」に関する完全なユニバーサルガイドがあるかどうかはわかりませんが、これはFPUで実行される命令である可能性が高いため、CPU上のリソースについて他のFP命令と競合しています。 、そうです、FLOPSカウントに含めます。

于 2010-06-24T11:03:23.423 に答える
1

LINPACKを一種の標準ベンチマークとして使用してFLOPSを計算するための一種の規則があります。

于 2010-06-24T11:05:30.250 に答える