検出されたすべてのループでインテル® Advisor を使用してターゲット・アプリケーションを実行すると、ターゲット・アプリケーションの実行時間が大幅に増加する場合があります。パースペクティブで選択した精度レベルと解析に応じて、アプリケーションの実行時間には異なるオーバーヘッドが追加されます。以下に例を示します。
ランタイム・オーバーヘッド/解析 |
サーベイ |
特性化 |
依存関係 |
MAP |
|---|---|---|---|---|
インテル® Advisor を使用した場合と、使用しない場合のアプリケーションの実行時間の比較 |
1.1x 増加 |
2 - 55x 増加 |
5 - 100x 増加 |
5 - 20x 増加 |
次の手法を使用して、注目しないループをスキップしたり、注目するループのみを解析したりできます。
目的: 収集のオーバーヘッドを最小化します。
適用される解析: トリップカウント & FLOP 収集を有効にした特性化、依存関係、メモリー・アクセス・パターン解析。
次の場合に使用します。
少数のループのみをより深く解析したい場合。
CLI 環境: ソースコードにアクセスできないターゲット・アプリケーションを解析する場合、ソースファイル/行番号を特定することはできません。
注: 次のコマンドでは、コマンドを実行する前に myApplication をアプリケーションの実行可能ファイルのパスと名前に置き換えてください。アプリケーションが引数を必要とする場合、実行可能ファイル名の後にそれらを指定します。
要件:
サーベイ解析を実行します。
Advisor CLI 環境:注目するループのループ ID を特定します。
advisor --report=survey --project-dir=./advi_results -- ./myApplicationレポートの最初のカラムはループ ID です。
インテル® Advisor のレポートは広範囲となる傾向があります。次のいずれかの方法で読み取り可能なレポートを生成します。
行表示の折り返しを回避するため、コンソールの表示幅を適切に調整してください。
レポートの最初のいくつかのカラムのみに注目する場合、適切なコマンドを使用してレポートをパイプしてください。
前提条件を整えた後に、次のいずれかを行います。
ベクトル化と CPU ルーフライン: サーベイレポートの関連する
チェックボックスをオンにして、注目するループにマークを付けます。
次に トリップカウント & FLOP 収集を有効にした特性化、依存関係、またはメモリー・アクセス・パターン解析を実行します。
オフロードのモデル化: [Project Properties (プロジェクトのプロパティー)] > [Performance Modeling (パフォーマンスのモデル化)] に移動し、[Other parameters (その他のパラメーター)] フィールドに CLI アクションオプション--select=<string> を入力します。例:--select=5,10,12。
トリップカウントと FLOP 収集を有効にした特性評価、依存関係、またはメモリー・アクセス・パターン解析を実行するときに、CLI アクション・オプション --select=<string>(推奨)、または --mark-up-list=<string> を使用して対象のループをマークします。例えば、--select オプションを使用する場合:
advisor --collect=tripcounts --flop --project-dir=./advi_results --select=5,10,12 -- ./myApplication
次にトリップカウント & FLOP 収集を有効にした特性化、依存関係、またはメモリー・アクセス・パターン解析を実行します。
CLI 環境では異なる方法でループを選択します。
Advisor CLI アクションのオプション --mark-up-list=<string> と --select=<string> は、-collect アクションで使用されると GUI
チェックボックスの有効化をシミュレートするだけです。 これらは、--collectコマンドの実行中のみ効果があります。
Advisor CLI アクション --mark-up-loops で使用されるのと同じオプションが、GUI
チェックボックスで有効になります。これらは、-mark-up-loops コマンドが実行された後も選択されたままとなり、トリップカウント & FLOP 収集を有効にした特性化、依存関係、メモリー・アクセス・パターンなどすべての解析に適用されます。
収集のオーバーヘッドを最小化します。
適用される解析: トリップカウント & FLOP 収集を有効にした特性化、依存関係、メモリー・アクセス・パターン解析。
次の場合に使用します。
少数のループのみをより深く解析したい場合。
CLI 環境: ソースコードにアクセスできるターゲット・アプリケーションを解析し、ソースファイル/行番号を識別できます。
注次のコマンドでは、コマンドを実行する前に myApplication をアプリケーションの実行可能ファイルのパスと名前に置き換えてください。アプリケーションが引数を必要とする場合、実行可能ファイル名の後にそれらを指定します。
要件:
サーベイ解析を実行します。
Advisor CLI 環境:必要であれば、注目するループのソースファイルと行番号を特定します。
advisor --report=survey --project-dir=./advi_results -- ./myApplication前提条件を整えた後に、次のいずれかを行います。
ベクトル化と CPU ルーフライン: サーベイレポートで関連する
チェックボックスをオンにして、注目するループにマークを付けます。
次に トリップカウント & FLOP 収集を有効にした特性化、依存関係、またはメモリー・アクセス・パターン解析を実行します。
オフロードのモデル化: [Project Properties (プロジェクトのプロパティー)] > [Performance Modeling (パフォーマンスのモデル化)] に移動し、[Other parameters (その他のパラメーター)] フィールドに CLI アクションオプション --select=<string> を入力します。例:--select=foo.cpp:34,bar.cpp:192。
トリップカウントと FLOP 収集を有効にした特性評価、依存関係、またはメモリー・アクセス・パターン解析を実行するときに、CLI アクション・オプション --select=<string> (推奨)、または --mark-up-list=<string>を使用して対象のループをマークします。例えば、--select オプションを使用する場合:
advisor --collect=tripcounts --flop --project-dir=./advi_results --select=foo.cpp:34,bar.cpp:192 -- ./bin/myApplicationサーベイレポートの関連する
チェックボックスをオンにして、注目するループにマークを付けます。
次に トリップカウント & FLOP 収集を有効にした特性化、依存関係、またはメモリー・アクセス・パターン解析を実行します。
Advisor CLI アクション --mark-up-loops およびアクションオプション --select=<string> を使用して、対象のループをマークします。次に例を示します。
advisor --mark-up-loops --select=foo.cpp:34,bar.cpp:192 --project-dir=./advi_results -- ./myApplication
次に トリップカウント & FLOP 収集を有効にした特性化、依存関係、またはメモリー・アクセス・パターン解析を実行します。
GUI 環境での ID を使用したループの選択と、ソースファイル行によるループの選択には基本的に違いはありません。違いは、Advisor CLI 環境:
Advisor CLI アクションのオプション --mark-up-list=<string> は、GUI
チェックボックスの有効化をシミュレートするだけです。 これらは、--collect コマンドの実行中のみ効果があります。
Advisor CLI アクション--mark-up-loops およびアクションオプション--select=<string> は、実際には GUI
チェックボックスを有効にします。そのため --mark-up-loops コマンドが実行された後も選択されたままとなり、トリップカウント & FLOP 収集を有効にした特性化、依存関係、メモリー・アクセス・パターンなどの解析に適用されます。
または、--mark-up-loopsCLI アクションを使用してループをマークする場合、Advisor CLI アクションオプション --append=<string> と --remove=<string> を使用して、その後に実行される解析向けにソースファイル/行番号を追加および削除できます。
目的: 収集のオーバーヘッドを最小化します。
適用される解析: 依存関係、メモリー・アクセス・パターン解析。
事前定義された収集を使用して、インテル® Advisor を実行する場合や自動スクリプトを使用する場合など、手動入力ではなく基準で選択されたループに対して詳細な解析を行う場合に使用します。
Advisor CLI 環境で実装するには、コマンドラインからコマンドを 1 行ずつ実行するか、スクリプトを作成してコマンドを自動的に実行します。--select (推奨) または、--loops オプションを使用し、基準を指定してループを選択します。
注次のコマンドでは、コマンドを実行する前に myApplication をアプリケーションの実行可能ファイルのパスと名前に置き換えてください。アプリケーションが引数を必要とする場合、実行可能ファイル名の後にそれらを指定します。
例えば、依存関係の問題が存在すると想定されるループ/関数内のループ伝搬依存を解析するには、次のいずれかを使用します。
例 1:
advisor --collect=survey --project-dir=./advi_results -- ./bin/myApplication
advisor --collect=dependencies --project-dir=./advi_results -- ./myApplicaton
例 2:
advisor --collect=survey --project-dir=./advi_results -- ./bin/myApplication
advisor --collect=dependencies select="scalar,has-issue" --project-dir=./advi_results -- ./myApplicaton
目的: 収集のオーバーヘッドを最小化します。
適用される解析: トリップカウント & FLOP 収集を有効にした特性化、依存関係、メモリー・アクセス・パターン解析。
使用するプログラミング・モデルや推測されるオフロードの収益性に基づいて、事前定義されたマークアップ・アルゴリズムによって選択されたループを詳しく解析する場合、--select=r:markup=<algorithm> を使用します。
CPU で実行されるアプリケーションを解析する場合、gpu_generic アルゴリズムを使用します。このアルゴリズムは、より多くのデータを収集し、安全にオフロードできることを確認するため、追加の解析のため収益性の高いループ/関数をすべて選択します。
すでにオフロードされているコード領域を解析し、特定のプログラミング・モデルを使用する場合、次のアルゴリズムのいずれかを使用します。
omp- OpenMP* ループを選択します。
icpx -fsycl- SYCL* ループを選択します。
ocl- OpenCL* ループを選択します。
daal- インテル® oneAPI データ・アナリティクス・ライブラリーのループを選択します。
tbb- インテル® oneAPI スレッディング・ビルディング・ブロックのループを選択します。
注次のコマンドでは、コマンドを実行する前にmyApplication をアプリケーションの実行可能ファイルのパスと名前に置き換えてください。アプリケーションが引数を必要とする場合、実行可能ファイル名の後にそれらを指定します。
例えば、オフロードのモデル化を実行し、収益性の高いコード領域を詳しく解析するには、次のようにします。
例 1特定の分析に対してのみループを選択するには、--select=r:markup=<algorithm> オプションを --collect アクションオプションとともに使用します。
advisor --collect=survey --project-dir=./advi_results --static-instruction-mix -- ./myApplicationadvisor --collect=tripcounts --project-dir=./advi_results --flop --cache-simulation=single --target-device=xehpg_512xve --stacks --data-transfer=light -- ./myApplicationadvisor --collect=dependencies --filter-reductions --loop-call-count-limit=16 --select markup=gpu_generic --project-dir=./advi_results -- ./myApplicationadvisor --collect=projection --project-dir=./advi_results例 2このコマンドの後に実行されるすべての解析のループを選択するには、別の手順で --select=r:markup=<algorithm> オプションを --mark-up-loops アクション オプションとともに使用します。
advisor --collect=survey --project-dir=./advi_results --static-instruction-mix -- ./myApplicationadvisor --collect=tripcounts --project-dir=./advi_results --flop --cache-simulation=single --target-device=xehpg_512xve --stacks --data-transfer=light -- ./myApplicationadvisor --mark-up-loops --project-dir=./advi_results --select markup=gpu_generic -- ./myApplicationadvisor --collect=dependencies --filter-reductions --loop-call-count-limit=16 --project-dir=./advi_results -- ./myApplicationadvisor --collect=projection --project-dir=./advi_results