インテル® Advisor 導入ガイド

この記事は、インテル® デベロッパー・ゾーンに公開されている「Get Started with Intel® Advisor」の日本語参考訳です。


インテル® Advisor は次の開発スイートに含まれます。

インテル® Advisor は、Fortran、C および C++ アプリケーションがインテル® Xeon® プロセッサーおよびインテル® Xeon Phi™ プロセッサーなど現代のプロセッサーの潜在的なパフォーマンスを最大限に引き出すことを支援する 2 つのツールを提供します。

  • ベクトル化アドバイザーは、ベクトル化により恩恵を得られるループを特定し、効率良いベクトル化を妨げる原因を特定して、代替のデータ再構成を探し出し、そしてベクトル化の安全性を高めるツールです。また、コード固有の問題を解決する方法を示す推奨事項を提供します。
  • スレッド化アドバイザーは、通常の開発作業を中断することなくスレッドの解析、チューニング、設計のチェックを可能にするスレッドの設計とプロトタイプ化ツールです。

このドキュメントでは、インテル® Advisor を使用する典型的なワークフローをまとめています。

  • GUI: ベクトル化が最も有効またはさらに効率良い場所を特定します。

    ベクトル化アドバイザー・ツール。低い実行のオーバーヘッド。統合されたコンパイラーのレポートとパフォーマンス・データを 1 カ所で分かりやすく表示し、コードの改善に関する決定を下すため、さらに深く調査する必要があるか判断するのに役立ちます。

  • GUI: ルーフラインを使用してパフォーマンスのボトルネックを特定します。

    ベクトル化アドバイザー・ツール。高い実行のオーバーヘッド。ハードウェアが持つパフォーマンスの上限に対して、制限の主な要因 (メモリー帯域幅や計算能力) を検証し実際のパフォーマンスを視覚的に調査することを支援します。これにより、最適化ステップの理想的なロードマップが示されます。

  • GUI: スレッド化のプロトタイプを作成します。

    スレッド化アドバイザー・ツール。中から高い実行のオーバーヘッド。モデル化とそれに対応する並列データ共有問題の予測を示します。

  • CLI/MPI/GUI: macOS* マシン上でインテル® Advisor の結果を表示できます。

    ベクトル化アドバイザーとスレッド化アドバイザー・ツール。クラスターなど視覚化とデータ操作の機能が制限されたリモートマシン上でデータを収集し、その結果を macOS* マシンのインテル® Advisor GUI 上で表示できます。

  • CLI/MPI: インテル® Advisor のワークフローを自動化します。

    ベクトル化アドバイザーとスレッド化アドバイザー・ツール。

インテル® Advisor: 開始するための典型的なワークフロー

解析を始める前に

インテル® Advisor を使用する前に次のことを確認します。

  • 最も正確で完全な解析結果を得られる設定を使用して、リリースモードでアプリケーションの最適化バイナリーをビルドします。
  • インテル® Advisor で解析を始める前に、生成されたバイナリーが正しく動作することを確認してください。
操作 対象ツール 最適な C/C++ 設定
完全なデバッグ情報 (コンパイラーとリンカー) を生成する ベクトル化アドバイザー

スレッド化アドバイザー

Linux* コマンドライン: -g

Windows* コマンドライン:

  • /ZI
  • /DEBUG

Microsoft* Visual Studio* IDE:

  • [C/C++] > [全般] > [デバッグ情報の形式] > [プログラム データベース (/Zi)]
  • [リンカー] > [デバッグ] > [デバッグ情報の生成] > [はい (/DEBUG)]
適度な最適化を適用する ベクトル化アドバイザー

スレッド化アドバイザー

Linux* コマンドライン: -O2 以上

Windows* コマンドライン:

  • /O2 以上
  • /Ob1 (スレッド化アドバイザーのみ)

Visual Studio* IDE:

  • [C/C++] > [最適化] > [最適化] > [実行速度の最大化 (/O2)] 以上
  • [C/C++] > [最適化] > [インライン関数の展開] > [_inline のみ (/Ob1)] (スレッド化アドバイザーのみ)
コンパイラーの診断レポートを生成する (インテル® コンパイラーのバージョン 15.0 で必要です。16.0 以降では必要ありません。) ベクトル化アドバイザーのみ Linux* コマンドライン: -qopt-report=5

Windows* コマンドライン: /Qopt-report:5

Visual Studio* IDE: [C/C++] > [診断 [インテル(R) C++]] > [最適化診断レベル] > [レベル 5 (/Qopt-report:5)]

ベクトル化を有効にする ベクトル化アドバイザーのみ Linux* コマンドライン: -vec

Windows* コマンドライン: /Qvec

SIMD ディレクティブを有効にする ベクトル化アドバイザーのみ Linux* コマンドライン: -simd

Windows* コマンドライン: /Qsimd

OpenMP* ディレクティブに基づいてマルチスレッド・コードを生成できるようにします。 ベクトル化アドバイザーのみ Linux* コマンドライン: -qopenmp

Windows* コマンドライン: /Qopenmp

Visual Studio* IDE: [C/C++] > [言語 [インテル(R) C++]] > [OpenMP* サポート] > [並列コードの生成 (/Qopenmp)]

インテル® Advisor のアノテーション定義に関連する追加ディレクトリーを検索します。 スレッド化アドバイザーが主ですが、ベクトル化アドバイザーのリファインメント解析にも役立ちます Linux* コマンドライン: – I${ADVISOR_[product_year]_DIR}/include

Windows* コマンドライン: /I”%ADVISOR_[product_year]_DIR%”\include

Visual Studio* IDE: [C/C++] > [全般] > [追加のインクルード・ディレクトリー] > [$(Advisor[product_year]_DIR)\include;%(AdditionalIncludeDirectories)]

マルチスレッド化されたダイナミック・リンク・ライブラリーで未定義の参照を検索する スレッド化アドバイザーのみ Linux* コマンドライン: -Bdynamic

Windows* コマンドライン: /MD または /MDd

Visual Studio* IDE: [C/C++] > [コード生成] > [ランタイム・ライブラリー] > [マルチスレッド DLL (/MD)] または [マルチスレッド・デバッグ DLL (/MDd)]

動的ロードを有効にする スレッド化アドバイザーのみ Linux* コマンドライン: -ldl
操作 対象ツール 最適な Fortran 設定
完全なデバッグ情報 (コンパイラーとリンカー) を生成する ベクトル化アドバイザー

スレッド化アドバイザー

Linux* コマンドライン: -g

Windows* コマンドライン:

  • /debug=full
  • /DEBUG

Visual Studio* IDE:

  • [Fortran] > [全般] > [デバッグ情報形式] > [Full (/debug=full)]
  • [リンカー] > [デバッグ] > [デバッグ情報の生成] > [はい (/DEBUG)]
適度な最適化を適用する ベクトル化アドバイザー

スレッド化アドバイザー

Linux* コマンドライン: -O2 以上

Windows* コマンドライン:

  • /O2 以上
  • /Ob1 (スレッド化アドバイザーのみ)

Visual Studio* IDE:

  • [Fortran] > [最適化] > [最適化] > [実行速度の最大化 (/O2)] 以上
  • [Fortran] > [最適化] > [インライン関数の展開] > [INLINE ディレクティブのみ (/Ob1)] (スレッド化アドバイザーのみ)
コンパイラーの診断レポートを生成する (インテル® コンパイラーのバージョン 15.0 で必要です。16.0 以降では必要ありません。) ベクトル化アドバイザーのみ Linux* コマンドライン: -qopt-report=5

Windows* コマンドライン: /Qopt-report:5

Visual Studio* IDE: [Fortran] > [診断 [Intel C++]] > [最適化診断レベル] > [レベル 5 (/Qopt-report:5)]

ベクトル化を有効にする ベクトル化アドバイザーのみ Linux* コマンドライン: -vec

Windows* コマンドライン: /Qvec

SIMD ディレクティブを有効にする ベクトル化アドバイザーのみ Linux* コマンドライン: -simd

Windows* コマンドライン: /Qsimd

OpenMP* ディレクティブに基づいてマルチスレッド・コードを生成できるようにする ベクトル化アドバイザーのみ Linux* コマンドライン: -qopenmp

Visual Studio* IDE: [Fortran] > [言語] > [OpenMP ディレクティブの処理] > [並列コードの生成 (/Qopenmp)]

インテル® Advisor のアノテーション定義に関連する追加ディレクトリーを検索する スレッド化アドバイザーが主ですが、ベクトル化アドバイザーのリファインメント解析にも役立ちます Linux* コマンドライン:
  • -I${ADVISOR_[product_year]_DIR}/include/ia32 または -I${ADVISOR_[product_year]_DIR}/include/ia64
  • -L${ADVISOR_[product_year]_DIR}/lib32 または -L${ADVISOR_[product_year]_DIR}/lib64
  • -ladvisor

Windows* コマンドライン:

  • /I”%ADVISOR_[product_year]_DIR%”\include\ia32 または /I”%ADVISOR_[product_year]_DIR%”\include\ia64
  • /L”%ADVISOR_[product_year]_DIR%”\lib32 または /L”%ADVISOR_[product_year]_DIR%”\lib64
  • /ladvisor または

Visual Studio* IDE:

  • [Fortran] > [全般] > [追加のインクルード・ディレクトリー] > “$(ADVISOR_[product_year]_DIR)\include\ia32\” または “$(ADVISOR_[product_year]_DIR)\include\ia64\”
  • [リンカー] > [全般] > [追加のライブラリー・ディレクトリー] > “$(ADVISOR_[product_year]_DIR)\lib32” または “$(ADVISOR_[product_year]_DIR)\lib64”
  • [リンカー] > [入力] > [追加の依存ファイル] > [.lib] > [libadvisor]
マルチスレッド化されたダイナミック・リンク・ライブラリーで未定義の参照を検索する スレッド化アドバイザーのみ Linux* コマンドライン: -shared-intel

Windows* コマンドライン: /MD または /MDd

Visual Studio* IDE: [Fortran] > [ライブラリー] > [ランタイム・ライブラリー] > [マルチスレッド DLL (/libs:dll /threads)] または [デバッグ用マルチスレッド DLL (/libs:dll /threads /dbglibs)]

動的ロードを有効にする スレッド化アドバイザーのみ Linux* コマンドライン: -ldl

ベクトル化が最も有効な場所を特定

このセクションでは、インテル® Advisor のサーベイ解析の使用方法を説明します。この単一解析のベクトル化アドバイザー・ワークフローを使用する利点は、実行時のオーバーヘッドが低いことです。しかし、改善の意思決定には十分なデータを提供できないため、ほかのワークフローを使用してさらに調査する必要があるかもしれません。

インテル® Advisor のワークフロー: ベクトル化が最も有効な場所を特定

サーベイレポート – ベクトル化により最も利益を得られる場所、ベクトル化されたループにより利点が得られるかどうかと利点が得られない場合はその理由、ベクトル化できなかったループとその理由、そして一般的なパフォーマンスの問題を示す、統合されたコンパイラーの最適化レポートとパフォーマンス・データを提供します。

環境の設定

環境変数 設定手順
インテル® Parallel Studio XE/Linux*
  • 次のいずれかを行います。
    • 次の source コマンドを実行します。
      • csh/tcsh ユーザー: source <advisor-install-dir>/advixe-vars.csh
      • bash ユーザー: source <advisor-install-dir>/advixe-vars.sh
      デフォルトのインストール・ディレクトリー <advisor-install-dir> は、以下にあります。
      • root ユーザーの場合: /opt/intel/
      • 非 root ユーザーの場合: $HOME/intel/
    • パスに <advisor-install-dir>/bin32 または <advisor-install-dir>/bin64 を追加します。
    • <parallel-studio-install-dir>/psxevars.csh または <parallel-studio-install-dir>/psxevars.sh コマンドを実行します。デフォルトのインストール・ディレクトリー <parallel-studio-install-dir> は、以下にあります。
      • root ユーザーの場合: /opt/intel/
      • 非 root ユーザーの場合: $HOME/intel/
  • 環境変数 VISUALEDITOR を使用して、インテル® Advisor の [ソース] ウィンドウで行をダブルクリックしたときに起動される外部エディターを指定できます (VISUALEDITOR よりも優先されます)。
  • インテル® Advisor のドキュメントを表示するインストール済みのブラウザーを指定するには、BROWSER 環境変数を設定します。
  • インテル® スレッディング・ビルディング・ブロック (インテル® TBB) を使用する場合、TBBROOT 環境変数を設定してコンパイラーがインストールされているインテル® TBB の include ディレクトリーを検索できるようにします。
  • インテル® Advisor と同じ Linux* 環境でアプリケーションを実行してください。
インテル® Parallel Studio XE/Windows*
注:

Windows* 環境の設定は、advixe-cl コマンドでコマンドライン・インターフェイスを実行する場合、または GUI アイコンや IDE からの起動オプションの代わりに advixe-gui コマンドでインテル® Advisor スタンドアロン GUI を起動する場合にのみ必要です。

次のいずれかを行います。

  • <advisor-install-dir>\advixe-vars.bat バッチファイルを実行します。

    デフォルトのインストール先 <advisor-install-dir> は、C:\Program Files (x86)\IntelSWTools\ です (一部のシステムでは Program Files (x86) のディレクトリー名が Program Files となります)。

  • <parallel-studio-install-dir>\psxevars.bat バッチファイルを実行します。

    デフォルトのインストール先 <parallel-studio-install-dir> は、C:\Program Files (x86)\IntelSWTools\ です。

インテル® System Studio
注:

環境の設定は、advixe-cl コマンドでコマンドライン・インターフェイスを実行する場合、または GUI アイコンや IDE からの起動オプションの代わりに advixe-gui コマンドでインテル® Advisor スタンドアロン GUI を起動する場合にのみ必要です。

環境を設定するため、<advisor-install-dir>\advixe-vars.bat バッチファイルを実行します。デフォルトのインストール先 <advisor-install-dir> は、C:\Program Files (x86)\IntelSWTools\ です (一部のシステムでは Program Files (x86) のディレクトリー名が Program Files となります)。

インテル® Advisor を起動してプロジェクトを作成

起動するには以下の操作を行います。

  • インテル® Parallel Studio XE/インテル® Advisor スタンドアロン GUI:
    • Linux*: advixe-gui コマンドを実行します。
    • Windows*: Microsoft* Windows* の [すべてのアプリ] 画面から、[Intel Parallel Studio XE 201n] > [Intel Advisor 201n] を選択します。
  • インテル® System Studio /インテル® Advisor スタンドアロン GUI: IDE メニューから、[Tools] > [Intel Advisor] > [Launch Intel Advisor] を選択します。
  • Visual Studio* IDE のインテル® Advisor 統合: Visual Studio* IDE でソリューションを開きます。

インテル® Advisor のプロジェクトを作成するには、以下の操作を行います。

  1. 次のいずれかを行います。
    • スタンドアロン GUI: [ファイル] > [新規] > [プロジェクト…] を選択して、[プロジェクトを作成] ダイアログボックスを開きます。[プロジェクト名] と [場所] 指定して、[プロジェクトの作成] ボタンをクリックすると [プロジェクトのプロパティー] ダイアログボックスが開きます。
    • Visual Studio* IDE: [プロジェクト] > [Intel Advisor 201n] を選択して、[プロジェクトのプロパティー] ダイアログボックスを開きます。
  2. [解析ターゲット] タブの左で、[サーベイ・ホットスポット解析] タイプが選択されていることを確認します。(バイナリー/シンボル検索とソース検索ディレクトリーの設定は、ベクトル化アドバイザーではオプションです。)

サーベイ解析の実行

インテル® Advisor のワークフロー・タブ: サーベイターゲット

アプリケーション実行中にサーベイデータの実行を制御するには、[ベクトル化ワークフロー][サーベイターゲット] にある、インテル® Advisor のコントロール: 解析の実行 をクリックします。サーベイが完了すると、インテル® Advisor は次のような [サーベイレポート] を表示します。

注:

Visual Studio* IDE に [ワークフロー] が表示されない場合、インテル® Advisor ツールバーの インテル® Advisor ツールバー・アイコン アイコンをクリックします。


インテル® Advisor: サーベイレポート
最も重要なデータに注目できるように、次のような多くのコントロールが用意されています。

1 ボタンをクリックして、いつでも呼び出せる読み取り専用の結果のスナップショットを保存できます。

インテル® Advisor は最新の結果のみを保存します。複数のスナップショットを互いに、または最新の解析結果と視覚的に比較することは、パフォーマンス改善の進捗を判断する効果的な方法です。

スナップショットを開くには、[ファイル] > [開く] > [結果…] を選択します。

2 各種 [フィルター] ボタンとドロップダウン・リストをクリックして、条件に基づいて表示データを一時的に制御できます。
3 ボタンをクリックして、各種命令セット・アーキテクチャー (ISA) 向けの実行されないコードパスにあるループを表示できます。事前に、次の操作を行う必要があります。
  • インテル® コンパイラーを使用して、複数のコードパス向けにターゲット・アプリケーションをコンパイルします。
  • [プロジェクトのプロパティー] > [解析ターゲット] > [サーベイ・ホットスポット解析][実行されなかったコードパスのループを解析] チェックボックスをオンにします。
4 クリックして、データ表現を簡素化し、SIMD ベクトル・パフォーマンスの観点から適切な/影響の大きいループを自動的に選択するスマートモードのオン/オフを切り替えます。

スマートモードは、ループ呼び出しツリーの入れ子 ([ループの高さ] カラム)、合計 CPU 時間の一部 ([ループのしきい値] で調整可能)、およびその他の条件を使用して、注目するループを自動的にフィルターおよびソートします。

5 ボタンをクリックして、特定のデータを検索できます。
6 タブをクリックして、インテル® Advisor の各種レポートや表示を開きます。
7 クリックして、カラムの表示/非表示を切り替えます。
8 コントロールをクリックして、ハードウェアによって課せられるパフォーマンスの上限と実際のパフォーマンスを可視化し、制限の主な要因 (メモリー帯域幅や計算能力) を検証して、最適化ステップの理想的なロードマップが得られるように支援するグラフの表示/非表示を制御します。
9 [サーベイレポート] の上部にあるデータ行をクリックすると、その行に固有のデータが [サーベイレポート] の下部に表示されます。ループデータ行をダブルクリックすると、[サーベイソース] ウィンドウが表示されます。
10 チェックボックスをオンにして、ループをさらに詳しく解析するためマークします。
11 イメージが表示されていれば、クリックして [推奨] ペインにコード固有の問題の解決方法に関する情報を表示できます。
12 イメージが表示されていれば、クリックして [ベクトル化できない理由] ペインに自動ベクトル化が失敗した理由を表示できます。
13 コントロールをクリックして、[ワークフロー] ペインの表示/非表示を切り替えます。

ループの調査

すべてのループが適切にベクトル化され、パフォーマンス目標に到達したら、作業完了です。

いくつかのループがベクトル化されず、パフォーマンス目標に到達していない場合は、以下を考慮してください。

  1. インテル® Advisor のさまざまな機能を使用してアプリケーションのパフォーマンスを向上させます。
    • インテル® Advisor のコントロール。推奨事項[パフォーマンスの問題] カラムと関連する インテル® Advisor のコントロール: 推奨事項[推奨事項] タブの情報
      インテル® Advisor: 推奨事項

      スクリーンショットの右側には、ループに関する各種推奨事項がリスト表示されています。左の展開/折りたたみ可能な推奨事項には、ベクトル長やトリップカウントなど解析されたループ固有の情報が表示されます。推奨アイコン中の横棒の数 (最大 3 本) は、この推奨の修正すべき確度を示します。

    • インテル® Advisor のヘルプの「サーベイ解析を実行した後にすべきことは ?」 (英語) に示される推奨。
    • さらに詳しく調査するオプションの依存関係とメモリー・アクセス・パターン (MAP) 解析。
  2. 変更したコードをリビルドします。
  3. すべてのループが適切にベクトル化され、パフォーマンス目標に到達したことを検証するため、サーベイ解析を再度実行します。

ルーフラインを使用してパフォーマンスのボトルネックを特定

このセクションでは、ベクトル化アドバイザーの解析をルーフラインから開始する方法を示します。複数の解析を実行するこのベクトル化アドバイザー・ワークフローの利点は、理想的な最適化ステップを提示する可能性があることです。しかし、次のような高い実行オーバーヘッドが生じます。

  • ルーフライン解析の実行オーバーヘッドは、ネイティブのターゲット・アプリケーション実行よりも 3 – 8 倍大きくなります。
  • メモリー・アクセス・パターン (MAP) 解析の実行オーバーヘッドは、5 – 20 倍です。
  • 依存関係解析の実行オーバーヘッドは、5 – 100 倍です。

インテル® Advisor のワークフロー: ルーフラインを使用してパフォーマンスのボトルネックを特定

ルーフライン解析 – ハードウェアによって制限されるパフォーマンスの上限に対して、制限の主な要因 (メモリー帯域幅や計算能力) を検証し実際のパフォーマンスを可視化するのを支援します。ルーフライン解析を実行すると、インテル® Advisor は次のことを行います。

  • サーベイ解析を実行して、マシンのハードウェアの制限を測定し、ループ/関数のタイミングを収集します。
  • トリップカウントと FLOP 解析を実行して、浮動小数点と整数操作のデータを収集します。

依存関係解析 – コンパイラーが依存関係を想定したため、ベクトル化されなかったループの実際のデータ依存関係を確認します。

メモリー・アクセス・パターン (MAP) 解析 – 不連続なメモリーアクセスや、ユニットストライドと非ユニットストライドなアクセスなど、多様なメモリーアクセスの問題を調査するため、MAP 解析を実行します。

環境の設定

環境変数 設定手順
インテル® Parallel Studio XE/Linux*
  • 次のいずれかを行います。
    • 次の source コマンドを実行します。
      • csh/tcsh ユーザー: source <advisor-install-dir>/advixe-vars.csh
      • bash ユーザー: source <advisor-install-dir>/advixe-vars.sh

      デフォルトのインストール先 <advisor-install-dir> は、以下にあります。

      • root ユーザー: /opt/intel/
      • 非 root ユーザー: $HOME/intel/
    • パスに <advisor-install-dir>/bin32 または <advisor-install-dir>/bin64 を追加します。
    • <parallel-studio-install-dir>/psxevars.csh または <parallel-studio-install-dir>/psxevars.sh コマンドを実行します。デフォルトのインストール先 <parallel-studio-install-dir> は、以下にあります。
      • root ユーザー: /opt/intel/
      • 非 root ユーザー: $HOME/intel/
  • 環境変数 VISUALEDITOR を使用して、インテル® Advisor の [ソース] ウィンドウで行をダブルクリックしたときに起動される外部エディターを指定できます (VISUALEDITOR よりも優先されます)。
  • インテル® Advisor のドキュメントを表示するインストール済みのブラウザーを指定するには、BROWSER 環境変数を設定します。
  • インテル® スレッディング・ビルディング・ブロック (インテル® TBB) を使用する場合、TBBROOT 環境変数を設定してコンパイラーがインストールされているインテル® TBB の include ディレクトリーを検索できるようにします。
  • インテル® Advisor と同じ Linux* 環境でアプリケーションを実行してください。
インテル® Parallel Studio XE/Windows*
注:

Windows* 環境の設定は、advixe-cl コマンドでコマンドライン・インターフェイスを実行する場合、または GUI アイコンや IDE からの起動オプションの代わりに advixe-gui コマンドでインテル® Advisor スタンドアロン GUI を起動する場合にのみ必要です。

次のいずれかを行います。

  • <advisor-install-dir>\advixe-vars.bat バッチファイルを実行します。

    デフォルトのインストール先 <advisor-install-dir> は、C:\Program Files (x86)\IntelSWTools\ です (一部のシステムでは Program Files (x86) のディレクトリー名が Program Files となります)。

  • <parallel-studio-install-dir>\psxevars.bat バッチファイルを実行します。

    デフォルトのインストール先 <parallel-studio-install-dir> は、C:\Program Files (x86)\IntelSWTools\ です。

インテル® System Studio
注:

環境の設定は、advixe-cl コマンドでコマンドライン・インターフェイスを実行する場合、または GUI アイコンや IDE からの起動オプションの代わりに advixe-gui コマンドでインテル® Advisor スタンドアロン GUI を起動する場合にのみ必要です。

環境を設定するため、<advisor-install-dir>\advixe-vars.bat バッチファイルを実行します。デフォルトのインストール先 <advisor-install-dir> は、C:\Program Files (x86)\IntelSWTools\ です (一部のシステムでは Program Files (x86) のディレクトリー名が Program Files となります)。

インテル® Advisor を起動してプロジェクトを作成

インテル® Advisor を起動するには、以下の操作を行います。

  • インテル® Parallel Studio XE/インテル® Advisor スタンドアロン GUI:
    • Linux*: advixe-gui コマンドを実行します。
    • Windows*: Microsoft* Windows* の [すべてのアプリ] 画面から、[Intel Parallel Studio XE 201n] > [Intel Advisor 201n] を選択します。
  • インテル® System Studio /インテル® Advisor スタンドアロン GUI: IDE メニューから、[Tools] > [Intel Advisor] > [Launch Intel Advisor] を選択します。
  • Visual Studio* IDE のインテル® Advisor 統合: Visual Studio* IDE でソリューションを開きます。

インテル® Advisor のプロジェクトを作成:

  1. 次のいずれかを行います。
    • スタンドアロン GUI: [ファイル] > [新規] > [プロジェクト…] を選択して、[プロジェクトを作成] ダイアログボックスを開きます。[プロジェクト名] と [場所] 指定して、[プロジェクトの作成] ボタンをクリックすると [プロジェクトのプロパティー] ダイアログボックスが開きます。
    • Visual Studio* IDE: [プロジェクト] > [Intel Advisor 201n] > [Project Properties…] を選択して、[プロジェクトのプロパティー] ダイアログボックスを開きます。
  2. [解析ターゲット] タブの左で、[サーベイ・ホットスポット解析] タイプが選択され、適切なパラメーターが設定されていることを確認します。
  3. ほかの解析タイプとタブで適切なパラメーターを設定します (バイナリー/シンボル検索とソース検索ディレクトリーの設定は、ベクトル化アドバイザーではオプションです)。
ヒント:
  • 可能な場合、ほかの解析タイプで [サーベイ・ホットスポット解析から設定を引き継ぐ] チェックボックスをオンにします。
  • [トリップカウントと FLOP 解析] タイプには、[サーベイ・ホットスポット解析] タイプと同様のパラメーターがあります。
  • [依存関係解析][メモリー・アクセス・パターン解析] タイプは、[サーベイ・ホットスポット解析] タイプよりも多くのリソースを消費します。リファインメント解析の実行が長時間にわたる場合、ワークロードを減らすことを検討してください。
  • すべての依存関係の可能性を検出するには、[依存関係解析] タイプで [スタック変数を追跡] を選択します。

ルーフライン解析の実行

インテル® Advisor のベクトル化ワークフロー・タブ: ルーフラインを実行

[ベクトル化ワークフロー][ルーフライン] にある インテル® Advisor のコントロール: ルーフライン解析を実行 をクリックして、ターゲット・アプリケーションを実行します。完了すると、インテル® Advisor は [ルーフライン] グラフを表示します。

注:

Visual Studio* IDE に [ワークフロー] が表示されない場合、インテル® Advisor ツールバーの インテル® Advisor ツールバーアイコン アイコンをクリックします。

[ルーフライン] グラフは、マシンが達成可能な最大パフォーマンスと、アプリケーションのパフォーマンス演算強度を表示します。

  • 演算強度 (x 軸) – CPU/VPU とメモリー間で転送された、ループ/関数アルゴリズムに基づくバイトあたりの浮動小数点操作 (FLOP) または整数操作 (INTOP) の数です。
  • パフォーマンス (y 軸) – 1 秒あたりのギガ単位の浮動小数点操作の数 (GFLOPS) 、または整数操作の数 (GINTOPS) です。

一般に次のことが言えます。

  • [ルーフライン] グラフの点の大きさと色は、各ループ/関数の相対的な実行時間を示します。大きな赤い点は最も時間を消費しているため、最適化の最良の候補となります。小さな緑の点は消費時間が少ないため、最適化する必要はないと考えられます。
  • [ルーフライン] グラフの斜線は、最適化なしではループ/関数がパフォーマンスを向上できない、メモリー帯域幅の上限を示します。例えば、[L1 帯域幅] ルーフラインは、ループが常に L1 キャッシュにヒットする場合に、ある演算強度で実行可能な最大ワーク量を示します。データセットによりループが頻繁に L1 キャッシュをミスする場合、ループは L1 より速度の恩恵を受けられず、実際にヒットする速度が遅い L2 キャッシュの制限を受けます。そのため、ループを示す点 (ドット) は、[L2 帯域幅] ルーフライン下に表示されます。
  • [ルーフライン] グラフの水平線は、最適化なしではループ/関数がパフォーマンスを向上できない、計算能力の上限を示します。例えば、[スカラー加算ピーク] は、これらの状況下でスカラーループが実行可能な加算命令のピーク数を示します。[ベクトル加算ピーク] は、これらの状況下でベクトル化されたループが実行可能な加算命令のピーク数を示します。ループがベクトル化されていない場合、ループを示す点は [スカラー加算ピーク] ルーフラインの下に表示されます。
  • 最上位のルーフラインはマシンの最大能力を示すため、点がこれらのルーフラインを超えることはありません。しかし、すべてのループがマシンの最大能力を活用できるわけではありません。
  • と達成可能な最上位のルーフとの距離が遠いほど、パフォーマンス向上の可能性は高くなります。

次の [ルーフライン] グラフでは、ループ A と G (大きな赤い点)、そして B (小さな黄の点) が最適化の最良の候補となります。ループ C、D、と E (小さな緑の点)、および H (黄の点) は、改善の余地がわずかであるため最適化に適していません。
ルーフライン・チャートの実際のスクリーンショット

[ルーフライン] グラフのコントロールに関する詳細は、インテル® Advisor のヘルプをご覧ください。
インテル® Advisor: ルーフライン・グラフとサーベイレポート

1 クリックして、[ルーフライン] グラフと [サーベイレポート] を切り替えることができます。
2 クリックして、[ルーフライン] グラフと [サーベイレポート] を並べて表示と通常の表示を切り替えることができます。
3 ドラッグして、[ルーフライン] グラフと [サーベイレポート] サイズを調整できます。

重要なデータに注目するのに役立つ次のようなコントロールがあります。
インテル® Advisor: ルーフライン・グラフのコントロール

1
  • マウスで長方形の範囲をズームイン/アウトします。マウスホイールでズームイン/アウトすることもできます。
  • グラフを上下左右に移動します。
  • ズームを解除、再適用します。
  • デフォルトのズームレベルにリセットします。
  • グラフをクリップボードへコピー、ファイルへ保存、またはインテル® Advisor ビューアーを必要としないインタラクティブな HTML ファイルとしてエクスポートするか、比較のため保存できます。矢印アイコンを使用してオプションを切り替えます。
2
  • アプリケーションがシステムで利用可能なコアよりも少ないスレッドを使用する場合、実際のパフォーマンスの上限を観測するためルーフを調整します。
  • シングルスレッドのアプリケーション向けにルーフを作成する際にこのチェックボックスを使用します (または、ランクごとに 1 つのスレッドを実行する MPI アプリケーションのような、シングルスレッドで実行されるマルチスレッド・アプリケーション)。(ルーフライン・グラフに表示するループを制御するためインテル® Advisor のフィルターを使用できますが、ルーフライン・グラフはスレッドフィルターをサポートしていません。)
3
  • 浮動小数点操作、整数操作、および混在操作 (浮動小数点と整数) 間で表示を切り替えます。
  • このチェックボックスを使用して、プログラム全体のスタックと同じループの異なるコードパスに関するデータを表示できます。デフォルトでは、[ルーフライン] グラフは [サーベイレポート][ループ情報] ペインにループと関数データのみを表示します。: ルーフライン解析を実行する前に、[コールスタックとルーフラインを有効にする] チェックボックスを選択する必要があります。
4 結果やスナップショット・ファイルを選択してロードし、同じ [ルーフライン] グラフ (同じピークを持つ) 上で現在の結果と比較します。比較ドロップダウンを使用し異なる結果およびスナップショット・ファイルを選択して区別します。
5
  • ルーフラインの表示 (線) と可視性を変更します。
  • ループの重さの表示 (点) を変更します。
  • ルーフの値を手動で調整してコードに固有のハードウェアの制限を適用できます。
6 数値を指定してズームイン/アウトします。
7 項目にマウスをホバーするとその項目のメトリックが表示されます。

マウスを点にホバーすると、[ルーフライン] グラフには、ループを最適化して上位のルーフラインと達成可能なルーフの最大値に達すると想定される、潜在的なパフォーマンスを示すメトリックと 2 つの青い点が表示されます。(上位のルーフラインと達成可能なルーフラインが同一である場合、[ルーフライン] グラフには青い点が 1 つのみ表示されます)

点をクリックして枠線を黒く変更すると、対応するコードとメトリックが別のウィンドウタブに表示されます。

点をクリックした後に、[ルーフライン] グラフの空白の部分を右クリックして、以下を選択します。

  • [フィルター処理を適用] をクリックして一時的に点を隠します
  • [フィルター処理を解除] をクリックして一時的にほかのすべての点を隠します
  • [フィルターをクリア] をクリックして元のデータをすべて表示します
8 それぞれのループの重さを示すカテゴリーのループの数と比率を表示します。

ループの調査

すべてのループが適切にベクトル化され、パフォーマンス目標に到達したら、作業完了です。

いくつかのループがベクトル化されず、パフォーマンス目標に到達していない場合は、以下を考慮してください。

  1. [ルーフライン] グラフの表示を解釈するため、関連するインテル® Advisor のビューを参照します。例えば、[サーベイサポート][ベクトル化されたループ][効率] または、[コード解析] タブのデータを確認します。
  2. インテル® Advisor のさまざまな機能を使用してアプリケーションのパフォーマンスを向上させます。
    • インテル® Advisor のコントロール: 推奨事項[パフォーマンスの問題] カラムと関連する インテル® Advisor のコントロール: 推奨事項[推奨事項] タブの情報。
      インテル® Advisor の推奨事項

      スクリーンショットの右側には、ループに関する各種推奨事項がリスト表示されています。左の展開/折りたたみ可能な推奨事項には、ベクトル長やトリップカウントなど解析されたループ固有の情報が表示されます。推奨アイコン中の横棒の数 (最大 3 本) は、この推奨の修正すべき確度を示します。

    • インテル® Advisor のコントロール: コンパイラー診断の詳細[ベクトル化できない理由] カラムと関連する インテル® Advisor のコントロール: コンパイラー診断の詳細[ベクトル化できない理由] タブの情報。
    • インテル® Advisor のヘルプの「サーベイ解析を実行した後にすべきことは ?」 (英語) に示される推奨。

さらに詳しい情報が必要であれば、次の調査を続行します。

  1. カラムで、より詳細に解析するためループ/関数をマーク (選択) します。
  2. さらに、コンパイラーが依存関係を仮定しループ/関数をベクトル化しなかった理由を調査するため依存関係解析を実行し、コストの高いメモリー命令を特定するためメモリー・アクセス・パターン (MAP) 解析を実行します。

依存関係解析の実行

依存関係解析を実行するには次の操作を行います。

  1. [サーベイレポート] カラムで、さらに詳しく解析するためベクトル化されていないループをマーク (選択) します。
  2. アプリケーション実行中に依存関係データを収集するには、[ベクトル化ワークフロー][依存関係の確認] にある、インテル® Advisor のコントロール: 解析を実行 をクリックします。

インテル® Advisor はデータ収集後、次のような依存関係に注目した [リファインメント・レポート] を表示します。


インテル® Advisor: 依存関係レポート
最も重要なデータに注目できるように、次のような多くのコントロールが用意されています。

1 さらに詳しく解析するため選択したループの詳細情報を [依存関係レポート] 表示するには、関連するデータ行をクリックします。
2 [コードの場所] ペインでコードの位置に関連する命令アドレスとコードを表示するには、データ行をクリックします。

[依存関係ソース] にウィンドウに表示する注目する問題を選択するには、データ行を右クリックして [ソースを表示] を選択します。

新しいタブ/ウィンドウでデフォルトエディターを開くには、データ行を右クリックし、[ソースを編集] を選択してエディタータブを開きます。

3 [依存関係ソース] ウィンドウに表示する注目するコードの場所を選択するには、データ行を右クリックして [ソースを表示] を選択します。

新しいタブ/ウィンドウでデフォルトエディターを開くには、データ行を右クリックし、[ソースを編集] を選択してエディタータブを開きます。

4 [フィルター] ペインでは、次の操作を行うことができます。
  • 1 つ以上のフィルターカテゴリーのフィルター条件をクリックして、[問題とメッセージ] ペインに表示される項目を一時的に制御します。
  • 個々のフィルターカテゴリーのフィルター条件を未選択にしたり、すべてのフィルターカテゴリーのフィルター条件を未選択にします。
  • すべてのフィルター条件を、名前はアルファベット順で、数値は降順でソートします。(フィルターカテゴリーの表示順を変えることはできません。)
5 これらのカラムと [メモリー・アクセス・パターン・レポート] にデータを表示するには、メモリー・アクセス・パターン解析を実行します。

[依存関係レポート] は以下を示します。

  • ワークロードに実際の依存関係がないこと。この場合、インテル® Advisor のガイドに従って、コンパイラーに安全にベクトル化することを知らせます。
  • アンチ依存 (読み取り後の書き込み依存、または WAR とも呼ばれます) があること。この場合、インテル® Advisor のガイドに従ってベクトル化を有効にします。

コードを改善するためのガイドは、インテル® Advisor の インテル® Advisor のコントロール: 推奨事項[推奨事項] タブとインテル® Advisor ユーザーズガイドの「サーベイ解析を実行した後にすべきことは ?」 (英語) にあります。コードが改善されたら以下を行います。

  1. 必要に応じてメモリー・アクセス・パターン (MAP) 解析を実行します。
  2. 変更したコードをリビルドします。
  3. ルーフライン解析を実行して、アプリケーションが正しく動作し、すべてのテストケースをパスし、すべてのループが適切にベクトル化され、パフォーマンス目標に到達したことを確認します。

メモリー・アクセス・パターン (MAP) 解析の実行

メモリー・アクセス・パターン (MAP) 解析を実行するには次の操作を行います。

  1. [サーベイレポート] カラムで、さらに詳しく解析するためベクトル化されていないループをマーク (選択) します。
  2. アプリケーション実行中に MAP データの収集を制御するには、[ベクトル化ワークフロー][メモリー・アクセス・パターンの確認] にある、インテル® Advisor のコントロール: 解析を実行 をクリックします。

インテル® Advisor はデータ収集後、次のような MAP に注目した [リファインメント・レポート] を表示します。

インテル® Advisor: メモリー・アクセス・パターン (MAP) レポート

コードを改善するためのガイドは、インテル® Advisor の インテル® Advisor のコントロール: 推奨事項[推奨事項] タブとインテル® Advisor ユーザーガイドの「サーベイ解析を実行した後にすべきことは ?」 (英語) にあります。コードが改善されたら以下を行います。

  1. 変更したコードをリビルドします。
  2. 再度ルーフライン解析を実行して、アプリケーションが正しく動作し、すべてのテストケースをパスし、すべてのループが適切にベクトル化され、パフォーマンス目標に到達したことを確認します。

スレッド化のプロトタイプを作成

このセクションでは、インテル® Advisor の使用方法を説明します。複数の解析を実行するこのスレッド化アドバイザー・ワークフローを使用する利点は、モデル化と対応するデータ共有の問題を予測できることです。しかし、これらの解析では中から高い実行オーバーヘッドが生じます。

インテル® Advisor のワークフロー: スレッド化のプロトタイプを作成

サーベイ解析 – アプリケーションが最も時間を費やしているループと関数を表示します。この結果を基に、スレッドを使用した並列化の候補を見つけます。

アノテーション – アノテーションは、スレッドによる並列実行を可能にする並列フレームワークと置き換え可能な、アプリケーションの候補となる場所をマークするサブルーチン呼び出しまたはマクロ (プログラミング言語に依存) です。アノテーションはコンパイラーによって処理されますが、アプリケーションの計算を変更することはありません。

スータビリティー解析 – 挿入されたアノテーションとさまざまなモデル化パラメーターに基づいて、アプリケーションの最大スピードアップを予測します。この結果を基に、スレッド並列処理の最良の候補を見つけます。

依存関係解析 – 挿入されたアノテーションを基に、並列データ共有の問題を推測します。予測される最大スピードアップによって労力を正当化できる場合、この情報を基にデータ共有の問題を解決します。

環境の設定

環境変数 設定手順
インテル® Parallel Studio XE/Linux*
  • 次のいずれかを行います。
    • 次の source コマンドを実行します。
      • csh/tcsh ユーザー: source <advisor-install-dir>/advixe-vars.csh
      • bash ユーザー: source <advisor-install-dir>/advixe-vars.sh

      デフォルトのインストール先 <advisor-install-dir> は、以下にあります。

      • root ユーザー: /opt/intel/
      • 非 root ユーザー: $HOME/intel/
    • パスに <advisor-install-dir>/bin32 または <advisor-install-dir>/bin64 を追加します。
    • <parallel-studio-install-dir>/psxevars.csh または <parallel-studio-install-dir>/psxevars.sh コマンドを実行します。デフォルトのインストール先 <parallel-studio-install-dir> は、以下にあります。
      • root ユーザー: /opt/intel/
      • 非 root ユーザー: $HOME/intel/
  • 環境変数 VISUALEDITOR を使用して、インテル® Advisor の [ソース] ウィンドウで行をダブルクリックしたときに起動される外部エディターを指定できます (VISUALEDITOR よりも優先されます)。
  • インテル® Advisor のドキュメントを表示するインストール済みのブラウザーを指定するには、BROWSER 環境変数を設定します。
  • インテル® スレッディング・ビルディング・ブロック (インテル® TBB) を使用する場合、TBBROOT 環境変数を設定してコンパイラーがインストールされているインテル® TBB の include ディレクトリーを検索できるようにします。
  • インテル® Advisor と同じ Linux* 環境でアプリケーションを実行してください。
インテル® Parallel Studio XE/Windows*
注:

Windows* 環境の設定は、advixe-cl コマンドでコマンドライン・インターフェイスを実行する場合、または GUI アイコンや IDE からの起動オプションの代わりに advixe-gui コマンドでインテル® Advisor スタンドアロン GUI を起動する場合にのみ必要です。

次のいずれかを行います。

  • <advisor-install-dir>\advixe-vars.bat バッチファイルを実行します。

    デフォルトのインストール先 <advisor-install-dir> は、C:\Program Files (x86)\IntelSWTools\ です (一部のシステムでは Program Files (x86) のディレクトリー名が Program Files となります)。

  • <parallel-studio-install-dir>\psxevars.bat バッチファイルを実行します。

    デフォルトのインストール先 <parallel-studio-install-dir> は、C:\Program Files (x86)\IntelSWTools\ です。

インテル® System Studio
注:

環境の設定は、advixe-cl コマンドでコマンドライン・インターフェイスを実行する場合、または GUI アイコンや IDE からの起動オプションの代わりに advixe-gui コマンドでインテル® Advisor スタンドアロン GUI を起動する場合にのみ必要です。

環境を設定するため、<advisor-install-dir>\advixe-vars.bat バッチファイルを実行します。デフォルトのインストール先 <advisor-install-dir> は、C:\Program Files (x86)\IntelSWTools\ です (一部のシステムでは Program Files (x86) のディレクトリー名が Program Files となります)。

インテル® Advisor を起動してプロジェクトを作成

起動するには以下の操作を行います。

  • インテル® Parallel Studio XE/インテル® Advisor スタンドアロン GUI:
    • Linux*: advixe-gui コマンドを実行します。
    • Windows*: Microsoft* Windows* の [すべてのアプリ] 画面から、[Intel Parallel Studio XE 201n] > [Intel Advisor 201n] を選択します。
  • インテル® System Studio /インテル® Advisor スタンドアロン GUI: IDE メニューから、[Tools] > [Intel Advisor] > [Launch Intel Advisor] を選択します。
  • Visual Studio* IDE のインテル® Advisor 統合: Visual Studio* IDE でソリューションを開きます。

インテル® Advisor のプロジェクトを作成します。

  1. 次のいずれかを行います。
    • スタンドアロン GUI: [ファイル] > [新規] > [プロジェクト…] を選択して、[プロジェクトを作成] ダイアログボックスを開きます。[プロジェクト名] と [場所] 指定して、[プロジェクトの作成] ボタンをクリックすると [プロジェクトのプロパティー] ダイアログボックスが開きます。
    • Visual Studio* IDE: [プロジェクト] > [Intel Advisor 201n] を選択して、[プロジェクトのプロパティー] ダイアログボックスを開きます。
  2. [解析ターゲット] タブの左で、[サーベイ・ホットスポット解析] タイプが選択され、適切なパラメーターが設定されていることを確認します。
  3. ほかの解析タイプとタブで適切なパラメーターを設定します(バイナリー/シンボル検索とソース検索ディレクトリーの設定は、スレッド化アドバイザーでは必要です)。
ヒント:
  • 可能な場合、ほかの解析タイプで [サーベイ・ホットスポット解析から設定を引き継ぐ] チェックボックスをオンにします。
  • [依存関係解析] タイプは、[サーベイ・ホットスポット解析] タイプよりも多くのリソースを消費します。解析の実行が長時間にわたる場合、ワークロードを減らすことを検討してください。
  • すべての依存関係の可能性を検出するには、[依存関係解析] タイプで [スタック変数を追跡] を選択します。

サーベイ解析の実行

インテル® Advisor のスレッド化ワークフロー・タブ: サーベイターゲット

アプリケーション実行中にサーベイデータを収集するには、[スレッド化ワークフロー][サーベイターゲット] にある、インテル® Advisor のコントロール: 解析を実行 をクリックします。結果を基に、スレッドを使用した並列化の候補を見つけます。

注:

Visual Studio* IDE に [ワークフロー] が表示されない場合、インテル® Advisor ツールバーの インテル® Advisor ツールバーアイコン アイコンをクリックします。

ループの調査

[セルフ時間][合計時間] に関して、最もホットなループに注目します。これらのループを最適化することで、最も多くの利点が得られます。[合計時間] が突出している最外ループは、多くの場合スレッド並列処理の候補となります。最内ループとそれに近いループは、多くの場合ベクトル化の候補です。

ソースにアノテーションを挿入

スレッドによる並列実行を可能にする並列フレームワークと置き換え可能な候補となる場所にアノテーション・マークを挿入します。

インテル® Advisor の主なアノテーション・タイプは以下の場所をマークします。

  • 並列サイト。並列サイトとは、並列に実行する可能性があるタスクを 1 つ以上含むコード領域のことであり、ワークを分散するため 1 つ以上の並列スレッドで実行します。効率良い並列サイトは、一般にアプリケーションの実行時間を消費するホットスポットを含んでいます。頻繁に実行される命令を同時に実行できる異なるタスクに分散するため、最良の並列サイトは通常ホットスポットにはありませんが、呼び出しツリーの上位にあります。
  • 並列サイト内の 1 つ以上の並列タスク。タスクは、データを含む実行時間を消費するコード領域であり、ワークを分散するため 1 つ以上の並列スレッドで実行できます。
  • 同期ロック。並列アプリケーションでデータへの相互排他アクセスが必要な場所を示します。

インテル® Advisor のユーザーズガイドには、エディターにコピーできるアノテーションを含むサンプル・ソースコードが用意されています。

アノテーション・コード 目的
反復ループ、シングルタスク タスクのコードにループ全体が含まれる、単純なループ構造を作成します。この一般的なタスク構造は、並列サイト内で単独のタスクが必要な場合に役立ちます。
ループ、1 つ以上のタスク タスクコードにループ本体全体が含まれないループ、または複数のタスク終了アノテーションを含む特定のタスクの開始/終了境界を必要とする複雑なループやコードを作成します。この構造は、並列サイト内で複数のタスクが必要とされる場合にも役立ちます。
関数、1 つ以上のタスク 並列サイト内で複数のタスクを呼び出すコードを生成します。
収集のポーズと再開 一時的にデータ収集をポーズして後で再開することで、アプリケーション実行の不要な部分をスキップして、収集されるデータを最小限に抑え、大規模なアプリケーションの解析をスピードアップできます。これらのアノテーションは並列サイトの外部に追加します。
ビルド設定 使用する言語に合わせて固有のビルド (コンパイラーとリンカー) 設定を行います。

アノテーションを挿入後、アプリケーションをリリースモードで再ビルドします。

ヒント:

タスク・アノテーションを追加する場所の決定には、試行錯誤が必要になるかもしれません。並列サイトのループが入れ子構造で最内ループの計算時間が少ない場合、1 つ外側のループ周辺にタスク・アノテーションを追加することを検討してください。

スータビリティー解析の実行

アプリケーション実行中にスータビリティー・データを収集するには、[スレッド化ワークフロー][スータビリティーの確認] にある、インテル® Advisor のコントロール: 解析を実行 をクリックします。

[スータビリティー・レポート] は、挿入されたアノテーションと次のようなモデル化パラメーターに基づいて、アプリケーションの最大スピードアップを予測します。

  • 異なるハードウェアと並列フレームワーク
  • 異なるトリップカウントと実行時間
  • 並列フレームワークのコードをアプリケーションに実装する際の、並列化のオーバーヘッド、ロックの競合、またはタスクのチャンクに関連した対応

結果を基に、スレッド並列処理の最良の候補を見つけます。

依存関係解析の実行

アプリケーション実行中に依存関係データを取得するには、[スレッド化ワークフロー][依存関係の確認] にある、インテル® Advisor のコントロール: 解析を実行 をクリックします。予測される最大スピードアップによって労力を正当化できる場合、この結果情報を基にデータ共有の問題を解決します。

アプリケーションのパフォーマンスを向上

予測される最大スピードアップによってアプリケーションをスレッド化する労力を正当化できる場合、次の作業を行います。

  1. 提案された並列化の変更に関して、開発者/設計者による設計とコードレビューを行います。
  2. インテル® スレッディング・ビルディング・ブロック (インテル® TBB)、OpenMP*、Microsoft* タスク並列ライブラリー (TPL) など、アプリケーションの並列プログラミング・フレームワーク (スレッド化モデル) を選択します。
  3. ビルド環境に並列フレームワークを追加します。
  4. 共有データリソースへのアクセスを同期するため、インテル® TBB や OpenMP* ロックなどの並列フレームワークのコードを追加します。
  5. 並列タスクを生成する並列フレームワーク・コードを追加します。

選択した並列フレームワークから適切な並列コードを追加したら、インテル® Advisor のアノテーションは、コメントアウト、置換、またはそのままにすることができます。

macOS* マシン上でインテル® Advisor の結果を表示

このセクションでは使い方を説明します。

  1. Windows* または Linux* マシン上でデータを収集します。
  2. 結果データを macOS* マシン上で表示します。

このベクトル化アドバイザーとスレッド化アドバイザーのワークフローを使用する利点は、クラスターなど可視化やデータ操作に制限がある専用システムでコードを実行する必要がある場合でも、インテル® Advisor GUI のメリットを利用できることです。しかし、macOS* マシン上ではデータを収集できないため、Windows* や Linux* マシン上でデータを収集する必要があります。

共有ドライブがない場合

ターゲット・アプリケーション (バイナリー、シンボル情報、ソースコードなど) を macOS* マシンからアクセス可能なリモートドライブに配置できない場合は、次の手順に従ってください。

  1. macOS* マシンにインテル® Advisor GUI のみをインストールします。
  2. リモートマシンにインテル® Advisor をインストールします。CLI のみを使用してデータを収集する場合、フルパッケージまたはパッケージの一部 (CLI のみなど) をインストールできます。
  3. リモートマシン上での操作:
    • 最も正確で完全な解析結果を得られる設定を使用して、リリースモードでアプリケーションの最適化バイナリーをビルドします。設定の詳細については、「解析を始める前に」 をご覧ください。
    • 環境を設定した後、インテル® Advisor を起動してプロジェクトを作成し、目的のデータを収集します。詳しい手順については、このドキュメントのワークフローを参照してください。
    • 収集したデータのスナップショットを作成するには、次の手順のいずれかを実行します。 ソースとバイナリーの両方を zip アーカイブファイルに含めてください。
    • 結果ファイル .advixeexpz を macOS* マシンにコピーします。
  4. macOS* マシン上での操作:
    • 次のいずれかの source コマンドを実行して環境を設定します: source <advisor-install-dir>/advixe-vars.csh または source <advisor-install-dir>/advixe-vars.sh
    • インテル® Advisor を起動します。
    • [ファイル] > [開く] > [結果] メニューオプションから、結果ファイル .advixeexpz を開きます。

共有ドライブがある場合

ターゲット・アプリケーション (バイナリー、シンボル情報、ソース) を macOS* マシンからアクセス可能なリモートドライブに配置できる場合は、次の手順に従ってください。

  1. macOS* マシンにインテル® Advisor GUI のみをインストールします。
  2. リモートマシンにインテル® Advisor をインストールします。CLI のみを使用してデータを収集する場合、フルパッケージまたはパッケージの一部 (CLI のみなど) をインストールできます。
  3. 共有ドライブでの操作: 最も正確で完全な解析結果を得られる設定を使用して、リリースモードでアプリケーションの最適化バイナリーをビルドします。設定の詳細については、「解析を始める前に」 をご覧ください。
  4. リモートマシン上での操作:
    • 環境を設定してインテル® Advisor を起動します。詳しい手順については、このドキュメントのほかのワークフローを参照してください。
    • [ファイル] > [オプション] > [結果の場所] に、結果を格納する共有ドライブを設定します。
    • 共有ドライブを使用するプロジェクトを作成して目的のデータを収集します。詳しい手順については、このドキュメントのほかのワークフローを参照してください。
  5. macOS* マシン上での操作:
    • 次のいずれかの source コマンドを実行して環境を設定します: source <advisor-install-dir>/advixe-vars.csh または source <advisor-install-dir>/advixe-vars.sh
    • インテル® Advisor を起動します。
    • [ファイル] > [開く] > [結果] メニューオプションから、共有ドライブの .advixeexp ファイルを開きます。

インテル® Advisor のワークフローを自動化

環境の設定

環境変数 設定手順
インテル® Parallel Studio XE/Linux*
  • 次のいずれかを行います。
    • 次の source コマンドを実行します。
      • csh/tcsh ユーザー: source <advisor-install-dir>/advixe-vars.csh
      • bash ユーザー: source <advisor-install-dir>/advixe-vars.sh

      デフォルトのインストール・ディレクトリー <advisor-install-dir> は、以下にあります。

      • root ユーザーの場合: /opt/intel/
      • 非 root ユーザーの場合: $HOME/intel/
    • パスに <advisor-install-dir>/bin32 または <advisor-install-dir>/bin64 を追加します。
    • <parallel-studio-install-dir>/psxevars.csh または <parallel-studio-install-dir>/psxevars.sh コマンドを実行します。デフォルトのインストール・ディレクトリー <parallel-studio-install-dir> は、以下にあります。
      • root ユーザーの場合: /opt/intel/
      • 非 root ユーザーの場合: $HOME/intel/
  • インテル® Advisor と同じ Linux* 環境でアプリケーションを実行してください。
インテル® Parallel Studio XE/Windows* 次のいずれかを行います。
  • <advisor-install-dir>\advixe-vars.bat バッチファイルを実行します。

    デフォルトのインストール先 <advisor-install-dir> は、C:\Program Files (x86)\IntelSWTools\ です (一部のシステムでは Program Files (x86) のディレクトリー名が Program Files となります)。

  • <parallel-studio-install-dir>\psxevars.bat バッチファイルを実行します。

    デフォルトのインストール先 <parallel-studio-install-dir> は、C:\Program Files (x86)\IntelSWTools\ です。

インテル® System Studio 環境を設定するため、<advisor-install-dir>\advixe-vars.bat バッチファイルを実行します。デフォルトのインストール先 <advisor-install-dir> は、C:\Program Files (x86)\IntelSWTools\ です (一部のシステムでは Program Files (x86) のディレクトリー名が Program Files となります)。

コマンドライン

このセクションでは、インテル® Advisor CLI の使用方法を説明します。GUI の代わりにインテル® Advisor CLI を使用する利点は、自動化またはバックグラウンド・タスクの一部としてデータ収集と解析を行い、その結果を利用したいときに CLI レポート (または GUI) で表示できることです。

以下に典型的なインテル® Advisor CLI の手順を示します。

操作 使用する CLI モデル
すべてのコマンドライン・オプションを表示します。

(ベクトル化アドバイザーとスレッド化アドバイザーで利用可能)

advixe-cl -help
注:

インテル® Advisor のユーザーズガイドでも確認できます。

サーベイ解析を実行します。

(ベクトル化アドバイザーとスレッド化アドバイザーで利用可能)

Linux*: advixe-cl -collect survey -project-dir ./myAdvisorProj — myTargetApplication

Windows*: advixe-cl -collect survey -project-dir myAdvisorProj — myTargetApplication

サーベイ解析を実行後、トリップカウントと FLOP 解析を実行します。

(トリップカウントはベクトル化アドバイザーとスレッド化アドバイザーで利用できますが、FLOP はベクトル化アドバイザーで最も役立ちます。)

Linux*: advixe-cl -collect tripcounts -flop -project-dir ./myAdvisorProj — myTargetApplication

Windows*: advixe-cl -collect tripcounts -flop -project-dir myAdvisorProj — myTargetApplication

ヒント:
  • サーベイ解析とトリップカウントと FLOPS 解析は、同じプロジェクトのディレクトリーを使用します。
  • サーベイ解析を実行する前にトリップカウントと FLOPS 解析を実行するには、-no-auto-finalize オプションを使用します。
ルーフライン解析を実行します。

(ルーフラインはベクトル化アドバイザーとスレッド化アドバイザーで利用できますが、ベクトル化アドバイザーで最も役立ちます。)

Linux*: advixe-cl -collect roofline -project-dir ./myAdvisorProj — myTargetApplication

Windows*: advixe-cl -collect roofline -project-dir myAdvisorProj — myTargetApplication

ヒント:

サーベイ解析とトリップカウントと FLOPS 解析は、同じプロジェクトのディレクトリーを使用します。

リファインメント解析を行うループ ID を特定するため [サーベイレポート] を出力します。

(ベクトル化アドバイザーで利用可能)

Linux*: advixe-cl -report survey -project-dir ./myAdvisorProj

Windows*: advixe-cl -report survey -project-dir myAdvisorProj

リファインメント解析を実行します。

(ベクトル化アドバイザーで利用可能)

Linux*: advixe-cl -collect [dependencies | map] -mark-up-list=[loopID],[loopID] -project-dir ./myAdvisorProj — myTargetApplication

Windows*: advixe-cl -collect [dependencies | map] -mark-up-list=[loopID],[loopID] -project-dir myAdvisorProj — myTargetApplication

依存関係解析を実行します。

(スレッド化アドバイザーで利用可能)

Linux*: advixe-cl -collect dependencies -project-dir ./myAdvisorProj — myTargetApplicaton

Windows*: advixe-cl -collect dependencies -project-dir myAdvisorProj — myTargetApplicaton

スナップショットを作成して、ソースとバイナリーをその中に含めて、アーカイブにパックします。

(ベクトル化アドバイザーとスレッド化アドバイザーで利用可能)

Linux*: advixe-cl -snapshot -project-dir ./user/test/vec_project -pack -cache-sources -cache-binaries — ./tmp/myAdvisorProj_snapshot

Windows*: advixe-cl -snapshot -project-dir /user/test/vec_project -pack -cache-sources -cache-binaries — /tmp/myAdvisorProj_snapshot

ループリストの代わりにトップダウンの関数リストをレポートします。

(ベクトル化アドバイザーとスレッド化アドバイザーで利用可能)

advixe-cl -report survey -top-down -display-callstack
すべてのコンパイラー opt-report と vec-report メトリックをレポートします。

(ベクトル化アドバイザーで利用可能)

advixe-cl -report survey -show-all-columns
内部ループではありませんメッセージによりベクトル化されなかった上位 5 つのセルフ時間ホットスポットをレポートします。

(ベクトル化アドバイザーで利用可能)

advixe-cl -report survey -limit 5 -filter “Vectorization Message(s)”=”loop was not vectorized: not inner loop”
ヒント:

[ワークフロー] で該当する インテル® Advisor のコントロール: コマンドラインの取得 をクリックすると、対応する収集コマンドラインを生成できます。

MPI

このセクションでは、MPI 環境でインテル® Advisor を使用する方法を説明します。

MPI 解析はインテル® Advisor の CLI でのみ実行できます。結果はいくつかの方法で表示できます。

  • クラスター環境にインテル® Advisor GUI がインストールされている場合、GUI から結果を開きます。
  • クラスターノード上にインテル® Advisor GUI がインストールされていない場合、結果ディレクトリーをインテル® Advisor GUI がインストールされている別のマシンにコピーして開きます。
  • クラスターノードで結果を参照するには、インテル® Advisor のコマンドライン・レポートを使用します。

mpirunmpiexec、または利用する MPI バッチジョブ管理と advixe-cl コマンドを使用して、解析を開始します。mpirun-gtool オプションも利用できます。詳細は、『インテル® MPI ライブラリー・リファレンス・マニュアル』 (インテル® ソフトウェア・ドキュメンテーション・ライブラリー (英語) で入手可能) をご覧ください。

以下に典型的なインテル® Advisor MPI タスクの例を示します。

操作 使用するコマンドライン・モデル
10 個の MPI ランク (プロセス) を実行し、それぞれのランクでインテル® Advisor 解析を開始します。 Linux*: $ mpirun -n 10 advixe-cl -collect survey –project-dir ./my_proj ./your_app

Windows*: $ mpirun -n 10 advixe-cl -collect survey –project-dir my_proj your_app

インテル® Advisor は、rank.0、rank.1、…、rank.n という名前の結果ディレクトリーを作成します (n は、MPI プロセスのランクです)。

インテル® Advisor は異なるランクの結果を結合しないため、各ランクの結果を個別に調査する必要があります。

10 個の MPI ランク (プロセス) を実行し、ランク 1 のみでインテル® Advisor 解析を開始します。 Linux*: $ mpirun -n 10 advixe-cl -collect survey –project-dir ./my_proj ./your_app: -np 9 ./your_app

Windows*: $ mpirun -n 10 advixe-cl -collect survey –project-dir my_proj your_app:0

10 個の MPI ランク (プロセス) を実行し、ランク 1 のみでルーフライン・グラフを生成します。 Linux*:
  1. $ mpirun -n 10 advixe-cl -collect survey –project-dir ./my_proj ./your_app:1 -np 9 ./your_app
  2. $ mpirun -n 10 advixe-cl -collect tripcounts -flop –project-dir ./my_proj ./your_app:1 -np 9 ./your_app

Windows*:

  1. $ mpirun -n 10 advixe-cl -collect survey –project-dir my_proj your_app:1
  2. $ mpirun -n 10 advixe-cl -collect survey -flop –project-dir my_proj your_app:1
ヒント:

サーベイ解析とトリップカウントと FLOPS 解析は、同じプロジェクトのディレクトリーを使用します。

次のステップ

参考資料

リソース 説明
オンラインリソース インテルのドキュメント・ライブラリー (英語)
インテル® Advisor ユーザーガイド (英語)
インテル® Advisor: 現代のハードウェア向けのコード最適化 (英語)
ベクトル化アドバイザー用語集
インテル® Advisor ユーザー向けのベクトル化リソース
インテル® Advisor リリースノートと新機能
フローグラフ・アナライザー・ユーザー・ガイド (英語) – インテル® Advisor 2019 に同梱される “フローグラフ・アナライザー” は、インテル® スレッディング・ビルディング・ブロック (インテル® TBB) のフローグラフ・インターフェイスを使用するアプリケーションを構築、解析、および可視化するグラフィカル・ツールです。
オフラインのリソース ベクトル化アドバイザーの機能の 1 つに、コード固有のベクトル化の問題を修正する方法を示す GUI 組込みのアドバイスがあります。GUI のアドバイスで示される引数などをすぐに参照できるよう、インテル® Advisor はオフラインのインテル® コンパイラーのミニガイドを用意しています。また、ミニガイドと同じ場所には「オフラインの推奨事項」と「コンパイラー診断の詳細」を提供するアドバイス・ライブラリーも用意されています。これらの HTML ファイルに含まれる問題推奨は、展開/折りたたむことができます。

Linux*: オフラインのドキュメントは、<advisor-install-dir>/documentation/<locale>/ へインストールされます。デフォルトのインストール・ディレクトリー <advisor-install-dir> は、以下にあります。

  • root ユーザーの場合: /opt/intel/
  • 非 root ユーザーの場合: $HOME/intel/

Windows*: オフラインのドキュメントは、<advisor-install-dir>\documentation\<locale>\ へインストールされます。デフォルトのインストール先 <advisor-install-dir> は、C:\Program Files (x86)\IntelSWTools\ です (一部のシステムでは Program Files (x86) のディレクトリー名が Program Files となります)。

注:

ドキュメントを表示する際に、次のような問題が発生することがあります:

  • Microsoft* Windows Server* 2012 システム: 信頼済みサイトの警告が表示される。解析策: [ツール] > [インターネット オプション] > [セキュリティ] タブで、[信頼済みサイト] のリストに about:internet を追加します。ドキュメントを確認後に削除できます。
  • Microsoft* Internet Explorer* 11 ブラウザー: [目次] ペインで項目を選択しても内容が表示されない。解析策: [ツール] > [インターネット オプション] > [セキュリティ] タブで、[信頼済みサイト] のリストに http://localhost を追加します。ドキュメントを確認後に削除できます。
  • Microsoft Edge* ブラウザー:
    • 状況依存ヘルプの呼び出し (F1 キーなど) で、対応する特定のトピックの代わりにドキュメントのタイトルページが開く。解析策: 別のブラウザーを使用してください。
    • ペインの一部しか表示されず、適切なスタイルシートが適用されていない。解析策: 別のブラウザーを使用してください。

関連記事

  • インテル® Advisor: ベクトル化アドバイザー用語集インテル® Advisor: ベクトル化アドバイザー用語集 この記事は、インテル® デベロッパー・ゾーンに掲載されている「Intel® Advisor: Vectorization Advisor Glossary」の日本語参考訳です。 インテル® Advisor は、Fortran、C および C++ ネイティブ/マネージド・アプリケーションがインテル® Xeon Phi™ […]
  • Microsoft* Visual Studio* 統合Microsoft* Visual Studio* 統合 この記事は、インテル® デベロッパー・ゾーンに公開されている、インテル® VTune™ Amplifier のオンラインヘルプの一部「Microsoft Visual Studio* Integration」の日本語参考訳です。Windows* 用のヘルプではありますが、その他の OS […]
  • インテル® VTune™ Amplifier についてインテル® VTune™ Amplifier について この記事は、インテル® デベロッパー・ゾーンに公開されている、インテル® VTune™ Amplifier のオンラインヘルプの一部「Introducing the Intel® VTune™ Amplifier」の日本語参考訳です。Windows* 用のヘルプではありますが、その他の OS […]
  • インテル® VTune™ Amplifier 2019 for Windows* 導入ガイドインテル® VTune™ Amplifier 2019 for Windows* 導入ガイド この記事は、インテル® デベロッパー・ゾーンに公開されている「Get Started with Intel® VTune™ Amplifier 2019」の日本語参考訳です。 内容 解析を始める前に ステップ 1: プロジェクトの作成 ステップ 2: 解析の設定と実行 ステップ 3: […]
  • インテル® VTune™ Amplifier、インテル® Advisor、およびインテル® Inspector を異なる OS で使用するインテル® VTune™ Amplifier、インテル® Advisor、およびインテル® Inspector を異なる OS で使用する この記事は、インテル® デベロッパー・ゾーンに掲載されている「Intel® VTune™ Amplifier, Intel® Advisor, and Intel® Inspector now include Cross-OS support」の日本語参考訳です。 インテル® Parallel Studio […]