iMac 24" (M1)と iMac 27" (Intel) で改めてJAGURSで計算できる環境を作ったのでそのまとめ.
【訂正】2022.4.23
homebrew で, proj@7 が入っていることを同僚が教えてくれました.ので,proj-4.9.3は必要なく,Makefileで/opt/homebrew/Cellar/proj@7/7.2.1を/opt/homebrew/lib より前に指定すれば大丈夫なようです.かつ,最新版JAGURS(D0516)で,2020年に書いた mapproject.c の対応が本流に入ってるので,proj@7で無修正で動くようになりました.
ライブラリとして,netcdf, fftw3, proj4 が必要だけど,proj4は新しいのだと動かないので古いのを持ってくる.netcdfとfftw3は homebrew ので問題なし.
% brew install netcdf netcdf-fortran fftw3
proj4は,past-release から proj-4.9.3.tar.gz を持ってきました.
% ./configure --prefix=$HOME/local
% make
% make install
JAGURSのコンパイルは,Makefile.gfortran をベースにしました.
% rm Makefile (Makefile.SC_ICEに向いてるので)
% cp Makefile.gfortran Makefile
MPIはなし,とりあえず /usr/bin/gcc
% rcsdiff -u Makefile
===================================================================
RCS file: Makefile,v
retrieving revision 1.1
diff -u -r1.1 Makefile
--- Makefile 2022/02/04 21:52:49 1.1
+++ Makefile 2022/02/04 22:58:07
@@ -1,18 +1,18 @@
# FC: Specify Fortran90 compiler command.
-FC=mpif90
+FC=gfortran
# Added for displacement.
# PRJ4_DIR: Specify PROJ.4 install directory.
# CC&CFLAGS: Specify C compiler command and flags.
PROJ4_DIR=$(HOME)/local
-CC=gcc
+CC=/usr/bin/gcc
CFLAGS=-g -I$(PROJ4_DIR)/include
# BASE: Specify basic compiler options.
BASE=-cpp -fconvert=big-endian
# FFTW3_INCLUDE_DIR: Specify FFTW3 include directory.
-FFTW3_INCLUDE_DIR=$(HOME)/local/include
+FFTW3_INCLUDE_DIR=/opt/homebrew/include
# FFTW3_LIB: Specify linker options to link FFTW3.
FFTW3_LIB=-lfftw3
@@ -21,7 +21,7 @@
OPT=-O2 -fopenmp -I$(FFTW3_INCLUDE_DIR)
# NETCDF: Specify the path to NetCDF library.
-NETCDF=$(HOME)/local
+NETCDF=/opt/homebrew
# LIBS: Specify linker options.
LIBS=-L$(NETCDF)/lib -lnetcdff -lnetcdf -lhdf5_hl -lhdf5 -lsz -L$(PROJ4_DIR)/lib -lproj $(FFTW3_LIB) -lm
@@ -40,7 +40,7 @@
# MPI=ON: MPI version is made.
# Else, serial version is made.
-MPI=ON
+MPI=OFF
# USE_ALLTOALLV=ON: Use MPI_Alltoallv for inter-nest communications.
# Else, MPI_Allreduce is used.
せっかくなので,inputにあるサンプルをベースにして,ベンチマーク.
Intel ... 3.6GHz 10コア第10世代Intel Core i9プロセッサ
M1 ... 4つの高性能コアと4つの高効率コアを搭載した8コアCPU、8コアGPU、16コアNeural Engineを持つApple M1チップ
% cat gridfile.dat
SD01 SD01 1 bathy.SD01.grd disp.SD01.grd
SD02 SD01 0 bathy.SD02.grd disp.SD02.grd
SD03 SD02 0 bathy.SD03.grd disp.SD03.grd
tsun.par:
dt=0.5
tend=21600
itmap=1200
こんな感じの設定で,M1はフルに8コアなので,Intelもそれに合わせて OMP_NUM_THREADS=8 に制限して実行した.
Intel ... All 5187.004 [s](デフォ20coresで 4823.238[s])
M1 ... All 5174.547 [s]