Wir empfehlen dringend, dass alle unsere Benutzer mit -O3 -xHost -ipo
ifort 11 und ifort 12 beginnen. Wenn O3 bestimmte Gleitkommatransformationen aktiviert hat, die sich auf die Genauigkeit einiger Ihrer Berechnungen auswirken, können Sie diese mit -fp-model precise -fp-model except
(oder drastischer -fp-model strict
) deaktivieren. unter Beibehaltung der anderen Optimierungen, die O3 ermöglicht, wie z. B. Schleifenblockierung für Cache, Schleifenfusion und -entrollung sowie Speicherzugriffsoptimierungen.
Ich empfehle, das Gleitkommamodell für einzelne Dateien auszuprobieren und herauszufinden, wo es einen Unterschied macht, anstatt es global auszuschalten. Es kann eine Geschwindigkeitsschwelle von ~ 15% sein, und Sie möchten in der Lage sein, dies dort beizubehalten, wo es Ihre Berechnungen nicht beeinflusst. Wenn Sie sich nicht sicher sind, wo sich die Genauigkeit auswirkt, können Sie die Fließkommamodell-Flags für diese Dateien aktivieren und deaktivieren oder mit Rundungsmodi spielen .
Vor kurzem haben wir unseren Benutzern einen kurzen Vortrag über Optimierungsflags gehalten, wobei wir uns auf die Gnu- und Intel-Compiler für x86 konzentrierten. Sie können die Folien von diesem Vortrag hier sehen .
Übrigens, während wir über die Auswahl von Optimierungsflags für Ihren Code sprechen, lohnt es sich gelegentlich auch, die Ausgabe von -vec-report zu überprüfen, um festzustellen , wo der Compiler versucht hat, eine Schleife zu vektorisieren, was aber nicht möglich ist. Manchmal können Sie kleine Änderungen an Ihrer Schleife vornehmen, die dazu führen können, dass eine Vektorisierung möglich ist (dies kann eine 4-fache Beschleunigung sein). Ähnliches gilt für den allgemeineren -opt-Bericht .