맨위로가기

인텔 C++ 컴파일러

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

인텔 C++ 컴파일러는 인텔에서 개발한 C, C++, 포트란 언어를 위한 컴파일러 제품군이다. IA-32, x86-64 아키텍처를 지원하며, C99, C11, C++11, C++14, C++17 표준을 지원한다. OpenMP, Cilk Plus와 같은 병렬화 기술을 지원하며, 인텔 oneAPI DPC++/C++ 컴파일러는 최신 인텔 CPU 및 GPU를 지원한다. 컴파일러는 다양한 최적화 플래그를 제공하며, 디버깅을 위한 표준 디버깅 정보 및 VTune, 인텔 인스펙터 등의 툴을 제공한다. 과거에는 비(非)인텔 프로세서에 대한 최적화 문제와 런타임 라이브러리 재배포의 어려움이 있었으나, 현재는 개선되었다.

더 읽어볼만한 페이지

  • C++ 컴파일러 - GNU 컴파일러 모음
    GNU 컴파일러 모음(GCC)은 리처드 스톨먼이 1987년 처음 출시한 자유 소프트웨어 컴파일러 시스템으로, C, C++, Fortran, Ada, Go 등 다양한 프로그래밍 언어를 지원하며 여러 명령어 집합 아키텍처와 플랫폼에서 널리 사용된다.
  • C++ 컴파일러 - C++빌더
    C++빌더는 델파이와 동일한 IDE를 사용하는 엠바카데로 테크놀로지스에서 개발한 C++ 통합 개발 환경이며, 윈도우, macOS, iOS, 안드로이드 등 다양한 플랫폼을 지원하고 VCL, FireMonkey, CLX와 같은 GUI 라이브러리를 제공한다.
  • 인텔 소프트웨어 - 타이젠
    타이젠은 리눅스 재단 주도로 삼성전자와 인텔이 후원하여 개발된 리눅스 기반 오픈 소스 운영체제로, 스마트폰, 스마트 TV, 웨어러블 기기, 차량용 인포테인먼트 시스템 등 다양한 기기 플랫폼을 지원하며 삼성전자는 바다 운영체제를 통합하여 생태계를 확장했고 웨어러블 기기에서는 Wear OS로 전환되었으나 스마트 TV에서는 계속 사용되고 있다.
  • 인텔 소프트웨어 - 미고 (운영 체제)
    미고는 인텔 모블린과 노키아 마에모 프로젝트를 통합해 개발된 리눅스 기반 오픈 소스 운영 체제로, 다양한 플랫폼 지원을 목표했으나 노키아의 전략 변경으로 타이젠으로 대체되었고, 이후 커뮤니티 개발자들에 의해 Mer 프로젝트와 Sailfish OS로 이어졌다.
  • C 컴파일러 - GNU 컴파일러 모음
    GNU 컴파일러 모음(GCC)은 리처드 스톨먼이 1987년 처음 출시한 자유 소프트웨어 컴파일러 시스템으로, C, C++, Fortran, Ada, Go 등 다양한 프로그래밍 언어를 지원하며 여러 명령어 집합 아키텍처와 플랫폼에서 널리 사용된다.
  • C 컴파일러 - MinGW
    MinGW는 윈도우에서 GNU 툴체인을 사용할 수 있게 해주는 프로젝트이며, MSYS를 통해 유닉스 셸 환경을 제공하고, C, C++, Objective-C 등 다양한 언어를 지원하며 윈도우 API를 직접 호출하여 호환성 계층 DLL을 요구하지 않는다.
인텔 C++ 컴파일러 - [IT 관련 정보]에 관한 문서
기본 정보
이름Intel C++ Compiler
개발사인텔/XLsoft
최신 버전2024.0.2
최신 버전 발표일2023년 12월 21일
지원 운영체제윈도우 10
윈도우 서버 2019
윈도우 서버 2016
리눅스
macOS
Android
지원 플랫폼x86 (IA-32)
x64 (Intel 64)
종류컴파일러/디버거
라이선스인텔 독점 라이선스 (사유) (30일 평가판 제공, 리눅스용 무료 버전 (비상업적) 제공)
공식 웹사이트인텔
XLsoft
Intel oneAPI DPC++/C++ 컴파일러
다른 이름icx, icpx, dpcpp (icpx -fsycl)
개발사인텔
최신 버전2024.2.1
최신 버전 발표일2024년 8월 5일
지원 운영체제윈도우, 리눅스
종류컴파일러
라이선스프리웨어, 사유
웹사이트Intel oneAPI DPC++/C++ Compiler
Intel C++ Compiler Classic
다른 이름icl, icpc, icc
개발사인텔
최신 버전2021.10.0 Build 20230609_000000
최신 버전 발표일2023년 7월 28일
지원 운영체제윈도우, macOS, 리눅스
종류컴파일러
라이선스프리웨어, 사유
웹사이트Intel oneAPI DPC++/C++ Compiler

2. 지원 언어

인텔 컴파일러 제품군은 C, C++, 포트란을 위한 프론트엔드를 제공한다.[9] 인텔 oneAPI DPC++/C++ 컴파일러는 C, C++, SYCL 및 Data Parallel C++(DPC++) 소스 컴파일을 지원한다. DPC++는 The Khronos Group의 SYCL 사양을 기반으로 구축되었으며, 개발자가 하드웨어 대상 간에 코드를 재사용하고 특정 가속기에 맞게 사용자 정의 튜닝을 수행할 수 있도록 설계되었다.[5][6] DPC++는 C++17 및 SYCL 언어 기능을 포함하며 SYCL을 더 쉽게 사용할 수 있도록 하는 오픈 소스 커뮤니티 확장을 통합한다.[7]

인텔 C++ 컴파일러 클래식은 C 및 C++ 소스 컴파일을 지원한다.[9] C99[34]와 C11[35] 지원 목록이 공개되어 있으며, 버전 18.0에서 C11을 거의 지원한다. C++11[36][37], C++14[38], C++17[39]의 지원 목록이 공개되어 있으며, 버전 15.0에서 C++11을 거의 지원한다. 버전 19.0에서는 C++14를 완전 지원하며, C++17의 대부분을 지원한다.

OpenMP 규격은 버전 12.1에서 OpenMP 3.1을 지원하며, 버전 14.0에서 OpenMP 4.0의 기능을 일부 지원한다.[40] 버전 19.0에서는 OpenMP 4.5 및 OpenMP 5.0의 일부를 지원한다.

3. 지원 아키텍처



인텔 oneAPI DPC++/C++ 컴파일러는 다음 CPU 및 GPU를 대상으로 한다.[9]

  • 인텔 IA-32, 인텔 64(x86-64)
  • 코어, 제온, 제온 스케일러블 프로세서
  • 인텔 프로세서 그래픽 Gen9 이상, 인텔 Xe 아키텍처, 인텔 Arria 10 GX FPGA를 탑재한 인텔 프로그래밍 가능 가속 카드와 같은 GPU


인텔 C++ 컴파일러 클래식은 다음 CPU를 대상으로 한다.[9]

  • 인텔 IA-32, 인텔 64(x86-64)
  • 코어, 제온 및 제온 스케일러블 프로세서


인텔에 따르면,[10] 2023.0 릴리스부터 인텔 oneAPI DPC++/C++ 컴파일러는 다음과 같은 모든 최신 인텔 범용 x86-64 CPU 및 GPU를 지원한다.

구분지원 대상
프로세서
GPU
FPGA인텔 FPGA



인텔 C++ 컴파일러 Classic은 다음을 포함한 범용 인텔 x86-64 아키텍처 CPU를 대상으로 한다:[9]

지원 대상


4. 버전

인텔 C++ 컴파일러는 다양한 버전으로 출시되었으며, 각 버전마다 새로운 기능 추가와 성능 향상이 이루어졌다.

초기 버전에서는 스트리밍 SIMD, OpenMP, 리눅스 지원 등 기본적인 기능들이 추가되었다. 이후 버전에서는 AMD64 아키텍처, SSE4 및 AVX 명령어, C++11 표준 지원 등 최신 기술들이 빠르게 도입되었다.

특히, 인텔 C++ 컴파일러는 인텔 CPU에 대한 최적화 능력이 뛰어나며, 자동 벡터라이즈 기능과 OpenMP를 이용한 자동 멀티스레드화 기능을 통해 높은 성능을 제공한다.[33]

버전 11.1까지는 IA-64 (아이테니엄)를 지원했지만, 버전 12.0 이후에는 지원되지 않는다[31]。 버전 11.1에서는 256비트 명령인 Intel AVX 및 AES 명령 집합이 지원되었다. 버전 12.1에서는 AVX2 명령이 지원되었다[32]

최근에는 인텔 제온 파이 코프로세서, AVX-512, GPU 오프로딩 등 다양한 플랫폼과 기술을 지원하고 있다. 또한, C++23 및 C23 언어 표준 지원을 통해 최신 프로그래밍 표준을 준수하고 있다.

4. 1. 주요 버전

다음은 1999년 이후 인텔 C++ 컴파일러의 주요 버전을 나열한 표이다.[21]

컴파일러 버전출시일주요 새로운 기능
인텔 C/C++ 컴파일러 4.01999스트리밍 SIMD 지원, 향상된 프로파일 기반 최적화, 벡터화 [22]
인텔 C/C++ 컴파일러 4.52000OpenMP 지원, Itanium [23]
인텔 C/C++ 컴파일러 5.02001[24]
인텔 C/C++ 컴파일러 6.02002리눅스 지원 확대, 자동 병렬화 [25]
인텔 C++ 컴파일러 7.02003[26]
인텔 C++ 컴파일러 8.02003년 12월 15일미리 컴파일된 헤더, 코드 커버리지 도구.
인텔 C++ 컴파일러 8.12004년 9월AMD64 아키텍처 (리눅스용).
인텔 C++ 컴파일러 9.02005년 6월 14일AMD64 아키텍처 (윈도우용), 소프트웨어 기반의 추측적 사전 계산 (SSP) 최적화, 루프 최적화 보고서 개선.
인텔 C++ 컴파일러 10.02007년 6월 5일향상된 병렬화 및 벡터라이저, 스트리밍 SIMD 확장 4 (SSE4), 고급 루프 변환을 위한 새롭고 향상된 최적화 보고서, 새로운 최적화된 예외 처리 구현.
인텔 C++ 컴파일러 10.12007년 11월 7일새로운 OpenMP* 호환 런타임 라이브러리: 새로운 OpenMP RTL을 사용하면 Visual C++로 빌드된 라이브러리 및 객체와 혼합하여 사용할 수 있다. 새로운 라이브러리를 사용하려면 윈도우에서는 "-Qopenmp /Qopenmp-lib:compat" 옵션을, 리눅스에서는 "-openmp -openmp-lib:compat" 옵션을 사용해야 한다. 이 버전의 인텔 컴파일러는 Visual Studio 2005의 더 많은 내장 함수를 지원한다.
인텔 C++ 컴파일러 11.02008년 11월초기 C++11 지원. 윈도우에서 VS2008 IDE 통합. OpenMP 3.0. 정적 메모리/병렬 진단을 위한 소스 검사기.
인텔 C++ 컴파일러 11.12009년 6월 23일최신 인텔 SSE SSE4.2, AVX 및 AES 명령어 지원. 병렬 디버거 확장. Microsoft Visual Studio, Eclipse CDT 5.0 및 Mac Xcode IDE에 대한 통합 개선.
인텔 C++ Composer XE 2011 업데이트 5까지 (컴파일러 12.0)2010년 11월 7일Cilk Plus 언어 확장, 가이드된 자동 병렬화, 향상된 C++11 지원.[27]
인텔 C++ Composer XE 2011 업데이트 6 이상 (컴파일러 12.1)2011년 9월 8일Cilk Plus 언어 확장이 버전 1.1 사양을 지원하도록 업데이트되었으며, 윈도우 및 리눅스 외에도 Mac OS X에서 사용할 수 있음, Threading Building Blocks가 버전 4.0을 지원하도록 업데이트됨, Mac OS X에서 Apple 블록 지원, 가변 템플릿 지원을 포함한 향상된 C++11 지원, OpenMP 3.1 지원.
인텔 C++ Composer XE 2013 (컴파일러 13.0)2012년 9월 5일인텔 제온 파이 코프로세서에 대한 리눅스 기반 지원, Microsoft Visual Studio 12 (데스크톱) 지원, gcc 4.7 지원, 인텔 AVX 2 명령어 지원, 애플리케이션 성능 향상에 중점을 둔 기존 기능 업데이트.[28]
인텔 C++ Composer XE 2013 SP1 (컴파일러 14.0)2013년 9월 4일온라인 설치 프로그램; 인텔 제온 파이 코프로세서 지원; 인텔 그래픽에 대한 Win32 전용 지원 미리보기; 향상된 C++11 지원
인텔 C++ Composer XE 2013 SP1 업데이트 1 (컴파일러 14.0.1)2013년 10월 18일14.0의 일본어 현지화; Windows 8.1 및 Xcode 5.0 지원
Android용 인텔 C++ 컴파일러 (컴파일러 14.0.1)2013년 11월 12일윈도우, 리눅스 또는 OS X에서 호스팅되며, gcc 컴파일러 및 Eclipse를 포함한 Android NDK 도구와 호환
인텔 C++ Composer 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.02015년 8월 25일제품군 기반 가용성 (인텔 Parallel Studio XE, 인텔 System Studio)
인텔 C++ 17.02016년 9월 15일제품군 기반 가용성 (인텔 Parallel Studio XE, 인텔 System Studio)
인텔 C++ 18.02017년 1월 26일제품군 기반 가용성 (인텔 Parallel Studio XE, 인텔 System Studio)
인텔 C++ 19.02018년 4월 3일제품군 기반 가용성 (인텔 Parallel Studio XE, 인텔 System Studio)
인텔 C++ 컴파일러 Classic 19.12020년 10월 22일초기 Open MP 5.1 CPU 전용
인텔 oneAPI DPC++/C++ 컴파일러 20212020년 12월 8일SYCL, DPC++, 초기 Open MP 5.1
인텔 C++ 컴파일러 Classic 2021.1.22020년 12월 16일oneAPI DPC++/C++는 GPU 오프로딩 지원을 도입.
인텔 C++ 컴파일러 Classic 2022.2.12022년 11월 2일최신 인텔 CPU, GPU 및 FPGA 지원;
인텔 C++ 컴파일러 Classic 2023.02023년 1분기[10]인텔 Advanced Matrix Extensions (인텔 AMX), Quick Assist Technology (QAT), 인텔 AVX-512 with Vector Neural Network Instructions (VNNI), GPU 데이터 유형 유연성, 인텔 Xe 매트릭스 확장 (인텔 XMX), 인텔 GPU 벡터 엔진, XE-Link 지원


4. 2. 실험 / 프로토타입 버전

5. 컴파일러 플래그

인텔 C++ 컴파일러는 코드 최적화 수준을 조절하기 위해 다양한 컴파일러 플래그를 제공한다. 이러한 플래그는 윈도우, 리눅스, 맥 OS X 운영체제에 따라 다르게 사용된다.[50] 각 플래그에 대한 자세한 설명은 하위 섹션에 표로 정리되어 있다.

5. 1. 주요 최적화 플래그

윈도리눅스 및 맥 OS X설명
/Od-O0최적화 안 함
/O1-O1크기 최적화
/O2-O2속도 최적화 및 일부 최적화 사용
/O3-O3O2의 최적화 모두 사용, 철저한 루프 최적화
/QxO-xO비 인텔 CPU를 위한 SSE3, SSE2, SSE 명령어 집합 최적화 사용.[50]
/fast-fast빠른 사용. 윈도우의 경우 "/O3 /Qipo /QxHost /no-prec-div"와 동일. 리눅스의 경우 "-O3 -ipo -static -xHOST -no-prec-div"와 동일.
/Qprof-gen-prof_gen프로파일 생성하여 프로그램 컴파일.
/Qprof-use-prof_useprof_gen를 사용하여 컴파일한 프로그램을 실행한 뒤에만 사용할 수 있음. 컴파일 각 단계 동안 프로파일 정보 사용.


6. 디버깅

인텔 컴파일러는 일반적인 디버거(gdb (리눅스), COFF (윈도우))에 대한 표준 디버깅 정보를 제공한다.[9] 윈도우에서는 `/Zi`, 리눅스에서는 `-g` 플래그를 사용하여 디버깅 정보로 컴파일한다. 윈도우에서는 Visual Studio 디버거를, 리눅스에서는 gdb를 사용하여 디버깅을 수행한다.

인텔 컴파일러는 gprof 호환 프로파일링 출력을 생성할 수 있으며, 인텔 VTune 프로파일러라는 커널 레벨의 시스템 전체 통계 프로파일러도 제공한다. VTune은 리눅스 또는 윈도우에서 명령줄이나 GUI를 통해 사용할 수 있으며, 윈도우의 비주얼 스튜디오나 리눅스의 이클립스에 통합될 수도 있다. VTune 프로파일러 외에도 벡터화 최적화, 오프로드 모델링, 흐름 그래프 설계, 스레딩 설계 및 프로토타입 제작 도구인 인텔 어드바이저가 있다.

인텔은 인텔 인스펙터 XE라는 메모리 및 스레딩 오류 감지 도구도 제공한다. 이 도구는 메모리 누수, 메모리 손상, API 불일치 할당/할당 해제, 일관성 없는 메모리 API 사용과 같은 메모리 오류를 감지하고, 데이터 경합(힙 및 스택), 데드락, 스레드 및 동기화 API 오류와 같은 스레딩 오류를 감지하는 데 도움을 준다.

7. 툴킷

인텔 oneAPI DPC++/C++ 컴파일러는 독립 실행형 구성 요소[11] 또는 인텔 oneAPI Base Toolkit, 인텔 oneAPI HPC Toolkit 및 인텔 oneAPI IoT Toolkit의 일부로 사용할 수 있다.[9]

인텔 C++ 컴파일러 Classic은 독립 실행형 구성 요소[12] 또는 인텔 oneAPI Base Toolkit의 일부로 사용할 수 있다.[9]

인텔 C++ 컴파일러 11.1 프로페셔널 에디션에는 다음과 같은 인텔 정품 고성능 라이브러리가 포함되어 있다.


  • 인텔 IPP(IPP) - 이미지 처리, 신호 처리, 동영상 처리에 최적화된 멀티미디어용 라이브러리
  • 인텔 스레딩 빌딩 블록(TBB) - 스레드 세이프화된 컨테이너 및 동기화 클래스를 포함하는 병렬화용 C++ 템플릿 라이브러리
  • 인텔 수학 커널 라이브러리(MKL) - BLAS, LAPACK, FFT 등의 고급 연산 처리에 최적화된 수학 라이브러리


인텔 C++ 컴파일러 버전 10까지는 위 라이브러리가 포함되지 않는 스탠다드 에디션이 존재했으나, 버전 11부터 인텔의 방침에 따라 프로페셔널 에디션만 제공하고 있다. 버전 12 이후 판매 제품의 명칭은 인텔 C++ 컴파일러가 아닌, 이들 라이브러리를 포함한 스위트 제품인 '''인텔 C++ Composer XE'''라는 명칭이 사용되었지만, 인텔 병렬 스튜디오(개발 도구 등을 포함하는 종합 스위트 제품)의 버전 2015 이후에는 "인텔 병렬 스튜디오 XE Composer Edition for C++" 이상의 제품 에디션에 인텔 C++ 컴파일러가 포함되는 형태가 되었다.

이들 각 라이브러리는 단품으로도 판매되고 있다. 인텔 C++ 컴파일러를 사용하지 않고 Visual C++ 컴파일러 등과 IPP/TBB/MKL을 조합하여 사용할 수도 있다.

8. 비(非)인텔 프로세서 지원 문제

과거 인텔 C/C++ 컴파일러는 인텔 프로세서가 아닌 다른 회사(비(非)인텔) 프로세서에 대해서는 최적화를 덜 적극적으로 한다는 비판을 받아왔다.[13]

2005년 AMD 웹사이트의 기사에서는 인텔 8.1 C/C++ 컴파일러가 SSE2 확장을 활용하기 위해 특정 플래그(-xN 또는 -QxN)를 사용하는데, 이 플래그가 설정되면 프로세서 벤더 문자열이 "GenuineIntel"인지 확인하고, 아니면 실행을 중단한다고 언급했다.[13]

덴마크 개발자이자 학자인 아그너 포그는 2009년에 인텔 컴파일러와 여러 인텔 함수 라이브러리가 AMD 및 VIA 프로세서에서 최적화되지 않은 성능을 보인다고 작성했다.[14] 그 이유는 컴파일러 또는 라이브러리가 CPU 유형을 감지하여 최적의 코드 경로를 선택하는 CPU 디스패처를 포함하는데, 인텔 CPU 디스패처는 벤더 ID 문자열이 "GenuineIntel"인 경우에만 최적의 코드를 실행하고, 그렇지 않으면 CPU가 더 나은 버전을 지원하더라도 가장 느린 버전의 코드를 실행하기 때문이라고 설명했다.[14]

이러한 벤더별 CPU 디스패칭은 벤치마크 결과를 왜곡할 수 있으며,[14] VIA 나노의 CPUID를 변경했을 때 결과가 크게 개선된 사건도 있었다.[15] 2009년 11월, AMD와 인텔은 이 문제에 대해 법적 합의를 했고,[16] 2010년 말, AMD는 미국 연방거래위원회반독점 조사에 대해 인텔과 합의했다.[17]

FTC 합의에는 인텔이 컴파일러가 비(非)인텔 프로세서를 차별하여 기능을 완전히 활용하지 않고 열등한 코드를 생성한다는 점을 명확하게 공개해야 한다는 조항이 포함되었다.[18]

이에 따라 인텔은 컴파일러 문서에 다음과 같은 면책 조항을 추가했다.[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.영어

(번역) 인텔의 컴파일러는 인텔 마이크로프로세서에 고유하지 않은 최적화에 대해 비(非)인텔 마이크로프로세서에 대해 동일한 수준으로 최적화되지 않을 수 있다. 이러한 최적화에는 SSE2, SSE3 및 SSSE3 명령어 집합 및 기타 최적화가 포함된다. 인텔은 인텔이 제조하지 않은 마이크로프로세서에서 최적화의 가용성, 기능 또는 효과를 보장하지 않는다. 이 제품의 마이크로프로세서 종속 최적화는 인텔 마이크로프로세서와 함께 사용하기 위한 것이다. 인텔 마이크로아키텍처에 특정되지 않은 특정 최적화는 인텔 마이크로프로세서용으로 예약되어 있다. 이 통지에 포함된 특정 명령어 집합에 대한 자세한 내용은 해당 제품 사용자 및 참조 가이드를 참조하십시오.

2013년에는 ''더 레지스터''의 기사에서 인텔 컴파일러가 AnTuTu 모바일 벤치마크용으로 생성한 객체 코드가 ARM 플랫폼에 비해 성능이 향상된 벤치마크 부분을 생략했다고 주장했다.[20]

버전 8부터는 실행 시작 시 CPU 검사에서 AMD의 CPU를 인식하지 못하게 되어, AMD CPU에서는 출력 바이너리의 실행 성능이 저하될 수 있다는 주장이 있다. 이 문제는 CPU 검사 처리를 자체적으로 작성하고, 링크 시 강제로 덮어쓰는 방식으로 회피할 수 있다고 알려져 있다.

또한 기본 설정에서는 속도 향상을 위해 부동 소수점 처리에서 자동으로 SSE를 사용하도록 되어 있어, FPU를 사용한 경우와는 처리 결과에 차이가 발생할 수 있다. 정밀도 중시 설정을 사용하여 컴파일함으로써 FPU를 사용하는 코드를 생성할 수 있지만 속도는 느려진다.

컴파일 옵션을 통해 멀티 CPU 대응 바이너리를 출력할 수 있지만, 그만큼 코드 크기가 증가하는 경향이 있다.

인텔 C++ 컴파일러로 출력된 바이너리(프로그램) 실행 시, 인텔 C++ 컴파일러 고유의 DLL이나 공유 라이브러리가 필요한 경우가 있다.[41] 인텔에서는 런타임 라이브러리를 무상 배포하고 있지만, Microsoft Visual C++(마이크로소프트 비주얼 C++)의 런타임과는 달리 일반 최종 사용자에게 공개되지 않으며, 개발자가 직접 애플리케이션에 첨부하는 등 재배포해야 한다.[41] 그러나 이를 유의하지 않고 런타임 재배포나 첨부를 하지 않는 개발자가 많아, 최종 사용자가 프로그램을 실행할 수 없는 사례가 많이 보고되고 있다.[42][43][44]

9. 주의점 및 문제점

과거 인텔 C/C++ 컴파일러는 인텔 프로세서가 아닌 다른 회사의 프로세서(비(非)인텔 프로세서)에 대해서는 최적화를 덜 적극적으로 한다는 비판을 받아왔다.[13] 2005년 AMD 웹사이트의 기사에서는 인텔 컴파일러가 특정 플래그를 사용하면 프로세서 벤더 문자열을 확인하여 "GenuineIntel"이 아니면 실행을 중단한다고 언급했다.[13]

아그너 포그는 2009년에 인텔 컴파일러와 라이브러리가 AMD 및 VIA 프로세서에서 최적화되지 않은 성능을 보이는데, 이는 CPU 디스패처가 벤더 ID 문자열을 확인하여 "GenuineIntel"이 아니면 CPU가 더 나은 버전을 지원하더라도 가장 느린 버전의 코드를 실행하기 때문이라고 설명했다.[14]

이러한 벤더별 CPU 디스패칭은 벤치마크 결과를 왜곡할 수 있으며,[14] VIA 나노의 CPUID를 변경했을 때 결과가 크게 개선된 사건도 있었다.[15] 2009년과 2010년에 AMD와 인텔은 이 문제에 대해 법적 합의를 보았고,[16][17] 미국 연방거래위원회의 합의에 따라 인텔은 컴파일러가 비인텔 프로세서를 차별한다는 점을 명확하게 공개해야 했다.[18]

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

2013년 ''더 레지스터''의 기사에서는 인텔 컴파일러가 AnTuTu 모바일 벤치마크용 코드가 ARM 플랫폼에 비해 성능이 향상된 벤치마크 부분을 생략했다고 주장했다.[20]

버전 8부터는 실행 시작 시 CPU 검사에서 AMD CPU를 인식하지 못하게 하여, AMD CPU에서 성능이 저하될 수 있다는 문제가 있다.

기본 설정에서는 속도 향상을 위해 부동 소수점 처리에서 자동으로 SSE를 사용하므로, FPU를 사용한 경우와 처리 결과에 차이가 발생할 수 있다.

인텔 C++ 컴파일러로 출력된 프로그램 실행 시, 인텔 C++ 컴파일러 고유의 DLL이나 공유 라이브러리가 필요한 경우가 있다. 런타임 라이브러리는 무상 배포되지만, 개발자가 직접 애플리케이션에 재배포해야 한다.[41]

참조

[1] 웹사이트 Intel® oneAPI DPC++/C++ Compiler https://software.int[...] Intel 2024-10-11
[2] 웹사이트 Intel® C++ Compiler Classic https://software.int[...] Intel 2022-12-01
[3] 웹사이트 DEPRECATION NOTICE: Intel® C++ Compiler Classic https://community.in[...] 2023-02-13
[4] 웹사이트 Intel oneAPI DPC++/C++ Compiler https://software.int[...] Intel 2021-02-09
[5] 웹사이트 Intel oneAPI DPC++ Compiler 2020-06 Released With New Features https://www.phoronix[...] 2020-12-17
[6] 웹사이트 Heterogeneous Computing Programming: oneAPI and Data Parallel C++ https://insidebigdat[...] 2020-12-17
[7] 웹사이트 Khronos Steps Towards Widespread Deployment of SYCL with Release of SYCL 2020 Provisional Specification https://www.khronos.[...] 2020-12-17
[8] 웹사이트 Intel C/C++ compilers complete adoption of LLVM https://www.intel.co[...] 2021-08-17
[9] 웹사이트 Intel® oneAPI DPC++/C++ Compiler https://software.int[...] Intel 2021-02-09
[10] 웹사이트 Intel oneAPI 2023 Release: Preview the Tools https://www.intel.co[...] Intel 2022-12-01
[11] 웹사이트 Intel® oneAPI DPC++/C++ Compiler https://software.int[...] Intel 2021-02-09
[12] 웹사이트 Intel® C++ Compiler Classic https://software.int[...] Intel 2021-02-09
[13] 웹사이트 Your Processor, Your Compiler, and You: The Case of the Secret CPUID String https://web.archive.[...] 2011-12-11
[14] 웹사이트 Intel's "cripple AMD" function http://www.agner.org[...]
[15] 뉴스 Low-end grudge match: Nano vs. Atom https://arstechnica.[...] Ars Technica 2008-07-29
[16] 웹사이트 Settlement agreement https://web.archive.[...]
[17] 웹사이트 Intel and U.S. Federal Trade Commission Reach Tentative Settlement http://newsroom.inte[...] Newsroom.intel.com 2012-10-13
[18] 웹사이트 FTC, Intel Reach Settlement; Intel Banned From Anticompetitive Practices https://web.archive.[...] 2011-10-20
[19] 웹사이트 Optimization Notice http://software.inte[...] Intel Corporation 2013-12-11
[20] 웹사이트 Analyst: Tests showing Intel smartphones beating ARM were rigged https://www.theregis[...]
[21] 웹사이트 Intel® C++ Compiler Release Notes and New Features https://software.int[...] Intel Corporation 2021-04-27
[22] 웹사이트 "Intel(R) C++ and Fortran Compilers Home Page" http://developer.int[...] 2024-03-08
[23] 웹사이트 "Intel(R) C/C++ Compiler Revision History" http://developer.int[...] 2024-03-08
[24] 웹사이트 "Intel(R) C++ and Fortran Compilers Home Page" http://developer.int[...] 2024-03-08
[25] 웹사이트 "Intel(R) C++ Compiler for Linux" http://developer.int[...] 2024-03-08
[26] 웹사이트 "Intel Software Development Products" http://developer.int[...] 2024-03-08
[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''[http://software.intel.com/en-us/articles/intel-c-composer-xe-2013-release-notes/]'' http://software.intel.com/en-us/articles/intel-c-composer-xe-2013-release-notes/
[29] 문서 Intel® oneAPI DPC++/C++ Compiler Release Notes https://www.intel.co[...]
[30] 문서 Intel C++コンパイラーで作成されたアプリケーションの実行環境は、Intel C++コンパイラー自体の実行環境すなわち開発環境に準ずる。なお、アプリケーション実行環境として、[[Microsoft Windows XP|XP]] / [[Microsoft Windows Vista|Vista]] / [[Microsoft Windows Server 2003|Server 2003]] / [[Microsoft Windows Server 2008|Server 2008]]での正式な互換性テストは行なわれていない。
[31] 문서 インテル® C++ Composer XE 2011 Windows* 版インストール・ガイドおよびリリースノート - w_ccompxe_2011.7.258_Release_Notes_ja_JP.pdf http://registrationc[...]
[32] 문서 インテル・コンパイラー12.1でサポートされたAVX2向けオプション | 最適化フォーラム | フォーラム | iSUS http://www.isus.jp/f[...]
[33] 웹사이트 Non-Commercial Software Development http://software.inte[...] 2014-02-01
[34] 문서 C99 Support in Intel® C++ Compiler | Intel® Software https://software.int[...]
[35] 문서 C11 Support in Intel C++ Compiler | Intel® Software https://software.int[...]
[36] 웹사이트 C++11 Features Supported by Intel® C++ Compiler | Intel® Software https://software.int[...]
[37] 웹사이트 インテル® C++ コンパイラーでサポートされる C++11 の機能 | iSUS https://www.isus.jp/[...]
[38] 웹사이트 C++14 Features Supported by Intel® C++ Compiler | Intel® Software https://software.int[...]
[39] 웹사이트 C++17 Features Supported by Intel® C++ Compiler | Intel® Software https://software.int[...]
[40] 웹사이트 OpenMP* 4.0 Features in Intel C++ Composer XE 2013 | Intel® Developer Zone http://software.inte[...]
[41] 웹사이트 libiomp5md.dll と OpenMP https://phreeqc.blog[...]
[42] 웹사이트 Hydrogenaudio Forums > Flac compression through EAC not working http://www.hydrogena[...]
[43] 웹사이트 Hydrogenaudio Forums > Cool Edit Pro 2.0 + Vorbis http://www.hydrogena[...]
[44] 웹사이트 WinAmp gives error whe loading AAC plugin - Hydrogenaudio Forums http://www.hydrogena[...]
[45] 웹사이트 インテル® IPP における OpenMP* サポートの変更 http://www.isus.jp/a[...] 2014-02-01
[46] 웹인용 Intel® oneAPI DPC++/C++ Compiler 인텔 2022-11-02
[47] 웹인용 Intel® C++ Compiler Classic Intel 2022-11-02
[48] 서적 The Software Vectorization Handbook Intel Press 2004
[49] 보도자료 PRESS KIT - Intel Developer Forum http://www.intel.com[...]
[50] 웹사이트 http://www.intel.com[...]



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com