Intel C++ Compiler (también conocido como ICC o ICL) es un conjunto de compiladores para los lenguajes C y C++, desarrollado por Intel. Los compiladores están disponibles para los Sistemas Operativos Linux, Microsoft Windows y Mac OS X.
Estos compiladores pueden funcionar sobre procesadores IA-32, Intel 64, Itanium 2, y otros procesadores ajenos a la marca, pero compatibles, como los de AMD. Los desarrolladores, eso sí, deben comprobar los requisitos del sistema. El Intel C++ Compiler para IA-32 e Intel 64 dispone de una vectorización automática que puede generar instrucciones SSE, SSE2, SSE3 y SSE4 SIMD , las variantes de Intel Wireless MMX y MMX 2 para sistemas embebidos. Desde su introducción, el Compilador de Intel de C++ para IA-32 ha aumentado considerablemente la adopción de SSE2 en el desarrollo de aplicaciones para Windows.[cita requerida]
El Intel C++ Compiler soporta tanto OpenMP 3.0 como paralelización automática para el multiprocesamiento simétrico. Con el complemento Cluster OpenMP, el compilador también puede generar automáticamente llamadas de Interfaz de Paso de Mensajes para el multiprocesamiento de la memoria distribuida desde las directivas de OpenMP.
ICC pertenece a la familia de compiladores de los Frontend de Edison Design Group (como SGI MIPSpro, Comeau C++, Portland Group y otros más). El compilador es ampliamente utilizado por la SPEC CPU para pruebas de rendimiento de las arquitecturas IA-32, x86-64 e Itanium 2.
ICC puede presentarse de cuatro maneras diferentes. Dentro de Intel Parallel Studio, como paquete en Intel C++ Compiler Professional Edition, en Intel Compiler Suite y en Intel Cluster Toolkit, Compiler Edition. En el sitio Intel Software Products se proporciona mucha más información y recursos.
Intel afina este compilador optimizándolo para plataformas de hardware, minimizando estancamientos y produciendo así un código que se ejecuta en un número menor de ciclos. El compilador C++ de Intel soporta tres técnicas de alto nivel por separado para optimizar los programas compilados: optimización interprocedimiento o interprocedural optimization (IPO), optimización guiada por perfil o profile-guided optimization (PGO), y optimización de alto nivel o high-level optimizations (HLO). También soporta técnicas y herramientas que agregan paralelismo en las aplicaciones.
Optimización guiada por perfil (o Profile-guided optimization en su versión original) se refiere a un modo de optimización donde el compilador es capaz de acceder a los datos desde una ejecución de ejemplo del programa a través de una entrada de datos representativa. Los datos indicarán que áreas del programa se ejecutan con mayor frecuencia, y que áreas son ejecutadas con menor frecuencia. Todas las optimizaciones se benefician de la realimentación (feedback) guiada por perfil porque dependen menos de la heurística al tomar decisiones de compilación.
Optimizaciones de alto nivel son aquellas que se realizan en una versión del programa que representa más exactamente el código fuente. Esto incluye bucles de intercambio, fusión de bucles, desenvoltura de bucles, distribución de bucles, prelectura de datos y más.
Estas optimizaciones suelen ser muy agresivas y pueden llevar un considerable tiempo de compilación.Interprocedural optimization applies typical compiler optimizations (such as constant propagation) but using a broader scope that may include multiple procedures, multiple files, or the entire program.
Los compiladores incluyen una extensión de depuración en paralelo, Bloques de Construcción de Hilos de Intel (Intel Threading Building Blocks), soporte para la función lambda, y una herramienta de comprobación de recursos para usar con el código en hilos.
El compilador de Intel ha sido criticado por aplicar, por defecto, optimizaciones de coma flotante no permitidas en el estándar de C y que requieren flags especiales o específicos con otros compiladores como el conocido GCC.
La suite de compiladores de Intel tiene frontends para C, C++, y Fortran.
Las versiones más tempranas de ICC que usan versiones anteriores al compilador GCC 3.x para Linux usan el esquema de coloreado de sintaxis de código de Dinkumware con el propósito de proveer una implementación más ajustada al estándar de C++ que GCC en sus versiones 2.x. Esto hace que su ABI incompatible con ambas versiones de GCC. Intel suprimió las bibliotecas de Dinkumware en la versión 10.0, la cual se lanzó en junio de 2007. Desde entonces, el compilador ha sido y sigue siendo compatible con GCC 3.2 y versiones posteriores.
Las siguientes versiones del Intel C++ Compiler han sido publicadas:
Para VS2008 el soporte se reduce a la línea de comandos. La integración con el IDE aún no está soportada.
Además, las siguientes ediciones "prototipo" están disponibles:
Esta documentación puede encontrarse en Intel Software Technical Documentation site.
El compilador de Intel provee información de depuración que es estándar para los depuradores comunes (DWARF 2 en Linux, similar a gdb, y COFF para Windows). Los flags para compilar con la información de depuración son /Zi en Windows y -g en Linux.
Intel también provee su propio debugger llamado idb, el cual puede ser ejecutado tanto en dbx como en gdb en modo de comandos compatible.
Aunque que el compilador de Intel puede generar una salida de profiling compatible con gprof, Intel también provee un nivel en kernel, un perfilador estadístico de sistema completo como producto separado llamado VTune. VTune ofrece una GUI de fácil manejo (integrada en Visual Studio para Windows, Eclipse para Linux) tan buena como la línea de comandos.
Las versiones 11.x del compilador introducen la Extensión de Depuración en Paralelo (Parallel Debugger Extension), la cual provee técnicas de depuración para aplicaciones con hilos de trabajo. Puede ser usada con otros compiladores compatibles, como Microsoft Visual C++ en Windows, que está Visual Studio 2005, 2008 y 2010 y gcc en Linux.
Intel y terceros han publicado resultados de estudios de rendimiento a fin de corroborar los anuncios de liderazgo en desempeño sobre otros compiladores y librerías comerciales, de código abierto y de AMD por encima de procesadores Intel y no-Intel. Intel y AMD han documentado indicadores de uso en compiladores Intel para obtener rendimiento óptimo en procesadores Intel y AMD.
Sin embargo, los compiladores Intel han sido acusados de producir código sub-óptimo con propósitos mercenarios. En 2009, un desarrollador había escrito en un blog al respecto: 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.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.
EnEl acuerdo de la FTC incluyó una disposición de revelación en donde Intel debe:
Escribe un comentario o lo que quieras sobre ICL (directo, no tienes que registrarte)
Comentarios
(de más nuevos a más antiguos)