Frage

Ich messe derzeit die Leistung von einigem Code in FLOPS. Dieser Code stellt einige Arithmetik negate Anweisungen wie diese:

d = -a

wo d und a sind Gleitkommavariablen. Die Architektur ich zur Zeit mit hat spezifische negate Anweisungen. Sollte ich berücksichtigen diese Art von Operationen zu ergreifen, um Maß FLOPS? Welche Art von Operationen entfallen FLOPS? Gibt es eine Konvention oder irgendetwas?

War es hilfreich?

Lösung

Wie gesagt @Andrey, um sicher zu sein, sollten Sie den demontierten Code überprüfen.

Aber im Allgemeinen ja, würde der Befehl wahrscheinlich auf einer FPU auszuführen. Es klappt einfach ein wenig, so dass es könnte als auch auf einer Integer-Einheit durchgeführt werden, aber da Sie Betrieb auf Fließkommawerte, wird diese höchstwahrscheinlich bereits in FP-Register geladen, und so gibt‘ d eine ganze Menge Aufwand sein, um sie zu Universalregister zu bewegen, das Bit-Flipping und sie zurück zu bewegen.

Ich weiß nicht, ob es eine komplette Universalführung ist es, „was als FLOP gezählt werden sollte“, aber das ist wahrscheinlich eine Anweisung, die auf einer FPU ausführt, und so ist es mit anderen FP-Befehlen für Ressourcen konkurrieren auf der CPU, also ja, ich würde es gehört in einer Zählung FLOP.

Andere Tipps

versuchen, den Code zu zerlegen und prüfen, wie dieser Vorgang durchgeführt wird.

Wenn es Anweisung FCHS (Change Zeichen) verwendet, dann können Sie es für Gleitkommaoperation.

MSVC (Visual Studio 2008)

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

FCHS - das sehen?

Es ist eine Art Konvention zur Berechnung des LINPACK als eine Art Standard-Benchmark FLOP verwendet wird.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top