web-dev-qa-db-fra.com

Indicateurs d'optimisation GCC pour Intel Atom

Je développe une application critique pour les processeurs Intel Atom.

Quels sont les meilleurs indicateurs d'optimisation gcc pour ce processeur?

26
user7305

GCC 4.5 contiendra les options -march = atome et -mtune = atome.

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

31
user7305

Il existe un cadre génial appelé Acovea (Analyse des options du compilateur via un algorithme évolutif) , de Scott Rober Ladd, l’un des pirates de GCC. Il s'agit d'un framework d'algorithme génétique/évolutif qui tente d'optimiser les indicateurs d'optimisation GCC pour un morceau de code spécifique via la sélection naturelle.

Cela fonctionne à peu près comme ceci: vous écrivez un petit morceau de code de référence (il vraiment doit être petit, car il sera recompilé et exécuté plusieurs milliers de fois) qui représente les caractéristiques de performance du programme plus large vous voulez optimiser. Ensuite, Acovea construit de manière aléatoire plusieurs dizaines de lignes de commande GCC différentes, compile et exécute votre point de référence avec chacune d’elles. Les meilleurs de ces lignes de commande sont ensuite autorisés à "s'accoupler" et à "reproduire" de nouveaux "enfants" qui (espérons-le) héritent des meilleurs "gènes" de leurs "parents". Ce processus est répété pendant une douzaine de "générations", jusqu'à ce qu'un ensemble stable d'indicateurs de ligne de commande apparaisse.

30
Jörg W Mittag

J'ai un script qui sélectionne automatiquement les indicateurs appropriés pour votre combinaison processeur/compilateur. Je viens de le mettre à jour pour prendre en charge Intel Atom:

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

Mise à jour: J'ai précédemment spécifié -march = prescott pour Atom, mais un examen plus approfondi Montre qu'Atom est conforme à merom ISA. Par conséquent, -march = core2 est plus approprié. Notez cependant que les atomes sont des cœurs en ordre, le dernier de ceux-ci étant le pentium d'origine. Il est donc probablement préférable de -mtune = pentium également. Malheureusement, je n'ai pas Atom à tester. J'apprécierais vraiment si quelqu'un pouvait comparer le diff entre:

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

Mise à jour: Voici quelques articles de Nice sur l'optimisation de bas niveau pour Atom:

12
pixelbeat

Eh bien, le wiki Gentoo dit pour le Prescott:

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

CHOST = "i686-pc-linux-gnu"

CFLAGS = "- mars = prescott -O2 -pipe -fomit-frame-pointer"

CXXFLAGS = "$ {CFLAGS}"

5
user39591

De Intel, Premiers pas avec MID

Lorsque vous utilisez GCC pour compiler, quelques indicateurs recommandés sont à utiliser:

  • -O2 ou -O1: l'indicateur O2 optimise la vitesse, tandis que l'indicateur -O1 optimise la taille
  • -msse3
  • -march = core2
  • -mfpmath = sse
3
Marc

Juste comme pour Pentium 4:

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

Je ne sais pas si GCC possède encore des indicateurs d'optimisation spécifiques à Atom, mais le noyau Atom est supposé être très similaire au Pentium d'origine, avec l'ajout très significatif des jeux d'instructions MMX/SSE/SSE2/SSE3/SSSE3. Bien entendu, ils ne font une différence significative que si votre code est à virgule flottante ou à forte densité DSP.

Peut-être pourriez-vous essayer:

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

1
Dan Lenski

i686 est le plus proche. N'allez pas pour core2.

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

GCC 4.1 -O4 -fast-math GCC 4.3 -O4 -fast-math

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

0
brij

voici quelques exemples de pollinisation croisée de blogs ... Ce que j'espérais vraiment, c'était un test de performance compilé par Firefox pour atome ...

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

"En fin de compte, gcc semble faire un travail très décent avec -mtune = native, et mtune = generic est plus qu'acceptable. Les gains les plus importants (dans ce test lourd en mathématiques) proviennent de l'utilisation de SSE pour les mathématiques, mais même ils sont détruits par le réglage pour pentium4.

"La différence entre l'optimisation la plus rapide et la plus lente est de 21%. L'impact de l'utilisation de mars au lieu de mtune est négligeable (pas assez de différence pour dire si cela aide ou non).

"(J'ai inclus k6 juste pour référence - je sais qu'Atom n'a pas 3dnow)

"Mise à jour tardive: Le réglage pour k8 (avec SSE et O3) donne un meilleur score légèrement supérieur, soit 182."

0
hackvan