インテル® Advisor ユーザーガイド

解析のオーバーヘッドを最小化する収集コントロール

問題

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

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

サーベイ

特性化

依存関係

MAP

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

1.1x 増加

2 - 55x 増加

5 - 100x 増加

5 - 20x 増加

ソリューション

次の手法を使用して、初期化フェーズなど、ターゲット・アプリケーションの重要ではない部分をスキップし、注目する部分のみを解析します。

ここでは、解析のオーバーヘッドを最小化するインテルのインストルメントおよびトレース・テクノロジー (ITT) API の使い方について詳しく説明します。https://github.com/intel/ittapi から ITT API のドキュメントを入手できます。

アノテーションによる収集のポーズ/再開

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

適用される解析: サーベイ、依存関係。

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

次の場合に使用します。

収集をポーズするには、コードに次のアノテーションを追加します。

収集を再開するには、コードに次のアノテーションを追加します。

詳細は、「収集のポーズと収集の再開アノテーション」を参照してください。

API による収集のポーズと再開

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

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

次の場合に使用します。

必要条件:

前提条件を整えて再コンパイルした後に、次のいずれかを行います。

起動されたアプリケーションに ITT API をアタッチするには (つまり、すでに起動されているアプリケーションで API データを収集するには)、環境変数を使用してターゲット・アプリケーションが ittnotify_collector ライブラリーを使用するようにします。

引用符なしでライブラリーへのフルパスを指定します。

設定が完了したら、適切な環境でインストルメントされたアプリケーションを起動します。インテル® Advisor が起動する前にアプリケーションが開始されても、インテル® Advisor は API データを収集します。

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

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

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

ターゲット・アプリケーションの初期フェーズ (初期化など) の解析を望まないが、レディーモードで解析を行う場合に使用します。

実装するには、次のいずれかを行います。

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

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

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

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

次の場合に使用します。

実装するには、次のいずれかを行います。

GUI フィールドには秒を表す値を、整数引数にはミリ秒を指定します。

N 秒後に収集を停止

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

適用される解析: サーベイ、トリップカウント & FLOP 収集を有効にした特性化、依存関係、メモリー・アクセス・パターン。

これは、収集をポーズした状態でアプリケーションを開始の逆です。次の場合に使用します。

実装するには、次のいずれかを行います。

GUI フィールドと整数引数の両方で秒を表す値を指定します。

収集を停止

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

適用される解析: サーベイ、トリップカウント & FLOP 収集を有効にした特性化、依存関係、メモリー・アクセス・パターン。

次の場合に使用します。

実装するには、次のいずれかを行います。

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

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

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

次の場合に使用します。

実装するには、次のいずれかを行い解析データの収集をポーズします (ターゲット・アプリケーションは続行しますが、解析データの収集を停止します)。

次のいずれかを実行して解析データの収集を再開します。

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

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

適用される解析: サーベイ、トリップカウント & FLOP 収集を有効にした特性化 (コールスタックなし)。

この手法は、すでに実行中のプロセスにアタッチできることを除いて、収集をポーズした状態でターゲット・アプリケーションを起動するのと似ています。これは、次のような場合に有益です。

GUI:

  1. [Project Properties] > [Analysis Target] > [<解析名> Analysis] > [Launch Application] ドロップダウン・リスト で [Attach to Process] を選択します。ここで、<解析名> は、Survey または Trip Counts & FLOP です。

  2. [Inherit settings from the Survey Hotspots Analysis Type] チェックボックスをオフにします。

  3. [Process name] または [PID] オプションを選択してプロセスを識別します。

  4. 必要に応じてその他の情報を入力し、[Project Properties] ダイアログボックスを閉じます。

  5. [Analysis Workflow] ペインで関連するコントロールをクリックして解析を実行します。

CLI: 目的の解析を実行するには、advisor CLI アクションオプション --target-pid=<unsigned integer> または --target-process=<string> を使用してプロセスにアタッチします。以下に例を示します。

advisor --collect=survey --project-dir=./myAdvisorProj --result-dir=./myAdvisorResult --target-process=myProcess

プロセスの解析データの収集を停止するには、次のいずれかを行います (プロセスの実行は続行しますが、解析データの収集を停止します)。

  • トリップカウント & FLOPを有効にした特性化解析を実行する場合、コールスタックが無効であることを (デフォルト設定) 確認してください。

    • [Project Properties] > [Analysis Target] > [Trip Counts & FLOP Analysis] > [Advanced] > [Collect stacks] チェックボックスをオフにします。

    • advisor CLI アクションオプション --no-stacks--collect コマンドに追加するか、--stacks アクションオプションを --collect に追加します。

  • ビルトイン関数の使用 advisor CLI アクション --command=stop を使用すると、プロセスが強制終了します (解析データの収集も停止します)。

関連情報