Pregunta

Estoy desarrollando un rendimiento de aplicaciones críticas para el procesador Intel Atom.

¿Cuáles son los mejores gcc parámetros de optimización para esta CPU?

¿Fue útil?

Solución

GCC 4.5 contendrá la -march=átomo y -mtune=átomo de opciones.

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

Otros consejos

No es un genial marco llamado Acovea (Análisis de las Opciones del Compilador a través de Algoritmo Evolutivo), por Scott Rober Ladd, uno de los países del CCG los hackers.Es una genética/algoritmo evolutivo marco que intenta optimizar GCC parámetros de optimización para una pieza específica de código a través de la selección natural.

Funciona algo como esto:escribe un pequeño pedazo de referencia código (es realmente tiene que ser poco, porque va a ser re-compilado y ejecutado varios miles de veces) que representa las características de rendimiento de los más grandes, programa que se desea optimizar.Luego Acovea al azar construcciones de algunas docenas de diferentes GCC commandlines y se compila y ejecuta su punto de referencia con cada uno de ellos.El mejor de estos commandlines pueden "mate" y "raza" nueva "niños" que (esperemos) heredar el mejor de los "genes" de sus "padres".Este proceso se repite para un par de docenas de "generaciones", hasta que un conjunto estable de línea de comandos banderas emerge.

Tengo un script que automáticamente se selecciona el las banderas apropiadas para su CPU y el compilador de combinación.He actualizado que soporte el procesador Intel Atom:

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

Actualización:Me previamente especificado -march=prescott para el Átomo, pero mirando más en ella muestra que es un Átomo de merom ISA compatible, por lo tanto-marzo=core2 es más apropiado.Nota sin embargo de que los Átomos son en orden de núcleos, el último de la original pentium.Por lo tanto, es probable que sea mejor -mtune=pentium así.Por desgracia no tengo un Átomo a prueba.Yo realmente apreciaría si alguien pudiera punto de referencia la diferencia entre:

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

Actualización:Aquí hay un par de buenos artículos sobre el bajo nivel de optimización para el Átomo:

Así, la wiki de Gentoo los estados para la 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}"

De Intel, Introducción a MEDIADOS de los

Cuando se usa GCC para compilar, hay un par recomendado indicadores a utilizar:

  • -O2 o -O1:O2 bandera optimiza para la velocidad, mientras que el O1 bandera optimiza el tamaño
  • -msse3
  • -march=core2
  • -mfpmath=ess

Al igual que para los Pentium 4:

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

No sé si GCC tiene cualquier Átomo específico de parámetros de optimización, pero el núcleo del Átomo se supone debe ser muy similar a la original Pentium, con la importante adición de la MMX/SSE/SSE2/SSE3/SSSE3 conjuntos de instrucciones.Por supuesto, estos sólo hacer una diferencia significativa si el código es de punto flotante o DSP-pesado.

Tal vez usted podría tratar:

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

he aquí algunas de la cruz-pollenation de los blogs...lo que realmente estaba esperando era un firefox-compilado-de-átomo de referencia...

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

"Como resulta, gcc aparece para hacer un trabajo decente con -mtune=nativo, y mtune=genérico es más que aceptable.Los aumentos más grandes (en este math-pesado de referencia) de la ESS para las matemáticas, pero incluso ellos son destruidos por la afinación para pentium4.

"La diferencia entre el más rápido y el más lento de optimización es de 21%.El impacto de la utilización de marzo en lugar de mtune es insignificante (no hay suficiente diferencia para saber si ayuda o no).

"(He incluido k6 sólo para referencia - sé que el Átomo no tiene 3dnow)

"A finales de la actualización:Optimización para k8 (con SSE y O3) se obtiene un poco más alto mejor puntuación de 182."

i686 es la más cercana.No vaya para core2.

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

GCC 4.1 -O4-ffast-matemáticas GCC 4.3 -O4-ffast-matemáticas

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top