検出されたすべてのループでインテル® Advisor を使用してターゲット・アプリケーションを実行すると、ターゲット・アプリケーションの実行時間が大幅に増加する場合があります。パースペクティブで選択した精度レベルと解析に応じて、アプリケーションの実行時間には異なるオーバーヘッドが追加されます。以下に例を示します。
ランタイム・オーバーヘッド/解析 |
サーベイ |
特性化 |
依存関係 |
MAP |
|---|---|---|---|---|
インテル® Advisor を使用した場合と、使用しない場合のアプリケーションの実行時間の比較 |
1.1x 増加 |
2 - 55x 増加 |
5 - 100x 増加 |
5 - 20x 増加 |
次の手法を使用して、インテル® Advisor が解析データを収集するオーバーヘッドを最小化します。オプションの解析を無効にすると、ファイナライズのオーバーヘッドを最小化できます。
収集のオーバーヘッドを最小化します。
適用される解析: サーベイ解析。
次の場合オフライン/収集後に設定します。
サーベイ解析の実行時のオーバーヘッドが 1.1x を超えている場合。
これは、Fortran アプリケーションや多数の小さな OpenMP* 並列領域を持つアプリケーションで大量のデータがスタックに割り当てられる一般的なケースです
注次のコマンドでは、コマンドを実行する前にmyApplicationをアプリケーションの実行可能ファイルのパスと名前に置き換えてください。アプリケーションが引数を必要とする場合、実行可能ファイル名の後にそれらを指定します。
実装するには、サーベイ解析の実行前/実行中に次のいずれかを行います。
[プロジェクトのプロパティー] > [解析ターゲット] > [サーベイ・ホットスポット解析] > [高度] > [スタック・アンワインド・モード] > [収集中]。
Advisor CLI のアクションオプション --stackwalk-mode=online を使用します。以下に例を示します。
advisor --collect=survey --project-dir=./advi_results --stackwalk-mode=online -- ./myApplication収集のオーバーヘッドを最小化します。
適用される解析: トリップカウント & FLOP 収集を有効にした特性化。
実装するには、解析の実行前/実行中に次のいずれかを行います。
[Analysis Workflow (解析ワークフロー)] ペインで [Characterization (特性化)] > [Collect call stacks (コールスタック)] チェックボックスを無効にします。
[Project Properties (プロジェクトのプロパティー)] > [Analysis Target (解析ターゲット)] > [Trip Counts and FLOP Analysis (トリップカウントと FLOP 解析)] > [Advanced (高度)] > [Collect stacks (スタックを収集)] チェックボックスを無効にします。
CLI アクションオプション--stacksがコマンドラインで指定されていないことを確認してください。代替: CLI のアクションオプション --no-stacks を使用します。
収集のオーバーヘッドを最小化します。
適用される解析: サーベイ解析。
このオプションは、ランタイムからの通知をキャッチして並列ワークロードに入るポイントでスタックをアタッチすることで、インテル® oneAPI スレッディング・ビルディング・ブロック (oneTBB) や OpenMP* アプリケーションの論理的な呼び出しツリーを復元します。
サーベイ解析の実行時のオーバーヘッドが 1.1x を超えている場合、無効化します。
注: 次のコマンドでは、コマンドを実行する前にmyApplicationをアプリケーションの実行可能ファイルのパスと名前に置き換えてください。アプリケーションが引数を必要とする場合、実行可能ファイル名の後にそれらを指定します。
実装するには、解析の実行前/実行中に次のいずれかを行います。
[Project Properties (プロジェクトのプロパティー)] > [Analysis Target (解析ターゲット)] > [Survey Hotspots Analysis (サーベイ・ホットスポット解析)] > [Advanced (高度)] > [Stitch stacks (スタックのスティッチ)] チェックボックスを無効にします。
Advisor CLI のアクションオプション --no-stack-stitching を使用します。以下に例を示します。
advisor --collect=survey --project-dir=./advi_results --no-stack-stitching -- ./myApplicationスタックのスティッチを無効にすると、oneTBB を使用するアプリケーションのオーバーヘッドが減少することがあります。
収集のオーバーヘッドを最小化します。
適用される解析: サーベイ解析。
ターゲット・アプリケーションの実行時間が長い場合、各解析収集のサンプル間の待機時間を増やします。
注次のコマンドでは、コマンドを実行する前にmyApplication をアプリケーションの実行可能ファイルのパスと名前に置き換えてください。アプリケーションが引数を必要とする場合、実行可能ファイル名の後にそれらを指定します。
実装するには、解析の実行前/実行中に次のいずれかを行います。
[プロジェクトのプロパティー] > [解析ターゲット] > [サーベイ・ホットスポット解析] > [高度] > [サンプリング間隔] チェックボックスをオフにします。
サーベイ解析を実行する際に、CLI のアクションオプション --interval=<integer> を使用します。以下に例を示します。
advisor --collect=survey --project-dir=./advi_results --interval=20 -- ./myApplication収集のオーバーヘッドを最小化します。
適用される解析: サーベイ解析。
サイズのしきい値を超えると問題が発生する場合、収集する生データの量を減らします。以下に例を示します: ストレージの容量に制限があります。
注次のコマンドでは、コマンドを実行する前にmyApplicationをアプリケーションの実行可能ファイルのパスと名前に置き換えてください。アプリケーションが引数を必要とする場合、実行可能ファイル名の後にそれらを指定します。
実装するには、解析の実行前/実行中に次のいずれかを行います。
[Project Properties (プロジェクトのプロパティー)] > [Analysis Target (解析ターゲット)] > [Survey Hotspots Analysis (サーベイ・ホットスポット解析)] > [Advanced (高度)] > [Collection data limit, MB (収集データの制限 (MB))] フィールドの値を減らします。
CLI のアクションオプション --data-limit=<integer> の値を減らします。以下に例を示します。
advisor --collect=survey --project-dir=./advi_results --data-limit=250 -- ./myApplication収集のオーバーヘッドを最小化します。
適用される解析: 依存関係、メモリー・アクセス・パターン解析。
マークされたそれぞれのループが解析されるインスタンスの最大数を減らします。
注次のコマンドでは、コマンドを実行する前にmyApplication をアプリケーションの実行可能ファイルのパスと名前に置き換えてください。アプリケーションが引数を必要とする場合、実行可能ファイル名の後にそれらを指定します。
実装するには、解析の実行前/実行中に次のいずれかを行います。
[Project Properties (プロジェクトのプロパティー)] > [Analysis Target (解析ターゲット)] > [<Name> Analysis] (<解析名> 解析) > [Advanced (高度)] > [Loop Call Count Limit (ループの呼び出し回数の制限)] フィールドにゼロ以外の値を設定します。
CLI のアクションオプション --loop-call-count-limit=<integer> にゼロ以外の値を指定します。以下に例を示します。
advisor --collect=dependencies --project-dir=./advi_results --loop-call-count-limit=10 -- ./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 (実行されなかったコードパスのループを解析)] チェックボックスをオフにします。 |
以下を含む、実行されないコードパスにあるループのデータを収集しないでください。
注この機能は、-ax(Linux*)/Qax(Windows*) オプションを使用してインテル® コンパイラーでコンパイルされたバイナリーでのみ使用できます。 |
|
[Enable register spill/fill analysis (レジスターのスピル/フィル解析を有効にする)] チェックボックスをオフにします。 |
--no-spill-analysis | レジスターの連続したロード/ストア操作数と、関連するメモリー・トラフィックを計算しないでください 。 |
[静的な命令ミックス解析を有効にする] チェックボックスをオフにします。 |
--no-static-instruction-mix | バイナリー内の特定の命令数を静的に計算しないでください。 |