Intel C ++ compiler

from Wikipedia, the free encyclopedia
Intel C ++ compiler
Basic data

developer Intel
Current  version 19.0.5 (XE 2019)
(March 7, 2019)
operating system Linux , Windows and Mac OS X
category Compiler
License proprietary software
software.intel.com

The Intel C / C ++ Compiler or ICC for short is a compiler with front ends for C and C ++ that the processor manufacturer Intel provides. The current version of the compiler is available for the operating systems Linux , Windows and Mac OS X and the processor architectures IA-32 , x86-64 (Intel 64, AMD64). IA-64 (Itanium2) is supported with versions 11.x of the compiler. The Composer product packages are available both language-specific and together for C / C ++ and Fortran and each include all Intel performance libraries (IPP, MKL, etc.). All of these compilers support OpenMP .

The compilers are compatible with both the GCC and the Microsoft compiler under Windows. They have additional capabilities such as automatic vectorization and support the SIMD instruction set extensions MMX , SSE , SSE2 , SSE3 , SSE4 and AVX .

For non-commercial projects, the Linux license for the x86, x64 and IA64 architectures was free of charge until mid-2014. This program has since been discontinued.

criticism

Optimal performance is only achieved for Intel CPUs . A CPU dispatch function generated by the compiler reads the CPU vendor string at runtime and executes optimized code only for GenuineIntel processors, regardless of the actual instruction set.

“If the vendor string says 'GenuineIntel' then it uses the optimal code path. If the CPU is not from Intel then, in most cases, it will run the slowest possible version of the code, even if the CPU is fully compatible with a better version. "

"If the vendor string is 'GenuineIntel', it uses the optimal code path. If the CPU is not from Intel, in most cases the slowest possible code version runs, even if the CPU is fully compatible with a better version. "

- Agner Fog

After Intel lost a lawsuit against AMD in 2009, this behavior is noted:

“Intel® compilers, associated libraries and associated development tools may or may not optimize to the same degree for non-Intel microprocessors for optimizations that are not unique to Intel microprocessors. These optimizations include Intel® Streaming SIMD Extensions 2 (Intel® SSE2), Intel® Streaming SIMD Extensions 3 (Intel® SSE3), and Supplemental Streaming SIMD Extensions 3 (Intel® SSSE3) instruction sets and other optimizations. ”

“Intel compilers and associated libraries and development tools optimize to the same degree for non-Intel microprocessors as compared to optimizations that may or may not be specific to Intel. These optimizations include the instruction sets Intel Streaming SIMD Extensions 2 (Intel SSE2), Intel Streaming SIMD Extensions 3 (Intel SSE3) and Supplemental Streaming SIMD Extensions 3 (Intel SSSE3) as well as other optimizations. "

- Intel

See also

Individual evidence

  1. [1] Intel C ++ Compiler 19.0 Release Notes
  2. software.intel.com
  3. Agner's CPU Blog
  4. Memento of the Internet Archives from March 12, 2016 of the original original article on the use of IPP on AMD systems ('Use Intel® IPP on Compatible AMD * Processors')