webentwicklung-frage-antwort-db.com.de

GCC-Optimierungsflags für Intel Atom

Ich entwickle eine leistungskritische Anwendung für Intel Atom-Prozessor.

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

26
user7305

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

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

31
user7305

Es gibt ein cooles Framework namens Acovea (Analyse der Compileroptionen mittels evolutionärer Algorithmen) von Scott Rober Ladd, einem der GCC-Hacker. Hierbei handelt es sich um ein genetisches/evolutionäres Algorithmus-Framework, das versucht, GCC-Optimierungsflags für einen bestimmten Code durch natürliche Auswahl zu optimieren.

Es funktioniert in etwa wie folgt: Sie schreiben ein kleines Stück Benchmark-Code (er wirklich muss klein sein, da er mehrere tausend Mal neu kompiliert und ausgeführt wird), der die Leistungsmerkmale des größeren Programms darstellt Sie möchten optimieren. Dann erstellt Acovea zufällig einige Dutzend verschiedene GCC-Befehlszeilen, kompiliert und führt mit jedem von Ihnen einen Benchmark aus. Die besten dieser Befehlszeilen dürfen sich dann "paaren" und "neue" Kinder "züchten", die (hoffentlich) die besten "Gene" von ihren "Eltern" erben. Dieser Vorgang wird für ein paar Dutzend "Generationen" wiederholt, bis ein stabiler Satz Befehlszeilenflags angezeigt wird.

30
Jörg W Mittag

Ich habe ein Skript, das automatisch die entsprechenden Flags für Ihre Kombination aus CPU und Compiler auswählt. Ich habe es gerade aktualisiert, um Intel Atom zu unterstützen:

http://www.pixelbeat.org/scripts/gcccpuopt

Update: Ich habe zuvor -march = prescott für Atom angegeben, aber Zeigt genauer, dass Atom merom ISA -konform ist. Daher ist -march = core2 besser geeignet. Beachten Sie jedoch, dass Atome In-Order-Kerne sind, der letzte davon ist das ursprüngliche Pentium. Deshalb ist es wahrscheinlich besser, -mtune = Pentium zu verwenden. Leider habe ich Kein Atom zum Testen. Ich würde es wirklich begrüßen, wenn jemand den Unterschied zwischen

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

Update: Hier sind ein paar nette Artikel zur Low-Level-Optimierung für Atom:

12
pixelbeat

Nun, das Gentoo-Wiki sagt zum Prescott:

http://de.gentoo-wiki.com/wiki/Safe_Cflags/Intel#Atom_N270

CHOST = "i686-pc-linux-gnu"

CFLAGS = "- march = Prescott -O2 -pipe -fomit-frame-pointer"

CXXFLAGS = "$ {CFLAGS}"

5
user39591

Von Intel, Erste Schritte mit MID

Bei der Verwendung von GCC zum Kompilieren sind einige empfohlene Flags zu verwenden:

  • -O2 oder -O1: O2-Flag optimiert die Geschwindigkeit, während das -O1-Flag die Größe optimiert
  • -msse3
  • -march = core2
  • -mfpmath = sse
3
Marc

Genau wie bei Pentium 4:

-march=prescott -O2 -pipe -fomit-frame-pointer
2
user38733

Ich weiß nicht, ob GCC noch Atom-spezifische Optimierungsflags hat, aber der Atomkern soll dem ursprünglichen Pentium sehr ähnlich sein, mit der sehr bedeutsamen Ergänzung der MMX/SSE/SSE2/SSE3/SSSE3-Befehlssätze. Natürlich machen diese nur dann einen signifikanten Unterschied, wenn Ihr Code Fließkomma- oder DSP-lastig ist.

Vielleicht könnten Sie versuchen:

gcc -O2-march = Pentium-mmmx -msse -msse2 -msse3 -mssse3 -mfpmath = sse

1
Dan Lenski

i686 ist am nächsten. Gehen Sie nicht für core2.

GCC 4.1 -O3-march = i686 GCC 4.3 -O3-march = native

GCC 4.1 -O4 -ast-math GCC 4.3 -O4 -ast-math

http://macles.blogspot.com/2008/09/intel-cc-compiler-gcc-and-intel-atom.html

0
brij

hier ist ein paar Cross-Pollen von Blogs ... was ich wirklich gehofft hatte, war ein Firefox-Atom-Benchmark ...

Adresse: http: // ivoras.sharanet.org/blog/tree/2009-02-11.optimizing-for-atom.html

"Wie sich herausstellt, scheint gcc mit -mtune = native eine sehr anständige Arbeit zu machen, und mtune = generic ist mehr als akzeptabel. Die größten Gewinne (in diesem mathematisch schweren Benchmark) kommen von der Verwendung von SSE für die Mathematik, aber auch sie werden zerstört, indem sie für Pentium4 gestimmt werden.

"Der Unterschied zwischen der schnellsten und der langsamsten Optimierung beträgt 21%. Die Auswirkungen der Verwendung von Marsch anstelle von mtune sind vernachlässigbar (zu wenig Unterschied, um zu erkennen, ob er hilft oder nicht).

"(Ich habe K6 nur als Referenz hinzugefügt - ich weiß, dass Atom keine 3D-Version hat)

"Spätes Update: Tuning für k8 (mit SSE und O3) ergibt eine etwas höhere Bestnote von 182."

0
hackvan