Intel C++ Compiler

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動: 案内検索
Intel C++ Compiler
開発元 インテル/XLsoft
最新版 Intel C++ Composer XE 2013 SP1 Update 1 (C++ Compiler 14.0.1) / 2013年11月12日
対応OS Windows XP / Vista / 7 / 8 / Server 2003 / Server 2008 / HPC Server 2008 / Server 2012 / Linux / Mac OS X / Android
プラットフォーム x86(IA-32), IA-64, x64(Intel64)
種別 コンパイラ/デバッガ
ライセンス インテル独自ライセンス (プロプライエタリ)※30日評価版有、Linux向け無償版(非商用)有
公式サイト XLsoft
テンプレートを表示

Intel C++ Compilerインテル シープラスプラス コンパイラ)とはインテルが開発・販売しているC++コンパイラである。日本での販売・サポートはXLsoftがおこなっている。略称はICC、あるいはICL(それぞれ、Linux/Mac OS X用およびWindows用コンパイラの実行プログラム名にもとづいている)。

概要[編集]

インテルが自社の発売するCPUの性能を最大限発揮するために開発したコンパイラである。CPUの開発元が自ら開発しただけあって高い最適化能力を誇り、最新のCPUへの命令セットへの対応も非常に早い。バージョン11.1においては、次世代256ビット命令であるIntel AVXや、米国標準暗号方式であるAES命令セットがサポートされている。また、バージョン11においては、次期C++標準規格(C++11、旧称C++0x)で採用されることが予定されているラムダ式などの構文を早くもサポートした。バージョン14においては、主要なC++11機能をほぼ網羅している[1]。ただしVisual C++コンパイラでサポートされているC++/CLIやC++/CXの機能は使用できない。また、Windowsストアアプリの開発にも使用できない。OpenMP規格はバージョン12.1においてOpenMP 3.1をサポートしている。また、バージョン14.0においてOpenMP 4.0の機能を一部サポートしている[1]

最適化性能の面では、特にSIMD命令を使用した自動ベクタライズ機能が優秀であり、他のコンパイラとの生成バイナリの速度差の大半はこの機能が原因といってもよいくらいである。ただし、自動化といっても限定的な状況でしか適用されず、手動で慎重にベクタライズされたコードにはかなわない。

他にもプロファイル計測用バイナリを出力し、実際に運用することによりコードの実行状況のデータを収集し、それを元に最適化するプロファイリング機能やOpenMPによるマルチスレッド化にも対応している。バージョン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版では非商用目的に限り無償で使用できるバージョンが公開されている[2]

その性能の高さから特に画像処理、映像、音声・音響関係で使用される場合が多い。

なお、開発環境としてのWindows VistaおよびWindows Server 2003のサポートはバージョン14.0で終了した。

付属のインテル製ライブラリ[編集]

Intel C++ Compiler 11.1 プロフェッショナル エディションには、下記のインテル純正の高性能ライブラリが付属する。

Intel C++ Compiler バージョン10までは、上記ライブラリが付属しないスタンダード エディションが存在したが、バージョン11からはインテルの方針により、プロフェッショナル エディションのみの提供となっている。また、バージョン12以降の販売製品の名称はIntel C++ Compilerではなく、これらのライブラリを含めたSuiteとしてIntel C++ Composer XEという名称が使われるようになっている。

なお、これらの各ライブラリは単体製品での販売も行なわれている。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++のランタイムとは違って一般のエンドユーザーには公開されておらず、開発者自らがアプリケーションに添付するなどして再配布することになる[3]。しかし、これに留意せずランタイムの再配布や添付を行なわない開発者が多いため、エンドユーザーがプログラムを実行できない症例が多く報告されている[4][5][6]。この点に関してはライブラリを静的リンクすることによりコードサイズは増大するがランタイムを必要としないコードを生成することが可能であるが、IPPなどにおいてSIMD拡張命令を使用した高速なバージョンの関数を使用するためには、プロセッサの対応状況を調べるための初期化関数(ippInit()関数)を別途呼び出す必要がある。また、スタティックライブラリ版のIntel OpenMPはIPP 7.0までの提供となっているため、以降のバージョンではOpenMPランタイムの動的リンクが必須となる[7]

脚注[編集]

[ヘルプ]
  1. ^ インテル® C++ コンパイラーでサポートされる C++11 の機能”. 2014年2月閲覧。
  2. ^ Non-Commercial Software Development”. 2014年2月閲覧。
  3. ^ libiomp5md.dll と OpenMP
  4. ^ Hydrogenaudio Forums > Flac compression through EAC not working
  5. ^ Hydrogenaudio Forums > Cool Edit Pro 2.0 + Vorbis
  6. ^ WinAmp gives error whe loading AAC plugin - Hydrogenaudio Forums
  7. ^ インテル® IPP における OpenMP* サポートの変更”. 2014年2月閲覧。

関連項目[編集]

外部リンク[編集]