XL Fortran の最適化の考え方

XL Fortran の最適化は、積極性、つまり負うリスクの大きさに応じて特徴付けられます。 最高の最適化レベルだけが以下の積極的な最適化を実行しますが、その場合でもリスクは、 想定されるプログラムの小さなサブセットの中のごくわずかな結果の差にすぎません。

積極性の低い最適化は、最適化していない同等のプログラムの場合とまったく同じ結果を出すことを意図します。

最適化レベルが上がるにつれて、パフォーマンスを改善できる所でこれらの制限は認められます。

最高レベルの最適化を指定した場合、すでに説明したように、XL Fortran はリスクの可能性が あってもスピードを要求していると見なします。 結果としてリスクを発生させないで、できる限り高い最適化を望む場合は、別のコンパイラー・オプション -qstrict を追加する必要があります。

初期の XL ファミリーのコンパイラーは、最適化に対して保守的なアプローチを採用していたので、 現実には起こり得ない極端なケースでも、最適化したプログラムを最適化していないプログラムとまったく同じように 機能させようとしていました。 たとえば、配列参照 A(N) は最適化されませんでした。N が非常に大きくて、アドレスが 参照されるときにプログラムがセグメント化違反を発生させて、この動作が「保持」されるからです。 それに比べれば、業界は一般的に保守的ではないアプローチを奨励しており、XL Fortran の最高の最適化レベルは、 現在最適化してあるプログラムと最適化していないプログラムの間でまったく同じ実行を達成することよりも パフォーマンスを重視しています。

種々のレベルの -O オプションが、多種多様のプログラムに対して最適化技法を受け入れます。 この技法を使ってパフォーマンスを改善することができます。 特殊化された最適化オプション、たとえば -qipa-qhot は、ある種のプログラムではパフォーマンスを改善できますが、他のプログラムではパフォーマンスを低下させます。 したがって、所定のプログラムにそれらのオプションが適しているかどうかをテストする必要がある場合があります。

関連情報:

脚注:

3
IEEE の規則への準拠を考えている 場合は、-qfloat または -qstrict オプションの どちらかを指定することも必要です。
IBM Copyright 2003