< 目次

analyze.py オプション

このスクリプトを使用すると、プロファイル・データを解析して結果レポートを生成できます。

使用法

advisor-python <APM>/analyze.py <project-dir> [--options]

Linux* では <APM>$APM で置き換えるか、Windows* では %APM% に置き換えます。

オプション

次の表は、analyze.py スクリプトで使用できるオプションです。

オプション

説明

<project-dir>

必須です。インテル® Advisor のプロジェクト・ディレクトリーへのパスを指定します。

-h

--help

すべてのスクリプトのオプションを表示.

--version

インテル® Advisor のバージョン情報を表示します。

-v <verbose>

--verbose <verbose>

出力の詳細レベルを指定します。

  • 1 - エラーメッセージにのみを表示します。これは最も冗長的なレベルです。

  • 2 - 警告とエラーメッセージを表示します。

  • 3 (デフォルト) - 情報、警告、およびエラーメッセージを表示します。

  • 4 - デバッグ情報、警告、およびエラーメッセージを表示します。これは最も詳細なレベルです。

このオプションは、コンソール出力に影響しますが、通常のログとレポートの結果には影響しません。

--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 度転送され、すべてのインスタンスがデータを共有します。無効にすると、各データ・オブジェクトはオフロードのインスタンスごとに転送されると想定されます。

これは、同じカーネルの呼び出し間でデータが再利用されないことを前提としています。

重要

このオプションでは、トリップカウントの収集中に次のオプションを有効にする必要があります。
  • また、collect.py では、--collect basic または --collect full を使用します。
  • また、advisor --collect=tripcounts では、data-transfer=<mode> を使用します。

--atomic-access-pattern <pattern>

アトミックのアクセスパターンを選択します。利用可能なオプション:sequentialpartial_sums_16same。デフォルトは、partial_sums_16

--assume-atomic-optimization-ratio <ratio>

アトミックアクセスを並列処理の合計数としてモデル化します。次のいずれかの値を指定します。8163264128特定数の並列処理の合計をモデル化します。最適な並列処理の合計数を探すには、0値を指定します。

デフォルト値: '16'

--check-profitability (デフォルト) | --no-check-profitability

オフロード領域のゲインを確認します。スピード向上の恩恵が得られる領域のみがレポートに追加されます。

無効にすると、特定の領域のオフロードの収益性に関わりなく、評価されたすべての領域がレポートに追加されます。

--config <config>

絶対パスまたは名前で設定ファイルを指定します。後者を選択した場合、モデル設定ディレクトリーで最初にファイルが検索され、次に現在のディレクトリーが検索されます。

次のデバイス構成が利用できます。xehpg_512xve(デフォルト)、xehpg_256xvegen12_tglgen12_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 命令のレイテンシーをモデル化する方法を選択します。

  • all- 各 SEND 命令では隠匿できないレイテンシーがあると仮定します。これは、--gpu--profile-gpu、または --analyze-gpu-kernels-only を使用した GPU - GPU 間のモデル化のデフォルト値です。
  • first- スレッド内の最初の SEND 命令だけのレイテンシーが隠匿されていないと仮定します。これは、CPU - GPU 間のモデル化のデフォルトです。
  • off- SEND 命令のレイテンシーをモデル化しません。

--cpu-scale-factor <integer>

元の CPU よりも指定された値だけ高速なホスト CPU を推測します。

元の CPU 時間はすべてスケール係数で除算されます。

--data-reuse-analysis | --no-data-reuse-analysis (デフォルト)

オフロード領域間でのデータの再利用を推測します。無効にすると解析のオーバーヘッドを減らすことができます。

重要

このオプションでは、トリップカウントの収集中に次のオプションを有効にする必要があります。
  • また、collect.py では、--collect full を使用します。
  • また、advisor --collect=tripcounts では、data-transfer=full を使用します。

--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.pyanalyze.py の両方で使用する必要があります。

--enable-slm

メモリー階層モデルで SLM によるモデル化を有効にします。

このオプションは、collect.pyanalyze.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_objectssourcescall_graphdependenciesストライド

デフォルトでは、次の項目をレポートから除外できます。

  • CPU から GPU へのモデル化:
    • メモリー・オブジェクト
    • sources
    • コールグラフ
    • 依存関係
  • GPU から GPU へのモデル化:
    • メモリー・オブジェクト
    • sources

例えば、大量のメモリー・オブジェクトやソースが含まれるため、レポートが重くなりブラウザーで開くのに時間がかかる場合は、このオプションを使用します。

このオプションは、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_objectssourcescall_graphdependenciesストライド

デフォルトでは、次の項目をレポートに追加できます。

  • CPU から GPU へのモデル化: ストライド
  • GPU から GPU へのモデル化:
    • コールグラフ
    • 依存関係
    • ストライド

レポートにさらにデータを追加する、または収集したデータでソースやメモリー・オブジェクトがデータレポートから欠落していることを確認するには、このオプションを使用します。

このオプションは、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

可能であれば、拡張数学命令として EXPLOGSIN、および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 度だけです。

重要

このオプションでは、トリップカウントの収集中に次のオプションを有効にする必要があります。
  • また、collect.py では、--collect full を使用します。
  • また、advisor --collect=tripcounts では、data-transfer=full を使用します。

--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.dotprogram_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

ヒープに割り当てられたオブジェクトを、解析中にオブジェクトにアクセスしたループに属性化します。無効にすると、収集のオーバーヘッドを減らすことができます。

重要

このオプションでは、トリップカウントの収集中に次のオプションを有効にする必要があります。
  • また、collect.py では、--collect basic または --collect full を使用します。
  • また、advisor --collect=tripcounts では、data-transfer=medium または data-transfer=full を使用します。

--use-collect-configs | --no-use-collect-configs (デフォルト)

デフォルトおよびカスタム構成ファイルに加えて、収集フェーズの構成ファイルを使用します。