인텔 C++ 컴파일러

Intel C++ Compiler
인텔
기타이름
  • icx
  • icpx
  • dpcpp (icpx -fsycl)
개발자인텔
안정적인 방출
2023.2.1 / 2023년 7월 28일, 4개월(2023-07-28)[1]
저장소
운영체제윈도우, 리눅스
유형컴파일러
면허증.프리웨어, 독점 제품
웹사이트software.intel.com/content/www/us/en/develop/tools/oneapi/components/dpc-compiler.html
인텔 C++ 컴파일러 클래식
기타이름
  • icl
  • icpc
  • icc의
개발자인텔
안정적인 방출
2021.10.0 빌드 20230609_0000/2023년 7월 28일, 4개월(2023-07-28)[2]
저장소
운영체제윈도우, macOS, 리눅스
유형컴파일러
면허증.프리웨어, 독점 제품
웹사이트software.intel.com/content/www/us/en/develop/tools/oneapi/components/dpc-compiler.html

인텔 원API DPC++/C++ 컴파일러인텔 C++ 컴파일러 클래식(Intel OneAPI HPC 툴킷에서 icc 및 iclis는[3] 인텔C, C++, SYCLData Parallel C++(DPC++) 컴파일러이며 윈도우, 리눅스macOS 운영 체제에서 사용할 수 있습니다.[4]

개요

인텔 원API DPC++/C++ 컴파일러는 윈도우 및 리눅스용으로 제공되며, 인텔 IA-32, 인텔 64(일명 x86-64), 코어, 제온, 제온 스케일러블 프로세서뿐만 아니라 인텔 프로세서 그래픽스 Gen9 이상, 인텔 X 아키텍처e, Intel Aria 10 GX FPGA가 탑재된 Intel Programmable Acceleration Card.[5] 인텔 C++ 컴파일러 클래식과 마찬가지로 마이크로소프트 비주얼 스튜디오이클립스 IDE 개발 환경도 지원하며 인텔 oneAPI 쓰레딩 빌딩 블록, OpenMP, 네이티브 쓰레딩을 통한 쓰레딩도 지원합니다.

DPC++[6][7]는 크로노스 그룹의 SYCL 사양을 기반으로 합니다. 개발자가 하드웨어 대상(CPU 및 GPU, FPGA 등의 가속기)을 넘나들며 코드를 재사용하고 특정 가속기에 대한 맞춤형 튜닝을 수행할 수 있도록 설계되었습니다. DPC++는 C++17 및 SYCL 언어 기능으로 구성되며 SYCL을 더 쉽게 사용할 수 있는 오픈 소스 커뮤니티 확장 기능을 통합합니다. 이러한 확장 기능 중 많은 부분은 통합 공유 메모리, 그룹 알고리즘 및 하위 그룹을 포함한 SYCL 2020 잠정 사양에서[8] 채택되었습니다.

Intel은 2021년 8월에 보다 빠른 빌드 시간과 최신 C++ 표준 지원을 통한 이점을 위해 LLVM의 완전한 채택을 발표했습니다.[9]

인텔 C++ 컴파일러 클래식은 윈도우, 리눅스, macOS용으로 제공되며 인텔 IA-32, 인텔 64(x86-64), 코어, 제온, 제온 스케일러블 프로세서를 대상으로 C와 C++ 소스 컴파일을 지원합니다.[5] 마이크로소프트 비주얼 스튜디오와 이클립스 IDE 개발 환경을 지원합니다. Intel C++ 컴파일러 Classic은 Intel oneAPI Threading Building Blocks, OpenMP 및 네이티브 스레드를 통한 스레드화를 지원합니다.

건축물

인텔에 [10]따르면 2023.0 릴리즈부터 인텔 원API DPC++/C++ 컴파일러는 다음과 같은 모든 인텔 범용 x86-64 CPU와 GPU를 지원합니다.

  • 프로세서:
    • 기존 Intel IA-32 및 Intel 64(x86-64) 프로세서
    • 인텔 코어 프로세서
    • 인텔 제온 프로세서 제품군
    • Intel Xeon 스케일러블 프로세서
    • 인텔 제온 프로세서 맥스 시리즈
  • GPU:
    • 인텔 프로세서 그래픽스 9세대 이상
    • 인텔e X 아키텍처
    • Intel 10 GX FPGA를 지원하는 Intel Programmable Acceleration 카드
    • Flex Series 및 Max Series를 포함한 Intel 데이터 센터 GPU
  • 인텔 FPGAs

인텔 C++ 컴파일러 클래식은 다음과 같은 범용 인텔 x86-64 아키텍처 CPU를 대상으로 합니다.[5]

  • 기존 Intel IA-32 및 Intel 64(x86-64) 프로세서
  • 인텔 코어 프로세서
  • 인텔 제온 프로세서 제품군
  • Intel Xeon 스케일러블 프로세서

툴킷

인텔 원API DPC++/C++ 컴파일러는 독립형 구성[11] 요소로 제공되거나 InteloneAPI Base Toolkit, InteloneAPI HPC Toolkit 및 Intelone의 일부로 제공됩니다.API IoT 툴킷.[5]

인텔 C++ 컴파일러 클래식은 독립 실행형 구성[12] 요소 또는 인텔 oneAPI Base Toolkit의 일부로 제공됩니다.[5]

디버깅

Intel 컴파일러는 일반 디버거(Linux의 경우 DWRF 2, gdb와 유사함, 윈도우즈의 경우 COFF)에 대한 표준 디버깅 정보를 제공합니다. 디버깅 정보로 컴파일할 플래그는 다음과 같습니다. /Zi Windows 및 -g 리눅스에서. 디버깅은 Windows에서는 Visual Studio 디버거를 사용하고 Linux에서는 gdb를 사용하여 수행됩니다.

Intel 컴파일러는 gprof 호환 프로파일링 출력을 생성할 수 있지만 Intel은 Intel VTune Profiler라는 커널 수준의 시스템 전체 통계 프로파일러도 제공합니다. VTune은 명령줄에서 사용하거나 Linux 또는 Windows에 포함된 GUI를 통해 사용할 수 있습니다. Windows의 Visual Studio 또는 Linux의 Eclipse)에 통합할 수도 있습니다. VTune 프로파일러 외에도 벡터화 최적화, 오프로드 모델링, 흐름 그래프 설계 및 스레드 설계 및 프로토타이핑 도구를 전문으로 하는 Intel Advisor가 있습니다.

Intel은 또한 Intel Inspector XE라는 메모리 및 스레드 오류 탐지 도구를 제공합니다. 메모리 오류와 관련하여 메모리 누출, 메모리 손상, API 불일치 할당/할당 해제 및 일관되지 않은 메모리 API 사용을 감지하는 데 도움이 됩니다. 스레드 오류와 관련하여 데이터 레이스(힙 및 스택 모두), 데드락 및 스레드를 탐지하고 API 오류를 동기화하는 데 도움이 됩니다.

비인텔 프로세서 지원

이전 버전의 인텔 C/C++ 컴파일러는 비인텔 프로세서에 대해 덜 공격적으로 최적화한다는 비판을 받았습니다. 예를 들어, 스티브 웨스트필드는 AMD 웹사이트의 2005년 기사에서 다음과 같이 썼습니다.[13]

Intel 8.1 C/C++ 컴파일러는 -xN(Linux용) 또는 -QxN(Windows용) 플래그를 사용하여 SSE2 확장을 활용합니다. SSE3의 경우 컴파일러 스위치는 -xP(Linux의 경우)이고 -QxP(Windows의 경우)입니다. ... -xN/-QxN 및 -xP/-QxP 플래그 세트를 사용하여 프로세서 공급업체 문자열을 확인하고 "Genuine"이 아닌 경우Intel", 기능 플래그도 확인하지 않고 실행을 중지합니다. 아야!

덴마크의 개발자이자 학자인 Agner Fog는 2009년에 다음과 같이 썼습니다.[14]

인텔 컴파일러와 여러 다른 인텔 함수 라이브러리는 AMDVIA 프로세서에서 최적이 아닌 성능을 발휘합니다. 그 이유는 컴파일러나 라이브러리가 특정 프로세서와 명령어 세트에 최적화된 여러 버전의 코드를 만들 수 있기 때문입니다. 예를 들어 SSE2, SSE3 등. 시스템은 실행 중인 CPU 유형을 감지하고 해당 CPU에 대한 최적의 코드 경로를 선택하는 기능을 포함합니다. 이를 CPU 디스패처라고 합니다. 그러나 Intel CPU Dispatcher는 CPU가 지원하는 명령 집합을 확인할 뿐만 아니라 벤더 ID 문자열도 확인합니다. 벤더 문자열이 "Genuine"인 경우인텔"은 최적의 코드 경로를 사용합니다. CPU가 Intel 제품이 아닌 경우 대부분의 경우 CPU가 더 나은 버전과 완전히 호환되더라도 가장 느린 버전의 코드를 실행합니다.

공급업체별 CPU 배포는 인텔 컴파일러 또는 인텔 함수 라이브러리를 사용하여 구축된 소프트웨어의 성능에 잠재적인 영향을 미칠 수 있으며, 프로그래머가 모르는 사이에 발생할 수 있습니다. 이로 인해 VIA Nano의 CPUID를 변경할 때 발생한 한 가지 사건을 [14]포함하여 잘못된 벤치마크가 발생했다고 합니다.[15] 2009년 11월 AMD와 인텔은 이와 관련된 문제에 대해 법적 합의를 이루었고,[16] 2010년 말 AMD는 인텔에 대한 미국 연방거래위원회반독점 조사를 타결했습니다.[17]

FTC 합의서에는 인텔이 다음 [18]사항을 준수해야 하는 공개 조항이 포함되었습니다.

컴파일러가 인텔 프로세서 이외의 프로세서(예: AMD의 디자인)를 차별하고, 그 기능을 충분히 활용하지 않으며, 열등한 코드를 생성한다고 명확하게 발표합니다.

이 판결에 따라 인텔은 컴파일러 문서에 다음과 같은 면책 사항을 추가했습니다.[19]

인텔의 컴파일러는 인텔 마이크로프로세서 고유의 최적화를 위해 비 인텔 마이크로프로세서에 대해 동일한 정도로 최적화할 수도 있고 그렇지 않을 수도 있습니다. 이러한 최적화에는 SSE2, SSE3 및 SSE3 명령 집합 및 기타 최적화가 포함됩니다. 인텔은 인텔이 제조하지 않은 마이크로프로세서에 대한 최적화의 가용성, 기능 또는 효과를 보장하지 않습니다. 이 제품의 마이크로프로세서 의존적 최적화는 인텔 마이크로프로세서와 함께 사용하기 위한 것입니다. 인텔 마이크로아키텍처에 한정되지 않은 특정 최적화는 인텔 마이크로프로세서용으로 예약되어 있습니다. 이 공지에 포함된 특정 지침 세트에 대한 자세한 내용은 해당 제품 사용자 및 참조 가이드를 참조하십시오.

2013년 후반, The Register의 기사는 AnTuTu Mobile Benchmark용 인텔 컴파일러에 의해 생성된 객체 코드가 ARM 플랫폼에 비해 성능이 향상된 벤치마크의 일부를 생략했다고 주장했습니다.[20]

출고이력

다음은 2003년 이후의 인텔 C++ 컴파일러 버전을 나열한 것입니다.[21]

컴파일러 버전 출고일자 주요 새 기능
인텔 C++ 컴파일러 8.0 2003년12월15일 미리 컴파일된 헤더, 코드 적용 도구입니다.
인텔 C++ 컴파일러 8.1 2004년9월 AMD64 아키텍처(Linux용).
인텔 C++ 컴파일러 9.0 2005년6월14일 AMD64 아키텍처(Windows용), 소프트웨어 기반 SSP(투기적 사전 계산) 최적화, 루프 최적화 보고서 개선.
인텔 C++ 컴파일러 10.0 2007년6월5일 향상된 병렬화 및 벡터화, 스트리밍 SIMD 확장 4(SSE4), 고급 루프 변환을 위한 새롭고 향상된 최적화 보고서, 최적화된 새로운 예외 처리 구현.
인텔 C++ 컴파일러 10.1 2007년11월7일 새 OpenMP* 호환 런타임 라이브러리: 새 OpenMP RTL을 사용하면 Visual C++에서 구축한 라이브러리 및 개체와 혼합 및 일치할 수 있습니다. 새 라이브러리를 사용하려면 Windows에서는 "-Qopenmp / Qopenmp-lib:compat", Linux에서는 "-openmp -openmp-lib:compat"라는 새 옵션을 사용해야 합니다. 이 버전의 인텔 컴파일러는 Visual Studio 2005의 더 많은 고유한 기능을 지원합니다.

VS2008 지원: 이 릴리스에서만 명령줄을 사용할 수 있습니다. IDE 통합은 아직 지원되지 않았습니다.

인텔 C++ 컴파일러 11.0 2008년11월 초기 C++11 지원. 윈도우즈에서 VS2008 IDE 통합. MP 3.0을 엽니다. 정적 메모리/병렬 진단을 위한 Source Checker.
인텔 C++ 컴파일러 11.1 2009년6월23일 최신 Intel SSE SSE 4.2, AVXAES 지침 지원. 병렬 디버거 확장입니다. Microsoft Visual Studio, Eclipse CDT 5.0 및 Mac Xcode IDE로의 통합이 향상되었습니다.
Intel C++ Composer XE 2011부터 업데이트 5까지 (컴파일러 12.0) 2010년11월7일 Cilk Plus 언어 확장, Guided Auto-Parallelism, 향상된 C++11 지원.[22]
Intel C++ Composer XE 2011 업데이트 6 이상(컴파일러 12.1) 2011년9월8일 Cilk Plus 언어 확장 기능은 사양 버전 1.1을 지원하도록 업데이트되었으며 Windows와 Linux 외에도 Mac OS X에서 사용할 수 있습니다. 버전 4.0을 지원하도록 업데이트된 쓰레딩 빌딩 블록, Mac OS X에서 지원되는 Apple 블록, Variadic 템플릿 지원, OpenMP 3.1 지원을 포함한 향상된 C++11 지원.
인텔 C++ 작곡가 XE 2013 (컴파일러 13.0) 2012년9월5일 Linux 기반 Intel Xeon Phi 프로세서 지원, Microsoft Visual Studio 12(데스크탑) 지원, gcc 4.7 지원, Intel AVX 2 명령어 지원, 애플리케이션 성능 향상에 초점을 [23]맞춘 기존 기능 업데이트
인텔 C++ 작곡가 XE 2013 SP1 (컴파일러 14.0) 2013년9월4일 온라인 설치, Intel Xeon Phi 프로세서 지원, 미리보기 Win32만 Intel 그래픽 지원, 향상된 C++11 지원
Intel C++ Composer XE 2013 SP1 업데이트 1(컴파일러 14.0.1) 2013년10월18일 14.0의 일본 현지화, Windows 8.1 및 Xcode 5.0 지원
안드로이드용 인텔 C++ 컴파일러 (컴파일러 14.0.1) 2013년11월12일 Windows, Linux 또는 OS X에서 호스팅되며 gcc 컴파일러 및 Eclipse를 포함한 Android NDK 도구와 호환됩니다.
인텔 C++ 작곡가 XE 2015 (컴파일러 15.0) 2014년7월25일 완전한 C++11 언어 지원, OpenMP 4.0 및 Cilk Plus 기능 추가 향상
인텔 C++ Composer XE 2015 업데이트 1 (컴파일러 15.0.1) 2014년10월30일 AVX-512 지원; 일본 현지화
인텔 C++ 16.0 2015년8월25일 제품군 기반 가용성(Intel Parallel Studio XE, Intel System Studio)
인텔 C++ 17.0 2016년9월15일 제품군 기반 가용성(Intel Parallel Studio XE, Intel System Studio)
인텔 C++ 18.0 2017년1월26일 제품군 기반 가용성(Intel Parallel Studio XE, Intel System Studio)
인텔 C++ 19.0 2018년4월3일 제품군 기반 가용성(Intel Parallel Studio XE, Intel System Studio)
인텔 C++ 컴파일러 클래식 19.1 2020년10월22일 초기 Open MP 5.1 CPU만 해당
인텔 원API DPC++ / C++ 컴파일러 2021 2020년12월8일 SYCL, DPC++, 초기 Open MP 5.1
인텔 C++ 컴파일러 클래식 2021.1.2
인텔 원API DPC++/C++ 컴파일러 2021.1.2
2020년12월16일 하나의 API DPC++/C++에서 GPU 오프로딩을 지원합니다.
인텔 C++ 컴파일러 클래식 2022.2.1
인텔 원API DPC++/C++ 컴파일러 2022.2.1
2022년11월2일 최신 Intel CPU, GPU 및 FPGA 지원
다가오는 ISO/IEC 9899:2023 (C23) 및 ISO/IEC 14882:2023 (C++23) 언어 표준 지원
인텔 C++ 컴파일러 클래식 2023.0
인텔 원API DPC++/C++ 컴파일러 2023.0
2023년[10] 1분기 Intel Advanced Matrix Extensions(Intel AMX), Quick Assist Technology(QAT), VNNI(Vector Neural Network Instructions)를 통한 Intel AVX-512 지원, bfloat16, GPU 데이터 유형 유연성, Intel Xe 매트릭스 확장(Intel XMX), Intel GPU 벡터 엔진, XE-Link

참고 항목

참고문헌

  1. ^ Intel Corporation (2022-11-02). "Intel® oneAPI DPC++/C++ Compiler". software.intel.com. Intel. Retrieved 2022-12-01.
  2. ^ Intel Corporation (2022-11-02). "Intel® C++ Compiler Classic". software.intel.com. Intel. Retrieved 2022-12-01.
  3. ^ "DEPRECATION NOTICE: Intel® C++ Compiler Classic". community.intel.com. 2022-09-01. Retrieved 2023-02-13.
  4. ^ Intel (2021). "Intel oneAPI DPC++/C++ Compiler". Intel.com. Intel. Retrieved 2021-02-09.
  5. ^ a b c d e Intel Corporation (2021). "Intel® oneAPI DPC++/C++ Compiler". software.intel.com. Intel. Retrieved 2021-02-09.
  6. ^ "Intel oneAPI DPC++ Compiler 2020-06 Released With New Features". www.phoronix.com. Retrieved 2020-12-17.
  7. ^ Team, Editorial (2019-12-16). "Heterogeneous Computing Programming: oneAPI and Data Parallel C++". insideBIGDATA. Retrieved 2020-12-17.
  8. ^ "Khronos Steps Towards Widespread Deployment of SYCL with Release of SYCL 2020 Provisional Specification". The Khronos Group. 2020-06-30. Retrieved 2020-12-17.
  9. ^ "Intel C/C++ compilers complete adoption of LLVM". Intel. Retrieved 2021-08-17.
  10. ^ a b Intel Corporation (November 30, 2022). "Intel oneAPI 2023 Release: Preview the Tools". www.intel.com. Intel. Retrieved 2022-12-01.
  11. ^ Intel Corporation (2020-12-16). "Intel® oneAPI DPC++/C++ Compiler". software.intel.com. Intel. Retrieved 2021-02-09.
  12. ^ Intel Corporation (2020-12-16). "Intel® C++ Compiler Classic". software.intel.com. Intel. Retrieved 2021-02-09.
  13. ^ "Your Processor, Your Compiler, and You: The Case of the Secret CPUID String". Archived from the original on 2012-01-05. Retrieved 2011-12-11.
  14. ^ a b "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.
  17. ^ "Intel and U.S. Federal Trade Commission Reach Tentative Settlement". Newsroom.intel.com. 2010-08-04. Retrieved 2012-10-13.
  18. ^ "FTC, Intel Reach Settlement; Intel Banned From Anticompetitive Practices". Archived from the original on 2012-02-03. Retrieved 2011-10-20.
  19. ^ "Optimization Notice". Intel Corporation. Retrieved 11 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. Retrieved 27 April 2021.
  22. ^ 이 노트는 실크 플러스가 선보인 출시작에 첨부되어 있습니다. 이 URL은 현재 문서를 가리킵니다. http://software.intel.com/en-us/intel-composer-xe/
  23. ^ 인텔 C++ 작곡가 XE 2013 출시 노트[1] http://software.intel.com/en-us/articles/intel-c-composer-xe-2013-release-notes/

외부 링크