GEM Benchmarking

August 3, 2026 ยท View on GitHub

Welcome to the GEM Benchmarking System!

You should have obtained this benchmark from https://github.com/ECCC-ASTD-MRD/gem

Requirements

  • Fortran and C compiler. Theses codes have been tested with compilers from GNU and Intel OneAPI (classic and llvm based)
  • An MPI implementation such as OpenMPI, MPICH or Intel MPI (with development package)
  • OpenMP support
  • BLAS, LAPACK or equivalent mathematical/scientific library (ie: MKL), with development package
  • fftw3 library (with development package) (tested with 3.3.10)
  • CMake (version >= 3.20)

Build and run steps

Compiler specifics

  • Compiler specific definitions and flags are defined within the cmake_rpn submodule of each code repository. If you need to change or add any, you can add or modify the rules into [git source path]/cmake_rpn/modules/ec_compiler_presets/default/[architecture]/

Build base library (librmn)

git clone https://github.com/ECCC-ASTD-MRD/librmn.git
cd librmn
git checkout 20.1.0-b8
git submodule update --init --recursive
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=[rmn install directory] ..
make install

Build verification tool (sverif)

git clone https://github.com/ECCC-ASTD-MRD/sverif.git
cd sverif
git checkout benchmark-20260803
git submodule update --init --recursive
mkdir build
cd build
cmake -Drmn_ROOT=[rmn install directory] -DCMAKE_INSTALL_PREFIX=[sverif install directory] ..
make install
export PATH=[sverif install directory]/bin:$PATH

Build model (GEM)

git clone https://github.com/ECCC-ASTD-MRD/gem.git
cd gem
git checkout benchmark-20260803
git submodule update --init --recursive
./download-dbase-benchmarks.sh .
. ./.common_setup [intel|gnu|nvhpc]
mkdir build
cd build
cmake ..
make -j 5
make work

Run model (GEM)

cd ../$GEM_WORK
  • The script findtopo will give you the possible CPU decomposition for the GEM_cfgs_GY_4km model configuration (fintopo -h for parameter definitions), ie:
findtopo -npex_low 20 -npex_high 250 -npey_low 20 -npey_high 200 -corespernode 256 -omp 8 -nml $GEM_WORK/configurations/GEM_cfgs_GY_4km/cfg_0000/gem_settings.nml > topo.txt

Run preparation script

runprep.sh -dircfg configurations/GEM_cfgs_GY_4km
  • Run model (or submit to queing system):

The -cpus parameters defines the mpi topology and the openmp number of threads [X MPI]x[Y MPI]x[OMP threads] (ie: 61x20x8).

This topology is used for 2 simultaneous model run (Yin+Yang), meaning you will have to use double this number of CPU for the submision/run itself.

In the below example, 9760 cores are needed per sub run, so a total of 19520 cores will be needed.

runmod.sh -dircfg configurations/GEM_cfgs_GY_4km -ptopo 61x20x8
  • If you need a job script so you can submit the job to a queuing system, make sure you define the GOAS_SCRIPT variable and load the common setup before running the runmod.sh command:
cd [gem src path]
. ./.common_setup [intel|gnu|nvhpc]
cd $GEM_WORK
runmod.sh -dircfg configurations/GEM_cfgs_GY_4km -ptopo 61x20x8

Run verification (sverif)

  • This script will provide a PASS or FAIL rating
cd ..
gem_sverif.sh -p $GEM_WORK -f dp2022040500
  • Expected output
sverif_eval.Abs GZ 500 006 work-rhel-9-graniterapids-64-intel-2025.1.0/RUNMOD/output/cfg_0000/laststep_0000000/000-000/dp2022040500 work-rhel-9-graniterapids-64-intel-2025.1.0/sverif/GEM_cfgs_GY_4km-5.3.0-b01
PASS T1  (sverif_eval) GZ [ 500mb;    6h; CI=0.01]
PASS NT1 (sverif_eval) GZ [ 500mb;    6h; CI=0.01]
PASS NT5 (sverif_eval) GZ [ 500mb;    6h; CI=0.01]
PASS R   (sverif_eval) GZ [ 500mb;    6h; CI=0.01]
PASS overall  (sverif_eval) GZ [ 500mb;    6h; CI=0.01]
PASS T1  (sverif_eval) UU [ 250mb;    6h; CI=0.01]
PASS NT1 (sverif_eval) UU [ 250mb;    6h; CI=0.01]
PASS NT5 (sverif_eval) UU [ 250mb;    6h; CI=0.01]
PASS R   (sverif_eval) UU [ 250mb;    6h; CI=0.01]
PASS overall  (sverif_eval) UU [ 250mb;    6h; CI=0.01]
PASS T1  (sverif_eval) TT [ 850mb;    6h; CI=0.01]
PASS NT1 (sverif_eval) TT [ 850mb;    6h; CI=0.01]
PASS NT5 (sverif_eval) TT [ 850mb;    6h; CI=0.01]
PASS R   (sverif_eval) TT [ 850mb;    6h; CI=0.01]
PASS overall  (sverif_eval) TT [ 850mb;    6h; CI=0.01]
(INFO) Passed (passed 12/12)

Detailed information on Packages

Building GEM and launching on your platform

Result validation