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

問題

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

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

サーベイ

特性化

依存関係

MAP

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

1.1x 増加

2 - 55x 増加

5 - 100x 増加

5 - 20x 増加

ソリューション

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

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

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

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

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

次の場合に使用します。

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

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

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

詳細は、収集のポーズと収集の再開アノテーションご覧ください。

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

インストルメントとトレース・テクノロジー (ITT) API を使用すると、データ収集がクラッシュします。

ヒント

MPI アプリケーションでは、標準の MPI 固有の関数MPI_Pcontrol(<N>)を使用して、データ収集を pause および resume できます。この関数では、静的 ITT API ライブラリーとのリンクが必要な ITT API 呼び出しとは異なり、アプリケーションのビルド手順を変更する必要はありません。詳細については、MPI_Pcontrol 関数を使用して収集を制御を参照してください。

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

次の場合に使用します。

要件:

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

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

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

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

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

https://github.com/intel/ittapi から ITT API のドキュメントを入手できます。

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

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

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

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

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

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

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

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

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

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

次の場合に使用します。

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

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

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

N 秒後に収集を停止

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

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

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

[Project Properties (プロジェクトのプロパティー)] > [Analysis Target (解析ターゲット)] > [[Name] Analysis (<解析名> 解析)] > [Advanced (高度)] > [Automatically stop collection after (sec) (指定時間後に収集を自動停止 (秒))] チェックボックスを有効にして値を設定します。ここで、[Name (解析名)] は [サーベイ] または [トリップカウント & FLOP] です。

[Analysis Workflow (解析ワークフロー)] ペインで標準の実行コントロールをクリックして、目的の解析を実行します。

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

収集を停止

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

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

次の場合に使用します。

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

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

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

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

次の場合に使用します。

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

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

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

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

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

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

GUI:

  1. [Project Properties (プロジェクトのプロパティー)] > [Analysis Target (解析ターゲット)] > [Name] Analysis (<解析名> 解析) > [Launch Application (アプリケーションを起動)] ドロップダウン・リスト で [Attach to Process (プロセスにアタッチ)] を選択します。ここで、[Name (解析名)] は、[サーベイ] または [トリップカウント & FLOP] です。

  2. [Inherit settings from 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=./advi_results --result-dir=./myAdvisorResult --target-process=myProcess

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

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

    • [Project Properties (プロジェクトのプロパティー)] > [Analysis Target (解析ターゲット)] > [Trip Counts and FLOP Analysis (トリップカウントと FLOP 解析)] > [Advanced (高度)] > [Collect stacks (スタックを収集)] チェックボックスを無効にします。

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

  • Advisor CLI アクション --command=stop を使用すると、プロセスが強制終了されます (これにより、解析データの収集も停止されます)。

関連情報