数値計算にFortran
を使用する機会が多いのでFortranコンパイラ
をインストールし環境構築します。
Fortranコンパイラであるgfortran
をインストールするには、以下のコマンドを実行します。
sudo apt install gfortran
gfortran
が正しくインストールされているか否かはバージョンを表示して確認します。
執筆時点でのバージョンは7.4.0
でした。
gfortran --version
PPA
を登録してあるので最新版(執筆時点では9.x.x)のgfortran
をインストールすることができます。
以下のコマンドで複数バージョンをインストールします。
sudo apt install gfortran-8 gfortran-9
gfortran-8 --version
gfortran-9 --version
以下のコマンドでgfortran
のalternatives
を登録して--config
オプションで設定します。
sudo update-alternatives --install /usr/bin/gfortran gfortran /usr/bin/gfortran-7 70
sudo update-alternatives --install /usr/bin/gfortran gfortran /usr/bin/gfortran-8 80
sudo update-alternatives --install /usr/bin/gfortran gfortran /usr/bin/gfortran-9 90
sudo update-alternatives --config gfortran
alternative gfortran (/usr/bin/gfortran を提供) には 3 個の選択肢があります。
選択肢 パス 優先度 状態
------------------------------------------------------------
* 0 /usr/bin/gfortran-9 90 自動モード
1 /usr/bin/gfortran-7 70 手動モード
2 /usr/bin/gfortran-8 80 手動モード
3 /usr/bin/gfortran-9 90 手動モード
現在の選択 [*] を保持するには <Enter>、さもなければ選択肢の番号のキーを押してください:
適当なディレクトリに以下のソースコードを記載します。
cd
mkdir test_compile
cd test_compile/
nano hello.f90
! [hello.f90]
program hello
implicit none
print *, "Hello, World!"
end program hello
ソースを以下のコマンドでコンパイルして実行します。ターミナルにHello World!
と表示されれば成功です。
# 使用したgfortranのバージョンは8.3.0
gfortran hello.f90 -o hello_gfortran8
./hello_gfortran8
Fortranの数値計算では計算を効率的に行うためにMPI
を使用する機会が多いのでインストールします。
今回は使用している人数が最も多いとされているOpenMPI
を以下のコマンドでインストールします。
# libopenmpi-devをインストールしないとコンパイルできません
sudo apt install openmpi-bin libopenmpi-dev
# バージョン確認(3つ方法があります)
ompi_info
mpiexec --version
mpirun --version
適当なディレクトリに以下のソースコードを記載します。
cd
mkdir test_compile
cd test_compile/
nano mpi_hello.f90
! [mpi_hello.f90]
program mpi_hello
implicit none
include 'mpif.h'
integer :: mpi_err = 1
integer :: mpi_size = 1
integer :: my_rank = 0
call mpi_init(mpi_err)
if (mpi_err == 0) then
call mpi_comm_size(MPI_COMM_WORLD, mpi_size, mpi_err)
call mpi_comm_rank(MPI_COMM_WORLD, my_rank, mpi_err)
end if
print *, 'size:', mpi_size, 'rank:', my_rank, 'Hello, World!'
call mpi_finalize(mpi_err)
end program mpi_hello
ここで重要なのはinclude 'mpif.h'
です。MPIヘッダファイルをincludeすることでMPIが使用可能になります。
以下のコマンドでコンパイルして実行します。MPI用のコンパイラはmpif90
です。
ただし、mpif90 --version
としても裏でコンパイルしているコンパイラのバージョンが表示されます・
mpif90 -o mpi_hello_openmpi mpi_hello.f90
MPIはmpiexec
、もしくはmpirun
を用いて実行します。
ターミナルにHello World!
と2回表示されれば成功です。
# mpiexecを用いた実行
mpiexec -np 2 ./mpi_hello_openmpi
# mpiexecを用いた実行
mpirun -np 2 ./mpi_hello_openmpi