Movatterモバイル変換


[0]ホーム

URL:


Jump to content
WikipediaThe Free Encyclopedia
Search

Intel C++ Compiler

From Wikipedia, the free encyclopedia
Compiler
This articlerelies excessively onreferences toprimary sources. Please improve this article by addingsecondary or tertiary sources.
Find sources: "Intel C++ Compiler" – news ·newspapers ·books ·scholar ·JSTOR
(March 2023) (Learn how and when to remove this message)
InteloneAPI DPC++/C++ Compiler
Other names
  • icx
  • icpx
  • dpcpp (icpx -fsycl)
Developer(s)Intel
Stable release
2024.2.1 / August 5, 2024; 9 months ago (2024-08-05)[1]
Repository
Operating systemWindows,Linux
TypeCompiler
LicenseFreeware,proprietary
Websitesoftware.intel.com/content/www/us/en/develop/tools/oneapi/components/dpc-compiler.html
Intel C++ Compiler Classic
Other names
  • icl
  • icpc
  • icc
Developer(s)Intel
Stable release
2021.10.0 Build 20230609_000000 / July 28, 2023; 21 months ago (2023-07-28)[2]
Repository
Operating systemWindows,macOS,Linux
TypeCompiler
LicenseFreeware,proprietary
Websitesoftware.intel.com/content/www/us/en/develop/tools/oneapi/components/dpc-compiler.html

Intel oneAPI DPC++/C++ Compiler andIntel C++ Compiler Classic (deprecated icc and icl[3] is in Intel OneAPI HPC toolkit) areIntel’sC,C++,SYCL, andData Parallel C++ (DPC++) compilers for Intel processor-based systems, available forWindows,Linux, andmacOS operating systems.[4]

Overview

[edit]

Intel oneAPI DPC++/C++ Compiler is available for Windows and Linux and supports compiling C, C++, SYCL, and Data Parallel C++ (DPC++)source, targeting IntelIA-32, Intel 64 (akax86-64),Core,Xeon, andXeon Scalable processors, as well as GPUs including Intel Processor Graphics Gen9 and above, IntelXe architecture, and Intel Programmable Acceleration Card with Intel Arria 10 GX FPGA.[5] Like Intel C++ Compiler Classic, it also supports theMicrosoft Visual Studio andEclipse IDE development environments, and supports threading via Intel oneAPIThreading Building Blocks,OpenMP, and native threads.

DPC++[6][7] builds on theSYCL 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++ comprisesC++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[8] including unified shared memory, group algorithms, and sub-groups.

Intel announced in August 2021 the complete adoption ofLLVM for faster build times and benefits from supporting the latest C++ standards.[9]

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.[5] 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

[edit]

According to Intel,[10] starting with the 2023.0 release, Intel oneAPI DPC++/C++ Compiler supports all current Intel general-purposex86-64 CPUs andGPUs including:

  • Processors:
    • Legacy Intel IA-32 and Intel 64 (x86-64) processors
    • Intel Core processors
    • Intel Xeon processor family
    • Intel Xeon Scalable processors
    • Intel Xeon Processor Max Series
  • GPUs:
    • Intel Processor Graphics Gen9 and above
    • Intel Xe architecture
    • Intel Programmable Acceleration Card with Intel 10 GX FPGA
    • Intel Data Center GPUs including Flex Series and Max Series
  • Intel FPGAs

Intel C++ Compiler Classic targets general-purpose Intelx86-64 architecture CPUs including:[5]

  • Legacy Intel IA-32 and Intel 64 (x86-64) processors
  • Intel Core processors
  • Intel Xeon processor family
  • Intel Xeon Scalable processors

Toolkits

[edit]

The Intel oneAPI DPC++/C++ Compiler is available either as a standalone component[11] or as part of the Intel oneAPI Base Toolkit, Intel oneAPI HPC Toolkit, and Intel oneAPI IoT Toolkit.[5]

The Intel C++ Compiler Classic is available either as a standalone component[12] or as part of the Intel oneAPI Base Toolkit.[5]

Debugging

[edit]

The Intel compiler provides debugging information that is standard for the common debuggers (DWARF 2 on Linux, similar togdb, andCOFF for Windows). The flags to compile with debugging information are/Zi on Windows and-g 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 compatibleprofiling output, Intel also provides a kernel level, system-wide statistical profiler calledIntel VTune Profiler. VTune can be used from a command line or through an included GUI on Linux or Windows. It can also be integrated intoVisual Studio on Windows, orEclipse on Linux). In addition to the VTune profiler, there isIntel 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 calledIntel Inspector XE. Regarding memory errors, it helps detectmemory 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

[edit]

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:[13]

Intel 8.1 C/C++ compiler uses the flag -xN (for Linux) or -QxN (for Windows) to take advantage of the SSE2 extensions. For SSE3, the compiler switch is -xP (for Linux) and -QxP (for Windows). ... With the -xN/-QxN and -xP/-QxP flags set, it checks the processor vendor string—and if it's not "GenuineIntel", it stops execution without even checking the feature flags. Ouch!

The Danish developer and scholarAgner Fog wrote in 2009:[14]

The Intel compiler and several different Intel function libraries have suboptimal performance onAMD andVIA processors. The reason is that the compiler or library can make multiple versions of a piece of code, each optimized for a certain processor andinstruction set, for exampleSSE2,SSE3, etc. The system includes a function that detects which type of CPU it is running on and chooses the optimal code path for that CPU. This is called a CPU dispatcher. However, the Intel CPU dispatcher does not only check which instruction set is supported by the CPU, it also checks the vendor ID string. If the vendor string is "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.

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 misleadingbenchmarks,[14] including one incident when changing theCPUID of aVIA Nano significantly improved results.[15] In November 2009, AMD and Intel reached a legal settlement over this and related issues,[16] and in late 2010, AMD settled aUS Federal Trade Commissionantitrust investigation against Intel.[17]

The FTC settlement included a disclosure provision where Intel must:[18]

publish clearly that its compiler discriminates against non-Intel processors (such as AMD's designs), not fully utilizing their features and producing inferior code.

In compliance with this ruling, Intel added disclaimers to its compiler documentation:[19]

Intel's compilers 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 SSE2, SSE3, and SSSE3 instruction sets and other optimizations. Intel does not guarantee the availability, functionality, or effectiveness of any optimization on microprocessors not manufactured by Intel. Microprocessor-dependent optimizations in this product are intended for use with Intel microprocessors. Certain optimizations not specific to Intel microarchitecture are reserved for Intel microprocessors. Please refer to the applicable product User and Reference Guides for more information regarding the specific instruction sets covered by this notice.

As late as 2013, an article inThe Register alleged that the object code produced by the Intel compiler for theAnTuTu Mobile Benchmark omitted portions of the benchmark which showed increased performance compared to ARM platforms.[20]

Release history

[edit]

The following lists versions of the Intel C++ Compiler since 1999:[21]

Compiler versionRelease dateMajor new features
Intel C/C++ Compiler 4.01999Support for Streaming SIMD, enhanced profile-guided optimization, vectorization[22]
Intel C/C++ Compiler 4.52000Support for OpenMP, Itanium[23]
Intel C/C++ Compiler 5.02001[24]
Intel C/C++ Compiler 6.02002Increased Linux support, Auto-parallelization[25]
Intel C++ Compiler 7.02003[26]
Intel C++ Compiler 8.0December 15, 2003Precompiled headers, code-coverage tools.
Intel C++ Compiler 8.1September 2004AMD64 architecture (for Linux).
Intel C++ Compiler 9.0June 14, 2005AMD64 architecture (for Windows), software-based speculative pre-computation (SSP) optimization, improved loop optimization reports.
Intel C++ Compiler 10.0June 5, 2007Improved 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 10.1November 7, 2007New 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 fromVisual Studio 2005.

VS2008 support: command line only in this release. The IDE integration was not supported yet.

Intel C++ Compiler 11.0November 2008InitialC++11 support. VS2008 IDE integration on Windows. OpenMP 3.0. Source Checker for static memory/parallel diagnostics.
Intel C++ Compiler 11.1June 23, 2009Support for latest Intel SSESSE4.2,AVX andAES instructions. Parallel Debugger Extension. Improved integration into Microsoft Visual Studio, Eclipse CDT 5.0 and Mac Xcode IDE.
Intel C++ Composer XE 2011 up to Update 5 (compiler 12.0)November 7, 2010Cilk Plus language extensions, Guided Auto-Parallelism, ImprovedC++11 support.[27]
Intel C++ Composer XE 2011 Update 6 and above (compiler 12.1)September 8, 2011Cilk Plus language extensions updated to support specification version 1.1 and available onMac OS X in addition to Windows and Linux,Threading Building Blocks updated to support version 4.0, Apple blocks supported on Mac OS X, improvedC++11 support including support for Variadic templates,OpenMP 3.1 support.
Intel C++ Composer XE 2013 (compiler 13.0)September 5, 2012Linux-based support for Intel Xeon Phi coprocessors, support for Microsoft Visual Studio 12 (Desktop), support for gcc 4.7, support for Intel AVX 2 instructions, updates to existing functionality focused on improved application performance.[28]
Intel C++ Composer XE 2013 SP1 (compiler 14.0)September 4, 2013Online installer; support for Intel Xeon Phi coprocessors; preview Win32 only support for Intel graphics; improved C++11 support
Intel C++ Composer XE 2013 SP1 Update 1 (compiler 14.0.1)October 18, 2013Japanese localization of 14.0; Windows 8.1 and Xcode 5.0 support
Intel C++ Compiler for Android (compiler 14.0.1)November 12, 2013Hosted on Windows, Linux, or OS X, compatible with Android NDK tools including the gcc compiler and Eclipse
Intel C++ Composer XE 2015 (compiler 15.0)July 25, 2014Full C++11 language support; Additional OpenMP 4.0 and Cilk Plus enhancements
Intel C++ Composer XE 2015 Update 1 (compiler 15.0.1)October 30, 2014AVX-512 support; Japanese localization
Intel C++ 16.0August 25, 2015Suite-based availability (Intel Parallel Studio XE, Intel System Studio)
Intel C++ 17.0September 15, 2016Suite-based availability (Intel Parallel Studio XE, Intel System Studio)
Intel C++ 18.0January 26, 2017Suite-based availability (Intel Parallel Studio XE, Intel System Studio)
Intel C++ 19.0April 3, 2018Suite-based availability (Intel Parallel Studio XE, Intel System Studio)
Intel C++ Compiler Classic 19.1October 22, 2020Initial Open MP 5.1 CPU only
Intel oneAPI DPC++ / C++ Compiler 2021December 8, 2020SYCL, DPC++, initial Open MP 5.1
Intel C++ Compiler Classic 2021.1.2
Intel oneAPI DPC++/C++ Compiler 2021.1.2
December 16, 2020oneAPI DPC++/C++ introduces support forGPUoffloading
Intel C++ Compiler Classic 2022.2.1
Intel oneAPI DPC++/C++ Compiler 2022.2.1
November 2, 2022Support for latest Intel CPUs, GPUs, and FPGAs;
support for upcoming ISO/IEC 9899:2023 (C23) and ISO/IEC 14882:2023 (C++23) language standards
Intel C++ Compiler Classic 2023.0
Intel oneAPI DPC++/C++ Compiler 2023.0
Q1 2023[10]Support for Intel Advanced Matrix Extensions (Intel AMX), Quick Assist Technology (QAT), IntelAVX-512 withVector Neural Network Instructions (VNNI),bfloat16, GPU datatype flexibility, Intel Xe matrix extensions (Intel XMX), Intel GPU vector engine, XE-Link

See also

[edit]

References

[edit]
  1. ^Intel Corporation (2022-11-02)."Intel® oneAPI DPC++/C++ Compiler".software.intel.com.Intel. Retrieved2024-10-11.
  2. ^Intel Corporation (2022-11-02)."Intel® C++ Compiler Classic".software.intel.com.Intel. Retrieved2022-12-01.
  3. ^"DEPRECATION NOTICE: Intel® C++ Compiler Classic".community.intel.com. 2022-09-01. Retrieved2023-02-13.
  4. ^Intel (2021)."Intel oneAPI DPC++/C++ Compiler".Intel.com.Intel. Retrieved2021-02-09.
  5. ^abcdeIntel Corporation (2021)."Intel® oneAPI DPC++/C++ Compiler".software.intel.com.Intel. Retrieved2021-02-09.
  6. ^"Intel oneAPI DPC++ Compiler 2020-06 Released With New Features".www.phoronix.com. Retrieved2020-12-17.
  7. ^Team, Editorial (2019-12-16)."Heterogeneous Computing Programming: oneAPI and Data Parallel C++".insideBIGDATA. Retrieved2020-12-17.
  8. ^"Khronos Steps Towards Widespread Deployment of SYCL with Release of SYCL 2020 Provisional Specification".The Khronos Group. 2020-06-30. Retrieved2020-12-17.
  9. ^"Intel C/C++ compilers complete adoption of LLVM".Intel. Retrieved2021-08-17.
  10. ^abIntel Corporation (November 30, 2022)."Intel oneAPI 2023 Release: Preview the Tools".www.intel.com.Intel. Retrieved2022-12-01.
  11. ^Intel Corporation (2020-12-16)."Intel® oneAPI DPC++/C++ Compiler".software.intel.com.Intel. Retrieved2021-02-09.
  12. ^Intel Corporation (2020-12-16)."Intel® C++ Compiler Classic".software.intel.com.Intel. Retrieved2021-02-09.
  13. ^"Your Processor, Your Compiler, and You: The Case of the Secret CPUID String". Archived fromthe original on 2012-01-05. Retrieved2011-12-11.
  14. ^ab"Intel's "cripple AMD" function".www.agner.org.
  15. ^Hruska, Joel (29 July 2008)."Low-end grudge match: Nano vs. Atom". Ars Technica.
  16. ^"Settlement agreement"(PDF).download.intel.com. Archived fromthe original(PDF) on 2017-02-22.
  17. ^"Intel and U.S. Federal Trade Commission Reach Tentative Settlement". Newsroom.intel.com. 2010-08-04. Retrieved2012-10-13.
  18. ^"FTC, Intel Reach Settlement; Intel Banned From Anticompetitive Practices". Archived fromthe original on 2012-02-03. Retrieved2011-10-20.
  19. ^"Optimization Notice". Intel Corporation. Retrieved11 December 2013.
  20. ^"Analyst: Tests showing Intel smartphones beating ARM were rigged".The Register.
  21. ^"Intel® C++ Compiler Release Notes and New Features". Intel Corporation. Retrieved27 April 2021.
  22. ^""Intel(R) C++ and Fortran Compilers Home Page"". Archived from the original on 1999-10-04. Retrieved2024-03-08.{{cite web}}: CS1 maint: bot: original URL status unknown (link)
  23. ^""Intel(R) C/C++ Compiler Revision History"". Archived from the original on 2000-08-16. Retrieved2024-03-08.{{cite web}}: CS1 maint: bot: original URL status unknown (link)
  24. ^""Intel(R) C++ and Fortran Compilers Home Page"". Archived from the original on 2001-10-19. Retrieved2024-03-08.{{cite web}}: CS1 maint: bot: original URL status unknown (link)
  25. ^""Intel(R) C++ Compiler for Linux"". Archived from the original on 2002-10-03. Retrieved2024-03-08.{{cite web}}: CS1 maint: bot: original URL status unknown (link)
  26. ^""Intel Software Development Products"". Archived from the original on 2003-02-01. Retrieved2024-03-08.{{cite web}}: CS1 maint: bot: original URL status unknown (link)
  27. ^This note is attached to the release in which Cilk Plus was introduced. This URL points to current documentation:http://software.intel.com/en-us/intel-composer-xe/
  28. ^Intel C++ Composer XE 2013 Release Notes[1]http://software.intel.com/en-us/articles/intel-c-composer-xe-2013-release-notes/

External links

[edit]
Intel software
Itemsin italics are no longer maintained or have planned end-of-life dates.
Development
Components
Open source
Software programs
Organizations
Retrieved from "https://en.wikipedia.org/w/index.php?title=Intel_C%2B%2B_Compiler&oldid=1291436066"
Categories:
Hidden categories:

[8]ページ先頭

©2009-2025 Movatter.jp