GCC-Optimierungen für Intel Atom [geschlossen]
-
02-07-2019 - |
Frage
Ich bin eine leistungskritische Anwendung für Intel-Atom-Prozessor zu entwickeln.
Was sind die besten gcc Optimierungsflags für diese CPU?
Lösung
GCC 4.5 enthält die -march = Atom und -mtune = Atom-Optionen.
Andere Tipps
Es gibt einen kühlen Rahmen namens
Ich habe ein Skript, das Auto die entsprechenden Flags für die CPU und Compiler-Kombination wählt.
Ich habe es gerade aktualisiert Intel Atom zu unterstützen: http://www.pixelbeat.org/scripts/gcccpuopt Update:
I angegebene vorher -march = prescott für Atom, aber auf der Suche mehr hinein
zeigt, dass Atom merom ISA-kompatibel ist daher -march = core2 ist besser geeignet.
Beachten Sie jedoch, dass Atome in Ordnung sind Kerne, die letzte von denen, die ursprüngliche pentium zu sein.
Daher ist es wahrscheinlich besser, -mtune = pentium auch. Leider habe ich nicht
ein Atom zu testen. Ich würde wirklich schätzen, wenn jemand könnte Benchmark den Unterschied zwischen: Update:
Hier sind ein paar schöne Artikel auf niedrigem Niveau Optimierung für Atom: -march=core2 -mfpmath=sse -O3
-march=core2 -mtune=pentium -mfpmath=sse -O3
Nun, die Gentoo Wiki Zustände für die prescott:
http://en.gentoo-wiki.com/wiki/Safe_Cflags/ Intel # Atom_N270
CHOST = "i686-pc-linux-gnu"
CFLAGS = "- march = prescott -O2 -pipe -fomit-frame-pointer"
CXXFLAGS = "$ {CFLAGS}"
Von Intel, mit MID Getting Started
Wenn GCC zu kompilieren, gibt es ein paar empfohlene Fahnen zu verwenden:
- -O2 oder -O1: O2-Flag optimiert für Geschwindigkeit, während die -O1 Flag für Größe optimiert
- -msse3
- -march = core2
- -mfpmath = sse
Genau wie für Pentium 4:
-march=prescott -O2 -pipe -fomit-frame-pointer
Ich weiß nicht, ob GCC keine Atom-spezifische Optimierungen noch, aber das Atom Kern soll auf das ursprüngliche Pentium sehr ähnlich sein, mit der sehr wichtigen Ergänzung des MMX / SSE / SSE2 / SSE3 / SSSE3 Befehlssätze. Natürlich sind diese nur einen wesentlichen Unterschied machen, wenn Ihr Code Gleitkommazahlen oder DSP-schwer.
Vielleicht könnten Sie versuchen:
gcc -O2 -march = pentium -mmmx -msse -msse2 -msse3 -mssse3 -mfpmath = sse
hier einige Querpolle von Blogs ... was ich wirklich gehofft hatte wurde ein firefox-kompilierten-for-Atom Benchmark ...
Adresse: http: // ivoras.sharanet.org/blog/tree/2009-02-11.optimizing-for-atom.html
"Es stellt sich heraus, gcc erscheint eine sehr gute Arbeit mit -mtune = native zu tun, und mtune = generic ist mehr als akzeptabel. Die größten Gewinne (in dieser Mathe-schwere Benchmark) kommt aus SSE mit für Mathematik, aber auch sie durch Abstimmung für pentium4 zerstört werden.
"Die Differenz zwischen dem schnellsten und dem langsamsten Optimierung ist 21%. Die Auswirkungen der Verwendung von März statt mtune vernachlässigbar ist (nicht genug Unterschied zu erkennen, ob es hilft oder nicht).
"(I k6 enthalten habe gerade als Referenz - Ich weiß, dass Atom nicht 3dnow hat)
"Late Update:. Tuning für K8 (mit SSE und O3) ergibt sich eine etwas höhere beste Ergebnis von 182"
i686 am nächsten ist. Gehen Sie nicht für core2.
GCC 4.1 O3 -march = i686 GCC 4.3 O3 -march = native
GCC 4.1 -O4 -ffast-math GCC 4.3 -O4 -ffast-math
http: // macles .blogspot.com / 2008/09 / Intel-cc-Compiler-gcc-und-intel-atom.html