インテル® Parallel Studio XE を使用した Windows* 上での Fortran プログラムのパフォーマンス解析

同カテゴリーの次の記事

インテル® Parallel Studio XE、インテル® C++ Studio XE 新価格でお求めやすくなりました!

この記事は、インテル® ソフトウェア・ネットワークに掲載されている「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 サブディレクトリーにあります。

KB110207-01.PNG

システムのロケールとインストールしたパッケージによっては、”en_US” ディレクトリーの名前が異なることがありますが、コンテンツは同じです。ここでは、optimize.zip を使用します。

まず、このファイルをビルド可能な場所 (ホーム・ディレクトリー以下のフォルダーなど) に展開します。このとき、optimize.zip と同じ場所には展開しないようにしてください。サンプルプログラムはシステムフォルダーにあるため、ビルドには管理者権限が必要になります。

KB110207-02.PNG

展開したファイルの中に Microsoft* Visual Studio* ソリューション・ファイルがあります。このファイルを選択すると、プロジェクトのインポート処理を行って Release x64 構成に変更するだけで、サンプルをビルドし [デバッグなしで開始] で実行できます。

KB110207-03.PNG

インテル® VTune™ Amplifier XE を使ってデータを収集する前に、いくつかのコンパイルオプションを変更しましょう。ここでは、コンパイル時とリンク時の両方でデバッグシンボルの生成を有効にします。ただし、ビルド構成は最適化が有効な Release 構成のままにします。

KB110207-04.PNG

KB110207-05.PNG

上記の 2 つのコンパイルオプションを変更した後に Release 構成でリビルドし、インテル® VTune™ Amplifier XE の [New Analysis (新しい解析)] ボタンをクリックすると、解析タイプの選択ペインが表示されます。

KB110207-06.PNG
KB110207-07.PNG

各種解析タイプが表示されますが、解析タイプによっては、管理者権限を必要とする Microsoft* の ETW (Windows* イベント トレーシング) を使用します。ライト hotspot 解析は ETW を使用しないので、管理者権限は必要ありません。その他の解析タイプを実行するには、Visual Studio* を管理者権限で実行する必要があります (権限を有している場合、Windows 7* では、スタートメニューで Visual Studio* を右クリックして [管理者として実行] を選択するだけです)。

パネルの [Start (開始)] ボタンをクリックすると、テスト・アプリケーションが起動され、実行されます。データを収集し処理する間、いくつかの画面が表示され、最終的に以下のような画面が表示されます。

KB110207-08.PNG

ここでは、CPU の命令ポインター (IP) の位置をサンプリングし、そのデータを基に最も時間を費やしている関数が表示されます。このサンプルは一定の間隔で収集されるため、インテル® VTune™ Amplifier XE はそれぞれの関数で費やされた時間を推定し、その値を関数名の次の列に表示します。関数名をダブルクリックすると、ソースコードにドリルダウンできます。

例えば、1 行目の sin 関数をダブルクリックすると、このライブラリーにはソースコードがないため、アセンブリー・コードが表示されます。2 行目の関数をダブルクリックすると、下位レイヤー (ここで実行されるカーネルコア) が表示されます。INTEG_FUNC はテストコードによって積分される関数であり、このテストでは区間 [0, 2π] の正弦の絶対値になるため、これらの情報はあまり役に立たないでしょう。

KB110207-09.PNG

コードをスレッド化したほうが良いというのがこのプログラムに対するアドバイスです。次のタイムラインからも分かるように、このプログラムでアクティブなスレッドは 1 つだけです。

KB110207-10.PNG

このように適切なツールを利用することで、最適化すべきコード領域を容易に見つけることができます。インテル® VTune™ Amplifier XE では、プロセッサー・リソースの利用状況など詳細な情報を取得することができるため、より細かな最適化が可能になります。

関連記事

  • インテル® VTune™ Amplifier XE 2013 Update 4 でサポートされる特定の OpenMP* 並列時間範囲のパフォーマンス・データインテル® VTune™ Amplifier XE 2013 Update 4 でサポートされる特定の OpenMP* 並列時間範囲のパフォーマンス・データ この記事は、インテル® デベロッパー・ゾーンに掲載されている「Performance data for OpenMP* specific time region is supported in VTune™ Amplifier XE 2013 Update 4」の日本語参考訳です。 インテル® VTune™ Amplifier […]
  • Windows* 環境での分散 Co-Array アプリケーションのビルドと実行Windows* 環境での分散 Co-Array アプリケーションのビルドと実行 この記事は、インテル® ソフトウェア・ネットワークに掲載されている「Building and Running a Distributed Coarray Application on Windows」の日本語参考訳です。 この記事は、Windows* クラスター環境で分散 Co-Array […]
  • インテル® Parallel Debugger Extensionインテル® Parallel Debugger Extension この記事は、インテル® ソフトウェア・ネットワークに掲載されている「Intel® Parallel Debugger Extension」の日本語参考訳です。 はじめに この記事では、インテル® Parallel Studio 2011、インテル® Parallel Studio XE 2011、インテル® […]
  • マルチスレッド開発ガイド: 1.3 粒度と並列パフォーマンスマルチスレッド開発ガイド: 1.3 粒度と並列パフォーマンス 優れた並列パフォーマンスを達成するには、アプリケーションが適切な粒度を持つことが重要です。粒度とは、並列タスクにおける実際の処理量を指します。粒度が細かすぎると通信オーバーヘッドによってパフォーマンスが損なわれ、粒度が粗すぎるとロード・インバランスによってパフォーマンスが損なわれます。ロード・インバランスと通信オーバーヘッドを回 […]
  • マルチスレッド開発ガイド: 3.1 スレッド間のヒープ競合の回避マルチスレッド開発ガイド: 3.1 スレッド間のヒープ競合の回避 システムヒープからのメモリーの割り当ては、単純な処理ではありません。これは、システム・ランタイム・ライブラリーが、ヒープへのアクセス同期にロックを使用するためです。 このロックの競合は、マルチスレッド化によってもたらされるパフォーマンスの妨げとなることがあります。この問題は、共有ロックを使用しない割り当て手法やサードパーティー […]