GCC-Optionen für die Optimierung auf bestimmten CPU-Architektur
Arbeite ich an Nehalam/westmere Intel-micro-Architektur-CPU. Ich optimieren möchte meinen code für diese Architektur. Gibt es irgendeine spezielle Zusammenstellung Fahnen oder C-Funktionen, die die GCC, die mir helfen, zu verbessern meinen code, die Laufzeit-performance?
Bin ich schon mit -o3.
Language of the Code - C
Platform - Linux
GCC Version - 4.4.6 20110731 (Red Hat 4.4.6-3) (GCC)
In meinem code habe ich einige floating-point-Vergleich und Sie werden getan, über eine Millionen mal.
Bitte übernehmen Sie den code ist schon am besten optimiert.
Was ist Los mit den Ergebnisse, die Sie erhalten, indem man die Unterlagen und Googeln?
gcc.gnu.org/onlinedocs/gcc/Option-Summary.html
war nicht in der Lage zu bekommen, was für diese besonders Architektur .. so war ich nur Fragen, wenn wir etwas bestimmtes, wie die intel-Compiler
Ich kam auf diese Frage über Google
gcc.gnu.org/onlinedocs/gcc/Option-Summary.html
war nicht in der Lage zu bekommen, was für diese besonders Architektur .. so war ich nur Fragen, wenn wir etwas bestimmtes, wie die intel-Compiler
Ich kam auf diese Frage über Google
InformationsquelleAutor nav_jan | 2012-05-18
Du musst angemeldet sein, um einen Kommentar abzugeben.
Achtung: die Antwort ist falsch.
Kann man tatsächlich analysieren, werden alle deaktivierten und aktivierten Optimierungen selbst. Führen Sie auf Ihrem computer:
Lesen und danach über die Fahnen, die sind noch deaktiviert und kann nach die gcc-Dokumentation Einfluss auf die Leistung.
InformationsquelleAutor
Erstens, wenn Sie wirklich wollen, profitieren von einer Optimierung auf neuere Prozessoren wie diese, Sie sollten installieren Sie die neueste version des Compilers. 4.4 kam vor einigen Jahren, und auch wenn es scheint immer noch maintainted, ich bezweifle, dass die neueren code-Optimierung ist mehr auf. (Aktuell version 4.7)
Gcc hat eine catch-all-Optimierung-flag, die in der Regel produzieren sollte code, der optimiert ist für die Zusammenstellung der Architektur:
-march=native
. Zusammen mit-O3
dies sollte alles, was Sie brauchen.(Und für die Zukunft die Frage auf dieser Website, verwenden Sie bitte die vollständige englische Grammatik und Interpunktion.)
-march=nehalem
,-march=sandybridge
,-march=haswell
,-march=bdver1
(Bulldozer),-march=bdver3
(Steamroller),-march=silvermont
usw. etc. Verwenden-mtune
zu Stimmen, für eine bestimmte CPU ohne Verwendung von instruction-set-Erweiterungen-Fehler auf älteren CPUs. Zum Beispiel-march=nehalem -mtune=haswell
ist eine Kurzform für-msse4.2 -mpopcnt -mtune=haswell
InformationsquelleAutor Jens Gustedt
Werden Sie wollen, fügen Sie eine
-march=...
option. Die...
sollte ersetzt werden, mit was auch immer am nächsten ist, um Ihre CPU-Architektur (es neigen dazu, kleine Unterschiede) beschrieben in der i386/x86_64-Optionen für den GCC hier.Ich würde
core2
weilcorei7
(die Sie wollen) ist nur in GCC 4.6 und höher. Finden Sie die arch-Liste für GCC 4.6 hier.InformationsquelleAutor rubenvb
Wenn Sie wirklich wollen, zu einem gcc so alt, dass es nicht unterstützt, corei7, Sie könnte verwenden -mtune=barcelona
InformationsquelleAutor tim18