Intel oneAPI DPC++/C++ Compiler e Intel C++ Compiler Classic (los compiladores icc e icl [ 3 ] están obsoletos en el kit de herramientas Intel OneAPI HPC) son los compiladores de Intel para C , C++ , SYCL y Data Parallel C++ (DPC++) para sistemas basados en procesadores Intel, disponibles para los sistemas operativos Windows , Linux y macOS . [ 4 ]
Descripción general
El compilador Intel oneAPI DPC++/C++ está disponible para Windows y Linux y admite la compilación de código fuente C, C++, SYCL y Data Parallel C++ (DPC++) , dirigido a procesadores Intel IA-32 , Intel 64 (también conocido como x86-64 ), Core , Xeon y Xeon Scalable , así como a GPU, incluyendo Intel Processor Graphics Gen9 y superiores, arquitectura Intel X e y Intel Programmable Acceleration Card con FPGA Intel Arria 10 GX. [ 5 ] Al igual que Intel C++ Compiler Classic, también admite los entornos de desarrollo Microsoft Visual Studio y Eclipse IDE , y admite subprocesos a través de Intel oneAPI Threading Building Blocks , OpenMP y subprocesos nativos.
DPC++ [ 6 ] [ 7 ] se basa en la especificación SYCL de The Khronos Group. Está diseñado para permitir a los desarrolladores reutilizar código en diferentes plataformas de hardware (CPU y aceleradores como GPU y FPGA) y realizar ajustes personalizados para un acelerador específico. DPC++ incluye características de los lenguajes C++17 y SYCL, e incorpora extensiones de la comunidad de código abierto que facilitan el uso de SYCL. Muchas de estas extensiones fueron adoptadas por la especificación provisional SYCL 2020 [ 8 ], incluyendo memoria compartida unificada, algoritmos de grupo y subgrupos.
Intel anunció en agosto de 2021 la adopción completa de LLVM para tiempos de compilación más rápidos y los beneficios de la compatibilidad con los últimos estándares de C++. [ 9 ]
Intel C++ Compiler Classic está disponible para Windows, Linux y macOS, y admite la compilación de código fuente C y C++ para procesadores Intel IA-32, Intel 64 (x86-64), Core, Xeon y Xeon Scalable. [ 5 ] Es compatible con los entornos de desarrollo Microsoft Visual Studio y Eclipse IDE. Intel C++ Compiler Classic admite subprocesos mediante Intel oneAPI Threading Building Blocks, OpenMP y subprocesos nativos.
Arquitecturas
Según Intel, [ 10 ] a partir de la versión 2023.0, el compilador Intel oneAPI DPC++/C++ admite todas las CPU y GPU x86-64 de propósito general de Intel actuales, incluidas:
- Procesadores:
- Procesadores Intel IA-32 e Intel 64 (x86-64) heredados
- Procesadores Intel Core
- Familia de procesadores Intel Xeon
- Procesadores Intel Xeon Scalable
- Procesador Intel Xeon Max Series
- GPU:
- Gráficos de procesador Intel Gen9 y superiores
- Arquitectura Intel Xe
- Tarjeta aceleradora programable Intel con FPGA Intel 10 GX
- GPU Intel para centros de datos, incluidas las series Flex y Max.
- FPGA de Intel
El compilador Intel C++ Classic está dirigido a las CPU de arquitectura Intel x86-64 de propósito general, incluidas: [ 5 ]
- Procesadores Intel IA-32 e Intel 64 (x86-64) heredados
- Procesadores Intel Core
- Familia de procesadores Intel Xeon
- Procesadores Intel Xeon Scalable
Kits de herramientas
El compilador Intel oneAPI DPC++/C++ está disponible como un componente independiente [ 11 ] o como parte del Intel oneAPI Base Toolkit, Intel oneAPI HPC Toolkit e Intel oneAPI IoT Toolkit. [ 5 ]
El compilador Intel C++ Classic está disponible como un componente independiente [ 12 ] o como parte del kit de herramientas base Intel oneAPI. [ 5 ]
Depuración
El compilador de Intel proporciona información de depuración estándar para los depuradores más comunes ( DWARF 2 en Linux, similar a gdb , y COFF en Windows). Las opciones para compilar con información de depuración están disponibles /Zien Windows y -gLinux. La depuración se realiza en Windows con el depurador de Visual Studio y en Linux con gdb.
Si bien el compilador de Intel puede generar una salida de perfilado compatible con gprof , Intel también proporciona un perfilador estadístico a nivel de kernel y de sistema completo llamado Intel VTune Profiler . VTune se puede usar desde la línea de comandos o mediante una interfaz gráfica de usuario (GUI) incluida en Linux o Windows. También se puede integrar en Visual Studio en Windows o Eclipse en Linux. Además del perfilador VTune, existe Intel Advisor , especializado en optimización de vectorización, modelado de descarga, diseño de grafos de flujo y herramientas para el diseño y prototipado de subprocesos.
Intel también ofrece una herramienta para la detección de errores de memoria e hilos llamada Intel Inspector XE. En cuanto a los errores de memoria, ayuda a detectar fugas de memoria , corrupción de memoria, discrepancias en la asignación/desasignación de API y uso inconsistente de la API de memoria. En cuanto a los errores de hilos, ayuda a detectar condiciones de carrera (tanto en el montón como en la pila), interbloqueos y errores de la API de hilos y sincronización.
Compatibilidad con procesadores que no son de Intel
Las versiones anteriores de los compiladores C/C++ de Intel han sido criticadas por optimizar de forma menos agresiva para procesadores que no son de Intel; por ejemplo, Steve Westfield escribió en un artículo de 2005 en el sitio web de AMD: [ 13 ]
El compilador Intel 8.1 C/C++ utiliza la bandera -xN (para Linux) o -QxN (para Windows) para aprovechar las extensiones SSE2. Para SSE3, el interruptor del compilador es -xP (para Linux) y -QxP (para Windows). ... Con las banderas -xN/-QxN y -xP/-QxP establecidas, comprueba la cadena del proveedor del procesador y, si no es "GenuineIntel", detiene la ejecución sin siquiera comprobar las banderas de características. ¡Vaya!
El desarrollador y académico danés Agner Fog escribió en 2009: [ 14 ]
El compilador de Intel y varias bibliotecas de funciones de Intel tienen un rendimiento subóptimo en procesadores AMD y VIA . Esto se debe a que el compilador o la biblioteca pueden generar múltiples versiones de un mismo código, cada una optimizada para un procesador y un conjunto de instrucciones específicos , como SSE2 , SSE3 , etc. El sistema incluye una función que detecta el tipo de CPU en la que se ejecuta y selecciona la ruta de código óptima para dicha CPU. Esta función se denomina despachador de CPU. Sin embargo, el despachador de CPU de Intel no solo verifica el conjunto de instrucciones compatible con la CPU, sino que también comprueba la cadena de identificación del proveedor. Si la cadena del proveedor es "GenuineIntel", utiliza la ruta de código óptima. Si la CPU no es de Intel, 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 versión superior.
Esta asignación de CPU específica del proveedor puede afectar potencialmente el rendimiento del software creado con un compilador Intel o una biblioteca de funciones Intel en procesadores que no son Intel, posiblemente sin el conocimiento del programador. Esto supuestamente ha llevado a comparativas engañosas , [ 14 ] incluyendo un incidente en el que cambiar el CPUID de un VIA Nano mejoró significativamente los resultados. [ 15 ] En noviembre de 2009, AMD e Intel llegaron a un acuerdo legal sobre este y otros asuntos relacionados, [ 16 ] y a finales de 2010, AMD llegó a un acuerdo en una investigación antimonopolio de la Comisión Federal de Comercio de EE. UU. contra Intel. [ 17 ]
El acuerdo de la FTC incluyó una cláusula de divulgación en la que Intel debe: [ 18 ]
Publican claramente que su compilador discrimina contra los procesadores que no son de Intel (como los diseños de AMD), no aprovechando al máximo sus características y produciendo código de calidad inferior.
En cumplimiento de esta resolución, Intel añadió descargos de responsabilidad a la documentación de su compilador: [ 19 ]
Es posible que los compiladores de Intel no optimicen al mismo nivel para microprocesadores que no sean de Intel, en el caso de optimizaciones que no sean exclusivas de los microprocesadores de Intel. Estas optimizaciones incluyen los conjuntos de instrucciones SSE2, SSE3 y SSSE3, entre otras. Intel no garantiza la disponibilidad, la funcionalidad ni la eficacia de ninguna optimización en microprocesadores no fabricados por Intel. Las optimizaciones de este producto que dependen del microprocesador están diseñadas para usarse con microprocesadores Intel. Ciertas optimizaciones que no son específicas de la microarquitectura de Intel están reservadas para microprocesadores Intel. Consulte las Guías de usuario y de referencia del producto correspondiente para obtener más información sobre los conjuntos de instrucciones específicos que abarca este aviso.
En 2013, un artículo en The Register alegaba que el código objeto producido por el compilador de Intel para el AnTuTu Mobile Benchmark omitía partes del código de referencia durante la compilación, lo que generaba un rendimiento falsamente superior en comparación con las plataformas ARM. [ 20 ]
Historial de lanzamientos
A continuación se enumeran las versiones del compilador Intel C++ desde 1999: [ 21 ]
Véase también
Referencias
- ↑ Intel Corporation (2 de noviembre de 2022). "Compilador Intel® oneAPI DPC++/C++" . software.intel.com . Intel . Consultado el 23 de noviembre de 2025 .
- ↑ Intel Corporation (2 de noviembre de 2022). "Intel® C++ Compiler Classic" . software.intel.com . Intel . Consultado el 1 de diciembre de 2022 .
- ↑ "AVISO DE OBSOLESCENCIA: Compilador Intel® C++ Classic" . community.intel.com . 1 de septiembre de 2022. Consultado el 13 de febrero de 2023 .
- ↑ Intel (2021). "Compilador Intel oneAPI DPC++/C++" . Intel.com . Intel . Consultado el 9 de febrero de 2021 .
- 1 2 3 4 5 Intel Corporation (2021). "Compilador Intel® oneAPI DPC++/C++" . software.intel.com . Intel . Consultado el 09-02-2021 .
- ↑ "Se lanza el compilador Intel oneAPI DPC++ 2020-06 con nuevas características" . www.phoronix.com . Consultado el 17 de diciembre de 2020 .
- ↑ Equipo, Editorial (16-12-2019). "Programación de computación heterogénea: oneAPI y C++ de datos paralelos" . insideBIGDATA . Consultado el 17-12-2020 .
- ↑ "Khronos da pasos hacia el despliegue generalizado de SYCL con la publicación de la especificación provisional SYCL 2020" . The Khronos Group . 30 de junio de 2020. Consultado el 17 de diciembre de 2020 .
- ↑ "Los compiladores Intel C/C++ completan la adopción de LLVM" . Intel . Consultado el 17 de agosto de 2021 .
- 1 2 Intel Corporation (30 de noviembre de 2022). "Lanzamiento de Intel oneAPI 2023: Vista previa de las herramientas" . www.intel.com . Intel . Consultado el 1 de diciembre de 2022 .
- ↑ Intel Corporation (16 de diciembre de 2020). "Compilador Intel® oneAPI DPC++/C++" . software.intel.com . Intel . Consultado el 9 de febrero de 2021 .
- ↑ Intel Corporation (16 de diciembre de 2020). "Intel® C++ Compiler Classic" . software.intel.com . Intel . Consultado el 9 de febrero de 2021 .
- ↑ "Tu procesador, tu compilador y tú: El caso de la cadena secreta CPUID" . Archivado del original el 5 de enero de 2012. Consultado el 11 de diciembre de 2011 .
- 1 2 "La función de Intel para "paralizar AMD"" . www.agner.org .
- ↑ Hruska, Joel (29 de julio de 2008). "Combate de rencor de gama baja: Nano vs. Atom" . Ars Technica.
- ↑ "Acuerdo de conciliación" (PDF) . download.intel.com . Archivado del original (PDF) el 22 de febrero de 2017.
- ↑ "Intel y la Comisión Federal de Comercio de EE. UU. llegan a un acuerdo preliminar" . Newsroom.intel.com. 4 de agosto de 2010. Consultado el 13 de octubre de 2012 .
- ↑ "FTC e Intel llegan a un acuerdo; Intel tiene prohibidas sus prácticas anticompetitivas" . Archivado del original el 3 de febrero de 2012. Consultado el 20 de octubre de 2011 .
- ↑ "Aviso de optimización" . Intel Corporation . Consultado el 11 de diciembre de 2013 .
- ↑ "Analista: Las pruebas que mostraban que los smartphones de Intel superaban a los de ARM estaban amañadas" . The Register .
- ↑ "Notas de la versión y nuevas características del compilador Intel® C++" . Intel Corporation . Consultado el 27 de abril de 2021 .
- ↑ ""Página principal de los compiladores Intel(R) C++ y Fortran"" . Archivado del original el 4 de octubre de 1999 . Consultado el 8 de marzo de 2024 .
{{cite web}}: CS1 maint: bot: estado de la URL original desconocido ( enlace ) - ↑ ""Historial de revisiones del compilador Intel(R) C/C++"" . Archivado del original el 16-08-2000 . Recuperado el 08-03-2024 .
{{cite web}}: CS1 maint: bot: estado de la URL original desconocido ( enlace ) - ↑ ""Página principal de los compiladores Intel(R) C++ y Fortran"" . Archivado del original el 19-10-2001 . Consultado el 08-03-2024 .
{{cite web}}: CS1 maint: bot: estado de la URL original desconocido ( enlace ) - ↑ ""Compilador Intel(R) C++ para Linux"" . Archivado del original el 03-10-2002 . Recuperado el 08-03-2024 .
{{cite web}}: CS1 maint: bot: estado de la URL original desconocido ( enlace ) - ↑ ""Productos de desarrollo de software de Intel"" . Archivado del original el 1 de febrero de 2003 . Consultado el 8 de marzo de 2024 .
{{cite web}}: CS1 maint: bot: estado de la URL original desconocido ( enlace ) - ↑ Esta nota se adjunta a la versión en la que se introdujo Cilk Plus. Esta URL apunta a la documentación actual: http://software.intel.com/en-us/intel-composer-xe/
- ↑ Notas de la versión 2013 de Intel C++ Composer XEhttp://software.intel.com/en-us/articles/intel-c-composer-xe-2013-release-notes/
Enlaces externos
- Compilador Intel oneAPI DPC++/C++
- Descargas de componentes individuales y versiones de tiempo de ejecución
- Kits de herramientas Intel oneAPI
- Sitio web de documentación técnica de software de Intel
- Compiladores de C (lenguaje de programación)
- compiladores de C++
- Software de Intel