Intel C++ Compiler
Intel C++ Compiler (also known as icc or icl) describes a group of C/C++ compilers from Intel. Compilers are available for Linux, Microsoft Windows and Mac OS X.
Intel supports compilation for its IA-32, Intel 64, Itanium 2, and XScale processors. The Intel C++ Compiler for x86 and Intel 64 features an automatic vectorizer that can generate SSE, SSE2, and SSE3 SIMD instructions, the embedded variant for Intel Wireless MMX and MMX 2. [A. J. C. Bik, "The Software Vectorization Handbook" (Intel Press, Hillsboro, OR, 2004), ISBN 0974364924.] Since its introduction, the Intel C++ Compiler for IA-32 has greatly increased adoption of SSE2 in Windows application development.Fact|date=August 2008
Intel C++ Compiler further supports both OpenMP and automatic parallelization for symmetric multiprocessing. With the add-on product "Cluster OpenMP", the compiler can also automatically generate Message Passing Interface calls for distributed memory multiprocessing from OpenMP directives.
Intel C++ Compiler belongs to the family of compilers with the Edison Design Group frontend (like the SGI MIPSpro, Comeau C++, Portland Group, and others). The compiler is also notable for being widely used for SPEC CPU Benchmarks of IA-32, x86-64, and Itanium 2 architectures.
Optimizations
Intel tunes its compilers to optimize for its hardware platforms to minimize stalls and to produce code that executes in the smallest number of cycles. The Intel C++ Compiler supports three separate high-level techniques for optimizing the compiled program: interprocedural optimization (IPO), profile-guided optimization (PGO), [ [http://www.nersc.gov/vendor_docs/intel/f_ug2/pgo_ovw.htm Profile-guided Optimizations Overview] ] and high-level optimizations (HLO).
Profile-guided optimization refers to a mode of optimization where the compiler is able to access data from a sample run of the program across a representative input set. The data would indicate which areas of the program are executed more frequently, and which areas are executed less frequently. All optimizations benefit from profile-guided feedback because they are less reliant on heuristics when making compilation decisions.
High-level optimizations are optimizations performed on a version of the program that more closely represents the source code. This includes loop interchange, loop fusion, loop unrolling, loop distribution, data prefetch, and more. [http://www.ncsa.uiuc.edu/UserInfo/Resources/Software/Intel/Compilers/8.1/ug/lin1063.htm] These optimizations are usually very aggressive and may take considerable compilation time.Fact|date=September 2008
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. [ [http://www.intel.com/cd/software/products/asmo-na/eng/compilers/277618.htm Intel® C++ Compiler 10.1 for Linux*] ]
Languages
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. However, this makes its ABI incompatible with both GCC versions.
Architectures
* IA-32
* x86-64 (Intel 64 and AMD64)
* IA-64 i.e. the "Itanium"
* XScale
Versions
The following versions of Intel C++ Compiler have been released:
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.
References
External links
* [http://www.intel.com/cd/software/products/asmo-na/eng/compilers/284132.htm Intel Compilers]
Wikimedia Foundation. 2010.