---
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}