Fortranコンパイラ一覧

## 概要

Fortranコンパイラはさまざまなベンダーにより開発され、有償または無償で提供されている。提供されているコンパイラの数が多く、毎回検索する手間を省くため、入手先やドキュメントのリンク等を本記事にまとめる。

## コンパイラ一覧

### GNU

GNU Compiler Collection (GCC) の一部として提供されている。

2003年頃に[G95プロジェクト](https://g95.sourceforge.net/)をフォークして、通称GFortranとして開発されている。多くのLinuxディストリビューションで、デフォルトのパッケージマネージャーからインストールすることができる。最新の正式バージョンは14.2。

コマンドは`gfortran`。

クロスプラットフォームでLinux、Windows、macOS、FreeBSDなどで利用可能。

cf. https://gcc.gnu.org/fortran/

repos. https://github.com/gcc-mirror/gcc (mirror)

docs. https://gcc.gnu.org/onlinedocs/gfortran/index.html

### Intel

[Intel oneAPI HPC Toolkit](https://www.intel.com/content/www/us/en/developer/tools/oneapi/hpc-toolkit-download.html)に含まれている。

以前はIntel Parallel Studioという開発ツールに含めて提供されていたが、現在はIntel oneAPIという名前で提供されている。

コマンドは`ifx`（バックエンドはLLVM）。

LinuxとWindowsで利用可能。

最近（version 2025.0.0より）、`ifort`が削除された。

cf. https://www.intel.com/content/www/us/en/developer/tools/oneapi/toolkits.html

docs. https://www.intel.com/content/www/us/en/developer/tools/oneapi/fortran-compiler-documentation.html

### NVIDIA

[PGI Fortran](https://developer.nvidia.com/legacy-pgi-support) `pgfortran`の流れを汲むコンパイラ。

NVIDIA HPC SDKの一部として提供されている。

コマンドは`nvfortran`。

Linuxで利用可能。

CUDA Fortranで開発する場合にはこれが唯一の選択肢か。

cf. https://developer.nvidia.com/hpc-sdk

cf. https://developer.nvidia.com/cuda-fortran

docs. https://docs.nvidia.com/hpc-sdk/compilers/index.html

### Flang

LLVMベースで開発されているが、Flangと呼ばれるもしくはコマンドが`flang`のコンパイラが複数あるので、一番ややこしい。

#### Classic Flang

PGI Fortranのオープンソースバージョンの系統である。Classicと呼ばれるのはレトロニムかもしれない。

repos. https://github.com/flang-compiler/flang

#### LLVM Flang

(Classic) Flangを元に出発し、LLVMのプロジェクトに含まれる形で開発されているFlang。以前はF18という名前だった。

cf. https://flang.llvm.org/docs/index.html

repos. https://github.com/llvm-flang/flang

Ubuntu/Debianでは`apt`のリポジトリを追加することで簡単にインストールできるようだ（以下はv20をインストールするコマンドの例）。

```shell
# インストールコマンドの例 (Flang-20)
% wget -qO- https://apt.llvm.org/llvm-snapshot.gpg.key | sudo tee /etc/apt/trusted.gpg.d/apt.llvm.org.asc
% sudo add-apt-repository -y deb http://apt.llvm.org/jammy/ llvm-toolchain-jammy-20 main
% sudo apt update -y
% sudo apt install -y flang-20

% flang-new-20 --version
Ubuntu flang version 20.1.0 (++20250225053135+098492a228f7-1~exp1~20250225053252.62)
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/lib/llvm-20/bin
```

cf. [LLVM Debian/Ubuntu nightly packages](https://apt.llvm.org/)

#### AMD AOCC

FlangをベースとしてAMDによって開発されている。

Classic Flangをベースに拡張したもの（AOCC Flang）とLLVM Flangベースの（AMD Next Gen Fortran Compiler `amdflang`）がある。

cf.  https://www.amd.com/ja/developer/aocc.html

docs. https://docs.amd.com/r/en-US/57222-AOCC-user-guide/Introduction

cf. https://rocm.blogs.amd.com/ecosystems-and-partners/fortran-journey/README.html

cf. https://github.com/amd/InfinityHub-CI/tree/main/fortran

以下は2024年2月発行のユーザーガイド（日本語、PDF、40頁）
cf. https://www.amd.com/content/dam/amd/en/documents/developer/version-4-2-documents/aocc/ja-aocc-4.2-user-guide.pdf

### LFortran

[Ondřej Čertík](https://ondrejcertik.com/)氏の旗振りによって開発されており、現在はアルファ版として提供されている。

コマンドは`lfortran`。

対話的に実行できるらしい。

cf. https://lfortran.org/

repos. https://github.com/lfortran/lfortran

docs. https://docs.lfortran.org/en/

### NAG

有償コンパイラ。Web上のドキュメントが豊富。

コマンドは`nagfor`。

最近、ベンダーの名前がNAGから*n*AGに変更されたようだ。

cf. https://www.nag-j.co.jp/nagfor

### その他

以下のコンパイラについては具体的な情報が少ない（いくつかはハードウェアとバンドルで提供されている？）

- NEC `nfort`（SX-Aurora TSUBASA用）
- 富士通 `frt`, `frtpx`： [Fortran使用手引書（PDF）](https://software.fujitsu.com/jp/manual/manualfiles/m220010/j2ul2473/02z009/j2ul-2473-02z0.pdf)
- Cray `crayftn`, cf. https://cpe.ext.hpe.com/docs/24.07/cce/index.html
- IBM `xlf95`
- ARM, cf. https://developer.arm.com/Tools%20and%20Software/Arm%20Fortran%20Compiler

## 参考文献

- https://fortran-lang.discourse.group/t/flang-compilers/9057
- [NVIDIA HPC SDKのインストールと実行 @implicit_none - Qiita](https://qiita.com/implicit_none/items/408e9e6727f82cd98b8f)
- [CPU/GPU プロセッサ　メーカー謹製 Fortran @cure_honey - Qiita](https://qiita.com/cure_honey/items/c1d2b1a5871648bf04ff)
- https://docs.amd.com/r/en-US/57222-AOCC-user-guide/Support-for-Annex-F-IEEE-754/IEC-559-of-C99/C11
- https://rocm.blogs.amd.com/ecosystems-and-partners/fortran-journey/README.html
- [モダンになったFlang(llvm19.1.5)を使ってみる @osada-yum - Qiita](https://qiita.com/osada-yum/items/119fa87336703e3ea1fc)