インテル® C++ コンパイラー 18.0 デベロッパー・ガイドおよびリファレンス
高レベルの最適化 (HLO) とは、高水準プログラミング言語で開発されたアプリケーションに含まれているソースコード上の特性 (ループや配列など) を利用した最適化手法です。デフォルトの最適化レベル O2 オプションでもいくつかの高レベルの最適化 (データ・プリフェッチやアンロールなど) が行われますが、O3 オプションを指定すると、メモリーアクセスを最適化するループ変換を実行する機会が得られます。
ループの最適化により呼び出されるライブラリー・ルーチンは、互換マイクロプロセッサーよりもインテル製マイクロプロセッサーにおいてより優れたパフォーマンスが得られる可能性があります。また、実行される最適化は、/arch (Windows*)、-m (Linux* および macOS*)、[Q]x などの特定のオプションによる影響を受け、互換マイクロプロセッサーよりもインテル製マイクロプロセッサーにおいて多くの HLO 変換が行われることがあります。
HLO では、ループ変換の手法に次のものがあります。
ループ並べ替え/交換
ループ分配
ループ融合
ループアンロール
データ・プリフェッチ
スカラー置換
アンロール/ジャム
ループ・ブロッキング/タイリング
部分和最適化
プレディケート最適化
ループ逆転
プロファイルに基づくループアンロール
ループピーリング
データ変換: malloc の結合と memset の結合、メモリーレイアウトの変更
ループ・リローリング
memset および memcpy の認識
完全なループの入れ子構造作成用の文除去
複数のバージョン: メモリー参照の依存性と反復回数のチェックを含む
ループ結合