このトピックでは、コマンドラインから IPO を使用する方法を説明します。統合開発環境 (IDE) で IPO を使用する場合は、「アプリケーションのビルド」の該当セクションを参照してください。
IA-32 アーキテクチャー、インテル® 64 アーキテクチャー、IA-64 アーキテクチャーを対象にしたコンパイルとも、IPO を有効にするステップは同じで、コンパイル段階とリンク段階があります。
まず、-ipo (Linux* および Mac OS* X) または /Qipo (Windows*) を指定してソースファイルを次のようにコンパイルします。
オペレーティング・システム |
コマンド例 |
---|---|
Linux および Mac OS X |
ifort -ipo -c a.f90 b.f90 c.f90 |
Windows* |
ifort /Qipo /c a.f90 b.f90 c.f90 |
上記のコマンド例では、オペレーティング・システムによって出力が異なります。
Linux および Mac OS X: コマンドを実行すると、a.o、b.o および c.o オブジェクト・ファイルが作成されます。
Windows: コマンドを実行すると、a.obj、b.obj、および c.obj オブジェクト・ファイルが作成されます。
-c (Linux および Mac OS X) または /c (Windows) を使用して .o ファイルまたは .obj ファイルを作成した後でコンパイルを停止します。出力ファイルには、コンパイルされたソースファイルに対応するインテル® コンパイラーの中間表現 (IR) が含まれます。(次の 「IPO の中間出力の取得」を参照してください。)
次に、結果ファイルをリンクします。次のコマンド例では、app という名前の実行ファイルが生成されます。
オペレーティング・システム |
コマンド例 |
---|---|
Linux および Mac OS X |
ifort -o app a.o b.o c.o |
Windows |
ifort /exe:app a.obj b.obj c.obj |
このコマンドは、IR を含むオブジェクトに対してコンパイラーを実行して、リンクされるオブジェクトの新しい一覧を生成します。また、xild (Linux および Mac OS X) ツールまたは xilink (Windows) ツールを適切なリンクオプションとともに使用できます。
上記の例で使用した複数のコマンドを組み合わせて、1 つのコマンドにすることができます。
オペレーティング・システム |
コマンド例 |
---|---|
Linux および Mac OS X |
ifort -ipo -o app a.f90 b.f90 c.f90 |
Windows |
ifort /Qipo /exe:app a.f90 b.f90 c.f90 |
上記の例のように、ifort コマンドは指定されたオブジェクト・ファイルにリンクする GCC ld (Linux および Mac OS X) または Microsoft* link.exe (Windows のみ) を呼び出し、-o オプション (Linux および Mac OS X) または /exe オプション (Windows) で指定された実行ファイルを生成します。
-ipo-c (Linux および Mac OS X) または /Qipo-c (Windows) と -ipo-S (Linux および Mac OS X) または /Qipo-S (Windows) は、複数ファイル IPO の効果を分析したり、あるいは、プログラムを完全には構成しないモジュール間で複数ファイル IPO を検証するのに役立ちます。
複数のファイル全体にわたって最適化を行い、オブジェクト・ファイルを生成するには、-ipo-c オプションを使用します。このオプションを使用すると、-ipo の解説で述べた最適化処理を行いますが、最後のリンク段階に進む前にその処理は停止し、最適化されたオブジェクト・ファイルはそのまま残ります。このファイルのデフォルト名は、ipo_out.s (Linux および Mac OS X) または ipo_out.obj (Windows) です。
複数のファイル全体にわたって最適化を行い、アセンブリー・ファイルを生成するには、-ipo-S オプションを使用します。このオプションを使用すると、-ipo の解説で述べた最適化処理を行いますが、最後のリンク段階に進む前にその処理は停止し、最適化されたアセンブリー・ファイルはそのまま残ります。このファイルのデフォルトのファイル名は、ipo_out.s (Linux) または ipo_out.asm (Windows) です。
どちらのオプションでも、-o オプション (Linux および Mac OS X) または /exe オプション (Windows) を使用して、別のファイル名を指定できます。
マルチオブジェクト IPO を使用した場合、これらのオプションは、複数の出力を生成します。最初のファイルの名前は、-o オプション (Linux および Mac OS X) または /exe オプション (Windows) で指定されるファイル名から取得します。
後続のファイルの名前は、最初のファイルの名前から派生して取得され、ファイル名に数値が追加されます。例えば、最初のオブジェクト・ファイルの名前が foo.o (Linux および Mac OS X) または foo.obj (Windows) の場合、次のオブジェクト・ファイルの名前は foo1.o または foo1.obj となります。
-ipo-c (Linux および Mac OS X) オプションまたは /Qipo-c (Windows) オプションで生成されたオブジェクト・ファイルを使用できますが、プログラム全体の条件が満たされた場合と同じ最適化の効果はありません。
IPO で通常生成される擬似ファイルとは異なり、-ipo-c オプションを使用して作成されるファイルは、実際のオブジェクト・ファイルです。ただし、生成されたオブジェクト・ファイルは擬似オブジェクト・ファイルとは大幅に異なります。このファイルには、IPO を使用してアプリケーションを十分に最適化するのに必要な IR 情報が含まれていません。
コンパイラーは、生成される各オブジェクトまたはアセンブリー・ファイルの名前を示すメッセージを表示します。これらのファイルは、実際のリンク段階で追加することで、最終的なアプリケーションをビルドすることができます。