¿Alguien está usando el compilador Intel C++ en lugar del compilador Visual C++ de Microsoft?compilador Intel C++ como alternativa a Microsoft?
Me interesaría mucho escuchar su experiencia sobre integración, rendimiento y tiempos de construcción.
¿Alguien está usando el compilador Intel C++ en lugar del compilador Visual C++ de Microsoft?compilador Intel C++ como alternativa a Microsoft?
Me interesaría mucho escuchar su experiencia sobre integración, rendimiento y tiempos de construcción.
El compilador de Intel es uno de los compiladores de C++ más avanzados disponibles, tiene una serie de ventajas sobre, por ejemplo, el compilador de Microsoft Visual C++, y una gran desventaja. Las ventajas incluyen:
Muy buen soporte SIMD, por lo que yo he podido averiguar, es el compilador que tiene el mejor soporte para instrucciones SIMD.
Admite la paralelización automática (optimizaciones multinúcleo), así como la manual (a través de OpenMP), y hace ambas cosas muy bien.
Soporte de despacho de CPU, esto es realmente importante, ya que permite al compilador enfocarse en el procesador para obtener instrucciones optimizadas cuando se ejecuta el programa. Por lo que puedo decir, este es el único compilador de C++ disponible que hace esto, a menos que G ++ haya introducido esto en su todavía.
A menudo se envía con bibliotecas optimizadas, como bibliotecas de matemática y de imágenes.
Sin embargo, tiene un inconveniente importante, el despachador como se mencionó anteriormente, sólo funciona en la CPU de Intel, esto significa que las optimizaciones avanzadas se quedará fuera de AMD CPU. Hay una solución para esto, pero sigue siendo un problema importante con el compilador.
Para evitar el problema despachador, es posible sustituir el código despachador producido con una versión de trabajo de los procesadores de AMD, se puede por ejemplo utilizar Agner Fog'sasmlib library que sustituye el compilador genera la función de despachador. Se puede encontrar mucha más información sobre el problema del envío y explicaciones técnicas más detalladas de algunos de los temas en el documento Optimizing software in C++, también de Anger (que realmente vale la pena leer).
En una nota personal, utilicé el compilador Intel C++ con Visual Studio 2005, donde funcionó a la perfección, no tuve ningún problema con las extensiones de lenguaje específicas de Microsoft, parecía entender las que usaba, pero tal vez las mencionadas por John Knoeller eran diferentes de las que tenía en mis proyectos.
Aunque me gusta el compilador de Intel, actualmente estoy trabajando con el compilador de Microsoft C++, simplemente debido a la inversión financiera adicional que requiere el compilador de Intel. Solo usaría el compilador de Intel como alternativa a Microsofts o el compilador GNU, si el rendimiento fuera crítico para mi proyecto y tuviera una parte financiera en orden;)
He tenido solo una experiencia con este compilador, compilando STLPort. MSVC tardó unos 5 minutos en compilarlo e ICC compiló durante más de una hora. Parece que su compilación de plantilla es muy lenta. Aparte de esto, solo he oído cosas buenas al respecto.
Aquí hay algo interesante:
compilador de Intel puede producir diferentes versiones de piezas de código, con cada versión está optimizado para un procesador específico y/o conjunto de instrucciones (SSE2, SSE3, etc.) El sistema detecta en qué CPU se está ejecutando y elige la ruta de código óptima en consecuencia; el despachador de CPU , como se llama.
"Sin embargo, la CPU despachador Intel no sólo se compruebe que la enseñanza conjunto se apoya en la CPU, sino que también comprueba la cadena de ID del fabricante," niebla detalles, "Si la cadena proveedor dice 'GenuineIntel' luego utiliza la ruta de código óptimo . Si la CPU no es de Intel, entonces, en la mayoría de los casos, ejecutará la versión más lenta posible del código, incluso si la CPU es totalmente compatible con una mejor versión ".
OSNews artículo here
¿Qué niveles de optimización estaba usando? Si usaba la optimización interproceso (tomando todos los archivos de objeto, combinándolos en un solo archivo de objeto enorme y optimizando en el tiempo de enlace), ICC va a ser mucho más lento que MSVC. Sin embargo, producirá mejores resultados. – Tom
La última vez que la empresa donde trabajo compara los dos era hace un año, (tal vez 2). El compilador de Intel generó un código más rápido, generalmente solo un poco más rápido, pero en algunos casos bastante.
Pero no podía manejar algunas de las extensiones de lenguaje MS en las que dependemos, así que terminamos quedándonos con MS. Fue VS 2005 que lo estábamos comparando. Y estoy destrozando mi cerebro para recordar exactamente qué extensión de MS no pudo manejar el compilador de Intel. Regresaré y editaré esta publicación si puedo recordar.
¿Puede manejar COM/ATL? Estoy atrapado en tierra COM/ATL ... – wheaties
Podría manejar COM, pero no usamos mucho ATL, así que no estoy seguro de eso. –
Intenté usar Intel C++ en mi trabajo anterior. IIRC, efectivamente generó un código más eficiente a expensas del tiempo de compilación. Sin embargo, no lo usamos para producción, por razones que no recuerdo.
Una diferencia importante en comparación con MSVC es que el compilador Intel admite C99.
No estoy usando el compilador de Intel C++ en el trabajo/personal (ojalá lo fuera).
lo usaría porque tiene:
Excelente soporte en línea ensamblador. Intel C++ es compatible con las sintaxis del ensamblador Intel y AT & T (GCC), para plataformas x86 y x64. Visual C++ solo puede manejar la sintaxis de ensamblado de Intel y solo para x86.
Compatibilidad con conjuntos de instrucciones SSE3, SSSE3 y SSE4.Visual C++ tiene soporte para SSE y SSE2.
Se basa en EDG C++, que cuenta con una completa ISO/IEC 14882: 2003 implementación estándar. Eso significa que puede usar/aprender cada característica de C++.
Como anécdota, he encontrado que el compilador de Intel se cuelga con más frecuencia que Visual C++. Sus diagnósticos son un poco más completos y están mejor escritos que los de VC. Por lo tanto, es posible que el compilador proporcione diagnósticos que no se proporcionaron con VC, o fallarán cuando VC no lo hizo, lo que encarece su conversión.
Sin embargo, creo que el compilador de Intel le permite vincular con los tiempos de ejecución de Microsoft como el CRT, lo que facilita el costo de transición.
Si está interoperando con el código administrado, probablemente debería quedarse con el compilador de Microsoft.
Los compiladores recientes de Intel logran un rendimiento significativamente mejor en puntos de referencia pesados de coma flotante, y son similares a los puntos de referencia compactos de Visual C++ en enteros. Sin embargo, varía drásticamente según el programa y si está utilizando o no la generación de código de tiempo de enlace o la optimización guiada por perfil. Si el rendimiento es crítico para usted, necesitará comparar su aplicación antes de tomar una decisión. Solo diría que si está haciendo informática científica, probablemente valga la pena investigar.
Intel le permite una versión de prueba gratuita de un mes de su compilador, para que pueda probar estas cosas por su cuenta.
¿Se están mejorando los diagnósticos en VC2010? – jalf
Pensándolo bien, tal vez no. Tienen una nueva tecnología de front-end, pero creo que solo la usan para intellisense, no para el compilador en sí. –
El compilador Intel C++ tiene soporte INCREÍBLE (humano). Hablar con Microsoft puede tomar literalmente días. Mi problema no trivial se resolvió a través del chat en menos de 10 minutos (incluido el tiempo de verificación de membresía).
EDIT: He hablado con Microsoft sobre problemas en sus productos como Office 2007, incluso me han informado de un error. Aunque finalmente tuve éxito, el tamaño general y la complejidad de sus productos y la jerarquía de la organización es desalentadora.
¿Cuántas veces llama al soporte técnico humano para un compilador en una década? 0, 1? –
Así es como las compañías le pagan mucho dinero a Intel. ¿Es eso más fácil de encontrar la solución con Google, no. – ozhan
He estado usando el compilador Intel C++ desde la primera versión de Intel Parallel Studio, y hasta ahora no he sentido la tentación de volver. Aquí hay un resumen de las ventajas y desventajas, así como (algunas obvias) observaciones.
Ventajas
Desventajas
neutrales
Cuidado con absolutos como "* the * mot compilador avanzado disponible". – jalf
@jalf: Estoy de acuerdo en que esto podría llevar a creer que el autor es parcial, sin embargo, este es un caso en el que tenemos un tamaño mensurable. Se puede observar a través del ejecutable producido que el compilador de Intel utiliza tecnologías de optimización más avanzadas, en comparación con los compiladores de la competencia. –
Además, al escribir tales respuestas, es mejor prever las afirmaciones generales que podrían cambiar (es decir, volverse falsas) con el tiempo. Como todos sabemos, el software evoluciona rápidamente y sufre constantemente por ser superado por la competencia. Incluso solo unos pocos años pueden cambiar las cifras dramáticamente. – ulidtko