Der Intel C ++ - Compiler bietet zwei Optionen zur Steuerung von Gleitkommazahlen:
-fp-spekulation (schnell / sicher / streng / aus) -fp-Modell (präzise / schnell / streng und Quelle / doppelt / erweitert)
Ich denke ich verstehe, was das fp-Modell macht. Aber was ist Fp-Spekulation und wie verhält es sich zu Fp-Modell? Ich habe noch keine Information gefunden, die das erklärt!
-fp-model
beeinflusst wie Gleitkommaberechnungen ausgeführt werden, und kann das numerische Ergebnis ändern (durch Lizenzierung unsicherer Optimierungen oder durch Änderung der Genauigkeit, mit der Zwischenergebnisse ausgewertet werden).
-fp-speculation
ändert die numerischen Ergebnisse nicht, kann aber bewirken, welche Gleitkommaflags durch eine Operation ausgelöst werden (oder welche Traps ausgeführt werden, wenn Gleitkomma-Traps aktiviert sind). 99,99% der Programmierer brauchen sich nicht um diese Dinge zu kümmern, also können Sie wahrscheinlich mit dem Standard laufen und sich nicht darum kümmern.
Hier ist ein konkretes Beispiel; Angenommen, Sie haben die folgende Funktion:
%Vor% sqrt
ist relativ langsam. Es wäre schön, die Berechnung von sqrt(x)
wie folgt zu hissen:
Dadurch können wir die Berechnung von sqrt
gleichzeitig mit anderen Berechnungen durchführen und so die Latenz unserer Funktion reduzieren. Es gibt jedoch ein Problem. Wenn x
negativ ist, löst sqrt(x)
das ungültige Flag aus. Im ursprünglichen Programm konnte dies nie passieren, weil sqrt(x)
nur berechnet wurde, wenn x
nicht negativ war. Im geänderten Programm wird sqrt(x)
bedingungslos berechnet. Wenn also x
negativ ist, löst das modifizierte Programm das ungültige Flag aus, während das ursprüngliche Programm dies nicht tat.
Mit dem -fp-speculation
-Flag können Sie dem Compiler mitteilen, ob Ihnen diese Fälle wichtig sind oder nicht, damit er weiß, ob er für solche Umwandlungen lizenziert ist.
Out-of-Order-Ausführung und spekulative Ausführung können zu unpassenden Ausnahmen führen oder Ausnahmen zur falschen Zeit auslösen.
Wenn das für Sie wichtig ist, können Sie die Option fp-speculation
verwenden, um Spekulationen über Fließkommaanweisungen zu steuern.
Für (ein bisschen) mehr Informationen: Ссылка
Unter Windows Betriebssystem: 1. Intel Compiler Floating Berechnung 32-Bit-Anwendung vs 64-Bit-Anwendung, gleichen Code Kann Ihnen ein anderes Ergebnis geben !!!! Egal welche Flagge du wählst:) !!!!
2.Visual Studio Compiler Floating-Berechnung 32-Bit-vs 64-Bit-Anwendung, gleichen Code-Ausgang das gleiche Ergebnis.
Tags und Links c++ intel floating-point