(2025年10月31日)
【ご注意】
本ページは、Apple Silicon (Arm) Mac 環境において、nAG Fortran コンパイラ (nagfor) と MPICH (MPI実装) を組み合わせて利用する手順を検証した技術参考情報です。
記載されている手順やバージョンは一例であり、お客様の特定の環境での動作を保証するものではありません。また、本構成はnAGの公式サポート対象外となる場合がありますので、あらかじめご了承ください。
目的
Apple Silicon (Arm) Mac 版の nAG Fortran コンパイラ (Release 7.2) を使用し、MPICH (4.3.2) をソースからビルドして、簡単な Fortran MPI プログラムが並列実行できることを確認します。
検証結果
nAG Fortran コンパイラでビルドした MPI Fortran プログラムを、mpiexec -n 4 でマルチプロセス実行できることを確認しました。
- ハードウェア: Apple Silicon (ARM64 / Apple M2 相当)
- OS: macOS Ventura 13.2.1
- Fortranコンパイラ: nAG Fortran Compiler Release 7.2 (Build 7231)
nagfor -V NAG Fortran Compiler Release 7.2(Shin-Urayasu) Build 7231 Product NPMA872NA for Apple Arm Mac OSX 64-bit Copyright 1990-2024 The Numerical Algorithms Group Ltd.
- MPI: MPICH 4.3.2 (ソースからビルド)
- C/C++コンパイラ:
/usr/bin/clang,/usr/bin/clang++
作業用ディレクトリ(例: ~/MPI-Test)にて、MPICH 4.3.2 のソースコードを取得・展開します。
cd ~ mkdir -p MPI-Test cd MPI-Test curl -L -O http://www.mpich.org/static/downloads/4.3.2/mpich-4.3.2.tar.gz tar -xf mpich-4.3.2.tar.gz
ソースディレクトリ内にビルド専用ディレクトリを作成します。
cd mpich-4.3.2 mkdir build-nag cd build-nag
MPICH に対し、使用するコンパイラ (C/C++: clang, Fortran: nagfor) を指定します。
重要: ここでは共有ライブラリ (dylib) を作成せず、静的ライブラリ (.a) のみを作成する構成とします。
../configure \
CC=/usr/bin/clang \
CXX=/usr/bin/clang++ \
FC=/usr/local/bin/nagfor \
F77=/usr/local/bin/nagfor \
--prefix=$HOME/mpich-nag \
--disable-debuginfo \
--disable-shared \
--enable-static
以下のオプションを指定しています。
CC,CXX: C/C++ コンパイラ (clang)FC,F77: Fortran コンパイラ (nagfor)--prefix: インストール先 (ここではホームディレクトリ配下を指定)--disable-shared --enable-static: Dylib のビルドを無効化し、静的ライブラリのみを有効化します。
configure が完了したら、ビルドとインストールを実行します。
make -j4 make install
これで --prefix で指定したディレクトリ (例: $HOME/mpich-nag) 以下に mpiexec や mpifort がインストールされます。
インストールした MPICH のコマンドを実行できるよう PATH を設定します。
export PATH=$HOME/mpich-nag/bin:$PATH which mpifort which mpiexec
which コマンドで、インストール先のパス (例: /Users/ユーザ名/mpich-nag/bin/mpifort) が表示されることを確認します。
以下の簡単な Fortran MPI プログラム (hello_mpi.f90) を作成します。
program hello_mpi use mpi implicit none integer :: ierr, rank, nprocs call MPI_Init(ierr) call MPI_Comm_rank(MPI_COMM_WORLD, rank, ierr) call MPI_Comm_size(MPI_COMM_WORLD, nprocs, ierr) print *, 'Hello from rank', rank, 'of', nprocs call MPI_Finalize(ierr) end program hello_mpi
mpifort (内部で nagfor を呼び出すラッパー) を使ってコンパイルします。
mpifort -o hello_mpi hello_mpi.f90
mpiexec を使用して、4プロセスで実行します。
mpiexec -n 4 ./hello_mpi
以下の実行結果(順序は前後する場合があります)が得られれば、正常に動作しています。
Hello from rank 0 of 4 Hello from rank 1 of 4 Hello from rank 2 of 4 Hello from rank 3 of 4
以上の手順により、Apple Silicon (Arm) Mac 環境において、nAG Fortran コンパイラ (Release 7.2) と MPICH 4.3.2 (静的リンク構成) を組み合わせ、Fortran MPI プログラムをコンパイル・並列実行できることが確認できました。
- MPICH の
configure時にFC=/usr/local/bin/nagforを指定します。 --disable-shared --enable-staticを指定して静的ライブラリとしてビルドします。- 生成された
mpifortでコンパイルし、mpiexecで並列実行が可能です。
