Low (低)
サーベイ + FLOP (特性化)
ドットが最上部のルーフから離れるほど、改善の余地は大きくなります。アムダールの法則に従って、プログラムの合計実行時間の大半を占めるループを最適化することで、実行時間が短いループを最適化するよりも大幅な効果が期待できます。
ドット上のルーフは、より高いパフォーマンスの達成を制限する要因を示していますが、ドットの下にあるルーフもパフォーマンスの関連性を示します。それぞれのルーフは、上位にあるルーフに関連する特定の最適化を行わなくても達成可能な最大パフォーマンスを表わしています。ドットの位置に応じて次の最適化を試します。
ドットの位置 |
理由 |
最適化 |
---|---|---|
メモリールーフの下 (DRAM 帯域幅、L1 帯域幅など) |
ループ/関すのメモリ使用は非効率です。 |
このループのメモリー・アクセス・パターン解析を実行します。
|
ベクトル加算ピーク以下 |
ループ/関数は命令セットを十分に活用していません。 |
サーベイレポートの [特性] カラムをチェックして、FMA 命令が使用されているか確認します。
|
スカラー加算ピークのすぐ上 |
ループ/関数はベクトル化されていません。 |
サーベイでベクトル化の効率とパフォーマンス問題を確認してください。低い値が示される場合、推奨事項に従って改善します。 |
スカラー加算ピーク以下 |
ループ/関数はスカラーです。 |
ループがベクトル化されている場合、サーベイレポートを確認します。ベクトル化されていなければ、可能な限りベクトル化してください。これには、依存関係解析を実行して、ベクトル化を強制しても安全であるか確認が必要な場合もあります。 |
次の [Roofline (ルーフライン)] グラフでは、ループ A と G (大きな赤いドット)、そして B (小さな黄のドット) が最適化の最良の候補となります。ループ C、D、E (小さな緑のドット) と H (黄色のドット) は、パフォーマンス向上の余地があまりないか、パフォーマンスに大きな影響を与えるには小さすぎるため候補にはなりません。
一部のアルゴリズムは特定のルーフを超えることができません。例えば、上記の例のループ A が依存関係のためにベクトル化できない場合、スカラー加算ピークを超えることはありません。
グラフ上のドットを選択して、[Code Analytics (コード解析)] タブを開くと、選択したループに関連する詳細情報が表示されます。
インテル® Advisor は、計算で使用されるデータタイプを自動的に決定します。命令ミックス内のカテゴリー別にグループ化された命令のクラスを表示します。
カテゴリー |
命令タイプ |
---|---|
計算 (FLOP と INTOP) | ADD、MUL、SUB、DIV、SAD、MIN、AVG、MAX、ABS、SIN、SQRT、FMA、RCCP、SCALE、FCOM、V4FMA、V4VNNI |
メモリー |
|
混在 | メモリーオペランド付き計算命令 |
その他 | MOVE、CONTROL FLOW、SYNC、OTHER |
インテル® Advisor は、浮動小数点計算 (FLOP) を、次のカテゴリーの命令の合計とその反復回数の積として計算します: FMA、ADD、SUB、DIV、DP、MUL、ATAN、FPREM、TAN、SIN、COS、SQRT、SUB、RCP、RSQRT、EXP、VSCALE、MAX、MIN、ABS、IMUL、IDIV、FIDIVR、CMP、VREDUCE、VRND
整数操作 (INTOP) は 2 つのモードで計算されます。