Conducting MITgcm Verification Experiments#
MITgcm#
MITgcm (Massachusetts Institute of Technology General Circulation Model) is a powerful and versatile numerical modeling tool used to simulate the circulation of the oceans, atmosphere, and climate systems. It serves as the primary numerical model for the Estimating the Circulation and Climate of the Ocean (ECCO) project. The MITgcm user manual and code are publicly accessible at MITgcm User Manual and MITgcm GitHub Repository, respectively.
MITgcm includes a set of verification experiments designed to help new users become familiar with the model while also providing sufficient features for experienced users and developers to test new functionalities, facilitate debugging, and more.
Section 5.5 of the MITgcm user manual provides detailed information
about the verification experiments, including the testreport
shell script utility, which generates executables, conducts runs, and
compares the results with the benchmark results provided in the MITgcm repository. This documentation explains how to conduct these
verification experiments on the P-Cluster.
Get the MITgcm Code from GitHub#
Log in to the P-Cluster using the following command:
ssh -i /path/to/privatekey -X USERNAME@34.210.1.198
Once logged in, clone the MITgcm code from GitHub and navigate to the directory where the verification experiments reside:
cd /efs_ecco/USERNAME/
git clone https://github.com/MITgcm/MITgcm.git
Conducting Verification Experiments Using Testreport Utility#
As an example, we use the shell script testreport
to conduct the verification experiment global_ocean.90x40x15
. Note that the names
of the verification experiments are the same as the directory names. Additionally, each verification experiment may have multiple
sub-experiments
that test different MITgcm features.
Request an Interactive Node#
As explained in the P-Cluster introduction section, we first need to request an interactive node in order not to strain the head node, which has very limited resources. To do this, issue the following command:
salloc --ntasks=4 --ntasks-per-node=4 --partition=sealevel-c5xl-demand --time=01:00:00
Wait for the node to become available (when the prompt appears), then proceed to the next step below.
Conduct Verification Experiments#
cd MITgcm/verification
./testreport -t "global_ocean.90x40x15"
After the experiment completes, testreport
generates a summary of the status of the experiment, indicating whether the test
passes or fails. A test passes if the results are sufficiently similar to the benchmark results, and it fails if the deviation exceeds
an acceptable threshold.. Below is a snippet of the summary, which
shows that there are three sub-experiments: global_ocean.90x40x15
, global_ocean.90x40x15.dwnslp
, and global_ocean.90x40x15.idemix
. All
three sub-experiments have passed the test (indicated by the word pass
).
Thu Sep 26 16:34:17 UTC 2024
run: ./testreport -t global_ocean.90x40x15
on : Linux ip-10-20-22-69 5.15.0-1070-aws #76~20.04.1-Ubuntu SMP Mon Sep 2 12:20:36 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux
No "OPTFILE" was specified ; genmake2 found and uses:
OPTFILE=../../../tools/build_options/linux_amd64_gfortran
default 10 ----T----- ----S----- ----U----- ----V----- --PTR 01-- --PTR 02-- --PTR 03-- --PTR 04-- --PTR 05--
G D M c m s m s m s m s m s m s m s m s m s
e p a R g m m e . m m e . m m e . m m e . m m e . m m e . m m e . m m e . m m e .
n n k u 2 i a a d i a a d i a a d i a a d i a a d i a a d i a a d i a a d i a a d
2 d e n d n x n . n x n . n x n . n x n . n x n . n x n . n x n . n x n . n x n .
Y Y Y Y>16<16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 . . . . pass global_ocean.90x40x15
Y Y Y Y>16<16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 . . . . pass global_ocean.90x40x15.dwnslp
Y Y Y Y>12<13 16 16 16 16 16 16 16 14 13 13 16 16 14 13 16 -- -- -- -- . . . . pass global_ocean.90x40x15.idemix
Start time: Thu Sep 26 16:34:17 UTC 2024
End time: Thu Sep 26 16:37:34 UTC 2024
======== End of testreport execution ========
The testreport
utility also allows one conduct multiple verification experiments (with each having multiple sub-experiments). For example,
./testreport -t "global_ocean.90x40x15, lab_sea"