ペイン: ルーフライン・グラフ

GPU ルーフラインは、ハードウェアによって課されるパフォーマンスの上限に対し、GPU カーネルの実際のパフォーマンスをチャートを視覚化します。GPU ルーフライン・グラフを使用する詳細については、「GPU ルーフライン・グラフのボトルネックを調査」を参照してください。

コントロール

以下を含む、いくつかのコントロールを利用して [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 (ポイントの重みを計算)]: ループ/関数の重み計算の [ベース値] を変更します。
    • [Point Weight Ranges (ポイントの重み範囲)]: ループ/関数ドットの [Size (サイズ)][Color (色)]、そして重みの [Range (範囲)]® を変更します。[+] ボタンをクリックして、ループの重み範囲を 2 つに分割します。[-] ボタンをクリックするとループの重み範囲が下の範囲とマージされます。
    • [Point Colorization (ポイントの色分け)]: 重みの範囲またはタイプ (ベクトルまたはスカラー) により、ループ/関数のドットを色分けします。セルフ時間のないループの色を変更することもできます。

ルーフの設定やドットの重み表現の設定を JSON ファイルに保存したり、カスタム設定をロードできます。

7

数値を使用して拡大/縮小できます。

8

ループ/関数のドットをクリックして、次の操作を行うことができます。

  • 黒枠を表示します。

  • ループ/関数のメトリックを表示します。

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

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

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

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

9

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

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

10

各ループの重み表現カテゴリーのループの数と割合を表示します。