2010-03-23 22 views
7

Me interesa saber cómo se diferencia GCC del ICC de Intel en cuanto a los niveles de optimización y la atención a la arquitectura de procesador específica. Estoy usando GCC 4.1.2 20070626 e ICC v11.1 para Linux.ICC vs GCC - Optimización y arquitectura de la CPU

¿En qué se diferencian los niveles de optimización de ICC (O1 a O3) de los de GCC, si difieren en absoluto?

El ICC puede atender específicamente a diferentes arquitecturas (IA-32, intel64 e IA-64). He leído que GCC tiene la opción del compilador de marC que creo que es similar, pero no puedo encontrar una lista de las opciones para usar. Estoy usando Intel Xeon X5570, que es de 64 bits. ¿Hay alguna otra opción del compilador de GCC que pueda usar que pueda atender mis aplicaciones para CPU Intel de 64 bits?

Gracias.

Saludos, Rayne

Respuesta

1

Véase la sección 17.3.15 en el manual del CCG, ie386 and x86-64 Options para la lista completa y descripción de todas las opciones aplicables a esas arquitecturas (IA-64 es Itanium, y es poco probable de tener una de aquellos).

Las opciones más importantes en este contexto son:

  • -m64 generar código de 64 bits;
  • -march= Genera instrucciones para un tipo de CPU específico; y
  • -mtune= Sintonice el código para un tipo de CPU específico.
-1

opciones de melodía, desensamblar el código y ver la diferencia

+0

no es una respuesta muy útil, ya que esto solo se aplicará al código que ya tiene, y no al código que puede escribir en el futuro. –

+2

y cómo se mide la efectividad del optimizador GCC o ICC del código inexistente? –

1

ICC -O2 -unroll2 es más o menos equivalente a -O3 -ffast-matemáticas alcance -fno-CX-limitado -funroll-bucles - param max-unroll-times = 2 -O1 no habilita la auto-vectorización simd para ningún compilador, por lo que hay menos diferencias. Tanto icc como gcc proporcionan compiladores construidos por separado para apuntar al modo de 64 bits; si ambos compiladores gcc están instalados, se admitirá el consejo anterior sobre -m64. icc espera que elija, si ambos están instalados, obteniendo el script de configuración de ruta. -march = native es la opción gcc para usar el conjunto completo de instrucciones de la máquina de compilación. icc puede observar esto pero tiene una opción equivalente -xHost. En el momento de esta pregunta, esa opción icc puede haber funcionado solo para las CPU Intel.

Cuestiones relacionadas