Intel Parallel Studio
Intel Parallel Studio XE
Intel Parallel Studio XE(インテル パラレル スタジオ エックスイー)とは、インテル社が開発・販売している、ソフトウェアの並列計算に特化したツール群である。日本での販売・サポートはXLsoftが行なっている。
インテルが自社製マルチコアプロセッサの並列性能を最大限発揮させ、C/C++による並列処理の実装における特有の問題点を素早く解決するために開発したコンパイラ/デバッガ/プロファイラ各製品を含む統合ツールキットである。
Parallel Studio 2011以降では、コンパイラとしてIntel C++ Composer XE(旧Intel C++ Compiler)およびIntel Fortran Composer XE(旧Intel Fortran Compiler)をバンドルした上位製品であるParallel Studio 2011 XEも同時にリリースされており、C++ Composer XEの最適化機能のすべてやIntel Math Kernel Libraryを利用できるようになるだけでなく、Fortran言語を使って開発することも可能になっている。なお、バージョンXE 2013以降は下位製品がなくなり、C++コンパイラとツールセットの名称はIntel C++ Studio XE、Fortranコンパイラとツールセットの名称はIntel Fortran Studio XE、C++/Fortranコンパイラとツールセットの名称はIntel Parallel Studio XE、さらに追加のツールを含む最上位版の名称はIntel Cluster Studio XE、という形態になった(上位の単体製品はXE 2013以降も提供されている)。
同社が従来から開発・販売してきたIntel C++ CompilerおよびIntel Fortran Compilerは主にHigh Performance Computing (HPC) 向けのコンパイラ単体製品という位置付けになっているのに対し、Parallel Studioは実装、デバッグ、分析およびチューニングまでの一連の開発フロー(開発サイクル)、特にソフトウェアの効率的な並列化をサポートする統合製品という位置付けになっている。
ただし、Intel C++/Fortran CompilerにはLinuxおよびmacOS向けの製品も存在するが、Parallel StudioはMicrosoft Visual Studioを必要とするため、Windowsプラットフォーム向けのみの提供となっている。XE 2013以降はLinux版も提供されるようになった。また、Intel C++/Fortran CompilerはIA-32 (x86)、Intel 64 (x64)、およびIA-64向けのバイナリをそれぞれ生成することができるが、Parallel StudioはIA-32およびIntel 64のみをサポートし、IA-64向けにコンパイルすることやIA-64アプリケーションを分析することはできない(ただしIA-64をネイティブ サポートするIntel C++/Fortran Compilerはバージョン11.1までであり、Composer XE 2011以降はもはやIA-64をサポートしない)。なお、Parallel Studio、Parallel Studio SP1、およびParallel Studio 2011の時点では英語版のみの提供となっているため、コンパイラをParallel Composerに切り替えた場合はコンパイラの出力するメッセージやコンパイルオプション設定画面のテキストが英語表示になる。
Parallel Studioは下記製品群からなる。
Intel Parallel Composer - ソフトウェアのマルチスレッド化をサポートするコンパイラ、デバッガおよびライブラリ
Intel Parallel Inspector - メモリーおよびスレッドに関するエラーを検出するツール
Intel Parallel Amplifier - マルチスレッド対応のプロファイラ
Intel Parallel Adviser - ソフトウェアの並列化に関するアドバイスを分析・表示するツール
具体的には、上記の各コンポーネントがMicrosoft Visual Studioのアドインとして、開発環境自体に組み込まれる形で利用される。対応するVisual Studioのバージョンは、Parallel StudioおよびSP1の場合Visual Studio 2005およびVisual Studio 2008のStandardエディション以上であり、Parallel Studio 2011の場合Visual Studio 2005およびVisual Studio 2008のStandardエディション以上、およびVisual Studio 2010のProfessionalエディション以上となっている。
Parallel Studioおよび各単体コンポーネントにはIntel C++/Fortran Compilerと同様、それぞれ30日間無料の評価版があり、使用期限以外の機能制限は存在しない。正規のライセンスを購入すればそのまま製品版として使用できる。ライセンスには1年間のマイナーバージョンアップデート入手の権利がある。なお、Linux版では非商用目的に限り無償で使用できるバージョンが公開されている。
Intel Parallel Composerは実質的にIntel C++ Compilerの機能制限版であり、Parallel StudioおよびParallel Studio SP1の時点ではIntel C++ Compilerのバージョン11.1に相当する。Intel C++ Compiler 11に付属する、Intel Integrated Performance Primitives (IPP) ライブラリのバージョン6.1およびIntel Threading Building Blocks (TBB) ライブラリのバージョン2.2が付属するが、Intel Math Kernel Library (MKL) は付属しない。また、プロファイルに基づく最適化 (PGO) など、Intel C++ Compilerがサポートしている一部の最適化オプションが使用できなくなっているが、MMX/SSE/SSE2/SSE3/SSSE3/SSE4拡張命令を使用した自動ベクトル化や、OpenMPによる自動並列化などのIntel Compiler特有の強力な最適化オプションは使用可能である。Intel C++ Compilerと同様に、Parallel ComposerおよびVisual C++ネイティブ コンパイラはVisual Studio IDE上から自由に切り替えることが可能となっている。
また、Parallel Studio 2011には、Intel C++ Compiler 12の機能制限版、IPP 7.0、およびTBB 3.0がバンドルされる。
Parallel Composerを利用して開発したアプリケーションをエンドユーザー環境で実行するには、Intel C++ Compiler 11/12同様、Intel C++の再頒布可能ランタイムが必要となる。また、必要に応じてIPPおよびTBBのランタイムが必要となる(明示的にIPP関数を使用しなくても、一部の最適化オプションを有効にすると、暗黙的にIPPがリンクされることがある)。IPPとTBBに関しては、スタティックリンク方式を選択することで、DLLの不要な実行プログラムを作成することもできるが、プロセッサの拡張命令のサポートの有無を調べるために別途初期化関数を明示的に呼び出す必要があるなどの注意点がある。
Intel Parallel Amplifierは、従来から提供されてきたIntel VTune Performance Analyzerによるプロファイリング機能を、より習得しやすくしたものである。Parallel Amplifierは主に下記3つの視点からアプリケーションのパフォーマンスを分析することができる。
Hotspots(ホットスポット)の分析(CPU時間を最も消費している箇所を特定)
Concurrency(並列性)の分析(マルチコアが有効利用されているかどうかを分析)
Locks and Waits(ロックと待機)の分析(長時間のスレッド待機によりパフォーマンスが低下していないかどうかを分析)
具体的には、デバッグ情報(プログラム デバッグ データベース)を有効にしてリリースモードでビルドしたアプリケーションを実行し、分析結果を表示するという流れになる。なお、Cランタイムライブラリ(CRT)はスタティックリンクせず、ダイナミックリンクする必要がある(プログラム デバッグ データベースファイル(PDBファイル)の場所さえ指定すれば、Visual C++アプリケーション プロジェクトの管理下にないDLLにエクスポートされている関数などの呼び出しに関しても分析することが可能となっている)。分析結果は、コールスタックのツリー表示(Top-downおよびBottom-upを切替可能)およびCPU時間の積算値バーなどでグラフィカルに表示される。分析結果からソースコードを逆参照することもできる。
なお、VTune Analyzerに同梱されるIntel Thread Profilerによるスレッドの時系列表示(タイムライン ビュー)や、コールグラフの表示など、より高度な機能に関してはサポートされていない。