Intel Fortran コンパイラ & Intel Fortran コンパイラ クラシック

バージョン システムA システムB システムC システムG クラウド 備考
2022.1.2 + + + - + Intel oneAPI 2022

バージョン moduleファイル名
2022.1.2 (default) intel/2022

システムにログインした時点で、Intelコンパイラがデフォルトで設定されています。

$ module list
Currently Loaded Modulefiles:
x) SysB/2022   x) PrgEnvIntel/2022  x) intel/2022

ログイン時に自動で環境設定を行いたい場合は、ログインシェルの起動ファイルに必要なmoduleコマンドを記述してください。詳細は環境設定をご覧ください。 moduleコマンドの詳細はModulesをご覧ください。

コンパイラ コマンド 実行形式
Intel Fortran コンパイラ クラシック ifort ifort [オプション] ファイル名
Intel Fortran コンパイラ ifx ifx [オプション] ファイル名

オプション名 説明
-o FILENAME オブジェクトファイルの名前を指定します。
-mcmodel=medium 2Gbyteを超えてメモリを利用できるようになります。
-shared-intel インテルが提供するライブラリをすべて動的にリンクします。
-fpic 位置に依存しないコードを生成します。
-qopenmp OpenMP指示子を有効にしてコンパイルします。
指定した GPU へのオフロードを有効にするには、-fopenmp-targets (*1) を併せて使用します。
-parallel (*2) 自動並列化を行います。
-O0/-O1/-O2/-O3 最適化のレベルを指定します(デフォルトは-O2)。
-fast プログラムの実行速度が最大になるように最適化します。-fast オプションにより、次のオプションが付与されます。
-ipo, -O3, -no-prec-div,-static, -fp-model fast=2, and -xHost
-ip (*2) 単一ファイル内で、手続き間の処理を最適化します。
-ipo 複数ファイル間で、手続き間の処理を最適化します。
-qopt-report 実施したすべての最適化についての情報を表示します。(*2)
実施した最適化についての情報をYAMLで出力します。(*1)
-qopt-report-file=KEYWORD 実施した最適化についての情報を、ファイル(filename) / 標準エラー出力(stderr) / 標準出力(stdout)に出力します。このオプションを使用する場合、オプション -qopt-report を指定する必要はありません。
-free/-nofixed プログラムが自由形式で記述されていることを明示します。
-nofree/-fixed プログラムが固定形式で記述されていることを明示します。
-warn all すべての警告メッセージを表示します。declarations,alignments等を指定することも可能です。
-check all すべての実行時診断機能を有効にします。bounds,uninit等を指定することも可能です。

(*1) ifx でのみ使用可
(*2) ifort でのみ使用可

$ ifort test.f90   # ifortの例
$ ifx test.f90     # ifxの例

$ ifort -parallel test.f90
$ tssrun -A p=1:t=4:c=4 ./a.out # 並列数4を指定して実行

※ifxでは使用不可

OpenMPは、プログラムの並列化のためのオープン規格です。 ソースコードに#pragma ompで始まる指示を書き込み、所定のオプションをつけてコンパイルするだけで、コンパイラに自動で並列化を行わせることができます。

OpenMPへの指示を書き込んだソースコードをコンパイルするには、-qopenmpオプションをつけます。

$ icx -qopenmp test.c

コンパイルしたプログラムを実行する際、-Aオプションでtとcに並列数を指定すると、その並列数でプログラムが実行されます。

$ tssrun -A p=1:t=8:c=8 ./a.out # 並列数8を指定して実行

Intel Fortran コンパイラは、プログラムの誤りや通知すべき情報があるときに、以下に示す形式でメッセージを出力します。

ファイル名(行番号): XXX #YYY: メッセージ本文
ソースコードの該当行の内容
--------------^
  • XXX : メッセージ種別(error/warning)
  • YYY : メッセージの通し番号
  • ポインタ(—-^) : ソースコードの該当行でエラーが発見された正確な場所

出力例

sample.f90(26): error #5560: Subscript #2 of the array C has value 20 which is greater than the upper bound of 2
print *, c(1,1),",", c(1,20)
-----------------------^
compilation aborted for sample.f90 (code 1)