高位変換は、交換、融合、アンロールなどの手法を用いて、特にループのパフォーマンスを向上させる最適化です。これらのループ最適化の目的は次のとおりです。
高位ループ分析および変換を使用可能にするには、
-qhot オプションを使用します。次の表は、
-qhot で使用できるサブオプションのリストです。
サブオプション | 振る舞い |
---|---|
vector | コンパイラーに、いくつかのループを変換して、組み込みライブラリーにある各種の三角関数や演算 (逆数や平方根など) の、標準バージョンではなく最適化バージョンを使用するように指示します。最適化バージョンを使用すると、精度とパフォーマンスに関して、さまざまなトレードオフが発生します。このサブオプションは、 -qhot、-O4、または -O5 を使用すると、デフォルトで使用可能になります。 |
novector | コンパイラーに、上記の組み込みライブラリー関数を使用する最適化を避けるように指示します。プログラム結果の精度を落としたくない場合は、このサブオプションまたは -qstrict を使用してください。 |
arraypad | コンパイラーに、メリットがあると思われる配列を、必要なだけ埋め込むように指示します。 |
simd | コンパイラーに、SIMD 自動ベクトル化を試みるように指示します。すなわち、配列の連続するエレメントに適用されるループ内の一定の演算を、 VMX 命令呼び出しに変換します。この呼び出しは、いくつかの結果を一度に計算するため、個々の結果を連続して計算するよりは速くなります。このサブオプションは、Y-HPC ではデフォルトで使用可能になります。このサブオプションは、 -qarch を ppc970 に設定すると、SUSE 9 および Red Hat 4 ではデフォルトで使用可能になります。このサブオプションは、 -qarch を ppc970 に設定し、かつ -qenablevmx を使用すると、Red Hat 3 U3 で使用可能になります。 |
以下に、-qhot を使用する場合の提案事項を挙げます。