Intel C++ Compiler
Intel oneAPI DPC++/C++ Compiler and Intel C++ Compiler Classic are Intel’s C, C++, SYCL, and Data Parallel C++ (DPC++) compilers for Intel processor-based systems, available for Windows, Linux, and macOS operating systems. Overview. Intel oneAPI DPC++/C++ Compiler is available for Windows and Linux and supports compiling C, C++, SYCL, and Data Parallel C++ (DPC++) source, targeting Intel IA-32, Intel 64 (aka x86-64), Core, Xeon, and Xeon Scalable processors, as well as GPUs including Intel Processor Graphics Gen9 and above, Intel X architecture, and Intel Programmable Acceleration Card with Intel Arria 10 GX FPGA. Like  Intel C++ Compiler Classic, it also supports the Microsoft Visual Studio and Eclipse IDE development environments, and supports threading via Intel oneAPI Threading Building Blocks, OpenMP, and native threads. DPC++ builds on the SYCL specification from The Khronos Group. It is designed to allow developers to reuse code across hardware targets (CPUs and accelerators such as GPUs and FPGAs) and perform custom tuning for a specific accelerator. DPC++ comprises C++17 and SYCL language features and incorporates open-source community extensions that make SYCL easier to use. Many of these extensions were adopted by the SYCL 2020 provisional specification including unified  shared memory, group algorithms, and sub-groups. Intel announced in August 2021 the complete adoption of LLVM for faster build times and benefits from supporting the latest C++ standards. Intel C++ Compiler Classic is available for Windows, Linux, and macOS and supports compiling C and C++ source, targeting Intel IA-32, Intel 64 (x86-64), Core, Xeon, and Xeon Scalable processors. It supports the Microsoft Visual Studio and Eclipse IDE development environments. Intel C++ Compiler Classic supports threading via Intel oneAPI Threading Building Blocks, OpenMP, and native threads. Architectures. Intel oneAPI DPC++/C++ Compiler generates code for both Intel’s general-purpose  x86-64 CPUs and GPUs: Intel C++ Compiler Classic targets general-purpose Intel x86-64 architecture CPUs including: Toolkits. The Intel oneAPI DPC++/C++ Compiler is available either as a standalone component or as part of the Intel oneAPI Base Toolkit, Intel oneAPI HPC Toolkit, and Intel oneAPI IoT Toolkit. The Intel C++ Compiler Classic is available either as a standalone component or as part of the Intel oneAPI Base Toolkit. Documentation. Documentation can be found at the Intel Software Technical Documentation site. 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 codice_1 on Windows and codice_2 on Linux. Debugging is done on Windows using the Visual Studio debugger and, on Linux, using gdb. While the Intel compiler can generate a gprof compatible profiling output, Intel also provides a kernel level, system-wide statistical profiler called Intel VTune Profiler. VTune can be used from a command line or through an included GUI on Linux or Windows. It can also be integrated into Visual Studio on Windows, or Eclipse on Linux). In addition to the VTune profiler, there  is Intel Advisor that specializes in vectorization optimization, offload modeling, flow graph design and tools for threading design and prototyping. Intel also offers a tool for memory and threading error detection called Intel Inspector XE. Regarding memory errors, it helps detect memory leaks, memory corruption, allocation/de-allocation of API mismatches and inconsistent memory API usage. Regarding threading errors, it helps detect data races (both heap and stack), deadlocks and thread and synch API errors. Support for non-Intel processors. Previous versions of Intel’s C/C++ compilers have been criticized for optimizing less aggressively for non-Intel processors; for  example, Steve Westfield wrote in a 2005 article at the AMD website: The Danish developer and scholar Agner Fog wrote in 2009: This vendor-specific CPU dispatching may potentially impact the performance of software built with an Intel compiler or an Intel function library on non-Intel processors, possibly without the programmer’s knowledge. This has allegedly led to misleading benchmarks, including one incident when changing the CPUID of a VIA Nano significantly improved results. In November 2009, AMD and Intel reached a legal settlement over this and related issues, and in late 2010, AMD settled a US Federal Trade  Commission antitrust investigation against Intel. The FTC settlement included a disclosure provision where Intel must: In compliance with this ruling, Intel added disclaimers to its compiler documentation: As late as 2013, an article in "The Register" alleged that the object code produced by the Intel compiler for the AnTuTu Mobile Benchmark omitted portions of the benchmark which showed increased performance compared to ARM platforms. Release history. The following lists versions of the Intel C++ Compiler since 2003: