Compiladores Intel. ¿Por qué se necesitaban nuevos compiladores?
Compiladores Intel C++ y Fortran y biblioteca MKL
Junto con los compiladores GNU estándar para Linux, los compiladores Intel C++ y Fortran están instalados en los clústeres del complejo informático NIVC. Actualmente (principios de 2006), los compiladores versión 9.1 están instalados en todos los clústeres. Esta página está dedicada a describir las opciones y configuraciones más importantes de estos compiladores, así como sus principales diferencias con los compiladores GNU. La página está dirigida principalmente a los usuarios de los clústeres del Centro de Computación de Investigación de MSU, pero también puede ser útil para otros usuarios de habla rusa. Aquí no se abordan cuestiones relacionadas con la compilación para la plataforma IA-64.
Además, la biblioteca Intel está instalada en todos los clústeres. Biblioteca de matemáticas del núcleo(MKL) versión 8.0.2. La biblioteca está ubicada en el directorio /usr/mkl. Tenga en cuenta que los subdirectorios 32, 64 y em64t están disponibles en el directorio lib. En el clúster Ant, debe utilizar las bibliotecas del subdirectorio em64t, y en otros clústeres, del subdirectorio 32. Toda la documentación y los ejemplos necesarios se pueden obtener en el directorio /usr/mkl/doc.
¿Por qué se necesitaban nuevos compiladores?
La necesidad de nuevos compiladores surgió principalmente para a) soportar la programación en Fortran 90, y también b) para una optimización más potente de los programas de Fortran que la proporcionada por el compilador g77, que utiliza traducción a C y luego compilación usando gcc.
Los compiladores PGI (Portland Group) también cumplen estos requisitos, pero la empresa desarrolladora se negó a suministrarlos a Rusia.
¿Cómo utilizar?
Los compiladores Intel se invocan mediante comandos CPI(C o C++), icpc(C++) y fuerte(Fortran 77/90). Los comandos mpicc, mpiCC y mpif77 para compilar y ensamblar programas MPI también están configurados para utilizar compiladores Intel.
También es posible utilizar compiladores GNU usando los comandos mpigcc, mpig++ y mpig77 (Fortran 90 no es compatible).
Archivos de entrada
Por defecto, los archivos con la extensión .cpp Y .cxx Se consideran textos fuente en lenguaje C++ los archivos con la extensión .C- Código fuente C, y el compilador icpc también compila archivos .c como código fuente C++.
Archivos con extensiones .F, .ftn Y .para son reconocidos como textos fuente en el idioma Fotran, con una forma fija de notación, y los archivos .fpp Y .F Además, pasó por el preprocesador del lenguaje Fortran. Archivos con la extensión .f90 se consideran textos fuente Fortran 90/95 con notación de forma libre. Puede especificar explícitamente una forma de notación fija o libre para los programas Fortran usando las opciones -FI Y -FR respectivamente.
Archivos con la extensión .s reconocido como código de lenguaje ensamblador para el IA-32.
Características del compilador Intel
Aquí presentamos las características de los compiladores Intel tal como lo indica el desarrollador en el manual del usuario con algunos de nuestros comentarios.
- Optimización significativa
Aparentemente, esto significa optimizar el código a un alto nivel, es decir. En primer lugar, varias transformaciones de bucle, que casi todos los compiladores realizan con mayor o menor éxito. - Optimización de punto flotante
Al parecer, esto significa, en primer lugar, el máximo uso de comandos implementados a nivel de hardware. - Optimizaciones interprocedimientos
aquellos. Optimización global de todo el programa, a diferencia de la optimización ordinaria, que afecta solo al código de funciones específicas. - Optimización basada en perfiles
aquellos. la capacidad de ejecutar un programa en modo de prueba, recopilar datos sobre el tiempo que lleva pasar ciertos fragmentos de código dentro de funciones utilizadas con frecuencia y luego usar estos datos para la optimización. - Soporte para el conjunto de instrucciones SSE en procesadores Pentium III
nota: para tareas informáticas, los comandos SSE2 son más interesantes, es decir. Comandos vectoriales sobre números reales de 64 bits, pero sólo son compatibles con procesadores Pentium 4, que aún no tenemos a nuestra disposición. - Vectorización automática
aquellos. nuevamente, usando los comandos SSE y SSE2, insertados automáticamente por el compilador - Soporte OpenMP para programación en sistemas SMP
nota: en un clúster se recomienda utilizar principalmente la interfaz MPI; no se espera un uso generalizado de OpenMP en el clúster y tales experimentos aún no se han llevado a cabo; pero probablemente tenga sentido utilizar bibliotecas (BLAS, etc.) que estén paralelizadas para la memoria compartida. - Captura previa de datos
aquellos. Aparentemente, el uso de comandos de precarga desde la memoria al caché de datos, que serán necesarios después de algún tiempo. - Código de "despacho" para diferentes procesadores
aquellos. la capacidad de generar código para diferentes procesadores en un único archivo ejecutable, lo que le permite aprovechar los últimos procesadores lograr el máximo rendimiento en ellos, manteniendo la compatibilidad binaria de programas con procesadores anteriores; En nuestro cluster esto no es relevante todavía, porque sólo se utilizan procesadores Pentium III y se supone que los programas compilados en el clúster no deben transferirse ni ejecutarse en otras máquinas
Opciones básicas del compilador
Las más interesantes, por supuesto, son las opciones de optimización del código. La mayoría de las opciones son comunes a los compiladores de C++ y Fortran. Más Descripción detallada opciones en los manuales de usuario en inglés.
Niveles de optimización | |
---|---|
Opción | Descripción |
-O0 | Desactiva la optimización |
-O1 o -O2 | Optimización básica para la velocidad. La inserción en línea de funciones de biblioteca está deshabilitada. Para el compilador C++, estas opciones proporcionan la misma optimización; para el compilador Fortran, la opción -O2 es preferible, porque También incluye promoción ciclo. |
-O3 | Optimizaciones más potentes que incluyen transformaciones de bucle, captación previa de datos y uso de OpenMP. Es posible que algunos programas no garanticen un rendimiento mejorado en comparación con -O2. Tiene sentido usarlo junto con las opciones de vectorización. -xK Y -xW. |
-desenrollar[n] | Permite desenrollar el bucle hasta n veces. |
Optimizaciones para un procesador específico. | |
Opción | Descripción |
-tpp6 | Optimización para procesadores Penitum Pro, Pentium II y Pentium III |
-tpp7 | Optimización para procesadores Penitum 4 (esta opción está habilitada de forma predeterminada para el compilador IA-32) |
-xM | Generación de código utilizando extensiones MMX específicas para procesadores Pentium MMX, Pentium II y posteriores. |
-xK | Generación de código utilizando extensiones SSE específicas para procesadores Pentium III |
-xW | Generación de código utilizando extensiones SSE2 específicas para procesadores Pentium 4 |
Optimización interprocedimiento | |
-ip | La optimización entre procedimientos está habilitada dentro de un archivo. Si especifica la opción -ip_no_inlining, las inserciones de funciones en línea están deshabilitadas. |
-ipó | Permite la optimización interprocedimiento entre diferentes archivos. |
Optimizaciones mediante perfiles. | |
-prof_gen | Se genera un código de "perfilado" que se utilizará para la elaboración de perfiles, es decir, recopilar datos sobre la frecuencia de paso por ciertos lugares en el programa |
-profuso | La optimización se lleva a cabo en base a los datos obtenidos durante la etapa de elaboración de perfiles. Tiene sentido usarlo junto con la opción de optimización interprocedural. -ipó. |
Paralelización para sistemas SMP | |
-openmp | Habilita el soporte para el estándar OpenMP 2.0. |
-paralelo | La paralelización automática del bucle está habilitada. |
Actuación
Según los resultados de la ejecución de las pruebas SPEC CPU2000, publicados en el servidor ixbt.com, los compiladores Intel versión 6.0 fueron casi universalmente mejores en comparación con los compiladores gcc versiones 2.95.3, 2.96 y 3.1, y PGI versión 4.0.2. Estas pruebas se realizaron en 2002 en una computadora con un procesador Pentium 4/1,7 GHz y RedHat Linux 7.3.
Según las pruebas realizadas por Polyhedron, el compilador Intel Fortran versión 7.0 fue casi universalmente superior a otros compiladores Fortran 77 para Linux (Absoft, GNU, Lahey, NAG, NAS, PGI). Sólo en algunas pruebas el compilador Intel es ligeramente inferior a los compiladores Absoft, NAG y Lahey. Estas pruebas se realizaron en una computadora con un procesador Pentium 4/1,8 GHz y Mandrake Linux 8.1.
Los compiladores Intel versión 9.1 también superan a los compiladores gcc y muestran un rendimiento comparable al de Absoft, PathScale y PGI.
Estaremos agradecidos a aquellos usuarios y lectores que nos envíen datos sobre el impacto de la elección del compilador (GCC o Intel) y las opciones de optimización en la velocidad de trabajo en sus problemas de la vida real.
Bibliotecas
El compilador del lenguaje C utiliza una biblioteca de tiempo de ejecución desarrollada dentro del proyecto GNU ( libc.a).
Las siguientes bibliotecas se suministran con el compilador Intel C++:
- libcprts.a- Biblioteca de lenguaje C++ en tiempo de ejecución desarrollada por Dinkumware.
- libcxa.a- Biblioteca de tiempo de ejecución adicional para el desarrollo de C++ por parte de Intel.
- libimf.a- una biblioteca de funciones matemáticas desarrollada por Intel, que incluye implementaciones optimizadas y de alta precisión de funciones trigonométricas, hiperbólicas, exponenciales, especiales, complejas y otras (para más detalles, consulte la lista de funciones).
- libirc.a- soporte de tiempo de ejecución para creación de perfiles (PGO) y envío de código según el procesador (ver arriba).
- libguide.a- Implementación de OpenMP.
Esta lista contiene bibliotecas estáticas, pero para la mayoría de ellas también hay bibliotecas dinámicas, es decir. opciones conectadas durante el inicio ( .entonces).
Las siguientes bibliotecas se suministran con el compilador Fortran: libCEPCF90.a, libIEPCF90.a, libintrins.a, libF90.a, también se utiliza la biblioteca de funciones matemáticas libimf.a.
Construyendo el archivo ejecutable
Las bibliotecas se pueden conectar estáticamente (durante la compilación) o dinámicamente (durante el inicio del programa). El enfoque dinámico le permite reducir el tamaño del archivo ejecutable y le permite compartir la misma copia de la biblioteca en la memoria, pero para ello necesita instalar un conjunto completo de bibliotecas dinámicas utilizadas en cada nodo donde se ejecutarán los programas. .
Por lo tanto, si instaló el compilador Intel en su máquina Linux y desea ejecutar los archivos ejecutables compilados en otras máquinas, entonces necesitará usar una compilación estática (que es más fácil) o copiar las bibliotecas dinámicas de Intel a estas máquinas (generalmente desde un directorio como /opt/intel /compiler70/ia32/lib) a uno de los directorios enumerados en el archivo /etc/ld.so.conf, y también asegúrese de que el mismo conjunto de bibliotecas dinámicas GNU/Linux esté instalado en estos máquinas.
De forma predeterminada, todas las bibliotecas de desarrollo de Intel (excepto libcxa.so) están vinculadas estáticamente y todas las bibliotecas del sistema Linux y las bibliotecas GNU están vinculadas dinámicamente. Usando la opción -estático puede forzar al recopilador (editor de enlaces) a conectar todas las bibliotecas estáticamente (lo que aumentará el volumen Archivo ejecutable), y usando la opción -i_dinamico Puede vincular dinámicamente todas las bibliotecas de desarrollo de Intel.
Al conectar bibliotecas adicionales usando la opción de vista -biblioteca es posible que necesites usar la opción -Ldirectorio para especificar la ruta donde se encuentran las bibliotecas.
Usando opciones -Bestático Y -Bdinámico Puede especificar explícitamente la conexión dinámica o estática de cada una de las bibliotecas especificadas en línea de comando.
Usando la opción -C El ensamblaje del archivo ejecutable está deshabilitado y solo se realiza la compilación (generación del módulo de objeto).
Compartir módulos en Fortran y C
Para compartir módulos escritos en Fortran y C, debe acordar la denominación de los procedimientos en los módulos de objetos, el paso de parámetros y el acceso a las variables globales, si las hubiera.
De forma predeterminada, el compilador Intel Fortran convierte los nombres de los procedimientos a minúsculas y agrega un guión bajo al final del nombre. El compilador de C nunca cambia los nombres de las funciones. Así, si queremos llamar a una función o procedimiento FNNAME implementado en C desde un módulo Fortran, entonces en el módulo C debería llamarse fnname_.
El compilador Fortran admite la opción -nus [nombre de archivo], que le permite deshabilitar la adición de guiones bajos a los nombres de los procedimientos internos. Si se especifica un nombre de archivo, esto se hace solo para los nombres de procedimientos enumerados en el archivo especificado.
De forma predeterminada, en Fortran los parámetros se pasan por referencia y en C siempre se pasan por valor. Por lo tanto, al llamar a un procedimiento Fortran desde un módulo C, debemos pasar punteros a las variables correspondientes que contienen los valores de los parámetros reales como parámetros. Al escribir una función en C que deberá llamarse desde un módulo de Fortran, debemos describir los parámetros formales como punteros a los tipos correspondientes.
En los módulos C, es posible utilizar bloques COMUNES definidos dentro de los módulos Fortran (para obtener más información, consulte la Guía del usuario del compilador Intel Fortran, capítulo Mezcla de C y Fortran).
Compartir compiladores Intel y GCC
Los módulos de objetos C producidos por el compilador Intel C++ son compatibles con los módulos producidos por el compilador GCC y la biblioteca GNU C. Así, estos módulos se pueden utilizar juntos en un único programa compilado mediante los comandos icc o gcc, pero se recomienda utilizar icc para incluir correctamente las bibliotecas Intel.
El compilador Intel admite una serie de extensiones de lenguaje C no estándar utilizadas por el proyecto GNU y respaldadas por el compilador GCC (pero no todas; consulte aquí para obtener más detalles).
El manual del usuario no dice nada sobre la compatibilidad de los módulos de objetos en los lenguajes C++ y Fortran; aparentemente, no es compatible.
Soporte de estándares
Intel C++ Compiler 7.0 para Linux admite el estándar de lenguaje ANSI/ISO C (ISO/IEC 9899/1990). Es posible establecer una compatibilidad estricta con el estándar ANSI C ( -ansi) o dialecto ANSI C extendido ( -Xa). Al usar la opción -c99
En el número anterior de la revista, analizamos los productos de la familia Intel VTune Performance Analyzer: herramientas de análisis de rendimiento que son merecidamente populares entre los desarrolladores de aplicaciones y permiten la detección en el código. aplicaciones de equipo, que desperdician demasiados recursos de CPU, brindando a los desarrolladores la oportunidad de identificar y eliminar posibles lugares estrechos, asociado con secciones de código similares, acelerando así el proceso de desarrollo de la aplicación. Sin embargo, tenga en cuenta que el rendimiento de las aplicaciones depende en gran medida de qué tan eficientes sean los compiladores utilizados en su desarrollo y qué características hardware se utilizan al generar código de máquina.
Las últimas versiones de los compiladores Intel Intel C++ e Intel Fortran para Windows y Linux le permiten obtener beneficios de rendimiento de aplicaciones para sistemas basados en Procesadores Intel Itanium 2, Intel Xeon y Intel Pentium 4 hasta un 40% en comparación con los compiladores existentes de otros fabricantes debido al uso de características de estos procesadores como la tecnología Hyper-Threading.
Las diferencias asociadas con la optimización del código por parte de esta familia de compiladores incluyen el uso de una pila para realizar operaciones de punto flotante, optimización entre procedimientos (IPO), optimización de acuerdo con el perfil de la aplicación (Optimización guiada por perfiles (PGO), precarga de datos en el caché ( Captación previa de datos), que evita la latencia asociada con el acceso a la memoria, soporte para las características características de los procesadores Intel (por ejemplo, extensiones para el procesamiento de datos en streaming Intel Streaming SIMD Extensions 2, característica del Intel Pentium 4), paralelización automática de la ejecución de código, aplicación creación, ejecutándose en varios diferentes tipos procesadores al optimizar para uno de ellos, herramientas para "predecir" el código posterior (predicción de rama), soporte ampliado para trabajar con subprocesos de ejecución.
Tenga en cuenta que los compiladores Intel se utilizan en empresas tan conocidas como Alias/Wavefront, Oracle, Fujitsu Siemens, ABAQUS, Silicon Graphics e IBM. Según pruebas independientes realizadas por varias empresas, el rendimiento de los compiladores Intel es significativamente mayor que el de los compiladores de otros fabricantes (ver, por ejemplo, http://intel.com/software/products/compilers/techtopics/compiler_gnu_perf .pdf).
A continuación veremos algunas características. Últimas Versiones Compiladores Intel para escritorio y servidor sistemas operativos.
Compiladores para la plataforma Microsoft Windows
Compilador Intel C++ 7.1 para Windows
Intel C++ Compiler 7.1 es un compilador lanzado a principios de este año que proporciona código altamente optimizado para los procesadores Intel Itanium, Intel Itanium 2, Intel Pentium 4 e Intel Xeon, así como para el procesador Intel Pentium M que utiliza la tecnología Intel Centrino y está diseñado para su uso en dispositivos móviles.
El compilador especificado es totalmente compatible con las herramientas de desarrollo Microsoft Visual C++ 6.0 y Microsoft Visual Studio .NET: se puede integrar en los entornos de desarrollo correspondientes.
Este compilador es compatible con los estándares ANSI e ISO C/C++.
Compilador Intel Fortran 7.1 para Windows
Intel Fortran Compiler 7.1 para Windows, también lanzado a principios de este año, le permite crear código optimizado para los procesadores Intel Itanium, Intel Itanium 2, Intel Pentium 4 e Intel Xeon, Intel Pentium M.
Este compilador es totalmente compatible con las herramientas de desarrollo Microsoft Visual C++ 6.0 y Microsoft Visual Studio .NET, es decir, se puede integrar en los entornos de desarrollo correspondientes. Además, este compilador le permite desarrollar aplicaciones de 64 bits para sistemas operativos que se ejecutan en procesadores Itanium/Itanium 2 usando Microsoft Visual Studio en un procesador Pentium de 32 bits usando el compilador Intel Fortran de 64 bits. Al depurar código, este compilador le permite utilizar un depurador para plataformas Microsoft.NETO.
Si tiene instalado el producto Compaq, puede utilizar Visual Fortran 6.6 en lugar del Intel Fortran Compiler 7.1 original, ya que estos compiladores son compatibles a nivel código fuente.
Intel Fortran Compiler 7.1 para Windows es totalmente compatible con el estándar ISO Fortran 95 y admite la creación y depuración de aplicaciones que contienen código en dos idiomas: C y Fortran.
Compiladores para la plataforma Linux
Compilador Intel C++ 7.1 para Linux
Otro compilador que se lanzó a principios de año, Intel C++ Compiler 7.1 para Linux, le permite lograr un alto grado de optimización de código para los procesadores Intel Itanium, Intel Itanium 2, Intel Pentium 4, Intel Pentium M. Este compilador es completamente compatible con el compilador GNU C en el código fuente y los módulos de objetos, lo que le permite migrar aplicaciones creadas usando GNU C sin costos adicionales. El compilador Intel C++ admite C++ ABI (una adición al kernel de Linux que le permite ejecutar bajo control de linux código compilado para otras plataformas, como los primeros sistemas operativos SCO, primeras versiones Sun Solaris, etc.), lo que significa compatibilidad total con el compilador gcc 3.2 a nivel de código binario. Finalmente, con Intel C++ Compiler 7.1 para Linux, incluso puede recompilar el kernel de Linux realizando algunos cambios menores en su código fuente.
Compilador Intel Fortran 7.1 para Linux
El compilador Intel Fortran 7.1 para Linux le permite crear código optimizado para los procesadores Intel Itanium, Intel Itanium 2, Intel Pentium 4, Intel Pentium M. Este compilador es totalmente compatible con el compilador Compaq Visual Fortran 6.6 a nivel de código fuente, lo que le permite para recompilar aplicaciones creadas con Compaq Visual Fortran, aumentando así su rendimiento.
Además, el compilador especificado es compatible con utilidades utilizadas por los desarrolladores como el editor emacs, el depurador gdb y la utilidad de creación de aplicaciones.
Al igual que la versión para Windows de este compilador, Intel Fortran Compiler 7.1 para Linux es totalmente compatible con el estándar ISO Fortran 95 y admite la creación y depuración de aplicaciones que contienen código en dos lenguajes: C y Fortran.
Cabe destacar especialmente que los especialistas del Centro de Desarrollo de Software Ruso de Intel en Nizhny Novgorod hicieron una contribución significativa a la creación de los compiladores Intel enumerados. Más información detallada Puede encontrar información sobre los compiladores Intel en el sitio web de Intel en www.intel.com/software/products/.
La segunda parte de este artículo estará dedicada a los compiladores Intel que crean aplicaciones para dispositivos móviles.
¡No eres un esclavo!
Curso educativo cerrado para niños de la élite: "La verdadera disposición del mundo".
http://noslave.org
Material de Wikipedia: la enciclopedia libre
Error de Lua en el Módulo: Wikidata en la línea 170: intento de indexar el campo "wikibase" (un valor nulo). | ||||||||||||||||||||||||||||||||||||
Tipo | ||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Autor |
Error de Lua en el Módulo: Wikidata en la línea 170: intento de indexar el campo "wikibase" (un valor nulo). |
|||||||||||||||||||||||||||||||||||
Desarrollador | ||||||||||||||||||||||||||||||||||||
Desarrolladores |
Error de Lua en el Módulo: Wikidata en la línea 170: intento de indexar el campo "wikibase" (un valor nulo). |
|||||||||||||||||||||||||||||||||||
Escrito en |
Error de Lua en el Módulo: Wikidata en la línea 170: intento de indexar el campo "wikibase" (un valor nulo). |
|||||||||||||||||||||||||||||||||||
Interfaz |
Error de Lua en el Módulo: Wikidata en la línea 170: intento de indexar el campo "wikibase" (un valor nulo). |
|||||||||||||||||||||||||||||||||||
Sistema operativo | ||||||||||||||||||||||||||||||||||||
Idiomas de la interfaz |
Error de Lua en el Módulo: Wikidata en la línea 170: intento de indexar el campo "wikibase" (un valor nulo). |
|||||||||||||||||||||||||||||||||||
Primera edición |
Error de Lua en el Módulo: Wikidata en la línea 170: intento de indexar el campo "wikibase" (un valor nulo). |
|||||||||||||||||||||||||||||||||||
plataforma hardware | ||||||||||||||||||||||||||||||||||||
Ultima versión | ||||||||||||||||||||||||||||||||||||
Candidato de lanzamiento |
Error de Lua en el Módulo: Wikidata en la línea 170: intento de indexar el campo "wikibase" (un valor nulo). |
|||||||||||||||||||||||||||||||||||
Versión beta |
Error de Lua en el Módulo: Wikidata en la línea 170: intento de indexar el campo "wikibase" (un valor nulo). |
|||||||||||||||||||||||||||||||||||
versión alfa |
Error de Lua en el Módulo: Wikidata en la línea 170: intento de indexar el campo "wikibase" (un valor nulo). |
|||||||||||||||||||||||||||||||||||
Versión de prueba |
Error de Lua en el Módulo: Wikidata en la línea 170: intento de indexar el campo "wikibase" (un valor nulo). |
|||||||||||||||||||||||||||||||||||
Formatos de archivo legibles |
Error de Lua en el Módulo: Wikidata en la línea 170: intento de indexar el campo "wikibase" (un valor nulo). |
|||||||||||||||||||||||||||||||||||
Formatos de archivos generados |
Error de Lua en el Módulo: Wikidata en la línea 170: intento de indexar el campo "wikibase" (un valor nulo). |
|||||||||||||||||||||||||||||||||||
Estado |
Error de Lua en el Módulo: Wikidata en la línea 170: intento de indexar el campo "wikibase" (un valor nulo). |
|||||||||||||||||||||||||||||||||||
Licencia |
Principales características:
El compilador admite el estándar OpenMP 3.0 para escribir programas paralelos. También contiene una modificación de OpenMP llamada Cluster OpenMP, con la que puede ejecutar aplicaciones escritas de acuerdo con OpenMP en clústeres utilizando MPI. El compilador Intel C++ utiliza la interfaz (la parte del compilador que analiza el programa compilado) de Edison Design Group. Los compiladores SGI MIPSpro, Comeau C++ y Portland Group utilizan la misma interfaz. Este compilador se usa ampliamente para compilar pruebas comparativas de CPU SPEC. Hay 4 series de productos de Intel que contienen el compilador:
Las desventajas de la versión Linux del compilador incluyen la incompatibilidad parcial con las extensiones GNU del lenguaje C (compatibles con el compilador GCC), lo que puede causar problemas al compilar algunos programas.
Opciones experimentalesSe publicaron las siguientes versiones experimentales del compilador:
Banderas básicas
Escriba una reseña sobre el artículo "Compilador Intel C++"Notasver tambiénEnlaces
Un extracto que caracteriza el compilador Intel C++Y además, volvió a ver al Mago Blanco por última vez... Su marido y amigo más fiel, a quien nunca podría olvidar. En su corazón ella lo perdonó. Pero, para su gran pesar, ella no pudo traerle el perdón de Magdalena... Así que, como ves, Isidora, la gran fábula cristiana sobre el “perdón” es sólo una mentira infantil para los creyentes ingenuos, para permitirles hacer cualquier Mal, sabiendo que no importa lo que hagan, eventualmente serán perdonados. Pero sólo puedes perdonar aquello que es verdaderamente digno de perdón. Una persona debe comprender que tiene que responder por cualquier Mal cometido... Y no ante algún Dios misterioso, sino ante sí mismo, obligándose a sufrir cruelmente. Magdalena no perdonó a Vladyka, aunque lo respetaba profundamente y lo amaba sinceramente. Del mismo modo que no nos perdonó a todos por la terrible muerte de Radomir. Después de todo, ELLA lo entendió mejor que nadie: podríamos haberlo ayudado, podríamos haberlo salvado de una muerte cruel... Pero no quisimos. Considerando que la culpa del Mago Blanco era demasiado cruel, lo dejó vivir con esta culpa, sin olvidarla ni por un minuto... No quería concederle un perdón fácil. Nunca la volvimos a ver. Al igual que nunca vieron a sus bebés. A través de uno de los caballeros de su templo, nuestro hechicero, Magdalena le transmitió a Vladyka la respuesta a su petición de regresar con nosotros: “El sol no sale dos veces en el mismo día... La alegría de tu mundo (Radomir) nunca volveré a ti, así como yo no volveré a ti y yo... encontré mi FE y mi VERDAD, ellas están VIVAS, pero la tuya está MUERTA... Llora a tus hijos, ellos te amaron. Nunca te perdonaré su muerte mientras yo esté vivo. Y que tu culpa permanezca contigo. Quizás algún día ella te traiga Luz y Perdón... Pero no de mí”. La cabeza del Mago Juan no fue traída a Meteora por la misma razón: ninguno de los Caballeros del Templo quería regresar con nosotros... Los perdimos, como hemos perdido a muchos otros más de una vez, que no quisieron regresar. comprender y aceptar a nuestras víctimas... A quienes les agradaste, se fueron, condenándonos.¡Mi cabeza daba vueltas!... Como una persona sedienta, saciando mi eterna hambre de conocimiento, absorbí con avidez el flujo de información asombrosa que generosamente me daba el Norte... ¡Y quería mucho más!... Quería saberlo todo para el fin. ¡Fue un soplo de agua fresca en un desierto abrasado por el dolor y los problemas! Y no podía tener suficiente de ello... – ¡Tengo miles de preguntas! Pero ya no queda tiempo... ¿Qué debo hacer, Norte?.. - ¡Pregunta, Isidora!.. Pregunta, intentaré responderte… – Dime, Sever, ¿por qué me parece que esta historia parece combinar dos historias de vida, entrelazadas con hechos similares, y se presentan como la vida de una sola persona? ¿O no tengo razón? – Tienes toda la razón, Isidora. Como les dije antes, los "poderes de este mundo", que crearon la historia falsa de la humanidad, "pusieron" sobre la verdadera vida de Cristo la vida extraña del profeta judío Josué, que vivió hace mil quinientos años ( de la época de la historia del Norte). Y no sólo él mismo, sino también su familia, sus allegados y amigos, sus amigos y seguidores. Después de todo, era la esposa del profeta Josué, la judía María, que tenía una hermana Marta y un hermano Lázaro, la hermana de su madre María Yakobe, y otros que nunca estuvieron cerca de Radomir y Magdalena. Así como no había otros “apóstoles” junto a ellos: Pablo, Mateo, Pedro, Lucas y los demás... Fue la familia del profeta Josué quien se mudó hace mil quinientos años a Provenza (que en aquellos días se llamaba Galia Transalpina), a la ciudad griega de Massalia (actual Marsella), ya que Massalia en ese momento era la "Puerta de entrada" entre Europa y Asia, y era la forma más fácil para todos los "perseguidos" de evitar persecuciones y problemas.
|