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

CPU ルーフライン・グラフのボトルネックを調査

精度レベル

Low

有効となる解析

サーベイ + FLOP (特性化)

結果の解釈

ドットが最上部のルーフから離れるほど、改善の余地は大きくなります。アムダールの法則に従って、プログラムの合計実行時間の大半を占めるループを最適化することで、実行時間が短いループを最適化するよりも大幅な効果が期待できます。

ドットの上にあるルーフは、それ以上高いパフォーマンスを達成するのを妨げることを表します。ルーフ以下では何かパフォーマンスに貢献できることもあるでしょう。各ルーフは、上位のルーフに関連する特定の最適化なしで達成できる最大のパフォーマンスを表します。ドットの位置に応じて次の最適化を試します。

さらに正確な最適なの推奨事項については、[Code Analytics] タブのルーフラインのガイドおよび [Recommendations] タブのルーフラインの結果を参照してください。

ドットの位置

原因

最適化

メモリールーフの下 (DRAM 帯域幅、L1 帯域幅など)

ループ/関すのメモリ使用は非効率です。

このループのメモリー・アクセス・パターン解析を実行します。

  • MAP 解析でキャッシュの最適化が示される場合は適切に最適化します。
  • キャッシュの最適化が不可能であるなら、高い AI を持つアルゴリズムの導入を検討してください。

ベクトル加算ピーク以下

ループ/関数は命令セットを十分に活用していません。

サーベイレポートの [Traits] カラムをチェックして、FMA 命令が使用されているか確認します。

  • FMA 命令が使用されていない場合、コードまたはコンパイルオプションを変更して、FMA の導入を検討してください。

スカラー加算ピークのすぐ上

ループ/関数はベクトル化されていません。

サーベイでベクトル化の効率とパフォーマンス問題を確認してください。低い値が示される場合、推奨事項に従って改善します。

スカラー加算ピーク以下

ループ/関数はスカラーです。

ループがベクトル化されている場合、サーベイレポートを確認します。ベクトル化されていなければ、可能な限りベクトル化してください。これには、依存関係解析を実行して、ベクトル化を強制しても安全であるか確認が必要な場合もあります。

次の [Roofline] グラフでは、ループ A と G (大きな赤いドット)、そして B (小さな黄のドット) が最適化の最良の候補となります。ループ C、D、と E (小さな緑のドット)、および H (黄のドット) は、改善の余地がわずかであるため最適化に適していません。

これは、ルーフライン・グラフの実際のスクリーンショットではなく、視覚化した例です。

一部のアルゴリズムは特定のルーフを超えることができません。例えば、スライド図中のループ A が依存関係によりベクトル化することが困難である場合、スカラーピークを上回ることはありません。

ヒント

メモリーのルーフを超えることができない場合、計算強度を高めるためアルゴリズムの改良を検討してください。これにより、ドットは右に移動し、メモリー帯域幅のルーフに接する間に、パフォーマンスを向上する余地が生まれます。この例では、ループ F が最適化に適切な候補ですが、キャッシュの利用効率を改善できない場合、次の候補はループ G となります。

次のステップ