インテル® Advisor ユーザーガイド

CPU ルーフライン・レポートの概要

インテル® Advisor の CPU / メモリー・ルーフラインの調査パースペクティブのメインレポートで利用できるコントロールを確認します。

基本ルーフライン・グラフ (低精度)

ルーフライン・グラフで重要なデータに注目するのに役立つ次のようなコントロールがあります。

インテル® Advisor のキャシュを意識したルーフライン・グラフ

1

  • [Select Loops by Mouse Rect]: マウスで長方形の範囲の 1 つ以上のループ/関数を選択します。

  • [Zoom by Mouse Rect]: マウスで範囲をズームイン/ズームアウトします。マウスホイールでズームイン/ズームアウトすることもできます。

  • [Move View By Mouse]: グラフを上下左右に移動します。

  • [Undo] または [Redo]: ズームを解除、再適用します。

  • [Cancel Zoom]: デフォルトのズームレベルにリセットします。

  • [Export as x]: インテル® Advisor を起動しなくても表示できる、動的でインタラクティブな HTML または SVG ファイルとしてグラフをエクスポートします。矢印アイコンを使用してオプションを切り替えます。

2

[Cores] ドロップダウン・ツールバーを使用して次の操作を行います。

  • ルーフラインを調整して、ホストマシン上のコードの実際のパフォーマンスの限界を確認します。

  • シングルスレッドのアプリケーション (または、ランクごとに 1 つのスレッドを実行する MPI アプリケーションのような、シングルスレッドで実行するように構成されたマルチスレッド・アプリケーション) 向けにルーフをビルドする際にこのチェックボックスを使用します (インテル® Advisor のフィルターを使用して [Roofline] グラフに表示するループを制御できますが、[Roofline] グラフは [Threads] フィルターをサポートしていません)。

適切な数の CPU コアを選択して、ルーフの値をスケールアップ/スケールダウンします。

  • 1 - コードがシングルスレッドの場合

  • スレッド数と等しいまたは近いコア数 - コードのスレッド数が利用可能な CPU コア数より少ない場合

  • 最大コア数 - コードのスレッドが利用可能な CPU コア数よりも多い場合

デフォルトでは、コア数はアプリケーションが使用するスレッド数 (偶数のみ) に設定されます。

コードをマルチソケット・プラットフォームで実行する場合、次のオプションが表示されます。

  • アプリケーションがメモリーを単一ソケットにバインドする場合、[Bind cores to 1 socket] を選択します。例えば、ソケットごとに 1 つのランクを持つ MPI アプリケーションの場合、このオプションを選択します。

    単一ソケットで利用可能なコア数を超える CPU コア数を選択すると、このオプションは無効になります。

  • アプリケーションがメモリーをすべてのソケットにバインドする場合、[Spread cores between all n sockets] を選択します。例えば、非 MPI アプリケーションではこのオプションを選択します。

3

  • 浮動小数点操作 (FLOP)、整数操作 (INT)、ミックス操作 (浮動小数点と整数) の表示を切り替えます。

  • コールスタック付きのルーフラインを収集した場合: [Roofline] グラフにコールスタックを含むルーフラインを表示します。

4

比較のため、インテル® Advisor で生成したほかの結果や、アーカイブされていないスナックショットから [Roofline] グラフデータを表示します。

ドロップダウン・ツールバーを使用して次の操作を行います。

  • 結果/スナップショットをロードして、[Compared Results] に対応するファイル名を表示します。

  • 選択した結果/スナップショットをクリアして、対応するファイル名を [Ready for comparison] に移動します。

    : [Ready for comparison] にあるファイル名をクリックして、結果/スナップショットを再ロードします。

  • 比較をファイルに保存します。

    ループ/関数間の関係を示す矢印は、比較ファイルをアップロードしても再表示されません。

表示されている結果上でループ/関数のドットをクリックすると、ロードされた結果/スナップショットの対応するループ/関数のドットとの関係 (矢印付きのライン) が示されます。

インテル® Advisor: ルーフラインの比較

5

ルーフライン・グラフにインジケーターを追加して、パフォーマンスの上限やループ/関数がメモリー依存、計算依存、またはその両方であるかなど、データの解釈を容易にします。

ドロップダウン・ツールバーを使用して次の操作を行います。

  • [Display roof rulers] チェックボックスをオンにして、ループ/関数に最も近いおよび最上部のパフォーマンス・ルーフまでの垂直線 (ルーラー) を表示します。ルーラーを見るには、ループ/関数のドットにマウスカーソルを移動します。ルーラーがルーフと交差する場所には、ループ/関数のハードウェア・パフォーマンスの制限を示すラベルが表示されます。

  • すべてのメモリーレベルのルーフラインを収集した場合: [Show memory level relationships] チェックボックスをオンにすることで、選択したループ/関数のメモリーレベルとルーフ間の関係を視覚的に強調できます。

  • [Show Roofline boundaries] チェックボックスをオンにすると、ルーフライン領域を色分けして、ループ/関数が基本的にメモリー依存、計算依存、または計算とメモリー両方のルーフに依存するか分かりやすく表示します。

ガイドオプションを選択するとプレビュー画像が更新され、変更がルーフライン・グラフにどのように影響するか確認できます。[Apply] をクリックして変更を適用するか、[Default] をクリックしてルーフライン・グラフを元の表示に戻します。

ループ/関数のドットをハイライト表示したら、ループ/関数をダブルクリックするか、ループ/関数を選択して Space または Enter キーを押すと、ルーフライン・グラフをズームして選択したループ/関数のドットに合わせることができます。この操作を繰り返して、元のルーフライン・グラフ表示に戻ります。

ラベル付きのドットを非表示にするには、別のループ/関数を選択するか、ルーフライン・グラフの何も表示されていない領域をダブルクリックします。

6

  • [Roofline View Settings]: デフォルトのスケール設定を調整します。

    • [Roofline] グラフに最適な倍率

    • すべての [Roofline] グラフに最適な倍率

  • [Roofs Settings]: ルーフラインの表示 (線) と可視性を変更します。

    • シングルスレッドのベンチマーク結果に基づいてルーフの値を計算します。
    • [Visible] チェックボックスをクリックして、ルーフラインを表示/非表示にします。
    • ルーフラインの外観 (実線/破線) を変更するには、[Selected] チェックボックスをクリックします。
    • [Value] カラムのルーフ値を手動で調整して、コード固有のハードウェアの制限を設定できます。
  • [Loop Weight Representation]: ループ/関数の重みの表示 (ドット) を変更します。

    • [Point Weight Calculation]: ループ/関数の重み計算の [Base Value] を変更します。
    • [Point Weight Ranges]: ループ/関数ドットの [Size][Color]、そして重みの [Range] を変更します。[+] ボタンをクリックして、ループの重み範囲を 2 つに分割します。[-] ボタンをクリックして、ループの重み範囲を下の範囲にマージします。
    • [Point Colorization]: 重みの範囲またはタイプ (ベクトルまたはスカラー) により、ループ/関数のドットを色分けします。セルフ時間なしのループの色を変更することもできます。

ルーフ設定、またはポイントの重み設定を JSON ファイルに保存したり、カスタム設定をロードすることができます。

7

数値を指定してズームイン/ズームアウトします。

8

ループ/関数のドットをクリックして次の処理を行います。

  • 外枠を太い黒線にします。

  • メトリックを表示します。

  • 対応するデータを他のウィンドウタブに表示します。

[Roofline] グラフでループ/関数のドットまたは空白の部分を右クリックすると、次のような機能を実行できます。

  • [Roofline] グラフをさらに簡略化するには、フィルターアウト (一時的にドットを非表示)、フィルターイン (一時的に他のすべてのドットを非表示)、またはフィルターをクリア (最初に表示されたすべてのドットを表示) を行います。

  • クリップボードへデータをコピーします。

9

メトリックペインの表示/非表示:

  • [Point Info] ペインで基本的なパフォーマンス・メトリックを確認します。
  • すべてのメモリーレベルのルーフラインを収集した場合: ループ/関数がキャッシュをどの程度効率良く使用しているか、また [Memory Metrics] ペインでループ/関数の上限となるメモリーレベルを確認します。

10

それぞれのループの重みカテゴリーのループの数と比率を表示します。

コールスタック付きルーフライン・グラフ (中精度)

インテル® Advisor のコールスタック付きルーフライン

1

ルーフライン・グラフにコールスタックを含むルーフラインを表示します。

2

ループ/関数の子を表示/非表示:

  • 子のドットを親のドットに折りたたむには、ループ/関数ドットのコントロール インテル® Advisor: 折りたたみコントロール をクリックします。

  • ループ/関数ドットのコントロール インテル® Advisor: 展開コントロール をクリックして、子ドットと視覚インジケーターによる親ドットとの関係を表示します。

ループ/関数のドットを右クリックしてコンテキスト・メニューを開き、ループ/関数サブツリーを展開/折りたたむこともできます。

3

[Callstack] とその他のペインを表示/非表示にします。

4

  • [Callstack] ペインの項目をクリックして、[Roofline] グラフで対応するループ/関数のドットを点滅させます。
  • [Callstack] ペインの項目を右クリックして、コンテキスト・メニューを開き、項目のサブツリーを展開/折りたたみます。

[Callstack] ペインの項目をクリックして、[Roofline] グラフで対応するループ/関数のドットを点滅させることもできます。

メモリーレベルのルーフライン・グラフ (中精度)

インテル® Advisor のメモリーレベルのルーフライン・グラフ

1

[Show memory level relationships] チェックボックスをオンにすることで、選択したループ/関数のメモリーレベルとルーフ間の関係を視覚的に強調できます。

このチェックボックスは、デフォルトでオンになっています。

2

ドロップダウン・ツールバーを使用して次の操作を行います。

  • グラフの各ループ/関数に表示する [Memory Level] (CARM、L2、L3、DRAM) を選択します

  • ルーフライン・グラフに表示する [Memory Operation Types] を選択します: [Loads][Stores]、または [Loads and Stores]

3

ドットをダブルクリックするか、ドットを選択して Space または Enter キーと押すと、表示されたメモリーレベルとルーフ間の関係を確認できます。

  • ラベル付きのドットが表示され、選択したループ/関数のメモリーレベルを示します。選択したループ/関数に対応するドットはラインで接続されます。

    グラフにすべての [Memory Level] を表示しないことを選択した場合、選択されていないメモリーレベルは X マーク付きで表示されます。

  • 選択したループの上限となるメモリーレベルのルーフラインを指す矢印付きのラインが表示されます。矢印付きのラインを表示できない場合、修正方法を説明するメッセージがポップアップ表示されます。

4

[Memory Metrics] とその他のペインを表示/非表示にします。

[Memory Metrics] ペインで次の操作を行います。

  • [Impacts] ヒストグラムでそれぞれのメモリーレベル要求の処理に費やされた時間を確認します。大きな値は、そのメモリーレベルが選択したループを制限していることを示します。
  • [Shares] ヒストグラムでメモリーレベルを通過するデータ量を確認します。