GCC parámetros de optimización para procesadores Intel Atom [cerrado]
-
02-07-2019 - |
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?
Solución
GCC 4.5 contendrá la -march=átomo y -mtune=átomo de opciones.
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