高度な最適化機能や並列プログラミングサポートを提供する新開発ツール「インテル Parallel Studio XE 2011」 4ページ

メモリリークやマルチスレッドアプリケーション特有の問題を検出する「インテル Inspector XE 2011」

 マルチスレッドによる並列化では、メモリ内のデータに複数のスレッドから同時にアクセスするのが一般的だ。このようなプログラムの場合、メモリアクセスを適切に制御しないとデータの不整合(競合)が発生する可能性がある。また、メモリアクセスやI/Oなどのタイミングを調整するにはロックなどの排他処理機構を用いるのが一般的だが、ロックのタイミングや設計が不適切な場合、プログラムが停止してしまうこともある(デッドロックと呼ばれる)。

 このような問題は必ず発生するというものではなく、プログラムの実行タイミングによっては発生しない場合もあるため、問題の検出やデバッグが難しい。このような問題を検出するためのツールが、インテル Inspector XE 2011(以下、Inspector XE)である(図13)。

図13 インテル Inspector XE 2011によるメモリエラー検出結果
図13 インテル Inspector XE 2011によるメモリエラー検出結果

 Inspector XEは、対象となるアプリケーションの動作を監視し、メモリアクセスやスレッドの実行順などを記録して問題を検出するツールだ。以前は「インテル スレッド・チェッカー」という名称で提供されていたが、このたび名前が変更され、Parallel Studio XEに含まれる一製品となった。Inspector XEでは基本的なスレッド/メモリエラー検出機能はそのままに、ユーザーインターフェイスの刷新やVisual Studioとの統合など、より使いやすくなるよう改良が加えられている。

すぐに利用できるプリセット、目的に応じた調査対象のカスタマイズも可能

 Inspector XEでは、メモリエラー検出用のプリセット3種類(「Detect Leaks」および「Detect Memory Problems」、「Locate Memory Problems」)と、スレッドエラー検出用のプリセット3種類(「Detect Deadlocks」および「Detect Deadlocks and Data Races」、「Detect Deadlocks and Data Races」)、合計6種類の設定があらかじめ用意されている(図14)。

図14 Inspector XEのプリセット選択画面
図14 Inspector XEのプリセット選択画面

 たとえばメモリエラー検出用のプリセットでは、メモリリークやデータの意図しない書き換え、メモリ関連APIの不適切な利用などを検出できる。また、スレッドエラー検出用のプリセットではデータの競合やデッドロック、スレッド間の不適切なメモリアクセスなどを検出可能だ。

 検出された問題はその発生個所とともに一覧表示され、また個々の問題を選択することでソースコード中の該当個所を一目でチェックできるようになっている。たとえばメモリ関連の問題の場合、ソースコード中の複数個所が問題の原因となっていることが多いが、問題個所を同時に表示することでより原因を確認しやすくなっている(図15、16)。

図15 メモリリークの検出結果
図15 メモリリークの検出結果
図16 問題となる個所が複数にわたる場合、それぞれの個所を同時にチェックできる
図16 問題となる個所が複数にわたる場合、それぞれの個所を同時にチェックできる

 また、プリセットの設定では十分な情報を取得できない、また特定の問題だけを検出したい、といった場合に向け、用途に応じて調査対象を細かくカスタマイズすることも可能だ。これらの適切な設定にはメモリ管理やスレッド管理、プログラムのスタック管理方法などについて非常に高度な知識が必要ではあるが、使いこなせればプログラムのデバッグのための強力なツールとなるだろう(図17、18)。

図17 メモリエラー検出用の詳細設定画面
図17 メモリエラー検出用の詳細設定画面
図18 スレッドエラー検出用の詳細設定画面
図18 スレッドエラー検出用の詳細設定画面

Windows版はVisual Studioとの統合が可能、コマンドラインでの操作も可能

 VTune Amplifier XEと同様、Inspector XEについてもWindows版はVisual Studioとの統合機能が用意され、Visual StudioからInspector XEを呼び出し、開いているプロジェクトを簡単に分析できるようになった(図19)。

図19 各種設定画面や実行結果をVisual Studio内で表示できる
図19 各種設定画面や実行結果をVisual Studio内で表示できる

 また、従来のインテル スレッド・チェッカーと同様、単体でInspector XEを実行することも可能なほか、Windows版/Linux版ともにコマンドラインでエラー検出を実行できるツールも付属している(図20)。

図20 Linux版のInspector XE
図20 Linux版のInspector XE

使いやすさはそのままにParallel Studioよりも高度な機能を提供、Windows/Linuxのクロスプラットフォーム開発にも有用

 Parallel Studio XEに含まれる製品は基本的にParallel Studioに含まれる製品の上位版という位置付けになっている。今まではParallel Studioとインテル コンパイラー、インテル VTune パフォーマンス・アナライザー、インテル スレッド・チェッカーという別ブランドで販売されていたため分かりにくかったが、今回の製品名変更でそれぞれの位置付けが明確になった形だ。ただし、Parallel Studio XEにはParallel Studioに含まれている並列化に適している個所や並列化による問題点を検出するツール「Parallel Advisor」に対応する製品は含まれていない。

 Parallel Advisorで提供されている機能はインテル VTune Amplifier XE 2011やインテル Inspector XE 2011でも実現できるものの、インテル VTune Amplifier XE 2011やインテル Inspector XE 2011は設定項目が多い分、設定や作業に手間がかかってしまうことがある。Windows環境で基本的な並列化機能のみを利用したい、またParallel Advisorを利用したい、という場合はParallel Studioを、Windows環境でより高度な機能を利用したい、Linux環境で利用したい、という場合はParallel Studio XEと、環境と目的に応じて製品を選択すると良いだろう。

 なお、Parallel Studio XEには30日間すべての機能を無償で利用できる評価版が用意されている。評価版は国内代理店であるエクセルソフトのWebサイトからダウンロード可能だ。各種チュートリアルやサンプルコードなども同梱されているので、興味のある方はぜひダウンロードして試してほしい。