この記事は、インテル® ソフトウェア・ネットワークに掲載されている「Analyzing Fortran Program Performance on Windows* using Intel(R) Parallel Studio XE」(http://software.intel.com/en-us/articles/analyzing-fortran-program-performance-on-windows-using-intelr-parallel-studio-xe/) の日本語参考訳です。
インテル® Visual Fortran Composer XE 2011 には、インテル® Parallel Studio XE の解析ツールの機能を試すことができるサンプルプログラムが含まれています。
デフォルトでは、インテル® Parallel Composer はシステムドライブ (C:\Program Files\Intel) にインストールされます。サンプルプログラムは、インストール・ディレクトリー配下の ComposerXE-2011\Samples\en_US\Fortran サブディレクトリーにあります。
システムのロケールとインストールしたパッケージによっては、”en_US” ディレクトリーの名前が異なることがありますが、コンテンツは同じです。ここでは、optimize.zip を使用します。
まず、このファイルをビルド可能な場所 (ホーム・ディレクトリー以下のフォルダーなど) に展開します。このとき、optimize.zip と同じ場所には展開しないようにしてください。サンプルプログラムはシステムフォルダーにあるため、ビルドには管理者権限が必要になります。
展開したファイルの中に Microsoft* Visual Studio* ソリューション・ファイルがあります。このファイルを選択すると、プロジェクトのインポート処理を行って Release x64 構成に変更するだけで、サンプルをビルドし [デバッグなしで開始] で実行できます。
インテル® VTune™ Amplifier XE を使ってデータを収集する前に、いくつかのコンパイルオプションを変更しましょう。ここでは、コンパイル時とリンク時の両方でデバッグシンボルの生成を有効にします。ただし、ビルド構成は最適化が有効な Release 構成のままにします。
上記の 2 つのコンパイルオプションを変更した後に Release 構成でリビルドし、インテル® VTune™ Amplifier XE の [New Analysis (新しい解析)] ボタンをクリックすると、解析タイプの選択ペインが表示されます。
各種解析タイプが表示されますが、解析タイプによっては、管理者権限を必要とする Microsoft* の ETW (Windows* イベント トレーシング) を使用します。ライト hotspot 解析は ETW を使用しないので、管理者権限は必要ありません。その他の解析タイプを実行するには、Visual Studio* を管理者権限で実行する必要があります (権限を有している場合、Windows 7* では、スタートメニューで Visual Studio* を右クリックして [管理者として実行] を選択するだけです)。
パネルの [Start (開始)] ボタンをクリックすると、テスト・アプリケーションが起動され、実行されます。データを収集し処理する間、いくつかの画面が表示され、最終的に以下のような画面が表示されます。
ここでは、CPU の命令ポインター (IP) の位置をサンプリングし、そのデータを基に最も時間を費やしている関数が表示されます。このサンプルは一定の間隔で収集されるため、インテル® VTune™ Amplifier XE はそれぞれの関数で費やされた時間を推定し、その値を関数名の次の列に表示します。関数名をダブルクリックすると、ソースコードにドリルダウンできます。
例えば、1 行目の sin 関数をダブルクリックすると、このライブラリーにはソースコードがないため、アセンブリー・コードが表示されます。2 行目の関数をダブルクリックすると、下位レイヤー (ここで実行されるカーネルコア) が表示されます。INTEG_FUNC はテストコードによって積分される関数であり、このテストでは区間 [0, 2π] の正弦の絶対値になるため、これらの情報はあまり役に立たないでしょう。
コードをスレッド化したほうが良いというのがこのプログラムに対するアドバイスです。次のタイムラインからも分かるように、このプログラムでアクティブなスレッドは 1 つだけです。
このように適切なツールを利用することで、最適化すべきコード領域を容易に見つけることができます。インテル® VTune™ Amplifier XE では、プロセッサー・リソースの利用状況など詳細な情報を取得することができるため、より細かな最適化が可能になります。