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"