--- title: 'Intel Fortran コンパイラ & Intel Fortran コンパイラ クラシック' visible: false --- [toc] ## 利用環境{#environment} ### 利用できるバージョン・システム{#version} バージョン | システムA | システムB | システムC | システムG | クラウド | 備考 -------- | ----------- | ----------- | ----------- | ---- | ----- | ----- | ----- 2022.1.2 | + | + | + | - | + | Intel oneAPI 2022 ### 環境設定{#modules} | バージョン | moduleファイル名 | | --- | --- | | 2022.1.2 (default) | intel/2022 | システムにログインした時点で、Intelコンパイラがデフォルトで設定されています。 ```nohighlight $ module list Currently Loaded Modulefiles: x) SysB/2022 x) PrgEnvIntel/2022 x) intel/2022 ``` ログイン時に自動で環境設定を行いたい場合は、ログインシェルの起動ファイルに必要なmoduleコマンドを記述してください。詳細は[環境設定](/config)をご覧ください。 moduleコマンドの詳細は[Modules](/config/modules)をご覧ください。 ## コンパイル方法{#usage} ### コマンド{#command} | コンパイラ | コマンド | 実行形式 | | --- | --- | --- | | Intel Fortran コンパイラ クラシック | ifort | ifort [オプション] ファイル名 | | Intel Fortran コンパイラ | ifx | ifx [オプション] ファイル名 | ### 主なオプション{#option} | オプション名 | 説明 | | --- | --- | | -o FILENAME | オブジェクトファイルの名前を指定します。 | | -mcmodel=medium | 2Gbyteを超えてメモリを利用できるようになります。 | | -shared-intel | インテルが提供するライブラリをすべて動的にリンクします。 | | -fpic | 位置に依存しないコードを生成します。 | | -qopenmp | OpenMP指示子を有効にしてコンパイルします。<br>指定した GPU へのオフロードを有効にするには、-fopenmp-targets (\*1) を併せて使用します。 | | -parallel (\*2) | 自動並列化を行います。 | | -O0/-O1/-O2/-O3 | 最適化のレベルを指定します(デフォルトは-O2)。 | | -fast | プログラムの実行速度が最大になるように最適化します。-fast オプションにより、次のオプションが付与されます。<br>```-ipo, -O3, -no-prec-div,-static, -fp-model fast=2, and -xHost``` | | -ip (\*2) | 単一ファイル内で、手続き間の処理を最適化します。 | | -ipo | 複数ファイル間で、手続き間の処理を最適化します。 | | -qopt-report | 実施したすべての最適化についての情報を表示します。(\*2)<br>実施した最適化についての情報を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 でのみ使用可<br> (\*2) ifort でのみ使用可 ## コンパイル例{#sample} ### 逐次プログラム{#serial} ```nohighlight $ ifort test.f90 # ifortの例 $ ifx test.f90 # ifxの例 ``` ### 自動並列化の利用{#auto_parallel} ```nohighlight $ ifort -parallel test.f90 $ tssrun -A p=1:t=4:c=4 ./a.out # 並列数4を指定して実行 ``` ※ifxでは使用不可 ### OpenMPの利用{#openmp} OpenMPは、プログラムの並列化のためのオープン規格です。 ソースコードに#pragma ompで始まる指示を書き込み、所定のオプションをつけてコンパイルするだけで、コンパイラに自動で並列化を行わせることができます。 OpenMPへの指示を書き込んだソースコードをコンパイルするには、-qopenmpオプションをつけます。 ```nohighlight $ icx -qopenmp test.c ``` コンパイルしたプログラムを実行する際、-Aオプションでtとcに並列数を指定すると、その並列数でプログラムが実行されます。 ```nohighlight $ tssrun -A p=1:t=8:c=8 ./a.out # 並列数8を指定して実行 ``` ## コンパイル時メッセージ{#message} Intel Fortran コンパイラは、プログラムの誤りや通知すべき情報があるときに、以下に示す形式でメッセージを出力します。 ```nohighlight ファイル名(行番号): XXX #YYY: メッセージ本文 ソースコードの該当行の内容 --------------^ ``` - XXX : メッセージ種別(error/warning) - YYY : メッセージの通し番号 - ポインタ(—-^) : ソースコードの該当行でエラーが発見された正確な場所 **出力例** ```nohighlight 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) ``` ## 利用可能なライブラリ{#library} ### MPIライブラリ{#mpi_library} ### 数値計算ライブラリ{#numerical_library} ## マニュアル{#manual}