Question

Je développe une application critique pour les performances du processeur Intel Atom.

Quels sont les meilleurs indicateurs d'optimisation gcc pour cette CPU?

Était-ce utile?

La solution

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

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

Autres conseils

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. C'est un framework d'algorithme génétique / évolutif qui essaie 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 ( 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 important que vous souhaitez 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 meilleures de ces lignes de commande sont ensuite autorisées à "mate" et " race " nouveau " 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.

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

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

Mise à jour: J'ai déjà spécifié -march = prescott pour Atom, mais j'y suis allé davantage montre qu'Atom est conforme à merom ISA, donc -march = core2 est plus approprié. Notez cependant que les atomes sont des cœurs en ordre, le dernier d'entre eux étant le pentium d'origine. Par conséquent, il est probablement préférable de -mtune = pentium également. Malheureusement je n'ai pas un atome à 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 intéressants sur l'optimisation de bas niveau pour Atom:

Eh bien, le wiki Gentoo indique pour le 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} "

D'après Intel, Premiers pas avec MID

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

  • -O2 ou -O1: le drapeau O2 optimise la vitesse, tandis que le drapeau -O1 est optimisé pour la taille
  • -msse3
  • -march = core2
  • -mfpmath = sse

Comme pour Pentium 4:

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

Je ne sais pas si GCC a 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 de MMX / SSE / SSE2 / SSE3 / SSSE3. jeux d'instructions. Bien entendu, ils ne font une différence significative que si votre code est à virgule flottante ou lourd en DSP.

Peut-être pourriez-vous essayer:

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

Voici quelques exemples de pollenages croisés de blogs ... Ce que j'espérais vraiment, c'était un test d'évaluation réalisé par firefox-compilé-pour-atome ...

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

"Il se trouve que 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 cette référence lourde en mathématiques) proviennent de l'utilisation de SSE pour les mathématiques, mais ils sont même détruits par le réglage du pentium4.

"La différence entre l'optimisation la plus rapide et la plus lente est de 21%. L’impact de l’utilisation de March 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, à 182".

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 -ffast-math GCC 4.3 -O4 -fast-math

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top