Frage

Ich bin eine leistungskritische Anwendung für Intel-Atom-Prozessor zu entwickeln.

Was sind die besten gcc Optimierungsflags für diese CPU?

War es hilfreich?

Lösung

GCC 4.5 enthält die -march = Atom und -mtune = Atom-Optionen.

Quelle: http://gcc.gnu.org/gcc-4.5/changes. html

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:

-march=core2 -mfpmath=sse -O3
-march=core2 -mtune=pentium -mfpmath=sse -O3

Update: Hier sind ein paar schöne Artikel auf niedrigem Niveau Optimierung für Atom:

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

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