Skip to content

Latest commit

 

History

History
175 lines (122 loc) · 4.6 KB

sec06-05_install_fortran.md

File metadata and controls

175 lines (122 loc) · 4.6 KB

Fortran のインストール

1. Fortran コンパイラのインストール

数値計算にFortranを使用する機会が多いのでFortranコンパイラをインストールし環境構築します。

1-1. gfortran のインストール

Fortranコンパイラであるgfortranをインストールするには、以下のコマンドを実行します。

sudo apt install gfortran

gfortranが正しくインストールされているか否かはバージョンを表示して確認します。
執筆時点でのバージョンは7.4.0でした。

gfortran --version

1-2. 最新バージョンのインストール

PPAを登録してあるので最新版(執筆時点では9.x.x)のgfortranをインストールすることができます。
以下のコマンドで複数バージョンをインストールします。

sudo apt install gfortran-8 gfortran-9
gfortran-8 --version
gfortran-9 --version

1-3. バージョンの切替

以下のコマンドでgfortranalternativesを登録して--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>、さもなければ選択肢の番号のキーを押してください:

1-4. サンプルプログラムのコンパイル&実行

適当なディレクトリに以下のソースコードを記載します。

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

2. MPI のインストール

Fortranの数値計算では計算を効率的に行うためにMPIを使用する機会が多いのでインストールします。

2-1. OpenMPI のインストール

今回は使用している人数が最も多いとされているOpenMPIを以下のコマンドでインストールします。

# libopenmpi-devをインストールしないとコンパイルできません
sudo apt install openmpi-bin libopenmpi-dev
# バージョン確認(3つ方法があります)
ompi_info
mpiexec --version
mpirun --version

2-2. サンプルプログラムのコンパイル&実行

適当なディレクトリに以下のソースコードを記載します。

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