解析のオーバーヘッドを最小化する実行速度/持続時間/範囲のプロパティー

問題

検出されたすべてのループでインテル® Advisor を使用してターゲット・アプリケーションを実行すると、ターゲット・アプリケーションの実行時間が大幅に増加する場合があります。パースペクティブで選択した精度レベルと解析に応じて、アプリケーションの実行時間には異なるオーバーヘッドが追加されます。以下に例を示します。

ランタイム・オーバーヘッド/解析

サーベイ

特性化

依存関係

MAP

インテル® Advisor を使用した場合と、使用しない場合のアプリケーションの実行時間の比較

1.1x 増加

2 - 55x 増加

5 - 100x 増加

5 - 20x 増加

ソリューション

次の手法を使用して、インテル® Advisor が解析データを収集するオーバーヘッドを最小化します。オプションの解析を無効にすると、ファイナライズのオーバーヘッドを最小化できます。

オフライン (収集後) からオンライン (収集中) にスタックウォーク・モードを変更

収集のオーバーヘッドを最小化します。

適用される解析: サーベイ解析。

次の場合オフライン/収集後に設定します。

次のコマンドでは、コマンドを実行する前にmyApplicationをアプリケーションの実行可能ファイルのパスと名前に置き換えてください。アプリケーションが引数を必要とする場合、実行可能ファイル名のにそれらを指定します。

実装するには、サーベイ解析の実行前/実行中に次のいずれかを行います。

スタック収集を無効にする

収集のオーバーヘッドを最小化します。

適用される解析: トリップカウント & FLOP 収集を有効にした特性化。

実装するには、解析の実行前/実行中に次のいずれかを行います。

スタックのスティッチを無効化

収集のオーバーヘッドを最小化します。

適用される解析: サーベイ解析。

このオプションは、ランタイムからの通知をキャッチして並列ワークロードに入るポイントでスタックをアタッチすることで、インテル® oneAPI スレッディング・ビルディング・ブロック (oneTBB) や OpenMP* アプリケーションの論理的な呼び出しツリーを復元します。

サーベイ解析の実行時のオーバーヘッドが 1.1x を超えている場合、無効化します。

: 次のコマンドでは、コマンドを実行する前にmyApplicationをアプリケーションの実行可能ファイルのパスと名前に置き換えてください。アプリケーションが引数を必要とする場合、実行可能ファイル名のにそれらを指定します。

実装するには、解析の実行前/実行中に次のいずれかを行います。

スタックのスティッチを無効にすると、oneTBB を使用するアプリケーションのオーバーヘッドが減少することがあります。

サンプリング間隔を増やします

収集のオーバーヘッドを最小化します。

適用される解析: サーベイ解析。

ターゲット・アプリケーションの実行時間が長い場合、各解析収集のサンプル間の待機時間を増やします。

次のコマンドでは、コマンドを実行する前にmyApplication をアプリケーションの実行可能ファイルのパスと名前に置き換えてください。アプリケーションが引数を必要とする場合、実行可能ファイル名のにそれらを指定します。

実装するには、解析の実行前/実行中に次のいずれかを行います。

収集する解析データを制限します

収集のオーバーヘッドを最小化します。

適用される解析: サーベイ解析。

サイズのしきい値を超えると問題が発生する場合、収集する生データの量を減らします。以下に例を示します: ストレージの容量に制限があります。

次のコマンドでは、コマンドを実行する前にmyApplicationをアプリケーションの実行可能ファイルのパスと名前に置き換えてください。アプリケーションが引数を必要とする場合、実行可能ファイル名のにそれらを指定します。

実装するには、解析の実行前/実行中に次のいずれかを行います。

ループの呼び出しカウントを制限します

収集のオーバーヘッドを最小化します。

適用される解析: 依存関係、メモリー・アクセス・パターン解析。

マークされたそれぞれのループが解析されるインスタンスの最大数を減らします。

次のコマンドでは、コマンドを実行する前にmyApplication をアプリケーションの実行可能ファイルのパスと名前に置き換えてください。アプリケーションが引数を必要とする場合、実行可能ファイル名のにそれらを指定します。

実装するには、解析の実行前/実行中に次のいずれかを行います。

オプションの解析を無効化

ファイナライズのオーバーヘッドを最小化します。

適用される解析: サーベイ解析。

オプションのデータが必要ない場合、これらの手法を導入してください。

次の表のプロパティー/オプションのデフォルト設定は無効になっています。

パス: [Project Properties (プロジェクトのプロパティー)] > [Analysis Target (解析ターゲット)] > [Survey Hotspots Analysis (サーベイ・ホットスポット解析)] > [Advanced (高度)]

CLI アクションのオプション

説明

[Analyze MKL loops and functions (MKL ループと関数を解析)] チェックボックスをオフにします。

--no-mkl-user-mode

インテル® oneAPI マス・カーネル・ライブラリーのループと関数をインテル® Advisor のレポートに表示しません。

[Analyze Python loops and functions (Python ループと関数を解析)] チェックボックスをオフにします。

--no-profile-python

インテル® Advisor のレポートに Python* のループと関数を表示します。

[Analyze loops that reside in non-executed code paths (実行されなかったコードパスのループを解析)] チェックボックスをオフにします。

--no-support-multi-isa-binaries

以下を含む、実行されないコードパスにあるループのデータを収集しないでください。

  • ループのアセンブリー・コード

  • 命令セットアーキテクチャー (ISA)

  • ベクトル長

この機能は、-ax(Linux*)/Qax(Windows*) オプションを使用してインテル® コンパイラーでコンパイルされたバイナリーでのみ使用できます。

[Enable register spill/fill analysis (レジスターのスピル/フィル解析を有効にする)] チェックボックスをオフにします。

--no-spill-analysis

レジスターの連続したロード/ストア操作数と、関連するメモリー・トラフィックを計算しないでください 。

[静的な命令ミックス解析を有効にする] チェックボックスをオフにします。

--no-static-instruction-mix

バイナリー内の特定の命令数を静的に計算しないでください。

関連情報