XL Fortran プログラムのコンパイル
xlcuf
のいずれかを使用してください。形式は次のとおりです。
.----------------------------------. V | >>-+-xlf-------+----+--------------+----input_file---+--------->< +-xlf_r-----+ '-cmd_line_opt-' +-f77-------+ +-fort77----+ +-xlf90-----+ +-xlf90_r---+ +-f90-------+ +-xlf95-----+ +-xlf95_r---+ +-f95-------+ +-xlf2003---+ +-xlf2003_r-+ +-f2003-----+ +-xlf2008---+ +-xlf2008_r-+ +-f2008-----+ '-xlcuf-----'
これらのコマンドはすべて、本質的に同じ Fortran 言語を受け入れます。 主要な違いは、別のデフォルト・オプション (構成ファイル /opt/ibm/xlf/16.1.0/etc/xlf.cfg) を使用していることです。
呼び出しコマンドは、Fortran ソース・ファイルをコンパイルし、
すべての .s ファイルをアセンブルし、
オブジェクト・ファイルとライブラリーをリンクして 1 つの実行可能プログラムを作成するのに必要なステップを実行します。特に、コマンド xlf_r、
xlf90_r、
xlf95_r、
xlf2003_r、
xlf2008_r、および
xlcuf
は、マルチスレッド用方式コンポーネント
(ライブラリー、など) を使用して、オブジェクト・ファイルをリンクおよびバインドします。
| ドライバー呼び出し 1 | 主な機能 | リンクされるライブラリー |
|---|---|---|
| xlf | 選択された Fortran 言語レベル 3 | libxlf90.so |
| xlf_r | 選択された言語レベルのスレッド・セーフ・バージョン 3 | libxlf90_r.so |
| f77, fort77 | FORTRAN 77 | libxlf90.so |
| xlf90, f90 | Fortran 90 | libxlf90.so |
| xlf90_r | スレッド・セーフ Fortran 90 | libxlf90_r.so |
| xlf95, f95 | Fortran 95 | libxlf90.so |
| xlf95_r | スレッド・セーフ Fortran 95 | libxlf90_r.so |
| xlf2003 | Fortran 2003 | libxlf90.so |
| xlf2003_r | スレッド・セーフ Fortran 2003 | libxlf90_r.so |
| f2003 | Fortran 2003 | libxlf90.so |
| xlf2008 | Fortran 2008 | libxlf90.so |
| xlf2008_r | スレッド・セーフ Fortran 2008 | libxlf90_r.so |
| f2008 | Fortran 2008 | libxlf90.so |
xlcuf 2 |
CUDA Fortran サポート | libxlf90_r.so、
libcudadevrt.a、 libcudart.so、 libcuda.so、および libdevice*.bc ![]() |
- これらの呼び出しコマンドは、/opt/ibm/xlf/16.1.0/bin ディレクトリーにあります。
xlcuf を指定することは、xlf2008_r
および -qcuda オプションを指定することと同じです。呼び出しコマンド xlf および xlf_r は、ソース・ファイル名のサフィックスに従って適切な言語レベルを選択します。他の呼び出しコマンドは、Fortran ソース・ファイル名のサフィックスにかかわらず、一貫した動作を示します。次の例を参照してください。
例 1
動作は、次のようになります。xlf program1.f program2.f90 program3.f95 program4.f03 program5.f08- program1.f ファイルは、呼び出しコマンドが f77 であった場合と同じようにコンパイルされます。
- program2.f90 ファイルは、呼び出しコマンドが xlf90 であった場合と同じようにコンパイルされます。
- program3.f95 ファイルは、呼び出しコマンドが xlf95 であった場合と同じようにコンパイルされます。
- program4.f03 ファイルは、呼び出しコマンドが xlf2003 であった場合と同じようにコンパイルされます。
- program5.f08 ファイルは、呼び出しコマンドが xlf2008 であった場合と同じようにコンパイルされます。
例 2
program6.cuf ファイルは、呼び出しコマンドが xlcuf であった場合と同じようにコンパイルされます。これにより、CUDA Fortran サポートが有効になります。xlf_r program6.cuf
libxlf90.so はスレッド化されたアプリケーションと非スレッド化されたアプリケーションの両方に提供されます。XL Fortran は、実行時にアプリケーションがスレッド化されているかどうかを判別します。
XL Fortran は、 libxlf90_r.so に加えて、ライブラリー libxlf90_t.so を提供します。 libxlf90_t.so は、 libxlf90_r.so がエクスポートするのと同じエントリー・ポイントをエクスポートします。 ライブラリー libxlf90_r.so は、libxlf90_t.so のスーパーセットです。 ファイル xlf.cfg は、xlf90_r、xlf95_r、および xlf_r コマンドを使用すると自動的に libxlf90_r.so にリンクするようセットアップされます。libxlf90_t.so は、一部スレッドをサポートするランタイム・ライブラリーです。libxlf90_r.so と異なり、libxlf90_t.so はスレッド同期を提供しません。また、libxlf90_t.so 内のルーチンは再入可能ではありません。そのため、入出力操作の実行または Fortran 組み込み機能の呼び出しができる Fortran スレッドは、一度に 1 つだけです。 1 つの Fortran スレッドしかないマルチスレッド・アプリケーションで、libxlf90_r.so の代わりに libxlf90_t.so を使用 して、libxlf90_r.so におけるスレッド同期のオーバーヘッドを回避することができます。
マルチスレッドの実行可能プログラムを複数の Fortran スレッドとバインドする場合は、
libxlf90_r.so を使用する必要があります。
呼び出しコマンド xlf_r、
xlf90_r、
xlf95_r、
xlf2003_r、
xlf2008_r、または
xlcuf
を使用することによって、正しいリンクが保証されることに注意してください。
- 呼び出しコマンド f77、 fort77、 f90、 f95、 f2003、 xlf、 xlf90、 xlf95、 xlf2003、および xlf2008 では、ディレクティブ・トリガーはデフォルトで IBM* です。
- その他のすべての呼び出しコマンドでは、ディレクティブ・トリガーはデフォルトで IBM* および IBMT です。
- -qsmp が有効であれば、コンパイラーはディレクティブ・トリガー IBMP、SMP$、および $OMP も認識します。
- -qthreaded が有効であれば、コンパイラーは IBMT ディレクティブ・トリガーも認識します。
