XL Fortran プログラムの最適化

部分目次

  • XL Fortran の最適化の考え方
  • 最適化のためのコンパイラー・オプションの概要
  • 最適化レベルの選択
  • 最適化レベル -O2
  • 最適化レベル -O3
  • -O2 および -O3 を最大限に活用する
  • -O4 および -O5 オプション
  • ターゲット・マシンまたはターゲット・マシン・クラスの最適化
  • ターゲット・マシン・オプションを最大限に活用する
  • 浮動小数点計算の最適化
  • 高位変換 (-qhot)
  • -qhot を最大限に活用する
  • ループおよび配列言語の最適化
  • ループ変換用のコスト・モデル
  • ループ・アンロール
  • ハードウェア構成の説明
  • 異なる形式の配列の効率
  • 一時配列の使用の削減
  • 配列の埋め込み
  • プロファイル指示フィードバック (PDF)
  • プロファイル指示フィードバック (PDF) の使用
  • 条件付き分岐の最適化
  • プロシージャー間分析 (-qipa)
  • -qipa を最大限に活用する
  • サブプログラム呼び出しの最適化
  • インライン化の正しいレベルの見つけ方
  • 共用メモリー並列処理 (-qsmp)
  • -qsmp を最大限に活用する
  • その他のプログラム動作オプション
  • その他のパフォーマンス・オプション
  • 最適化したコードのデバッグ
  • 最適化されたプログラムでの異なる結果
  • コンパイラー・フレンドリーなプログラミング
  • 本節は、最適化の背景となる情報、XL Fortran の最適化機能の使用法に関する 手引き、XL Fortran の最適化手法の詳細から構成されています。

    単純なコンパイルとは、ソース・コードを実行可能または共用オブジェクトに翻訳または変換することを言います。 最適化変換とは、実行時にアプリケーションの総合的パフォーマンスを向上させる変換方式です。 XL Fortran は、IBM ハードウェアに合わせて調整された最適化変換のポートフォリオを提供します。 このような変換では、以下が可能になります。

    コンパイラーは適応力の高い洗練されたプログラム分析および変換能力を 持っているため、比較的少ない開発努力で大きなパフォーマンス改善が可能です。 さらに、コンパイラーは OpenMP のような、ハイパフォーマンス・コードを 作成できるプログラミング・モデルの使用を可能にします。

    最適化は、製品リリースのビルドのような、アプリケーション開発サイクルの後のほうのフェーズを 対象としています。 可能であれば、コードを最適化する前に、最適化なしでコードをテストおよびデバッグしてください。

    最適化は、コンパイラー・オプションとディレクティブで制御されます。 ただし、コンパイラー・フレンドリーなプログラミング・イディオムは、オプションやディレクティブのように パフォーマンスに有効である場合があります。 手作業によるコードの最適化 (たとえば手動によるループ・アンロールなど) を過剰に行うのは、現在では不要で あり、お勧めできません。 異常な構文はコンパイラー (および他のプログラマー) を混乱させ、新しいマシンでのアプリケーションの 最適化を困難なものにします。 『コンパイラー・フレンドリーなプログラミング』に、 いくつかのイディオムの提案と、良好な最適化が可能なコードを作成するためのプログラミング上のヒントが 記載されています。

    重要なことは、すべての最適化がすべてのアプリケーションにとって有効であるわけではないことです。 デバッグ能力の削減に伴うコンパイル時間の増加と、コンパイラーによって行われる最適化の度合いとの間で、 トレードオフを常に考慮しておく必要があります。 IBM Copyright 2003