WSL2 による gfortran と intel fortran の環境構築

# 概要
WSL2 を使って，Fortran の実行環境を整備する方法をまとめました．
具体的には，[gfortran](https://gcc.gnu.org/fortran/) と [Intel Fortran](https://www.intel.com/content/www/us/en/developer/tools/oneapi/fortran-compiler.html#gs.5r1uph) を WSL2 上でインストール方法を紹介します．

- 利用可能になるまでの所要時間
    - gfortran : 1分
    - Intel Fortran : 30分
<br / >
- 実行環境は Windows 11 です

WSL2 のインストール方法については以下の記事をご覧ください．

https://qiita.com/zakoken/items/61141df6aeae9e3f8e36


# 目次
- [gfortran のインストール方法](#1-gfortran-のインストール方法)
- [Intel Fortran のインストール方法](#2-intel-fortran-のインストール方法)


# 1. gfortran のインストール方法

Windows では [GNU Fortran](https://gcc.gnu.org/fortran/) のダウンロードページに行く必要がありますが，WSL2 ではUbuntu ターミナルに `sudo apt install gfortran` と入力するだけで OK です．

``` terminal:Ubuntu
sudo apt install gfortran
```

### 確認方法

`gfortran` と入力して，以下の応答があれば gfortran が利用可能な状態です．

``` terminal:Ubuntu
gfortran
gfortran: fatal error: no input files
compilation terminated.
```

::: note info
共有メモリ型の並列計算に使う [OpenMP](https://www.openmp.org/) も利用可能です．
:::

### GNU make コマンドの利用

gfortran のコンパイルに便利な [GNU make](https://www.gnu.org/software/make/) は **インストール済み** です．
試しに `make --version` と入力してみましょう．

``` terminal:Ubuntu
make --version
GNU Make 4.3
Built for x86_64-pc-linux-gnu
Copyright (C) 1988-2020 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
```

# 2. Intel Fortran のインストール方法

[Intel Fortran](https://jp.xlsoft.com/documents/intel/compiler/fortran/23.0/fortran_gsg/get-started-with-fortran-compiler.html) とは インテル社が提供する **無償** の fortran コンパイラです．
gfortran に比べてオプション依存性が高く，通常 gfortran よりも非常に高速です．
使い方はコンパイル時に `gfortran` と書いていた部分を `ifx` と変えるだけです．
なお，`ifx` オプションは `gfortran` とは異なるので注意してください．

これを利用するには，以下の二つをインストールする必要があります．
- Intel oneAPI Base Toolkit
- Intel oneAPI HPC Toolkit

gfortran のインストール方法と異なり，インテル社のダウンロードページにアクセスする必要があるため，やや複雑です．

<br / >

主に，以下の記事を参考にさせて頂きました．

https://estuarine.jp/2023/04/oneapi-ubuntu-22-04/

https://qiita.com/implicit_none/items/35bc4be8f2022903747a

## 2-1. Intel Fortran のインストール

1. Intel のリポジトリにアクセスして，インストールする準備を行う (コピペでOK)
    ```terminal:Ubuntu
    wget -O- https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB | gpg --dearmor | sudo tee /usr/share/keyrings/oneapi-archive-keyring.gpg > /dev/null
    ```
1. 上のリポジトリを確認するように設定する (コピペでOK)
    ```terminal:Ubuntu
    echo "deb [signed-by=/usr/share/keyrings/oneapi-archive-keyring.gpg] https://apt.repos.intel.com/oneapi all main" | sudo tee /etc/apt/sources.list.d/oneAPI.list 
    ```
1. 次を実行
    ```terminal:Ubuntu
    sudo apt update
    ```
1. Intel oneAPI Base Toolkit と Intel oneAPI HPC Toolkit を順番にインストールする
(20分くらいかかります)
    ``` terminal : Ubuntu
    sudo apt install intel-basekit
    sudo apt install intel-hpckit
    ```

これで Intel Fortran 自体のインストールは完了しました．
インストール先は `/opt/intel/oneapi/` 以下です．

一応，最後に `sudo apt update` をしておきましょう．

::: note info
エラーが出る場合は `sudo apt update` や `sudo apt upgrade` を実行してから，再試行してみてください．
:::

## 2-2. Intel Fortran の有効化

Intel Fortran はインストールしただけでは利用できません．
試しに，`ifx --version` と入力してみると，次のように返答されます．
``` terminal:Ubuntu
ifx --version
Command 'ifx' not found, ...
```

Intel Fortran を有効化するには，`source /opt/intel/oneapi/setvars.sh` と入力します．
``` terminal:Ubuntu
source /opt/intel/oneapi/setvars.sh
```

改めて `ifx --version` と入力してみると，無事動くことが確認できます．
``` :Ubuntu
ifort --version
ifx (IFX) 2025.1.1 20250418
Copyright (C) 1985-2025 Intel Corporation. All rights reserved.
```

## 2-3. Ubuntu 起動時に Intel Fortran を有効化しておく
いちいち，`source /opt/intel/setvars.sh` と打つのは面倒なので，Ubuntu 起動時に自動で有効化するようにしておきましょう．
具体的には，`~/.bashrc` に `source /opt/intel/oneapi/setvars.sh` を追記します．
``` :Ubuntu
vim ~/.bashrc
# 最後尾に以下を追加
source /opt/intel/oneapi/setvars.sh
```

確認のため，Ubuntu を閉じて再度 `ifx --version` と入力してみましょう．
``` :Ubuntu
ifx --version
ifx (IFX) 2025.1.1 20250418
Copyright (C) 1985-2025 Intel Corporation. All rights reserved.
```
無事，自動で起動していることが確認できます．


## 2-4. BLAS と LAPACK の有効化

上記の方法でインストールすると，BLAS と LAPACK が既にインストールされています．
試しに，`echo $MKLROOT` と入力してみましょう．

``` :Ubuntu
echo $MKLROOT
/opt/intel/oneapi/mkl/2025.1
```
きちんと `opt/intel/oneapi/` 以下に入っています．
mkl とは Intel Math Kernel Library の略称で，BLAS や LAPACK が格納されています．

これらを使用するにはコンパイルオプションを適切に書く必要があります．
ただし，オプションはマシンに依存するため，以下を参考に作成してください．
※ lapack95 を簡単には使えないようなので，通常の lapack を使用してください．

https://www.intel.com/content/www/us/en/developer/tools/oneapi/onemkl-link-line-advisor.html#gs.e2kdi1



# まとめ

WSL2 上に gfortran と Intel Fortran を導入する方法をまとめました．
何かの参考になれば大変幸いです．

WSL2 上に Python の実行環境を構築する方法をまとめた記事も書いていますので，興味のある方はご覧ください．

https://qiita.com/zakoken/items/8ddfda7267e7d95b3c46

<!--
## 2-4. remark #10448って何？

~~`ifort --version` を実行すると，`remark #10448` とコメントが付きます．
実は Intel Fortran は2024年末を持ってサービスを終了するようで，そのことを親切に教えてくれていたのです．
毎回コメントされてお節介と言う人は，コメントにもあるように，コンパイルオプションに `-diag-disable=10448` を追加しておきましょう．

[参考記事]

https://qiita.com/implicit_none/items/ebda9b9fe77f083b8808


https://www.xlsoft.com/jp/blog/intel/2023/12/19/deprecation-of-the-intel-fortran-compiler-classic-ifort/#:~:text=%E3%82%A4%E3%83%B3%E3%83%86%E3%83%AB%E3%81%AF%202023%E5%B9%B411,%E5%89%8A%E9%99%A4%E3%80%8D%E3%81%A8%E3%81%AF%E7%95%B0%E3%81%AA%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82
-->

<!--
## 参考文献
- [(公式) GNU Fortran](https://gcc.gnu.org/fortran/)
- [(公式) Intel Fortran Compiler](https://www.intel.com/content/www/us/en/developer/tools/oneapi/fortran-compiler.html#gs.5sgo6x)
- [(公式) OpenMP](https://www.openmp.org/)
- [(公式) Make - GNU Project](https://www.gnu.org/software/make/)
- [(公式) インテル Fortran コンパイラー](https://jp.xlsoft.com/documents/intel/compiler/fortran/23.0/fortran_gsg/get-started-with-fortran-compiler.html)
- [Ubuntu 22.04 LTS における Intel oneAPI (ifort) のインストール (東京大学 佐々木淳研究室)](https://estuarine.jp/2023/04/oneapi-ubuntu-22-04/)
- [Intel oneAPI Base Toolkit + HPC Toolkit (Intel Fortran)のインストール（Linux版）(Qiita @implicit_none)](https://qiita.com/implicit_none/items/35bc4be8f2022903747a)
- [ifxに備えよう (Qiita @implicit_none)](https://qiita.com/implicit_none/items/ebda9b9fe77f083b8808)
- [インテル® Fortran コンパイラー・クラシック (ifort) の廃止 (インテルソフト最新情報発信局)](https://www.xlsoft.com/jp/blog/intel/2023/12/19/deprecation-of-the-intel-fortran-compiler-classic-ifort/#:~:text=%E3%82%A4%E3%83%B3%E3%83%86%E3%83%AB%E3%81%AF%202023%E5%B9%B411,%E5%89%8A%E9%99%A4%E3%80%8D%E3%81%A8%E3%81%AF%E7%95%B0%E3%81%AA%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82)
-->