XL Fortran for AIX V8.1.1

ユーザーズ・ガイド


サブプログラム呼び出しの最適化

プログラムに多数のサブプログラム呼び出しがある場合、-Q オプションを使用してインライン化をオンにすることができます。これにより、このような呼び出しのオーバーヘッドが削減されます。 prof または |gprof でそれぞれ -p または -pg オプションを使用して、最も頻繁に呼び出されるサブプログラムを判別し、コマンド行にその名前をリストすることを検討してください。

呼び出す側のサブプログラムと呼び出されたサブプログラムが別のソース・ファイルにある場合に、インライン化を呼び出しに適用させるために、-qipa オプションも入れてください。

# Let the compiler decide (relatively cautiously) what to inline.
xlf95 -O3 -Q inline.f
 
# Encourage the compiler to inline particular subprograms.
xlf95 -O3 -Q -Q+called_100_times:called_1000_times inline.f
 
# Extend the inlining to calls across files.
xlf95 -O3 -Q -Q+called_100_times:called_1000_times -qipa inline.f
関連情報:
-Q オプションおよび -qipa オプションを参照してください。

インライン化の正しいレベルの見つけ方

特定プログラムに対してインライン化の正しい量を知るには、ユーザー・サイドで行わなければならない作業がいくつかある場合があります。コンパイラーには、インライン化を多量に行うことを避けるために多数の防護手段および限界があります。そうでなければ、コンパイル中のストレージの制約が原因で、コンパイラーが実行する全体にわたる最適化が少なくなったり、その結果作成されたプログラムが大きくなりすぎて、キャッシュ・ミスおよびページ不在がより頻繁になるために実行スピードが遅くなります。ただし、これらの防護手段は、インライン化したいサブプログラムをコンパイラーがインライン化することを妨げることがあります。この事態が発生した場合、パフォーマンス面の恩恵を得るために、分析または作業のやり直し、またはその両方を行う必要があります。

一般的な規則として、最も頻繁に呼び出されるごく少ないサブプログラムを識別して、それらのサブプログラムだけをインライン化することを考えてください。

-Q がサブプログラムをインライン化しない一般的な条件は次のとおりです。

インラインを制御するサイズの限界を変更するために、-qipa=limit=n を使用することができます。この n は 0 から 9 です。値をより大きくすれば、さらにインライン化することができます。

関連情報:


[ ページのトップ | 前ページ | 次ページ | 目次 | 索引 ]