インテル® Advisor ヘルプ
目的と使い方 | 要件 | 実行 | 領域と使い方 | 次に行うことは?
ルーフライン解析を実行して [サーベイレポート] に [ルーフライン] グラフを追加して、ハードウェアによって課せられるパフォーマンスの上限と実際のパフォーマンスを可視化し、制限の主な要因 (メモリー帯域幅や計算能力) を特定するのを支援します。これにより、最適化ステップの理想的なロードマップが示されます。
[ルーフライン] グラフを使用して、次のような疑問に対する答えを見つけることができます。
現在のハードウェア・リソースで達成可能なパフォーマンスの上限は?
現在のハードウェア・リソースでアプリケーションが最適に動作しているか?
そうでない場合、最初の最適化の候補は何か?
メモリー帯域幅や計算能力が各最適化候補のパフォーマンスを制限しているか?
ルーフライン解析を開始する前に、次の操作を行います。
インテル® Advisor の [プロジェクトのプロパティー] ダイアログボックスの [サーベイ解析タイプ] > [トリップカウントと FLOP 解析] で、[FLOP、L1 メモリー・トラフィック、およびインテル® AVX-512 マスク使用に関する情報を収集] チェックボックスをオンにします。
浮動小数点操作を行うプログラムのインテル® Advisor プロジェクトを作成し、設定して、開きます。
[ベクトル化ワークフロー] タブで、[ルーフラインを実行] の下にある をクリックし、ターゲット・アプリケーションを 2 回実行します。
マシンのハードウェアの上限を測定し、サーベイ解析を使用してループ/関数のタイミング情報を収集します。
トリップカウントと FLOP 解析を使用して FLOPS を収集 - この収集にはサーベイ解析より 3 倍から 4 倍の時間がかかります。
完了すると、インテル® Advisor は [ルーフライン] グラフを表示します。
[ルーフライン] グラフの表示に関するいくつかのコントロールがあります。
1 |
クリックして、[ルーフライン] グラフと [サーベイレポート] を切り替えることができます。 |
2 |
クリックして、[ルーフライン] グラフと [サーベイレポート] 並べて表示するかどうかを切り替えることができます。 |
3 |
クリックして、[ルーフライン] グラフと [サーベイレポート] のサイズを調整できます。 |
重要なデータに注目するのに役立つ次のようなコントロールがあります。
1 |
|
2 |
|
3 |
結果やスナップショット・ファイルを選択してロードし、同じ [ルーフライン] グラフ上で (同じピークを持つ) 現在の結果と比較します。ドロップダウンを使用し異なる結果やスナップショット・ファイルを選択します。 |
4 |
|
5 |
|
6 |
倍率を指定してズームイン/アウトします。 |
7 |
項目にマウスをホバーするとその項目のメトリックが表示されます。 マウスを点にホバーすると、[ルーフライン] グラフには 2 つの青い点が表示され、それぞれループを最適化して上位のルーフラインに到達することで得られるパフォーマンスと、達成可能な最上位のルーフラインを示します。(上位のルーフラインと達成可能な最上位のルーフラインが同一である場合、[ルーフライン] グラフには青い点が 1 つのみ表示されます。) 点をクリックして黒く変更すると、対応するコードとメトリックが別のウィンドウタブに表示されます。 点をクリックした後に、[ルーフライン] グラフの空白の部分を右クリックして、以下を選択します。
|
8 |
ループの重さを示すカテゴリー別にループの数と比率を表示します。 |
ルーフライン・グラフのデータ
[ルーフライン] グラフは、マシンの [達成可能な最大パフォーマンス] と、アプリケーションの [達成可能なパフォーマンス] と [演算強度] を表示します。
演算強度 (x 軸) - CPU/VPU とメモリー間で転送された、ループ/関数アルゴリズムに基づくバイトあたりの浮動小数点操作 (FLOP) または整数操作 (INTOP) の数です。
パフォーマンス (y 軸) - 1 秒あたりのギガ単位の浮動小数点操作の数 (GFLOPS)、または 1 秒あたりのギガ単位の整数操作の数 (GINTOPS) です。
一般に、次のことが言えます。
[ルーフライン] グラフのドットの大きさと色は、各ループ/関数の相対的な実行時間を示します。大きな赤いドットは最も時間を消費しているため、最適化の最良の候補となります。小さな緑のドットは消費時間が少ないため、最適化する必要はないと考えられます。
[ルーフライン] グラフの斜線は、最適化なしではループ/関数がパフォーマンスを向上できない、メモリー帯域幅の上限を示します。例えば、[L1 帯域幅] ルーフラインは、ループが常に L1 キャッシュにヒットする場合に、ある演算強度で実行可能な最大ワーク量を示します。データセットによりループが頻繁に L1 キャッシュをミスする場合、ループは L1 キャッシュ速度の恩恵を受けられず、実際にヒットする速度が遅い L2 キャッシュの制限を受けます。そのため、ループを示す点 (ドット) は、[L2 帯域幅] ルーフライン下に表示されます。
[ルーフライン] グラフの水平線は、最適化なしではループ/関数がパフォーマンスを向上できない、計算能力の上限を示します。例えば、[スカラー加算ピーク] は、これらの状況下でスカラーループが実行可能な加算命令のピーク数を示します。[ベクトル加算ピーク] は、これらの状況下でベクトル化されたループが実行可能な加算命令のピーク数を示します。ループがベクトル化されていない場合、ループを示す点は [スカラー加算ピーク] ルーフラインの下に表示されます。
最上位のルーフラインはマシンの最大能力を示すため、ドットがこれらのルーフラインを超えることはありません。しかし、すべてのループがマシンの最大能力を活用できるわけではありません。
ドットと達成可能な最上位のルーフとの距離が遠いほど、パフォーマンス向上の可能性は高くなります。
次の [ルーフライン] グラフでは、ループ A と G (大きな赤いドット)、そして B (小さな黄のドット) が最適化の最良の候補となります。ループ C、D、と E (小さな緑のドット)、および H (黄のドット) は、改善の余地がわずかであるため最適化に適していません。
[ルーフライン] グラフと [サーベイレポート] は、同期されます。ループが浮動小数点操作を含んでいる場合、[ルーフライン] グラフの [サーベイレポート] の対応するデータ行がハイライトされ、[サーベイレポート] のデータ行をクリックすると [ルーフライン] グラフの対応する点が点滅します。浮動小数点操作を含まないループは、[ルーフライン] グラフには表示されません。
[ルーフライン] グラフのそれぞれのルーフライン (線)、ピーク (長方形)、およびループ (点) にマウスポインターを移動すると、各要素の詳細が示されます。