- Intel C++ Compiler
-
Intel C++ Compiler Desarrollador Intel
http://software.intel.com/en-us/intel-compilers/Información general Última versión estable 11.1
2009 de junio de 23Género Compilador Sistema operativo Linux, Microsoft Windows y Mac OS X Licencia Software no libre En español ? Intel C++ Compiler (también conocidos 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. En otras palabras procesadores AMD, los desarrolladores deberían 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 sistemas embebidos.[1] 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 automatic parallelization 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 la distributed memory multiprocessing from OpenMP directives.
ICC pertenece a la familia de compiladores de Edison Design Group frontend (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, el paquete Intel C++ Compiler Professional Edition, la Intel Compiler Suite y el Intel Cluster Toolkit, Compiler Edition. En el sitio Intel Software Products se proporciona mucha más información y recursos.
Contenido
Optimizaciones
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),[2] 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 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 indicaran 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 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 intercambio de bucle, fusión de bucle, desenrollado de bucle, distribución de bucle, prelectura de datos, y más.[3] 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.[4]
The compilers include a parallel debugger extension, Intel Threading Building Blocks, lambda function support, and a source checker tool for use with threaded code.
Intel's compiler has been criticized for applying, by default, floating-point optimizations not allowed by the C standard and that require a special flags with other compilers such as gcc.[5]
Lenguajes
Intel's suite of compilers has front ends for C, C++, and Fortran.
Early versions of ICC for Linux that predate GCC 3.x use the Dinkumware name mangling scheme in order to provide a more standard implementation of C++ than GCC 2.x. This made its ABI incompatible with both GCC versions. Intel removed the Dinkumware libraries in the 10.0 release (June 2007). Since then, the compiler has been and remains compatible with GCC 3.2 and later.
Arquitecturas
Versiones
Las siguientes versiones del Intel C++ Compiler han sido publicadas:
Versión del compilador Fecha de publicación Principales nuevas características Intel C++ Compiler 11.1 23 de junio de 2009 Soporte para el último Intel SSE SSE4.2, instrucciones AVX y AES. Extesión de compilación paralela. Mejor integración con Microsoft Visual Studio, Eclipse CDT 5.0 y Mac XCode. Intel C++ Compiler 11.0 Noviembre de 2008 Soporte inicial para C++0x [1]. Integración con VS2008 en Windows. OpenMP 3.0. Comprobación en el código fuente de memoria estática/diagnósticos paralelos. Intel C++ Compiler 10.1 Nov 7 2007 New OpenMP* compatibility runtime library: if you use the new OpenMP RTL, you can mix and match with libraries and objects built by Visual C++. To use the new libraries, you need to use the new option "-Qopenmp /Qopenmp-lib:compat" on Windows, and "-openmp -openmp-lib:compat" on Linux. This version of the Intel compiler supports more intrinsics from Visual Studio 2005. VS2008 support - command line only in this release. The IDE integration was not supported yet.
Intel C++ Compiler 10.0 June 5, 2007[6] Improved parallelizer and vectorizer, Streaming SIMD Extensions 4 (SSE4), new and enhanced optimization reports for advanced loop transformations, new optimized exception handling implementation. Intel C++ Compiler 9.0 June 14, 2005[7] AMD64 architecture (for Windows), software-based speculative pre-computation (SSP) optimization, improved loop optimization reports.[8] [9] Intel C++ Compiler 8.1 September, 2004 AMD64 architecture (for Linux).[10] [11] Intel C++ Compiler 8.0 December 15, 2003[12] Precompiled headers, code-coverage tools. [2] Intel C++ Compiler 7.1 March, 2003 Partial support for the Intel Pentium 4 with Streaming SIMD Extensions 3 (SSE3). [3] Intel C++ Compiler 7.0 November 25, 2002[13] [4] Intel C++ Compiler 6.0 April 24, 2002[14] [5] Prototipos
In addition, the following "prototype" editions have been made available:
Compiler version Release date Major New Features Intel STM Compiler Prototype Edition September 17, 2007[15] Prototype version of the Intel compiler that implements support for Software Transactional Memory (STM). The Intel STM Compiler supports Linux and Windows, producing 32 bit code for x86 (Intel and AMD) processors. Intel stated the belief that "The availability of such a prototype compiler allows unprecedented exploration by C / C++ software developers of a promising technique to make programming for multi-core easier." The STM compiler requires that you already have the Intel compiler installed. Intel Concurrent Collections for C/C++ 0.3 September, 2008 Intel Concurrent Collections for C/C++ provides a mechanism for constructing a C++ programs that execute in parallel. It allows developers to ignore issues of parallelism such as low-level threading constructs or scheduling/distribution of computations. The model allows developers to specify high-level computational steps including inputs and outputs without imposing unnecessary ordering on their execution. Code within the computational steps is written using standard serial constructs of the C++ language. Data is either local to a computational step or it is explicitly produced and consumed by them. It supports multiple styles of parallelism (e.g., data, task, pipeline parallel). Documentación
Documentation can be found at the Intel Software Technical Documentation site.
Windows Linux Comment /Od -O0 No optimization /O1 -O1 Optimize for size /O2 -O2 Optimize for speed and enable some optimization /O3 -O3 Enable all optimizations as O2, and intensive loop optimizations /QxO -xO Enables SSE3, SSE2 and SSE instruction sets optimizations for non-Intel CPUs[16] /fast -fast Shorthand. On Windows this equates to "/O3 /Qipo /xT /no-prec-div" ; on Linux "-O3 -ipo -static -xHOST -no-prec-div". Note that the processor specific optimization flag (-xHOST) will optimize for the processor compiled on—it is the only flag of -fast, which may be overridden. /Qprof-gen -prof_gen Compile the program and instrument it for a profile generating run. /Qprof-use -prof_use May only be used after running a program that was previously compiled using prof_gen. Uses profile information during each step of the compilation process. Debugging
The Intel compiler provides debugging information that is standard for the common debuggers (DWARF 2 on Linux, similar to gdb, and COFF for Windows). The flags to compile with debugging information are /Zi on Windows and -g on Linux.
Intel also provides its own debugger called idb, which can be run in both dbx and gdb compatible command mode.
While the Intel compiler can generate a gprof compatible profiling output, Intel also provides a kernel level, system-wide statistical profiler as a separate product called VTune. VTune features an easy-to-use GUI (integrated into Visual Studio for Windows, Eclipse for Linux) as well as a command line interface.
The 11.x releases of the compiler introduced the Parallel Debugger Extension, which provides techniques for debugging threaded applications. It can be used with other, compatible compilers, such as Microsoft Visual C++ on Windows as available in Visual Studio 2005 and 2008 and gcc on Linux.
Referencias
- ↑ A. J. C. Bik, The Software Vectorization Handbook (Intel Press, Hillsboro, OR, 2004), ISBN 0-9743649-2-4.
- ↑ Profile-guided Optimizations Overview
- ↑ http://www.ncsa.uiuc.edu/UserInfo/Resources/Software/Intel/Compilers/8.1/ug/lin1063.htm
- ↑ Intel C++ Compiler 10.1 for Linux*
- ↑ The pitfalls of verifying floating-point computations, by David Monniaux, also printed in ACM Transactions on programming languages and systems (TOPLAS), May 2008; section 4.3.2 discusses nonstandard optimizations.
- ↑ New Intel Products Simplify and Speed Software Development for Multi-Core Processors
- ↑ New Intel Software Tools Unlock Potential of Multi-Core Platforms
- ↑ http://www.intel.com/cd/software/products/asmo-na/eng/compilers/clin/219333.htm
- ↑ http://www.intel.com/cd/software/products/asmo-na/eng/compilers/cwin/219335.htm
- ↑ Intel C++ Compiler 8.1 for Linux Release Notes
- ↑ Intel C++ Compiler 8.1 for Windows* Release Notes
- ↑ Slashdot | Intel C/C++ Compiler 8.0 Released
- ↑ Slashdot | New Intel Compiler Released
- ↑ Slashdot | Intel Releases V6.0 Compiler Suite
- ↑ PRESS KIT - Intel Developer Forum
- ↑ «Intel(R) C++ Compiler 10.1 for Windows* Release Notes».
Véase también
Categorías:- Wikipedia:Traducciones en desarrollo en inglés
- Compiladores de C++
- Compiladores de C
- Productos Intel
Wikimedia foundation. 2010.