解析のオーバーヘッドを最小化

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

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

サーベイ

特性化

依存関係

MAP

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

1.1x 増加

2 - 55x 増加

5 - 100x 増加

5 - 20x 増加

次の表は、インテル® Advisor の解析データを収集と、ファイナライズのオーバーヘッドを最小限にする方法をまとめたものです。

収集のコントロール

次の表は、これらの関連をまとめたものです。詳細については、解析のオーバーヘッドを最小化する収集のコントロール手法を参照してください。

最小化の手法

影響する解析

サマリー

API を使用して収集のポーズと再開

  • サーベイ

  • 特性化

収集のポーズ:

  • C++:__itt_pause

  • Fortran: ITTNOTIFY 文を使用して ITT_PAUSE() サブルーチンを呼び出します

収集の再開:

  • C++:__itt_resume

  • Fortran: ITTNOTIFY 文を使用して __itt_resume() サブルーチンを呼び出します

アノテーションを使用して収集のポーズ/再開

  • サーベイ

  • 依存関係

一部の解析タイプでは、スレッド化パースペクティブのワークフローで使用されるアノテーション構造が認識されます。

収集のポーズ:

  • C++:ANNOTATE_DISABLE_COLLECTION_PUSH

  • Fortran:call annotate_disable_collection_push()

  • C#:Annotate.DisableCollectionPush();

収集の再開:

  • C++:ANNOTATE_DISABLE_COLLECTION_POP

  • Fortran:call annotate_disable_collection_push()

  • C#:Annotate.DisableCollectionPop();

インテル® Advisor 2021.1 以降では C# と .NET のサポートが非推奨となりました。

収集をポーズしてアプリケーションを起動します

  • サーベイ

  • 特性化

収集をポーズしてアプリケーションを起動します。

  • GUI 制御: [Workflow (ワークフロー)] ペイン > [Start paused (ポーズして開始)] コントロール

  • Advisor CLI アクションオプション:-start-paused

さまざまな方法で収集を再開できます。最も一般的なものが__itt_resume

収集をポーズしてターゲット・アプリケーションを開始し、N 秒後に収集を再開します

  • サーベイ

  • 特性化

GUI 制御: [Project Properties (プロジェクトのプロパティー)] > [Analysis Target (解析ターゲット)] > [<Name> Analysis (<名前>解析)] > [Advanced (高度)] > [Automatically resume collection after (sec) (指定時間後に収集を自動再開 (秒))] チェックボックス

Advisor CLI アクションオプション:-resume-after=<integer>

N 秒後に収集を停止

All

GUI 制御: [プロジェクトのプロパティー] > [解析ターゲット] > [<解析名>解析] > [高度] > [指定時間後に収集を自動停止 (秒)] チェックボックスとフィールド

Advisor CLI アクション:-stop-after=<integer>

収集を停止

All

GUI 制御: [ワークフロー] ペイン > [解析を停止] コントロールと [サイトカバレージ] ウィジェット

Advisor CLI アクションオプション:-command=stop

手動で収集をポーズ/手動で収集を再開

  • サーベイ

  • 特性化

収集のポーズ:

  • GUI 制御: [ワークフロー] ペイン > [ポーズして] コントロール

  • Advisor CLI アクション:-command=pause

収集の再開:

  • GUI 制御: [ワークフロー] ペイン > [再開] コントロール

  • Advisor CLI アクション:-command=resume

プロセスへアタッチ/プロセスからデタッチ

  • サーベイ

  • 特性化

プロセスにアタッチ:

  • GUI 制御: [プロジェクトのプロパティー] > [解析ターゲット] > <解析名>解析 > [アプリケーションを起動] ドロップダウン・リスト > [プロセスにアタッチ]

  • Advisor CLI アクションオプション:-target-pid=<unsigned integer> および -target-process=<string>

プロセスからデタッチ:

  • GUI 制御: [ワークフロー] ペイン > [解析を停止] コントロール

  • Advisor CLI アクション:-command=detach

ループのマーク

次の表は、これらの関連をまとめたものです。詳細については、解析のオーバーヘッドを最小化するループのマークを参照してください。

最小化の手法

影響を受けるインテル® Advisor の解析

サマリー

ID でループを選択

  • 特性化

  • 依存関係

  • メモリー・アクセス・パターン

GUI 制御: [サーベイレポート] チェックボックス

Advisor CLI アクションオプション:-mark-up-list=<string>

ソースファイル/行でループを選択

  • 特性化

  • 依存関係

  • メモリー・アクセス・パターン

GUI 制御: [サーベイレポート] チェックボックス

Advisor CLI アクション:-mark-up-loops とアクションオプション -select=<string>

基準でループを選択

  • 依存関係

  • メモリー・アクセス・パターン

Advisor CLI アクション:-mark-up-loops または -collect とアクションオプション-loops=<string>

フィルター処理

次の表は、これらの関連をまとめたものです。詳細については、解析のオーバーヘッドを最小化するフィルター処理を参照してください。

最小化の手法

影響を受けるインテル® Advisor の解析

サマリー

モジュールのフィルター処理

  • サーベイ

  • 特性化

GUI 制御: [プロジェクトのプロパティー] > [解析ターゲット] > [<名前> 解析] > [モジュール] オプションとフィールド

Advisor CLI アクションオプション:-module-filter-mode=include | exclude および -module-filter=<string>

実行速度/持続時間/範囲プロパティー

次の表は、これらの関連をまとめたものです。詳細については、解析のオーバーヘッドを最小化する実行速度/持続時間/範囲のプロパティーを参照してください。

最小化の手法

影響を受けるインテル® Advisor の解析

サマリー

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

サーベイ

GUI 制御: [プロジェクトのプロパティー] > [解析ターゲット] > [サーベイ・ホットスポット解析] > [高度] > [スタック・アンワインド・モード] > [収集中]

Advisor CLI アクションオプション:-stackwalk-mode=online

スタック収集を無効化

  • 特性化

GUI 制御:

  • [ベクトル化ワークフロー] ペイン > [コールスタック付き] チェックボックス

  • [プロジェクトのプロパティー] > [解析ターゲット] > [トリップカウントと FLOP 解析] > [高度] > [スタックを収集] チェックボックス

Advisor CLI アクションオプション:-no-stacks (または、CLI アクションのオプション -stacks advisor コマンドラインで指定されていないことを確認してください)

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

サーベイ

GUI 制御: [プロジェクトのプロパティー] > [解析ターゲット] > [サーベイ・ホットスポット解析] > [高度] > [スタックのスティッチ] チェックボックス

Advisor CLI アクションオプション:-no-stack-stitching

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

サーベイ

GUI 制御: [プロジェクトのプロパティー] > [解析ターゲット] > [サーベイ・ホットスポット解析] > [高度] > [サンプリング間隔] フィールド

Advisor CLI アクションオプション:interval=<integer>

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

サーベイ

GUI 制御: [プロジェクトのプロパティー] > [解析ターゲット] > [サーベイ・ホットスポット解析] > [高度] > [収集データの制限 (MB)] フィールド

Advisor CLI アクションオプション:-data-limit=<integer>

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

  • 依存関係

  • メモリー・アクセス・パターン

GUI 制御: [プロジェクトのプロパティー] > [解析ターゲット] > <名前> 解析 > [高度] > [ループの呼び出し回数の制限] フィールド

Advisor CLI アクションオプション:-loop-call-count-limit=<integer>

追加の解析を無効化

サーベイ

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

  • [Analyze MKL loops and functions (MKL ループと関数を解析)] チェックボックス

  • [Analyze Python loops and functions (Python* ループと関数を解析)] チェックボックス

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

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

  • [Enable static instruction mix analysis (静的な命令ミックス解析を有効にする)] チェックボックス

Advisor CLI アクションオプション:

  • -no-mkl-user-mode

  • -no-profile-python

  • -no-support-multi-isa-binaries

  • -no-spill-analysis

  • -no-static-instruction-mix

その他の手法

次の表は、これらの関連をまとめたものです。詳細については、解析のオーバーヘッドを最小化するその他の手法を参照してください。

最小化の手法

影響を受けるインテル® Advisor の解析

サマリー

キャッシュ・シミュレーションを無効化

  • 特性化

  • メモリー・アクセス・パターン

GUI 制御:

  • [プロジェクトのプロパティー] > [解析ターゲット] > [メモリー・アクセス・パターン解析] > [高度] > [CPU キャッシュのシミュレーションを有効にする] チェックボックス

  • [プロジェクトのプロパティー] > [解析ターゲット] > [トリップカウントと FLOP 解析] > [高度] > [CPU キャッシュ・シミュレーションを有効にする] チェックボックス

Advisor CLI アクションオプション:-no-enable-cache-simulation

レポートデータの制限

メモリー・アクセス・パターン

GUI 制御:

  • [プロジェクトのプロパティー] > [解析ターゲット] > [メモリー・アクセス・パターン解析] > [高度] > [スタック変数をレポート] チェックボックス

  • [プロジェクトのプロパティー] > [解析ターゲット] > [メモリー・アクセス・パターン解析] > [高度] > [ヒープ割り当て変数をレポート] チェックボックス

Advisor CLI アクションオプション:

  • -no-record-stack-frame

  • -no-record-mem-allocations

データセットを最小化

すべて、特に:

  • 依存関係

  • メモリー・アクセス・パターン

ターゲット・アプリケーションの制御フローパスを広く実行しながら、ループ内で実行される命令数を最小限に抑えます

GUI で結果を開くまで、ファイナライズを一時的に無効化

  • サーベイ

  • 特性化

GUI 制御: [Workflow (ワークフロー)] ペイン > ファイナライズ中に [Cancel current analysis (解析をキャンセル)]

Advisor CLI アクションオプション:-no-auto-finalize