2017년 5월 2일 화요일

Intel C++ Compiler

Intel C++ Compiler

Intel C++ Compiler
개발원 인텔/XLsoft
최신판 17.0. 1 (Update 1) [1] / 2016년 11월 2일(5개월 전) (2016-11-02) [2]
대응 OS Windows 7 / 8 / 8.1 / 10 / Server 2008 R2 / HPC Server 2008 / Server 2012 R2[3] / Linux / macOS / Android
플랫폼 x86 (IA-32), IA-64, x64 (Intel64)
종별 컴파일러/디버거
라이센스 인텔 독자 라이센스(프로프라이에타리)※30일 평가판유, Linux를 위한 무상판(비상업용) 유
공식 사이트 Intel/XLsoft
템플릿을 표시

Intel C++ Compiler (인테르시프라스프라스콘파이라)와는 인텔이 개발・판매하고 있는 C++컴파일러이다.일본에서의 판매・서포트는 XLsoft가 행하고 있다.약칭은 ICC, 혹은 ICL(각각, Linux/macOS용 및 Windows용 컴파일러의 실행 프로그램명에 의거하고 있다).

목차

개요

인텔이 자사의 발매하는 CPU의 성능을 최대한 발휘하기 위해서 개발한 컴파일러이다.CPU의 개발원이 스스로 개발한만큼 있어 높은 최적화 능력을 자랑해, 최신의 CPU에의 명령 세트에의 대응도 매우 빠르다.버전 11.1에 대해서는, 차세대 256비트 명령인 Intel AVX나, 미국 표준 암호 방식인 AES 명령 세트가 서포트되었다.버전 12.1에 대하고, AVX2 명령이 서포트된[4].또, 버전 11에 대해서는, 표준 규격 C++11(구칭 C++0 x)으로 채용된 Lambda식등의 구문을 이미 서포트했다.버전 14에 대해서는, 주요한 C++11 기능을 거의 망라하고 있는[5].다만 Visual C++컴파일러로 서포트되고 있는 C++/CLI나 C++/CX의 기능은 사용할 수 없다.또, Windows 스토어 어플리의 개발에도 사용할 수 없다.OpenMP 규격은 버전 12.1에 대해 OpenMP 3.1을 서포트하고 있다.또, 버전 14.0에 대해 OpenMP 4.0의 기능을 일부 서포트하고 있는[6].

최적화 성능의 면에서는, 특히 SIMD 명령을 사용한 자동 베크타라이즈 기능이 우수하고, 다른 컴파일러와의 생성 바이너리의 속도차이의 대부분은 이 기능이 원인이라고 해도 괜찮을 정도 인[요점 출전].다만, 자동화라고 해도 컴파일러가 판단 가능인 한정적인 상황으로 밖에 적용되지 않고, 어셈블러나 짜넣어 함수를 사용해 수동으로 신중하게 베크타라이즈 된 코드의 실행 속도에는 이길 수 없는 것이 많다.

그 밖에도 프로파일 계측용 바이너리를 출력해, 실제로 운용하는 것으로써 코드의 실행 상황의 데이터를 수집해, 그것을 바탕으로 최적화하는 프로 파일링 기능이나, OpenMP에 의한 자동 multi-thread화에도 대응하고 있다.버전 11에서는 1 패키지로 다언어 대응이 되었다.

실행에 필요한 라이브러리링커 등은 부속되지 않기 때문에, 다른 컴파일러의 환경에 기생한 형태로 실행된다.Windows로는 Microsoft Visual Studio가, Linux로는 GCC가 필요하다.기본적으로는 콘솔 프로그램이지만 Visual Studio 전용의 플러그 인이 존재하기 위해(때문에) 통합 개발 환경에서도 이용이 가능하다. 콘솔로의 이용=커멘드 라인 툴로서의 이용뿐이면, 무료판인 Visual C++ Express Edition가 호스트 환경으로서 이용 가능하다.덧붙여 Visual Studio 2010 Express까지는, IA-32를 타겟으로 하는 경우는 추가의 SDK 인스톨은 불필요하지만, Intel64을 타겟으로 하는 경우는 별도 추가의 x64 개발용 SDK를 인스톨 할 필요가 있었다(Visual Studio Express 2012 for Windows Desktop 이후는 추가의 인스톨은 불필요하게 되어 있다).

30일 무료의 평가판이 있어, 사용일 기한 이외의 기능 제한은 존재하지 않는다.정규의 라이센스를 구입하면 그대로 제품판으로서 사용할 수 있다.라이센스에는 1년간의 업데이트 입수의 권리가 있어, 라이센스 정지 후에 최신판을 다운로드해 와도 사용할 수 없지만 정지전에 릴리스 된 버전은 그대로 계속 사용할 수 있다.라이센스는 갱신하는 것에 의해서 업데이트 입수의 권리를 계속 보관 유지하는 것이 가능하다.덧붙여 Linux판으로는 비상업용 목적으로 한정해 무상으로 사용할 수 있는 버전이 공개되고 있는[7].

그 성능의 높이로부터 특히 화상 처리, 영상, 음성・음향 관계로 사용되는 경우가 많다.

덧붙여 개발 환경으로서의 Windows Vista 및 Windows Server 2003의 서포트는 버전 14.0으로 종료했다.

부속의 인텔제 라이브러리

Intel C++ Compiler 11.1 프로패셔널 에디션에는, 아래와 같은 인텔 순정의 고성능 라이브러리가 부속된다.

Intel C++ Compiler 버전 10까지는, 상기 라이브러리가 부속되지 않는 스탠다드 에디션이 존재했지만, 버전 11에서는 인텔의 방침에 의해, 프로패셔널 에디션만의 제공이 되고 있다.또, 버전 12이후의 판매 제품의 명칭은 Intel C++ Compiler가 아니고, 이러한 라이브러리를 포함한 패키지 제품으로서 Intel C++ Composer XE라고 하는 명칭이 사용되게 되어 있었지만, 한층 더 Intel Parallel Studio(개발툴류를 포함한 종합 패키지 제품)의 버전 2015이후는, 「Intel Parallel Studio XE Composer Edition for C++」이상의 제품 에디션에 Intel C++ Compiler가 포함되는 형태가 되었다.

덧붙여 이러한 각 라이브러리는 단체 제품으로의 판매도 행해지고 있다.Intel C++ Compiler를 사용하지 않고, Visual C++컴파일러등과 IPP/TBB/MKL를 조합해 사용하는 것도 가능하다.

주의점・문제점

버전 8으로부터 실행 개시시의 CPU 체크로 AMD의 CPU를 인식하지 않게 되었기 때문에, AMD의 CPU로는 출력 바이너리의 실행 성능이 뒤떨어져 버리는 경우가 있다.개발자중에는 이것을 싫어해 굳이 낡은 버전 7을 계속 사용하는 사람도 있는[요점 출전].이 문제는 CPU 체크 처리를 독자적으로 기술해, 링크시에 강제적으로 덧쓰기하는 것으로 회피하는 것이 가능하다.

또 디폴트의 설정으로는 고속화를 위해 부동 소수점 처리로 자동적으로 SSE를 사용하게 되어 있다.그 때문에 FPU를 사용했을 경우와는 처리 결과에 차이가 발생하는 경우가 있다.정도 중시의 설정으로 컴파일 하는 것으로써 FPU를 사용하는 코드를 생성하는 것이 가능하지만 속도는 늦어져 버린다.

컴파일 옵션으로 멀티 CPU 대응 바이너리를 출력하는 것이 가능하지만, 그 만큼 코드 사이즈가 증대하는 경향이 있다.

또, Intel C++ Compiler에 의해서 출력된 바이너리(프로그램)의 실행시에, Intel C++ Compiler 독자적인 DLL공유 라이브러리가 필요한 경우가 있다(명시적으로 OpenMP 혹은 IPP 라이브러리를 사용하고 있지 않아도, 특정의 최적화 옵션을 유효하게 하는 것으로, OpenMP 혹은 IPP가 암묵적으로 링크되는 경우가 있다).인텔에서는 런 타임 라이브러리(libiomp5md.dll등을 포함한 패키지)가 무상 배포되고 있지만, Microsoft Visual C++의 런타임과는 달라 일반의 최종 사용자에는 공개되지 않고, 개발자 스스로가 어플리케이션에 첨부하는 등 재배포하게 되는[8].그러나, 이것에 유의하지 않고 런타임의 재배포나 첨부를 행하지 않는 개발자가 많기 때문에, 최종 사용자가 프로그램을 실행할 수 없는 증례가 많이 보고되고 있는[9][10][11].이 점에 관해서는 라이브러리를 정적 링크하는 것으로써 코드 사이즈는 증대하지만 런타임을 필요로 하지 않는 코드를 생성하는 것이 가능하지만, IPP 등에 있어 SIMD 확장 명령을 사용한 고속의 버전의 함수를 사용하기 위해서는, 프로세서의 대응 상황을 조사하기 위한 초기화 함수(ippInit() 함수)를 별도 호출할 필요가 있다.또, 스태틱 라이브러리판의 Intel OpenMP는 IPP 7.0까지의 제공이 되고 있기 때문에, 이후의 버전으로는 OpenMP 런타임의 동적 링크가 필수가 되는[12].

각주

관련 항목

외부 링크

This article is taken from the Japanese Wikipedia Intel C++ Compiler

This article is distributed by cc-by-sa or GFDL license in accordance with the provisions of Wikipedia.

Wikipedia and Tranpedia does not guarantee the accuracy of this document. See our disclaimer for more information.

In addition, Tranpedia is simply not responsible for any show is only by translating the writings of foreign licenses that are compatible with CC-BY-SA license information.

0 개의 댓글:

댓글 쓰기