-
Andrew Coward authoredce5ad50d
A guide to using SETTE
Overview
SETTE
is a suite of bash scripts that automates the building, running and
basic validation and verification of a broad spectrum of NEMO reference and
test configurations. Because compilation and batch running environments differ
wildly, automation is only achieved after some effort by the user for each new test
platform. However, examples are provided for all the major systems used by the NEMO
System team and many new platforms can be incorporated simply by adapting these
templates.
When configured correctly, a single command will:
- Compile multiple reference and test configurations
- Run restartability and reproducibility tests with each configuration
- Run additional conformance checks with any AGRIF-based configurations
- Archive sufficient output measures for meaningful comparsion between future tests at different revisions
- On completion, run a secondary script to table the successes or failures of each test
Many namelist-controlled options can be varied using command line arguments to the main sette script and test results can be compared across different innvocations. Thus, by chaining sette innvocations with different options, more complex and comprehensive testing can be achieved.
Installation
SETTE
is provided within the main NEMO git repository and will be found in the
subdirectory sette
below the top-level of a checked out (cloned) copy (at the same
level as src/
or cfgs/
).
Initial setup
Assuming, for now, that you are intending to run SETTE
on one of the platforms
already supported then there are only a few settings required to setup for each
individual user. These settings are all to be found in the sette/param.default
file:
NEMO_VALIDATION_REF=/path/to/reference/sette/results
NEMO_REV_REF=0000
COMPILER=${SETTE_COMPILER:-XXXXXXXX}
BATCH_CMD=${SETTE_BATCH_CMD:-llsubmit}
BATCH_STAT=${SETTE_BATCH_STAT:-llq}
FORCING_DIR=${SETTE_FORCING_DIR:-$WORKDIR/FORCING}
NEMO_VALIDATION_DIR=${SETTE_NEMO_VALIDATION_DIR:-$MAIN_DIR}/NEMO_VALIDATION
JOB_PREFIX_NOMPMD=${SETTE_JOB_PREFIX_NOMPMD:-batch}
JOB_PREFIX_MPMD=${SETTE_JOB_PREFIX_MPMD:-batch-mpmd}
and each can be set either in a param.cfg
file (created by copying param.default
to param.cfg
and editing) or through the corresponding environment variable. For
example, changing the contents of a param.cfg
to include:
NEMO_VALIDATION_REF=/work/n01/n01/acc/NEMO/2022/4.2.0/sette/NEMO_VALIDATION
NEMO_REV_REF=14550
COMPILER=X86_ARCHER2-Cray
BATCH_CMD=sbatch
BATCH_STAT=squeue
FORCING_DIR=/work/n01/n01/acc/FORCING/SETTE_inputs/r4.2.0
NEMO_VALIDATION_DIR=/work/n01/n01/acc/NEMO/2022/4.2.0/sette/NEMO_VALIDATION
JOB_PREFIX_NOMPMD=batch
JOB_PREFIX_MPMD=batch
or settings:
export SETTE_COMPILER=X86_ARCHER2-Cray
export SETTE_BATCH_CMD=sbatch
export SETTE_BATCH_STAT=squeue
export SETTE_FORCING_DIR=/work/n01/n01/acc/FORCING/SETTE_inputs/r4.2.0
export SETTE_NEMO_VALIDATION_DIR=/work/n01/n01/acc/NEMO/2021/4.2.0/sette/NEMO_VALIDATION
export SETTE_JOB_PREFIX_NOMPMD=batch
export SETTE_JOB_PREFIX_MPMD=batch
in your runtime environment will achieve the same result. The requirement to create a
param.cfg
from param.default
for each installation protects against developers
accidentally returning a local param.cfg
to the main repository. The param.default
file should only be altered by SETTE
developers.