マルチコア時代に求められる
|
昨今では、コンピュータに搭載されるCPUのマルチコア化が加速している。それに伴い、アプリケーション開発の局面においても、マルチコアを明確に意識した対応、すなわちアプリケーションの「並列化」が不可欠な状況となっている。そうしたニーズに応えるのが「インテル Parallel Studio」だ。並列化アプリケーションの開発に特化した4つのツールが提供する多彩な機能により、いまの開発現場に求められるパラダイムシフトを強力に支援する。
アプリケーション開発に求められる |
近年、コンピュータに搭載されるCPUには、単一のプロセッサーパッケージ内に複数のコアを追加していくというアプローチが一般化している。こうした「マルチコア」化こそ、高いクロック周波数を追究するという従来の手法につきまとう消費電力や発熱などの問題を解消しながら、CPUのパフォーマンスを向上させるための技術として認識され、その採用が急速に進んでいるというわけだ。すでに市場でも、「インテル Core 2 Duo」をはじめとする1CPUに2個のコアを収めた、いわゆる「デュアルコア」のPCはもちろん、4個のコアを搭載する「クアッドコア」製品も市場を賑わせている状況だ。
そうしたCPUの進化にかかわる動向は、アプリケーション開発の世界とも決して無縁ではない。端的にいうなら、これまでのシングルコア環境を前提とした開発では、マルチコアがもたらす、せっかくのメリットを十分に活用できないということが指摘される。具体的には、マルチコア環境においては、同時に複数のプロセスを複数コア上で実行することによって、より高いパフォーマンスを実現する。従って、そうした環境を意識していない従来のアプリケーションでは、相変わらず単一のコアのみを利用することになり、すべてのコアを生かし切れないという問題がある。これでは、稼働しているマシンにいくつのコアが搭載されていようと、アプリケーション自体のパフォーマンスの向上は望めないというわけだ。
そこで、マルチコア時代のアプリケーション開発に求められてくるのが「並列化」の視点だ。アプリケーションの並列化により、複数の処理を複数コアに割り当てて同時実行することで、はじめてマルチコア環境のもたらすメリットを最大限に引き出すことができる(図1)。
図1 クロックの高速化ではなくコア数の増加によるパフォーマンスが向上するというパラダイムシフト |
「インテル Parallel Studio」は、まさにそうしたアプリケーション開発におけるパラダイムシフトの要請に応える製品で、並列化アプリケーションの実現をトータルな局面から支援している。これに関して従来のインテルでは、HPC(High Performance Computing)市場をターゲットに「インテル C++ コンパイラー」「VTune パフォーマンス・アナライザー」をはじめとするいくつかの製品を提供し、並列化を含む、よりハイエンドのニーズに応えてきたという経緯がある。インテル ソフトウェア&サービス統括部 ソフトウェア開発製品部 ビジネス・デベロップメント・マネージャー 田中 智子 氏によれば、「Parallel Studioでは、それらHPC製品を基に、アプリケーションの並列化に特化した開発支援環境を提供している」とのことだ。
Visual Studio上でコンパイラを切り替え |
Parallel Studioは、「インテル Parallel Composer」「インテル Parallel Inspector」「インテル Parallel Amplifier」という3つのツールで構成されており(図2)、これらをまとめてスイート製品として購入できるほか、それぞれのツールを個別の製品としても購入可能だ。
図2 インテル Parallel Studioの製品構成 |
そのターゲット環境はWindowsであり、各ツールはマイクロソフトの「Visual Studio」のプラグインとして提供され、Visual StudioのIDEに統合して利用できる(図2)。言語としては、Visual C/C++に対応する。以下、各ツールに関する概要を順に紹介したい。
まずParallel Composerだが、この製品では並列化に対応したコンパイラやライブラリなどが提供される。コンパイラは、強力な最適化機能によりインテル製CPUのパワーを最大限に引き出すコンパイラとして、すでに多くの開発現場で高い評価を獲得しているインテル C++ コンパイラーをベースとしたもので、自動並列化オプションや自動ベクトル化オプションを用意。「これらのオプションを利用すれば、既存プログラムのコードはそのままに、可能な部分を自動的に並列化するといったことも手軽に行える」(田中氏)。
図3 Visual Studioに組み込まれたインテル Parallel Composer(画像をクリックすると、拡大します) |
そのほかコンパイラに関しては、移植性を備えたマルチスレッドアプリケーションを実現するための規格として知られる「OpenMP 3.0」をサポートしていることも注目だ。
一方、C/C++のライブラリに関しては、画像や音声などのマルチメディア処理を中心としたニーズに最適なハイパフォーマンスライブラリ「インテル IPP(Integrated Performance Primitives)」を搭載。「IPPの関数は内部的にスレッド化され、実装されているので、開発者が特に意識することなく並列化を実現できる」(田中氏)。
さらにParallel Composerには、スレッドをタスクに抽象化し、マルチコア環境において安定性や移植性、拡張性に優れたスレッドフリーな並列化アプリケーションを実装するためのテンプレートライブラリ「インテル TBB(Threading Building Block)」も用意されている。
並列化の視点に立って洗練された |
続いてParallel Inspectorだが、これはスレッド化されたアプリケーションに特有の文法エラーやメモリエラーを検出するためのツールだ。例えば、初期化されていないロードの検知や不正なメモリ参照、メモリリークといったシングルスレッドアプリケーションとも共通のメモリ関連エラーのほか、マルチスレッドアプリケーション開発においてとりわけ困難な問題となるデッドロックやデータ競合などのエラーを容易に検出できる。
3つ目のParallel Amplifierは、並列化されたアプリケーションに最適なパフォーマンスチューニングツール。その活用により開発者は、アプリケーションにおける複数のコアの利用状況をグラフィカルに知ることができる。また、ホットスポットやロック/待機などの各種分析を通じて、パフォーマンス低下の原因となるボトルネックの所在をソースコードレベルで明らかにもできる。さらに、並列性分析によってスケーラブルなパフォーマンスを得るためのガイダンスを開発者に示す機能も提供している。
そして、さらに4つ目のツールとして「インテル Parallel Advisor」がある。
これは、これまでの3つのツールに比べ、開発の工程的にはより上流に位置するものだ。具体的な機能としては、既存のシングルコア用アプリケーションを分析して、並列化の恩恵を受けられる個所を示し、改善の方針を開発者にアドバイスしてくれる。すでに触れたインテルのHPC向け開発製品においても、同種の機能を提供しているものはなく、そうした意味でこのツールは、並列化に特化したParallel Studioならではの新機軸を示すものだといえるだろう。
ちなみに、このParallel Advisorについては、ここまで紹介したほかの3つのツールと同時にリリースされておらず、正式なリリースが2010年に予定されている点に留意してほしい。田中氏によれば、「ただし現段階においても、Parallel Studioをスイート製品として使用しているユーザーに限って、そのプレビュー版の「インテル Parallel Advisor Lite」が提供される」とのこと。そのため、Parallel Advisorの機能をすぐにも試してみたい方は、スイートでの導入がお勧めだ。
今後、CPUが搭載するコア数は増加していくことが予想される。さらに、数十・数百のコアを搭載する「メニーコア」の普及が始まるのも、そう遠い将来のことではないだろう。そうした中、アプリケーションの信頼性や実行結果の正当性を保証しながら、さらに多くのコアが搭載された環境で拡張性をいかに維持していくかが、これからの開発現場での切実な課題となる。そのような課題を解決する開発支援ツールがParallel Studioなのだ。
ダウンロード
提供:インテル・コーポレーション
アイティメディア 営業企画
制作:@IT 編集部
掲載内容有効期限:2009年07月15日
ダウンロード
関連リンク
関連記事
インテル C++/Fortranコンパイラ9.0、マルチコア対応強化 (@IT News)
ItaniumRプロセッサーの性能を最大限に引き出すアプリケーションの最適化とは (@IT Special PR)