インテル® Advisor を使用してターゲット・アプリケーションを実行すると、ターゲット・アプリケーションの実行時間が大幅に増加する場合があります。パースペクティブで選択した精度レベルと解析に応じて、アプリケーションの実行時間には異なるオーバーヘッドが追加されます。以下に例を示します。
ランタイム・オーバーヘッド/解析 |
サーベイ |
特性化 |
依存関係 |
MAP |
---|---|---|---|---|
インテル® Advisor を使用した場合と、使用しない場合のアプリケーションの実行時間の比較 |
1.1x 増加 |
2 - 55x 増加 |
5 - 100x 増加 |
5 - 20x 増加 |
次の手法は、収集範囲を制限せずオーバーヘッドを最小限に抑えるのに役立ちます。
収集のオーバーヘッドを最小化します。
適用される解析:
メモリー・アクセス・パターン (ベースのシミュレーション機能)
トリップカウント & FLOP 収集を有効にした特性化 (拡張シミュレーション機能)
キャッシュのモデル化情報が重要でない場合、次の手法を導入してください。
次の表のプロパティー/オプションのデフォルト設定は無効になっています。
[Analysis Workflow (解析のワークフロー)] ペインで、[Characterization (特性化)] 解析の [Characterization (特性化)] > [Enable CPU cache simulation (CPU キャッシュのシミュレーションを有効にする)] をオフにします。
[Project Properties (プロジェクトのプロパティー)] から :
パス: [Project Properties (プロジェクトのプロパティー)] > [Analysis Target (解析ターゲット)...] |
CLI アクションのオプション |
説明 |
---|---|---|
[Memory Access Patterns Analysis (メモリー・アクセス・パターン解析)] > [Advanced (高度)] > [Enable Memory-Level Roofline with cache simulation (CPU キャッシュのシミュレーションを有効にする)] チェックボックスをオフにします。 |
--no-enable-cache-simulation | キャッシュミス、キャッシュミスとキャッシュライン利用率、またはキャッシュミスとループのフットプリントをモデル化しないでください 。 |
[トリップカウント & FLOP 解析] > [高度] > [CPU キャッシュ・シミュレーションを有効にする] チェックボックスをオフにします。 |
--no-enable-cache-simulation | 以下を行ってはなりません。
|
適用される解析: メモリー・アクセス・パターン。
オプションのデータが必要ない場合、これらの手法を導入してください。
次の表のプロパティー/オプションのデフォルト設定は有効になっています。
[Project Properties (プロジェクトのプロパティー)] > [Analysis Target (解析ターゲット)] > [Memory Access Patterns Analysis (メモリー・アクセス・パターン解析)] > [Advanced (高度)] |
CLI アクションのオプション |
説明 |
---|---|---|
[Report stack variables (スタック変数をレポート)] チェックボックスをオフにします。 |
--no-record-stack-frame | メモリー・アクセス・ストライドが検出されたスタック変数をレポートしません。 |
[ヒープに割り当てられた変数をレポート] チェックボックスをオフにします。 |
--no-record-stack-frame | メモリー・アクセス・ストライドが検出されたヒープ割り当て変数をレポートしません。 |
収集のオーバーヘッドを最小化します。
適用される解析: すべて、特に依存関係、メモリー・アクセス・パターン。
解析を実行するとき、インテル® Advisor はデータセットに対してターゲットを実行します。データセットのサイズとワークロードは、ターゲット・アプリケーションの実行時間と解析速度に直接影響します。
例えば、1000x1000 ピクセルのイメージのほうが、100x100 ピクセルのイメージよりも処理が長くなります。その理由として、大きなイメージはループで 1...1000 の反復空間が必要ですが、小さなイメージは 1...100 で済みます。完全に同じコードパスを両方のケースで実行すると、その違いはコードパスの繰り返し回数だけです。
ターゲットの実行から冗長な処理を省くことで、完全性を損なうことなく、解析時間を制御できます。
大きな繰り返し型のデータセットの代わりに、ターゲット・アプリケーションの制御フローパスを広く実行しながら、ループ内で実行される命令数を最小限に抑えるような、小さく典型的なデータセットを選択してください。
目的: 各タスク内の計算の繰り返しをコードカバレッジに必要な最小限に抑え、できるだけ短い実行時間でできるだけ多くのパスを実行することを目標とします。
10 秒以下で実行できるデータセットが理想的です。すべてのコードが確実にチェックされるように、追加のデータセットを作成しても良いでしょう。
ファイナライズのオーバーヘッドを最小化します。
適用される解析: サーベイ、トリップカウント & FLOP 収集を有効にした特性化。
収集した解析データを別のマシンで表示する際に使用します。別のマシンの GUI で結果が開かれるか、結果からレポートが生成されると、ファイナライズは自動的に実行されます。
注以下のコマンドでは、コマンドを実行する前に myApplication をアプリケーションの実行可能形式へのパスと名前に置き換える必要があります。アプリケーションが引数を必要とする場合、実行可能ファイル名の後にそれらを指定します。
実装するには、解析の実行前中に次のいずれかを行います。
解析データのファイナライズが始まったら、関連する [キャンセル] ボタンをクリックします。
対象の解析を実行する際に、advisor CLI アクションオプション -no-auto-finalize を使用します。例:
advisor --collect=survey --project-dir=./advi_results --no-auto-finalize -- ./myApplication
次の GUI で結果を開くと、結果は自動的に再ファイナライズされます。
CLI から解析を実行する際に結果を再ファイナライズするには、--report アクションで refinalize-survey オプションを指定します。例:
advisor --report=survey --search-dir src:=./src bin:=./bin --refinalize-survey --project-dir=./advi_results -- ./myApplication