domingo, 28 de octubre de 2012

Intel C++ Compiler


Intel C++ Compiler
Intel C Code Builder 1.0 es un compilador especializado en lenguaje C para arquitecturas i386 e i486. Cuando sale la versión 6 en 2002 pasa a ser conocido como Intel C++ Compiler y dando un soporte completo para C y C++.
Las fechas de lanzamiento de los compiladores vendrían siendo estas:
Luego seguiría la 7.0 (2002), 7.1 (2003), 8.0 (2003), 8.1 (2004), 9.0 (2005),  10.0 (2007), 10.1 (2007), 11.0 (2008), 11.1 (2009), 12.0 (2010) y 12.1 (2011),  mientras ya se está desarrollando la 13.0, que todavía no se ha lanzado.




La versión 12.1 ha dado un enorme salto, pues; ya esta disponible para los sistemas: Microsoft Windows, OS X y GNU/Linux. Las suites que componen al  compilador: Intel Parallel Studio XE, Intel C++ Studio XE e Intel C++ Composer XE.

El compilador Intel C++ Compiler puede generar código para procesadores IA-32, Intel 64m, Itanium y procesadores compatibles. En procesadores Intel puede generar codigo con  instrucciones SSE, SSE2, SSE3 y SSE4.


Una de las criticas mas fuertes con respecto al compilador es el código generado usando procesadores AMD o externos a los Genuine Intel.  Esto debido a que parece que el compilador es capaz de reconocer sobre que procesador esta siendo ejecutado y generar codigo dependiendo del procesador encontrado. Esto a primera instancia pareciera algo muy bueno; ya que podría generar y optimizar el código según el procesador sobre el que esta corriendo.

Al saber sobre que procesador esta corriendo el compilador, este decide que optimización realizar dependiendo de las capacidades del procesador. El problema radica en que cuando detecta un procesador que no es Genuine Intel realiza la optimización mas lenta posible haciendo que el código sea mas lento de lo que debería aun cuando el procesador sea completamente compatible con sus contra partes Intel.


Según Wikipedia:

Este despachamiento de CPU específico a un fabricante disminuye el desempeño  en procesadores no-Intel de software construido con un compilador Intel o una  biblioteca de funciones de Intel - posiblemente sin el conocimiento del  programador. Esto ha conducido a estudios de desempeño errados.21 En noviembre  de 2009 se acordó una batalla legal entre AMD e Intel sobre este y otros
asuntos. A finales de 2010, AMD interpuso una investigación anti-monopolio  contra Intel.

El acuerdo de la FTC incluyó una disposición de revelación en donde Intel  debe:

    ...publicar con claridad que su compilador discrimina en contra de  procesadores no-intel (tales como diseños de AMD), a través de la no  utilización de sus características y de la producción de código inferior.


Al parecer el compilador Intel C++ Compiler es capaz de compilar Linux sin errores.
El porqué de usar este compilador en vez del clásico GCC(GNU) es un supuesto rendimiento, Tomando en cuenta lo anterior parece ser posible pero solo en procesadores Intel. El kernel "oficial mente" compilado con Intel C++ Compiler es el 2.6.23 habra que ver los resultados con el 3.x usando la próxima versión del compilador.
 

No hay comentarios.: