XL Fortran for AIX V8.1.1
ユーザーズ・ガイド
|プロシージャー間分析 (IPA) を使用すると、コンパイラーは異なるファイルにまたがった最適化を行うことが
|でき (全プログラム分析)、有効なパフォーマンス向上をもたらします。
|プロシージャー間分析はコンパイル・ステップでのみ、またはコンパイルおよびリンク・ステップで指定できます
|(全プログラム ・モード)。
|全プログラム・モードは、最適化の有効範囲をプログラム単位全体に拡張し、実行可能または共用オブジェクトに
|することができます。
|全プログラム IPA 分析は、大きなプログラムのコンパイルまたはリンク時に、かなりのメモリー量と時間を消費します。
|IPA は -qipa オプションによって使用可能になります。
|最も一般的に使用されるサブオプションの効果が、下の表に要約されています。
|
一般に使用される -qipa サブオプション
|
サブオプション
| 動作
|
level=0
| プログラム区分化と単純プロシージャー間最適化。これは以下から構成されます。
- 標準ライブラリーの自動認識。
- 静的にバインドされた変数およびプロシージャーのローカリゼーション。
- 呼び出し関係に応じたプロシージャーの区分化とレイアウト。
呼び出し類縁性 とも呼ばれます。
(相互に頻繁に呼び出すプロシージャーは、メモリー内で近くに置かれます。)
- 一部の最適化の有効範囲の拡張 (特にレジスター割り振り)。
|
level=1
| インライン化とグローバル・データ・マッピング。特に以下を行います。
- プロシージャーのインライン化。
- 参照類縁性に応じた静的データの区分化とレイアウト。
(ともに頻繁に参照されるデータは、メモリー内で近くに置かれます。)
-qipa が指定されたときは、これがデフォルトになります。
|
level=2
| グローバル別名分析、特殊化、プロシージャー間データ・フロー。
- 全プログラム別名分析。このレベルには、ポインター参照解除と間接関数呼び出しの明確化と、関数呼び出しの副次作用に関する情報の改良が含まれます。
- 集約的プロシージャー内最適化。これは、値の番号付け、コード伝播および単純化、条件への、またはループからのコード動作、冗長度の除去のかたちをとります。
- プロシージャー間定数伝搬、不要コード除去、ポインター分析。
- プロシージャー特殊化 (クローン作成)。
|
inline=inline-options
| インライン化の正確なユーザー制御を提供します。
|
fine_tuning
| -qipa= の他の値では、ライブラリー・コードの動作の指定、プログラム区分化の調整、ファイルからのコマンド読み取りなどの能力が提供されます。
|
|あらゆるものを -qipa でコンパイルする必要はありませんが、可能な限り
|多くのプログラムにこれを適用するようにしてください。
|以下にいくつかの提案を示します。
|
- |makefile で最適化オプションを指定するときは必ず、リンクのためのコンパイラー・|コマンド
|(xlf、xlf90 など) を使用し、リンク・ステップですべてのコンパイラー・オプションを
|組み込みます。
- |-qipa は、実行可能または共用オブジェクトを作成するときに機能しますが、
|常にメインおよび -qipa でエクスポートされた関数をコンパイルします。
- |コンパイルとリンクを別個に行うときは、高速化のために -qipa=noobject を
|コンパイル・ステップで使用します。
- |十分なスペースが /tmp にあること (最低 200MB) を確認するか、または
|TMPDIR |環境変数を使用して十分なフリー・スペースを持つ異なるディレクトリーを指定します。
- |level サブオプションはスロットルです。
|リンク時間が長すぎる場合はこれを変えてみてください。
|-qipa=level=0 でのコンパイルは、余分なリンク時間をかけたくないときに
|非常に有効です。
- |-qlist または -qipa=list でのコンパイルの
|後で、生成されたコードを見てください。
|インライン化された関数が少なすぎる、または多すぎる場合は、-qipa=inline または
|-qipa=noinline の使用を検討してください。
|特定の関数のインライン化を制御するには、-Q+ および -Q- を
|使用してください。
|
- |関連情報:
-
|
|
[ ページのトップ | 前ページ | 次ページ | 目次 | 索引 ]