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

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

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

重要な Roofline (ルーフライン) データに注目するのに役立つ、次のようなコントロールがあります。
インテル® Advisor のキャッシュを意識したルーフライン・グラフ

1

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

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

  • [Move View By Mouse (マウスを移動して表示)]: グラフを上下左右に移動します。

  • [Undo (取り消し)] または [Redo (やり直し)]: ズームを解除、再適用します。

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

  • [Export as x (x としてエクスポート)]: インテル® Advisor を起動しなくても表示できる、動的で対話型の HTML または SVG ファイルとしてグラフをエクスポートします。ドロップダウンで出力ファイル形式を切り替えます。

2

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

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

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

適切な CPU コア数を選択して、ルーフの値を増減できます。

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

  • スレッド数と同じまたはほぼ同じコア数 – コードのスレッド数が利用可能な CPU コア数よりも少ない場合

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

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

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

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

    単一ソケットで利用可能なコア数を超える CPU コア数を選択すると、このオプションは無効になります。
  • アプリケーションがメモリーをすべてのソケットにバインドする場合、[n ソケットすべてにコアを分散] を選択します。例えば、非 MPI アプリケーションではこのオプションを選択します。

3

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

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

4

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

[drop-down (ドロップダウン)] ツールバーを使用して次の操作を行います。

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

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

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

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

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

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

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

5

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

[drop-down (ドロップダウン)] ツールバーを使用して次の操作を行います。

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

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

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

ガイダンスオプションを選択するとプレビュー画像が更新され、変更内容をルーフライン・グラフの外観に反映した状態を確認できます。[Apply (適用)] をクリックして変更を適用するか、[Default (デフォルト)] をクリックしてルーフライン・グラフを元の表示に戻します。

ループ/関数のドットがハイライト表示されたら、ループ/関数をもう一度ダブルクリックするか、ループ/関数を選択した状態で [スペース] キーまたは [Enter] キーを押して、選択したループ/関数のドットにルーフライン・グラフをズームできます。オリジナルのルーフライン・グラフ表示に戻るまでこのアクションを繰り返します。

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

6

  • [Roofline View Settings (ルーフライン表示の設定)]: 次を表示するようにデフォルトのスケール設定を調整します。

    • ルーフライン・グラフに最適なスケール

    • すべてのルーフライン・グラフに適したスケール

  • [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

[drop-down (ドロップダウン)] ツールバーを使用して次の操作を行います。

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

  • ルーフライン・グラフに表示するMemory Operation Types (メモリー操作タイプ)を選択します。Loads (ロード)Stores (ストア)、またはLoads and Stores (ロード + ストア)

3

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

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

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

4

Memory Metrics (メモリーメトリック) とその他のペインを表示/非表示にします。

[Memory Metrics (メモリーメトリック)] ペインで次の操作を行います。

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