2008-09-21 22 views

Respuesta

31

GCC 4.5 contendrá las opciones -march = atom y -mtune = atom.

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

+1

Cuando use GCC 4.5 también querrá usar -fexcess-precision = fast (vea http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42376 para más detalles) –

30

Hay un marco genial llamado Acovea (Analysis of Compiler Options via Evolutionary Algorithm), por Scott Rober Ladd, uno de los hackers de GCC. Es un marco de algoritmo genético/evolutivo que trata de optimizar los indicadores de optimización de GCC para una pieza específica de código a través de la selección natural.

Funciona así: que escribir una pequeña pieza de código de referencia (que realmente tiene que ser pequeña, porque va a ser re-compilado y ejecutado varios miles de veces) que representa las características de rendimiento del programa más amplio quieres optimizar Entonces, Acovea construye al azar algunas docenas de líneas de comando de GCC diferentes y compila y ejecuta su punto de referencia con cada uno de ellos. Lo mejor de estas líneas de comando se les permite "aparearse" y "criar" nuevos "hijos" que (con suerte) heredan los mejores "genes" de sus "padres". Este proceso se repite por un par de docenas de "generaciones", hasta que emerge un conjunto estable de banderas de línea de comando.

+6

El enlace no funciona – Max

+1

@Max: Parece que Scott dejó de trabajar en él. –

1

No sé si GCC todavía tiene indicadores de optimización específicos de Atom, pero se supone que el núcleo Atom es muy similar al Pentium original, con la adición muy significativa de MMX/SSE/SSE2/SSE3/Conjuntos de instrucciones SSSE3. Por supuesto, estos solo hacen una diferencia significativa si su código es de coma flotante o pesados ​​en DSP.

Tal vez usted podría intentar:

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

+0

Mientras que el Atom es comparable al Pentium en que es una arquitectura en orden, la estructura de la tubería es muy diferente, y la programación de las instrucciones para el Pentium probablemente sería bastante mala para el rendimiento. – user57368

+0

De acuerdo, usted * no * quiere usar -march = pentium para nada que no sea un Pentium real. – kquinn

2

Al igual que para Pentium 4:

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

Bueno, los estados wiki de Gentoo para el 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}"

+1

No por más tiempo: http://en.gentoo-wiki.com/wiki/Safe_Cflags/Intel#Atom_N270.2FN280 (enlace actualizado) ahora recomienda CFLAGS = "- O2 = -march Core2 -mtune = genérica -mssse3 -mfpmath = sse -fomit-frame-pointer -pipe" –

+1

... y CFLAGS = "- O2 -march = átomo de -mssse3 -mfpmath = sse -fomit-frame-pointer -pipe" para GCC 4.5 –

12

Tengo un script que selecciona automáticamente los indicadores apropiados para la combinación de tu CPU y compilador. acabo de ser informado que soporte Intel Atom:

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

Actualización: anteriormente he especificado -march = phoenix Atom, pero mirando más en él muestra que Atom es compatible merom ISA, por lo tanto - march = core2 es más apropiado. Sin embargo, tenga en cuenta que los átomos son núcleos en orden, el último de los cuales es el pentium original. Por lo tanto, probablemente sea mejor que también sintonice = pentium. Lamentablemente no tengo un átomo para probar.Realmente agradecería si alguien pudiera comparar el diff entre:

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

Actualización: Aquí hay un par de buenos artículos sobre la optimización de bajo nivel de Atom:

+0

no creo que el establecimiento tanto '-march = core2' y' -mtune = pentium' funciona en absoluto: obtengo 'arg.c: 1: error: la CPU que ha seleccionado no soporta instrucciones x86-64 set' – moo

+0

interesante. ¿Su átomo es compatible con 64 bits? Si prueba la secuencia de comandos anterior probablemente le diga que también agregue -m32 – pixelbeat

+1

sí, mi átomo admite 64 bits. – moo

0

aquí hay algunos polinización cruzada de blogs ... lo que realmente esperaba era un benc compilado para el átomo de firefox hmark ...

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

"Como resultado, parece gcc haga un trabajo muy decente con -mtune = native, y mtune = generic es más que aceptable. Las mayores ganancias (en este punto de referencia matemático pesado) provienen del uso de SSE para las matemáticas, pero incluso se destruyen mediante la afinación de pentium4.

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

" (he incluido k6 solo como referencia - Sé que Atom no tiene 3dnow)

"Actualización tardía: el ajuste de k8 (con SSE y O3) arroja un mejor puntaje ligeramente superior de 182."

3

de Intel, Getting Started with MID

cuando se utiliza gcc para compilar, hay algunas banderas recomienda utilizar:

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

¿Qué pasa con el compilador Intel C (CPI)? Al menos en los puntos de referencia que vienen con esto, la dominación sobre gcc es bastante notable ...

Cuestiones relacionadas