インテル® Advisor 導入ガイド

同カテゴリーの次の記事

インテル® Advisor 2019 Update4 およびインテル® VTune™ Amplifier 2019 Update4 向けの日本語パッケージのリリース

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

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

  • ベクトル化アドバイザーは、影響が大きく最適ではないループ、ベクトル化を妨げる原因、およびベクトル化を安全に強制できる場所を特定する、ベクトル化の最適化ツールです。また、コード固有の問題を解決する方法を示す推奨事項を提供します。
  • スレッド化アドバイザーは、通常の開発作業を中断することなくスレッドの解析、チューニング、設計のチェックを可能にするスレッドの設計とプロトタイプ生成ツールです。
  • フローグラフ・アナライザーは、インテル® スレッディング・ビルディング・ブロック (インテル® TBB) のフローグラフ・インターフェイスを使用する、アプリケーションのパフォーマンスを表現および解析する視覚的なプロトタイプ生成ツールです。

このドキュメントでは、インテル® 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 [表示設定][スマートモード] フィルターを組み合わせたコントロールを提供します。
  • [表示設定][表示をカスタマイズ] をオンにして、表示するビューのレイアウトを選択します。[デフォルト (Default)][スマートモード (Smart Mode)]、またはカスタマイズされた表示レイアウトから選択できます。カスタマイズされた表示レイアウトを作成して、現在のプロジェクトやほかのプロジェクトに適用するには、次の操作を行います。
    1. [レイアウトを表示] ドロップダウン・リストの隣にある [設定] (歯車) をクリックして、[Configure Columns (カラム設定)] ダイアログボックスを開きます。
    2. [Configuration (設定)] ドロップダウン・リストから使用するレイアウトを選択します。
    3. 表示/非表示にするカラムをオン/オフにします。

      結果: [Configuration (設定)] ドロップダウン・リストで、選択した表示レイアウトの名前に [Copy n] が追加されます。

    4. [Rename (リネーム)] ボタンをクリックして、カスタマイズした表示レイアウトに適切な名前を付けます。
    5. [OK] をクリックしてカスタマイズした表示レイアウトを保存します。
  • [スマートモード・フィルター][表示をカスタマイズ] をオンにして、[合計 CPU 時間] (アプリケーションが関数/ループとその呼び出し先の実行に費やす時間) に基づいて、最適化の候補として表示されるデータを一時的に絞り込みます。[上位] ドロップダウン・リストでは次のいずれかを選択します。
    • 表示する上位ループ/関数の
    • 表示するループ/関数の [合計 CPU 時間] に対する [パーセンテージ] のしきい値

インテル® Advisor: 表示の設定

5 ボタンをクリックして、特定のデータを検索できます。
6 タブをクリックして、インテル® Advisor の各種レポートやビューを開きます。
7 カラムヘッダーを右クリックして次の操作を行います。
  • カラムを非表示にします。
  • 利用可能なすべてのレポートカラムを表示します。
  • [カラムの配置を設定] を選択して [Configure Columns (カラム設定)] ダイアログボックスを開きます (詳細は、上記の項目 4 を参照)。
8 クリックして、カラムセットで利用可能なすべてのカラムの表示と、カラムセットのプリセットカラムの表示を切り替えます。
9 コントロールをクリックして次の操作を行います。
  • カラムやカラムセットのデータをカスタマイズするオプションを表示します。
  • [Configure Columns (カラム設定)] ダイアログボックスを開きます (詳細は、上記の項目 4 を参照)。

例えば、[計算パフォーマンス] のカラムセットを選択して以下を適用します。

  • 浮動小数点操作のみ、整数操作のみ、または浮動小数点と整数操作のデータを表示します。
  • 整数計算で整数操作としてカウントされるものを決定します。
    • [純粋な整数計算操作を表示] を選択して、ADD、MUL、IDIV、および SUB 操作のみをカウントします。
    • [整数データを処理するすべての操作を表示] を選択して、ADD、ADC、SUB、MUL、IMUL、DIV、IDIV、INC/DEC、シフト、および回転操作をカウントします。
10 コントロールをクリックして、ハードウェアによって課せられるパフォーマンスの上限と実際のパフォーマンスを可視化し、制限の主な要因 (メモリー帯域幅や計算能力) を検証して、最適化ステップの理想的なロードマップが得られるように支援するグラフの表示/非表示を制御します。
11 [サーベイレポート] の上部にあるデータ行をクリックすると、その行に固有のデータが [サーベイレポート] の下部に表示されます。ループデータ行をダブルクリックすると、[サーベイソース] ウィンドウが表示されます。次のアイコンにより注目するデータ行を簡単に識別できます。
  • – ベクトル化された関数
  • – ベクトル化されたループ
  • – スカラー関数
  • – スカラーループ
12 チェックボックスをオンにして、ループをさらに詳しく解析するためマークします。
13 イメージが表示されていれば、クリックして [推奨] ペインにコード固有の問題の解決方法に関する情報を表示できます。
14 イメージが表示されていれば、クリックして[ベクトル化できない理由] ペインに自動ベクトル化が失敗した理由を表示できます。
15 コントロールをクリックして、[ワークフロー] ペインの表示/非表示を切り替えます。

ループの調査

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

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

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

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

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

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

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

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

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

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

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

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

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

ルーフライン・グラフについて

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

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

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

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

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

インテル® Advisor の基本ルーフライン・モデルである、キャッシュ対応のルーフライン・モデル (CARM) は、セルフデータ機能を提供します。コールスタック付きのインテル® Advisor のルーフラインは、合計データ機能により基本モデルを拡張します。

  • セルフデータは、ループ/関数自身に関連するメモリーアクセス、FLOP、および期間のみを示します。それらから呼び出されるほかのループ/関数で発生したデータは除外されます。
  • 合計データは、ループ/関数自身とそこから呼び出される関数/ループからのデータの合計を示します。

コールスタック付きのルーフラインの合計データは次のような場合に有用です。

  • ループや関数そのものではなく、ループや関数のソースを調査する場合。
  • 呼び出される状況により動作が異なるループ/関数の正確なデータを取得したい場合。
  • 小さなループ/関数によるパフォーマンス低下の原因の可能性である、呼び出しチェーンの上位にある設計の問題を明らかにする場合。

次の [ルーフライン] グラフは、コールスタック付きのルーフラインによってもたらされる追加の利点を示します:

  • 選択されたループ/関数の呼び出しチェーン全体 (呼び出し先は除外) を、ナビゲーション可能な色分けされた [コールスタック] ペインに示します。
  • 視覚的なインジケーター (矢印) でループと関数の関係 (呼び出し側と呼び出し先) を示します。
  • いくつかの小さなループを 1 つにまとめて、多数の点 (ドット) があるグラフを単純化できます。

    セルフデータを持たないループ/関数は、展開されるとグレー表示になり、折りたたむとカラー表示になります。セルフデータを含むループ/関数は、展開されるとデータに適した座標、サイズ、およびカラーで表示されますが、合計時間に関連するサイズは薄いグレーで表示されます。そのようなループ/関数が折りたたまれると、それらは合計時間に適したサイズとカラーで表示され、該当する場合は合計パフォーマンスと合計演算強度が反映されます。

インテル® Advisor: コールスタックとルーフライン

[ルーフライン] グラフのコールスタック付きのルーフライン拡張を作成、表示、および解釈する方法の詳細については、「コールスタック付きルーフライン」 (英語) を参照してください。

[ルーフライン] グラフの表示にはいくつかのコントロールがあります。
インテル® Advisor: ルーフライン・グラフとサーベイレポート

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

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

1
  • マウスで矩形領域を選択して 1 つ以上のループ/関数を選択します。
  • マウスで矩形領域を選択してズームイン/ズームアウトします。マウスホイールでズームイン/ズームアウトすることもできます。
  • グラフを上下左右に移動します。
  • ズームを解除/再適用します。
  • デフォルトのズームレベルにリセットします。
  • インテル® Advisor を起動することなく表示できる、動的な対話型の HTML または SVG ファイルとしてグラフをエクスポートします。ドロップダウンからオプションを切り替えます。
2
  • アプリケーションがシステムで利用可能なコアよりも少ないスレッドを使用する場合、実際のパフォーマンスの上限を観測するためルーフを調整します。
  • シングルスレッドのアプリケーション (または、ランクごとに 1 つのスレッドを実行するような MPI アプリケーションなど、シングルスレッドで実行するように構成されたマルチスレッド・アプリケーション) 向けにルーフをビルドする際にこのチェックボックスを使用します。(インテル® Advisor のフィルターを使用して [ルーフライン] グラフに表示するループを制御できますが、[ルーフライン] グラフは [スレッド] フィルターをサポートしていません。)
3
  • 浮動小数点操作、整数操作、および混在操作 (浮動小数点と整数) 間で表示を切り替えます。
  • コールスタック情報付きの [ルーフライン] グラフを表示します。
4 比較のため、インテル® Advisor で生成したほかの結果や、アーカイブされていないスナップショットから [ルーフライン] グラフデータを表示します。

ドロップダウン・ツールバーを使用して次の操作を行います。

  • 結果/スナップショットをロードして、対応するファイル名を [比較結果] に表示します。
  • 選択した結果/スナップショットをクリアして、対応するファイル名を [比較の準備完了] に移動します。

    : 結果/スナップショットを再ロードするには、[比較の準備完了] にあるファイル名をクリックします。

  • 比較をファイルに保存します。

    : それぞれのループ/関数間の関係を示す矢印は、比較ファイルをアップロードしても再表示されません。

表示されている結果上でループ/関数の点をクリックすると、ロードされた結果/スナップショットの対応するループ/関数の点との関係 (矢印付きのライン) が示されます。

インテル® Advisor: ルーフラインの比較

5
  • ループ/関数が本質的に次のいずれかであることを示すため、[ルーフライン] グラフの ゾーン を色分けします。
    • メモリー依存 – メモリー・アクセス・パターンを改善するか、キャッシュ・ブロッキングの導入を検討してください。
    • 計算依存 – 別の命令セット・アーキテクチャー (ISA) または、より高速な命令 (FMA 命令など) の使用を検討してください。
    • メモリールーフがある計算依存。
  • デフォルトのスケール設定を調整します。
    • [ルーフライン] グラフに最適なスケール
    • すべての [ルーフライン] グラフに適したスケール
  • ルーフライン (線) の可視性と外観を変更します。
  • ループ/関数の重さ (点) の外観を変更します。
  • ルーフの値を手動で調整してコードに固有のハードウェアの制限を適用できます。
6 数値を指定してズームイン/ズームアウトします。
7 項目にマウスをホバーするとその項目のメトリックが表示されます。

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

次の処理を行うためループ/関数の点をクリックします:

  • 外枠を太い黒線にする。
  • メトリックを表示する。
  • コールスタック付きのルーフラインが有効な場合、利用可能なコールスタックが色分けして表示されます。
  • 対応するデータをほかのウィンドウタブに表示します。

[コールスタック] ペインの項目をクリックして、[ルーフライン] グラフで対応するループ/関数の点を点滅させることもできます。

コールスタック付きのルーフラインが有効な場合、ループ/関数の点の インテル® Advisor: 折りたたみ コントロールをクリックして、親の点に配下の点を折りたたむか、 Intel Advisor: Expand control コントロールをクリックして配下の点と親の点に対するそれらの関係をインジケーターで表示します。

[ルーフライン] グラフでループ/関数の点または空白の部分を右クリックすると、次のような機能を実行できます。

  • フィルターアウト (一時的に点を非表示)、フィルターイン (一時的にほかのすべての点を非表示)、またはフィルターをクリア (最初に表示されていたすべての点を表示) で [ルーフライン] グラフをさらに簡略化します。
  • クリップボードへデータをコピーします。
8 コールスタック付きルーフラインが有効な場合、[コールスタック] ペインを表示/非表示にできます。
9 ループの重さを示すカテゴリー別にループの数と比率を表示します。

環境の設定

環境 設定手順
インテル® 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 は [ルーフライン] グラフを表示します。

ルーフラインとコールスタック機能を実装するには、次の手順を実行します。
インテル® Advisor: コールスタックとルーフライン

  1. [コールスタック付き] チェックボックスをオンにしてルーフライン解析を実行します。完了すると、インテル® Advisor は [ルーフライン] グラフを表示します。
  2. [ルーフライン] グラフで、 [コールスタック付き] を有効にします。

注:

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

ループの調査

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

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

  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 のワークフロー: スレッド化のプロトタイプを作成

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

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

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

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

環境の設定

環境 設定手順
インテル® 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] を選択して、[プロジェクトのプロパティー] ダイアログボックスを開きます。
  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 の結果を表示

このセクションでは macOS* マシン上でのインテル® Advisor の使い方を説明します。

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

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

共有ドライブがない場合

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

  1. macOS* マシンにインテル® Advisor GUI のみをインストールします。
  2. リモートマシンにインテル® Advisor をインストールします。CLI のみを使用してデータを収集する場合、フルパッケージまたはパッケージの一部 (CLI のみなど) をインストールできます。
  3. リモートマシン上での操作:
    • 最も正確で完全な解析結果を得られる設定を使用して、リリースモードでアプリケーションの最適化されたバイナリーをビルドします。設定の詳細については、「解析を始める前に」をご覧ください。
    • 環境を設定した後、インテル® Advisor を起動してプロジェクトを作成し、目的のデータを収集します。詳しい手順については、このドキュメントのワークフローを参照してください。
    • 収集したデータのスナップショットを作成するには、次の手順のいずれかを実行します。
      • GUI で インテル® Advisor のコントロール: スナップショット アイコンをクリックします。詳細については、インテル® Advisor ユーザーガイドの「読み取り専用の結果スナップショットを作成」をご覧ください。
      • CLI で、advixe-cl -snapshot コマンドを使用します。コマンドラインの例は、このドキュメントの「インテル® Advisor のワークフローを自動化」をご覧ください。

      ソースとバイナリーの両方を zip アーカイブファイルに含めてください。

    • 結果ファイル .advixeexpz を macOS* マシンにコピーします。
  4. macOS* マシン上での操作:
    • 次のいずれかの source コマンドを実行して環境を設定します。
      source <advisor-install-dir>/advixe-vars.csh
      または
      source <advisor-install-dir>/advixe-vars.sh
    • インテル® Advisor を起動します。
    • [File] > [Open] > [Result] メニューオプションから、結果ファイル .advixeexpz を開きます。

共有ドライブがある場合

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

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

コールスタック付きのルーフライン解析を実行する Linux*:advixe-cl –collect=roofline –stacks –-project-dir=./myAdvisorProj — myTargetApplication

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

リファインメント解析を行うループ 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 キーなど) で、対応する特定のトピックの代わりにドキュメントのタイトルページが開く。解析策: 別のブラウザーを使用してください。
    • ペインの一部しか表示されず、適切なスタイルシートが適用されていない。解析策: 別のブラウザーを使用してください。

関連記事