Windows 11で VS Code + Modern Fortran:Fortran(gfortran + MPI)開発環境を整える

研究用PCのセットアップ用メモ。VS Code 上で Fortran を編集し、gfortranmpif90 でコンパイルして実行できる状態まで持っていく。


VS Code 側の準備

拡張機能を入れる

VS Code を起動して、左の Extensions(四角いアイコン) から以下を入れる。

  • C/C++(Microsoft)
    Modern Fortran の依存関係として必要
  • Modern Fortran(fortran-lang.org)
    シンタックスハイライトと基本補完が動く

「This extension is not signed…」で Modern Fortran が入らない場合

  1. Extensions で Modern Fortran を開く
  2. 右上の ⚙(歯車) → Install → Install Anyway(類似の表記)を選ぶ
  3. インストール後、再読み込み

fortls(Language Server)を入れる

Modern Fortran の高度機能(定義ジャンプ、hover、シンボル検索など)は fortls があると大きく改善する。

Python を入れる(入っていなければ)

  • Microsoft Store 版でも公式版でもOK
  • 重要なのは pip が使えること
  • 自分は Python 3.13 を入れた

fortls をインストールする

PowerShell で実行。

python -m pip install --user fortls

VS Code に fortls のパスを設定する

fortls.exe の場所を調べる

PowerShell で確認。

python -m pip show fortls

環境によって fortls.exe は例えば次のような場所にある。

C:\Users\<user>\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.13_qbz5n2kfra8p0\LocalCache\local-packages\Python313\Scripts\fortls.exe

settings.json に追記する

File > Preferences > Settings → 右上の {}(Open Settings JSON)から追記。

{
  "fortran.fortls.path": "C:/Users/<user>/AppData/Local/Packages/PythonSoftwareFoundation.Python.3.13_qbz5n2kfra8p0/LocalCache/local-packages/Python313/Scripts/fortls.exe"
}

ここが通ると補完と定義ジャンプが一気に賢くなる。


gfortran と MPI を入れる(MSYS2 + MS-MPI)

Windows では OpenMPI が基本的に扱いづらいので、MPI は Microsoft MPI(MS-MPI) を使う。
コンパイラは MSYS2 の MinGW-w64(UCRT64)版 gfortran を使う。


MSYS2 を入れる(gfortran本体)

MSYS2 をインストールして更新する

  1. MSYS2公式から msys2-x86_64-latest.exe を入れてインストール
  2. インストール後、MSYS2 UCRT64 を起動
  3. まずMSYS2全体を更新
pacman -Syu

更新後に指示が出たら一度閉じて再起動。

gfortran を入れる(UCRT64)

UCRT64 で以下を実行(全部 Yes)。

pacman -S --needed mingw-w64-ucrt-x86_64-toolchain mingw-w64-ucrt-x86_64-gcc-fortran

確認:

gfortran --version

MS-MPI(Windows用MPI)を入れる

MS-MPI Runtime と SDK を入れる

Microsoft Learn の MS-MPI ダウンロードページから以下をそれぞれインストールする。

  • MS-MPI
  • MS-MPI SDK

インストール後、PowerShell で確認。

mpiexec -?

MSYS2 側に MS-MPI 用ラッパを入れる(mpifort / mpif90)

MSYS2 上で mpifort / mpif90 を使えるようにする。UCRT64 で実行。

pacman -S mingw-w64-ucrt-x86_64-msmpi

確認:

mpifort -show

VS Code 内蔵ターミナルを UCRT64 に固定する

VS Code の内蔵ターミナルから MSYS2 UCRT64 を確実に開く設定。
settings.json に追加(既に profiles があれば中に足す)。

{
  "terminal.integrated.profiles.windows": {
    "MSYS2 UCRT64 (integrated)": {
      "path": "C:/msys64/msys2_shell.cmd",
      "args": ["-defterm", "-here", "-no-start", "-ucrt64"],
      "icon": "terminal-bash"
    }
  },
  "terminal.integrated.defaultProfile.windows": "MSYS2 UCRT64 (integrated)"
}

ポイント:

  • msys2_shell.cmd は VS Code 内蔵端末向け
  • -ucrt64MSYSTEM=UCRT64 を強制
  • ucrt64.exe は外部端末アプリ寄りで、内蔵端末には向きにくい

使い方メモ(コンパイル〜実行)

ターミナルを開く

  • VS Code でターミナル(Ctrl +
  • 右上の + 付近で MSYS2 UCRT64 (integrated) を選ぶ

コンパイル(単体)

gfortran -O2 **/*.f90 -o a.exe

コンパイル(MPI)

mpif90 -O2 **/*.f90 -o a.exe

実行(MPI例)

mpiexec -n 4 a.exe

詰まった点メモ

  • include 'mpif.h' は使えない(環境によっては見つからない)
  • MPI は use mpi を使う
  • use mpiimplicit none より前に置く
program main
  use mpi
  implicit none
  ! ...
end program main

コメント

タイトルとURLをコピーしました