このスクリプトを使用すると、プロファイル・データを解析して結果レポートを生成できます。
advisor-python <APM>/analyze.py <project-dir> [--options]
次の表は、analyze.py スクリプトで使用できるオプションです。
オプション |
説明 |
---|---|
<project-dir> |
必須です。インテル® Advisor のプロジェクト・ディレクトリーへのパスを指定します。 |
-h --help |
すべてのスクリプトのオプションを表示. |
--version |
インテル® Advisor のバージョン情報を表示します。 |
-v <verbose> --verbose <verbose> |
出力の詳細レベルを指定します。
注このオプションは、コンソール出力に影響しますが、通常のログとレポートの結果には影響しません。 |
--assume-dependencies (デフォルト) | --no-assume-dependencies |
ループのタイプが不明である場合、ループに依存関係があると想定されます。無効にすると、ループの依存関係タイプが不明 (unknown) である場合、ループには依存関係がないと想定されます。 |
--assume-hide-taxes [<loop-id> | <file-name>:<line-number>] |
楽観的なアプローチにより呼び出しコストを見積もります。最初の呼び出しコストを除くすべての呼び出しコストを非表示にします。 コストを非表示にするループ ID とソースの場所を、カンマで区切ったリストで指定できます。リストを指定しないとすべてのループのコストは非表示になります。 |
--assume-never-hide-taxes (デフォルト) |
悲観的なアプローチにより呼び出しコストを見積もります。呼び出しコストを非表示にしません。 |
--assume-ndim-dependency (デフォルト) | --no-assume-ndim-dependency |
最適な N 次元のオフロードを検索する場合、内部ループと外部ループには依存関係があると仮定します。 |
--assume-parallel | --no-assume-parallel (デフォルト) |
ループのタイプが不明である場合、並列ループであると想定されます。 |
--assume-single-data-transfer (デフォルト) | --no-assume-single-data-transfer |
想定されるデータはオフロードごとに 1 度転送され、すべてのインスタンスがデータを共有します。無効にすると、各データ・オブジェクトはオフロードのインスタンスごとに転送されると想定されます。 これは、同じカーネルの呼び出し間でデータが再利用されないことを前提としています。 重要このオプションでは、トリップカウントの収集中に次のオプションを有効にする必要があります。
|
--atomic-access-pattern <pattern> |
アトミックのアクセスパターンを選択します。利用可能なオプション:sequential、partial_sums_16、same。デフォルトは、partial_sums_16。 |
--assume-atomic-optimization-ratio <ratio> |
アトミックアクセスを並列処理の合計数としてモデル化します。次のいずれかの値を指定します。8、16、32、64、128特定数の並列処理の合計をモデル化します。最適な並列処理の合計数を探すには、0値を指定します。 デフォルト値: '16' |
--check-profitability (デフォルト) | --no-check-profitability |
オフロード領域のゲインを確認します。スピード向上の恩恵が得られる領域のみがレポートに追加されます。 無効にすると、特定の領域のオフロードの収益性に関わりなく、評価されたすべての領域がレポートに追加されます。 |
--config <config> |
絶対パスまたは名前で設定ファイルを指定します。後者を選択した場合、モデル設定ディレクトリーで最初にファイルが検索され、次に現在のディレクトリーが検索されます。 次のデバイス構成が利用できます。xehpg_512xve(デフォルト)、xehpg_256xve、gen12_tgl、gen12_dg1。 注オプションを複数回指定して、複数の構成を指定できます。 |
--count-logical-instructions (デフォルト) | --no-count-logical-instructions |
GPU 論理命令への x86 論理命令のプロジェクションを使用します。 |
--count-memory-instructions (デフォルト) | --no-count-memory-instructions |
メモリー操作を行う x86 命令の予測を GPU SEND/SENDS 命令に使用します。 |
--count-mov-instructions | --no-count-mov-instructions (デフォルト) |
x86 MOV 命令の予測を GPU MOV 命令に使用します。 |
--count-send-latency {all, first, off} |
SEND 命令のレイテンシーをモデル化する方法を選択します。
|
--cpu-scale-factor <integer> |
元の CPU よりも指定された値だけ高速なホスト CPU を推測します。 元の CPU 時間はすべてスケール係数で除算されます。 |
--data-reuse-analysis | --no-data-reuse-analysis (デフォルト) |
オフロード領域間でのデータの再利用を推測します。無効にすると解析のオーバーヘッドを減らすことができます。 重要このオプションでは、トリップカウントの収集中に次のオプションを有効にする必要があります。
|
--data-transfer-histogram (デフォルト) | --no-data-transfer-histogram |
転送されたオブジェクトのデータ転送と待機時間の詳細を見積もり、メモリー・オブジェクト分布図をレポートに追加します。 重要このオプションでは、トリップカウントの収集中に track-memory-objects またはdata-transfer=medium 以上、(advisor CLI のみ) を有効にする必要があります。 |
--disable-fp64-math-optimization |
GPU の抽象化向けに最適化されたトラフィックの計測を無効にします。 |
--enable-batching | --disable-batching (デフォルト) |
上位レベルオフロードのジョブバッチを有効にします。複数インスタンスの同時実行をエミュレートします。 |
--enable-edram |
メモリー階層モデルで eDRAM のモデル化を有効にします。 注このオプションは、collect.py と analyze.py の両方で使用する必要があります。 |
--enable-slm |
メモリー階層モデルで SLM によるモデル化を有効にします。 注このオプションは、collect.py と analyze.py の両方で使用する必要があります。 |
--enforce-baseline-decomposition | --no-enforce-baseline-decomposition (デフォルト) |
ベースラインを測定したのと同じローカルサイズと SIMD 幅を使用します。無効にするち、カーネルの実行時間を最適化するために最適なローカルサイズと SIMD 幅が検索されます。 GPU - GPU 間のパフォーマンスのモデル化オプションを有効にします。 |
-e, --enforce-offloads | --no-enforce-offloads (デフォルト) |
収益性チェックをスキップし、子ループと関数の解析を無効にし、子のオフロードの収益性が高い場合でも、オフロード対象としてマークされた部分がオフロードされるようにします。 |
--estimate-max-speedup (デフォルト) | --no-estimate-max-speedup |
緩和された制約で領域の高速化を推測します。 注無効にするとパフォーマンスのモデル化のオーバーヘッドを減らすことができます。 |
--evaluate-min-speedup |
構成ファイルで定義される最小スピードアップに達するオフロード率の推定を有効にします。これはデフォルトでは無効になっています。 |
--exclude-from-report <items-to-exclude> |
レポートから除外する項目を指定します。利用可能な項目は以下です。memory_objects、sources、call_graph、dependencies、ストライド。 デフォルトでは、次の項目をレポートから除外できます。
例えば、大量のメモリー・オブジェクトやソースが含まれるため、レポートが重くなりブラウザーで開くのに時間がかかる場合は、このオプションを使用します。 注このオプションは、HTML レポートに表示されるデータにのみ影響し、データ収集には影響しません。 |
--force-32bit-arithmetics |
すべての算術演算を強制的に単精度 FP または int32 であると見なします。 |
--force-64bit-arithmetics |
すべての算術演算を強制的に倍精度 FP または int64 であると見なします。 |
--gpu (推奨) | --profile-gpu | --analyze-gpu-kernels-only |
GPU 上で実行されるコア領域のみのパフォーマンスをモデル化します。以下の 3 つのいずれかのオプションを使用します。 重要このオプションは、collect.py と analyze.py を使用します。注これはプレビュー機能です。--analyze-gpu-kernels-only は非推奨であり、将来のリリースでは削除されます。 |
--hide-data-transfer-tax | --no-hide-data-transfer-tax (デフォルト) |
データ転送コストの見積もりを無効にします。 デフォルトでは、データ転送コストの予測は有効になっています。 |
--ignore <list> |
プログラムごとにスピードアップを計算する際に、ランタイムやライブラリー領域で費やされた時間を無視するには、ランタイムやライブラリーをカンマで区切って指定します。 注これは、個々のオフロードのスピードアップの推測には影響しません。 |
--include-to-report <items-to-include> |
含める項目を次のように指定します。利用可能な項目は以下です。memory_objects、sources、call_graph、dependencies、ストライド。 デフォルトでは、次の項目をレポートに追加できます。
レポートにさらにデータを追加する、または収集したデータでソースやメモリー・オブジェクトがデータレポートから欠落していることを確認するには、このオプションを使用します。 注このオプションは、HTML レポートに表示されるデータにのみ影響し、データ収集には影響しません。 |
--loop-filter-threshold <threshold> |
ループをフィルター処理するしきい値を秒単位で指定します。デフォルトは 0.02 秒です。合計時間がしきい値未満の入れ子ループは無視されます。 |
-m <markup> --markup <markup> |
データ取集と解析のためマークした領域に影響する markup_analyze を選択します。 |
--model-children (デフォルト) | --no-model-children |
領域の先頭の子ループを解析して、一部のループのオフロードがより効率的であるかを確認します。 |
--model-extended-math (デフォルト) | --no-model-extended-math |
可能であれば、拡張数学命令として EXP、LOG、SIN、およびCOS などの数学関数を呼び出します。 |
--model-system-calls (デフォルト) | --no-model-system-calls |
システムコールで領域を解析します。領域内にシステムコールがあると、モデル化の精度が低下する可能性があります。 |
--mpi-rank <mpi-rank> |
複数のランクが解析された場合、指定する MPI ランクのパフォーマンスをモデル化します。 |
--ndim-depth-limit <N> |
最適な N 次元オフロードを検索する場合、1 つのオフロードに変換できる最大ループ深度を制限します。制限値は 1 <= N <= 6 の範囲である必要があります。デフォルト値は 3 です。 |
--no-cachesim |
収集中のキャッシュ・シミュレーションを無効にします。このモデルは 100% のキャッシュヒット率を想定します。 注使用すると解析のオーバーヘッドを減らすことができます。 |
--no-stacks |
コールスタック・データなしでデータ解析を実行します。このオプションを使用すると、精度を犠牲にして、コールスタックに起因する不良データの発生を回避できます。 |
--non-accel-time-breakdown |
オフロードされた領域の非オフロード部分の詳細な内訳を提供します。 |
-o <output-dir> --out-dir <output-dir> |
生成されるすべてのファイルを格納するディレクトリーを指定します。デフォルトでは、結果は <advisor-project>/e<NNN>/pp<MMM>/data.0 に保存されます。既存のディレクトリーや絶対パスを指定すると、結果はそのディレクトリーに保存されます。存在しない場合は、新しいディレクトリーが作成されます。 ディレクトリー <name> のみが指定されると、結果は <advisor-project>/perf_models/<name> に保存されます。 注このオプションを使用すると、インテル® Advisor GUI で解析結果を開けなくなる恐れがあります。 |
-p <output-name-prefix> --out-name-prefix <output-name-prefix> |
出力結果ファイル名の先頭に追加する文字列を指定します。 注このオプションを使用すると、インテル® Advisor GUI で解析結果を開けなくなる恐れがあります。 |
--overlap-taxes | --no-overlap-taxes (デフォルト) |
非同期実行を有効にして、オフロードのオーバーヘッドを実行時間にオーバーラップさせます。 無効にすると、実行時間とオフロードのオーバーヘッドがオーバーラップしないと想定されます。 |
--refine-repeated-transfer | --no-refine-repeated-transfer (デフォルト) |
--no-assume-single-data-transfer を使用して、データ転送の過大な予測を減らします。このオプションは、各データ・オブジェクトが変更された回数をカウントし、その結果からデータ転送数を制限します。例えば、定数データはループの各呼び出しで使用できますが、デバイスに転送する必要があるのは 1 度だけです。 重要このオプションでは、トリップカウントの収集中に次のオプションを有効にする必要があります。
|
--search-n-dim (デフォルト) | --no-search-n-dim |
最適な N 次元オフロードの検索を有効にします。 |
-l [<file-name>:<line-number>] --select-loops [<file-name>:<line-number>] |
最上位のループを渡すことで、指定するループの入れ子に解析を制限します。パラメーターは、次の形式のソースの場所をカンマで区切ったリストでなければなりません:<file-name>:<line-number> を使用します。 |
--set-dependency [<IDs/source-locations>] |
カンマで区切られたリストで指定された場所に ID またはソースがある場合、ループに依存関係があると想定されます。リストが空である場合もループには依存関係があると想定されます。 注--set-dependency オプションは、 --set-parallel よりも優先されるため、ループが両方に含まれる場合、依存関係があると見なされます。 |
--set-parallel [<IDs/source-locations>] |
カンマで区切ったリストで指定された ID またはソース位置のループは並列であると仮定します。リストが空である場合はすべてのループが並列であると仮定します。 注--set-dependency オプションは、 --set-parallel よりも優先されるため、ループが両方に含まれる場合、依存関係があると見なされます。 |
--set-parameter <CLI-config> |
変更する構成パラメーターを "<group>.<parameter>=<new-value>」 形式で指定します。例:"min_required_speed_up=0"、"scale.Tiles_per_process=0.5"。このオプションを複数指定して、複数のパラメーターを変更することもできます。 重要このオプションは、collect.py と analyze.py の両方の値が同じであることを確認してください。 |
--small-node-filter <threshold> |
合計時間のしきい値を秒単位で指定し、program_tree.dot と program_tree.pdf でこの値を下回るノードを除外します。デフォルトは 0.0 秒です。 |
--threads <number-of-threads> |
オフロードの先頭に使用する並列スレッド数を指定します。 |
--track-heap-objects | --no-track-heap-objects |
非推奨です。--track-memory-objects を使用します。 |
--track-memory-objects (デフォルト) | --no-track-memory-objects |
ヒープに割り当てられたオブジェクトを、解析中にオブジェクトにアクセスしたループに属性化します。無効にすると、収集のオーバーヘッドを減らすことができます。 重要このオプションでは、トリップカウントの収集中に次のオプションを有効にする必要があります。
|
--use-collect-configs | --no-use-collect-configs (デフォルト) |
デフォルトおよびカスタム構成ファイルに加えて、収集フェーズの構成ファイルを使用します。 |
例
./advi ディレクトリーにあるプロジェクトのデフォルト設定で解析を実行します。生成された出力は、デフォルトの advi/perf_models/mNNNN ディレクトリーに保存されます。
advisor-python $APM/analyze.py ./advi_results
./advi プロジェクトの特定のループに対して、インテル® Iris® Xe MAX グラフィックス (gen12_dg1設定) 構成を使用して解析を実行します。オフロードの収益性に関わりなく、解析された両方のループをレポートに追加します。生成された出力は、デフォルトの advi/perf_models/mNNNN ディレクトリーに保存されます。
advisor-python $APM/analyze.py ./advi_results --config gen12_dg1 --select-loops [foo.cpp:34,bar.cpp:192] --no-check-profitability
./advi プロジェクトでカスタム構成の解析を実行します。解析する領域をマークし、タイプが不明な場合はコード領域が並列であると想定します。生成された出力を advi/perf_models/report ディレクトリーに保存します。
advisor-python $APM/analyze.py ./advi_results --config ./myConfig.toml --markup --assume-parallel --out-dir report