Skip to content

Commit

Permalink
Merge branch 'develop' into feature/ocn-letkf-init
Browse files Browse the repository at this point in the history
  • Loading branch information
AndrewEichmann-NOAA authored Jun 25, 2024
2 parents e82cc8b + b902c0b commit 36f99d9
Show file tree
Hide file tree
Showing 33 changed files with 920 additions and 669 deletions.
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -184,6 +184,8 @@ ush/fv3gfs_make_grid.sh
ush/fv3gfs_make_orog.sh
ush/gen_bufr2ioda_json.py
ush/gen_bufr2ioda_yaml.py
ush/bufr2ioda_insitu_profile*.py
ush/bufr2ioda_insitu_surface*.py
ush/global_chgres.sh
ush/global_chgres_driver.sh
ush/global_cycle.sh
Expand Down
95 changes: 40 additions & 55 deletions docs/source/hpc.rst
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,46 @@ HPC Settings and Help

Running the GFS configurations (or almost any global workflow configuration except the coarsest) is a resource intensive exercise. This page discusses recommended HPC environmental settings and contact information in case you need assistance from a particular HPC helpdesk. While most of the documentation is based on supported NOAA platforms, the learnings here can hopefully apply to other platforms.

====================================
Minimum system software requirements
====================================

The following system software requirements are the minimum for any new or existing system and reflect the development and testing environment on which the global workflow is maintained. Any system that does not meet these requirements will not be supported.

+--------------+-------------+---------------------------------------+
| Software | Minimum | Notes |
| | supported | |
| | version(s) | |
+==============+=============+=======================================+
| Bash | 4.4.20 | |
+--------------+-------------+---------------------------------------+
| Python | * 3.8.6 | * 3.10.x is not supported by METplus |
| | * 3.10.13+ | verification software |
| | * 3.11.6+ | * 3.11.6 is packaged with spack-stack |
| | | * 3.9.x is untested |
+--------------+-------------+---------------------------------------+
| Spack-Stack | 1.6.0 | * Available everywhere but WCOSS2 |
+--------------+-------------+---------------------------------------+
| lmod | 8.3.1 | |
+--------------+-------------+---------------------------------------+
| Slurm | 23.02.7 | * Other schedulers may be supportable |
+--------------+-------------+---------------------------------------+
| PBSpro | 2022.1.1 | * Other schedulers may be supportable |
+--------------+-------------+---------------------------------------+
| Git | 2.29.0 | * Some components e.g. GDASApp may |
| | | need Git-LFS for downloading test |
| | | data |
+--------------+-------------+---------------------------------------+
| Rocoto | 1.3.5 | * 1.3.7 is required for newer |
| | | versions of Ruby (3.2+) |
+--------------+-------------+---------------------------------------+
| Intel | 2021.5.1 | * GNU compilers are not supported |
| Compilers | | * Intel LLVM compilers are not yet |
| | | supported |
| | | * Intel 19.x is only supported on |
| | | WCOSS2 |
+--------------+-------------+---------------------------------------+

================================
Experiment troubleshooting help
================================
Expand Down Expand Up @@ -50,61 +90,6 @@ Optimizing the global workflow on S4

The S4 cluster is relatively small and so optimizations are recommended to improve cycled runtimes. Please contact Innocent Souopgui ([email protected]) if you are planning on running a cycled experiment on this system to obtain optimized configuration files.

============
Git settings
============

^^^^^^
Merges
^^^^^^

Use the following command to have merge commits include the one-line description of all the commits being merged (up to 200). You only need to do this once on each machine; it will be saved to your git settings::

git config --global merge.log 200

Use the ``--no-ff`` option to make sure there is always a merge commit when a fast-forward only is available. Exception: If the merge contains only a single commit, it can be applied as a fast-forward.

For any merge with multiple commits, a short synopsis of the merge should appear between the title and the list of commit titles added by merge.log.

^^^^^^^
Version
^^^^^^^

It is advised to use Git v2+ when available. At the time of writing this documentation the default Git clients on the different machines were as noted in the table below. It is recommended that you check the default modules before loading recommended ones:

+----------+----------+---------------------------------------+
| Machine | Default | Recommended |
+----------+----------+---------------------------------------+
| Hera | v2.18.0 | default |
+----------+----------+---------------------------------------+
| Hercules | v2.31.1 | default |
+----------+----------+---------------------------------------+
| Orion | v1.8.3.1 | **module load git/2.28.0** |
+----------+----------+---------------------------------------+
| Jet | v2.18.0 | default |
+----------+----------+---------------------------------------+
| WCOSS2 | v2.35.3 | default |
+----------+----------+---------------------------------------+
| S4 | v1.8.3.1 | **module load git/2.30.0** |
+----------+----------+---------------------------------------+
| AWS PW | v1.8.3.1 | default |
+----------+----------+---------------------------------------+

^^^^^^^^^^^^^
Output format
^^^^^^^^^^^^^

For proper display of Git command output (e.g. git branch and git diff) type the following once per machine:

::

git config --global core.pager 'less -FRX'

For the manage_externals utility functioning::

Error: fatal: ssh variant 'simple' does not support setting port
Fix: git config --global ssh.variant ssh

========================================
Stacksize on R&Ds (Hera, Orion, Hercules, Jet, S4)
========================================
Expand Down
32 changes: 5 additions & 27 deletions env/AWSPW.env
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,6 @@
if [[ $# -ne 1 ]]; then

echo "Must specify an input argument to set runtime environment variables!"
echo "argument can be any one of the following:"
echo "atmanlvar atmanlfv3inc atmensanlletkf atmensanlfv3inc aeroanlrun snowanl"
echo "anal sfcanl fcst post metp"
echo "eobs eupd ecen efcs epos"
echo "postsnd awips gempak"
exit 1

fi
Expand All @@ -26,13 +21,11 @@ ulimit -a

if [[ "${step}" = "fcst" ]] || [[ "${step}" = "efcs" ]]; then

if [[ "${CDUMP}" =~ "gfs" ]]; then
nprocs="npe_${step}_gfs"
ppn="npe_node_${step}_gfs" || ppn="npe_node_${step}"
else
nprocs="npe_${step}"
ppn="npe_node_${step}"
fi
ppn="npe_node_${step}_${RUN}"
[[ -z "${!ppn+0}" ]] && ppn="npe_node_${step}"
nprocs="npe_${step}_${RUN}"
[[ -z ${!nprocs+0} ]] && nprocs="npe_${step}"

(( nnodes = (${!nprocs}+${!ppn}-1)/${!ppn} ))
(( ntasks = nnodes*${!ppn} ))
# With ESMF threading, the model wants to use the full node
Expand Down Expand Up @@ -109,21 +102,6 @@ elif [[ "${step}" = "awips" ]]; then
[[ ${NTHREADS_AWIPS} -gt ${nth_max} ]] && export NTHREADS_AWIPS=${nth_max}
export APRUN_AWIPSCFP="${launcher} -n ${npe_awips} ${mpmd_opt}"

elif [[ "${step}" = "gempak" ]]; then

export CFP_MP="YES"

if [[ ${CDUMP} == "gfs" ]]; then
npe_gempak=${npe_gempak_gfs}
npe_node_gempak=${npe_node_gempak_gfs}
fi

nth_max=$((npe_node_max / npe_node_gempak))

export NTHREADS_GEMPAK=${nth_gempak:-1}
[[ ${NTHREADS_GEMPAK} -gt ${nth_max} ]] && export NTHREADS_GEMPAK=${nth_max}
export APRUN="${launcher} -n ${npe_gempak} ${mpmd_opt}"


elif [[ "${step}" = "fit2obs" ]]; then

Expand Down
5 changes: 0 additions & 5 deletions env/CONTAINER.env
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,6 @@
if [[ $# -ne 1 ]]; then

echo "Must specify an input argument to set runtime environment variables!"
echo "argument can be any one of the following:"
echo "atmanlvar atmanlfv3inc atmensanlletkf atmensanlfv3inc aeroanlrun snowanl"
echo "anal sfcanl fcst post metp"
echo "eobs eupd ecen efcs epos"
echo "postsnd awips gempak"
exit 1

fi
Expand Down
14 changes: 5 additions & 9 deletions env/GAEA.env
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,6 @@
if [[ $# -ne 1 ]]; then

echo "Must specify an input argument to set runtime environment variables!"
echo "argument can be any one of the following:"
echo "fcst atmos_products"
exit 1

fi
Expand All @@ -19,13 +17,11 @@ ulimit -a

if [[ "${step}" = "fcst" ]]; then

if [[ "${CDUMP}" =~ "gfs" ]]; then
nprocs="npe_${step}_gfs"
ppn="npe_node_${step}_gfs" || ppn="npe_node_${step}"
else
nprocs="npe_${step}"
ppn="npe_node_${step}"
fi
ppn="npe_node_${step}_${RUN}"
[[ -z "${!ppn+0}" ]] && ppn="npe_node_${step}"
nprocs="npe_${step}_${RUN}"
[[ -z ${!nprocs+0} ]] && nprocs="npe_${step}"

(( nnodes = (${!nprocs}+${!ppn}-1)/${!ppn} ))
(( ntasks = nnodes*${!ppn} ))
# With ESMF threading, the model wants to use the full node
Expand Down
21 changes: 5 additions & 16 deletions env/HERA.env
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,6 @@
if [[ $# -ne 1 ]]; then

echo "Must specify an input argument to set runtime environment variables!"
echo "argument can be any one of the following:"
echo "atmanlvar atmanlfv3inc atmensanlletkf atmensanlfv3inc aeroanlrun snowanl"
echo "anal sfcanl fcst post metp"
echo "eobs eupd ecen efcs epos"
echo "postsnd awips gempak"
exit 1

fi
Expand Down Expand Up @@ -219,13 +214,11 @@ elif [[ "${step}" = "eupd" ]]; then

elif [[ "${step}" = "fcst" ]] || [[ "${step}" = "efcs" ]]; then

if [[ "${CDUMP}" =~ "gfs" ]]; then
nprocs="npe_${step}_gfs"
ppn="npe_node_${step}_gfs" || ppn="npe_node_${step}"
else
nprocs="npe_${step}"
ppn="npe_node_${step}"
fi
ppn="npe_node_${step}_${RUN}"
[[ -z "${!ppn+0}" ]] && ppn="npe_node_${step}"
nprocs="npe_${step}_${RUN}"
[[ -z ${!nprocs+0} ]] && nprocs="npe_${step}"

(( nnodes = (${!nprocs}+${!ppn}-1)/${!ppn} ))
(( ntasks = nnodes*${!ppn} ))
# With ESMF threading, the model wants to use the full node
Expand Down Expand Up @@ -314,10 +307,6 @@ elif [[ "${step}" = "gempak" ]]; then

export CFP_MP="YES"

if [[ ${CDUMP} == "gfs" ]]; then
npe_node_gempak=${npe_node_gempak_gfs}
fi

nth_max=$((npe_node_max / npe_node_gempak))

export NTHREADS_GEMPAK=${nth_gempak:-1}
Expand Down
29 changes: 7 additions & 22 deletions env/HERCULES.env
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,6 @@
if [[ $# -ne 1 ]]; then

echo "Must specify an input argument to set runtime environment variables!"
echo "argument can be any one of the following:"
echo "fcst post"
echo "Note: Hercules is only set up to run in forecast-only mode"
exit 1

fi
Expand Down Expand Up @@ -211,13 +208,12 @@ case ${step} in
"fcst" | "efcs")

export OMP_STACKSIZE=512M
if [[ "${CDUMP}" =~ "gfs" ]]; then
nprocs="npe_${step}_gfs"
ppn="npe_node_${step}_gfs" || ppn="npe_node_${step}"
else
nprocs="npe_${step}"
ppn="npe_node_${step}"
fi

ppn="npe_node_${step}_${RUN}"
[[ -z "${!ppn+0}" ]] && ppn="npe_node_${step}"
nprocs="npe_${step}_${RUN}"
[[ -z ${!nprocs+0} ]] && nprocs="npe_${step}"

(( nnodes = (${!nprocs}+${!ppn}-1)/${!ppn} ))
(( ntasks = nnodes*${!ppn} ))
# With ESMF threading, the model wants to use the full node
Expand Down Expand Up @@ -312,18 +308,7 @@ case ${step} in
;;
"gempak")

export CFP_MP="YES"

if [[ ${CDUMP} == "gfs" ]]; then
npe_gempak=${npe_gempak_gfs}
npe_node_gempak=${npe_node_gempak_gfs}
fi

nth_max=$((npe_node_max / npe_node_gempak))

export NTHREADS_GEMPAK=${nth_gempak:-1}
[[ ${NTHREADS_GEMPAK} -gt ${nth_max} ]] && export NTHREADS_GEMPAK=${nth_max}
export APRUN="${launcher} -n ${npe_gempak} ${mpmd_opt}"
echo "WARNING: ${step} is not enabled on ${machine}!"

;;
"fit2obs")
Expand Down
17 changes: 5 additions & 12 deletions env/JET.env
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,6 @@
if [[ $# -ne 1 ]]; then

echo "Must specify an input argument to set runtime environment variables!"
echo "argument can be any one of the following:"
echo "atmanlvar atmanlfv3inc atmensanlletkf atmensanlfv3inc aeroanlrun snowanl"
echo "anal sfcanl fcst post metp"
echo "eobs eupd ecen efcs epos"
echo "postsnd awips gempak"
exit 1

fi
Expand Down Expand Up @@ -192,13 +187,11 @@ elif [[ "${step}" = "eupd" ]]; then

elif [[ "${step}" = "fcst" ]] || [[ "${step}" = "efcs" ]]; then

if [[ "${CDUMP}" =~ "gfs" ]]; then
nprocs="npe_${step}_gfs"
ppn="npe_node_${step}_gfs" || ppn="npe_node_${step}"
else
nprocs="npe_${step}"
ppn="npe_node_${step}"
fi
ppn="npe_node_${step}_${RUN}"
[[ -z "${!ppn+0}" ]] && ppn="npe_node_${step}"
nprocs="npe_${step}_${RUN}"
[[ -z ${!nprocs+0} ]] && nprocs="npe_${step}"

(( nnodes = (${!nprocs}+${!ppn}-1)/${!ppn} ))
(( ntasks = nnodes*${!ppn} ))
# With ESMF threading, the model wants to use the full node
Expand Down
31 changes: 6 additions & 25 deletions env/ORION.env
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,6 @@
if [[ $# -ne 1 ]]; then

echo "Must specify an input argument to set runtime environment variables!"
echo "argument can be any one of the following:"
echo "atmanlvar atmanlfv3inc atmensanlletkf atmensanlfv3inc aeroanlrun snowanl"
echo "anal sfcanl fcst post metp"
echo "eobs eupd ecen efcs epos"
echo "postsnd awips gempak"
exit 1

fi
Expand Down Expand Up @@ -226,14 +221,11 @@ elif [[ "${step}" = "eupd" ]]; then

elif [[ "${step}" = "fcst" ]] || [[ "${step}" = "efcs" ]]; then

export OMP_STACKSIZE=512M
if [[ "${CDUMP}" =~ "gfs" ]]; then
nprocs="npe_${step}_gfs"
ppn="npe_node_${step}_gfs" || ppn="npe_node_${step}"
else
nprocs="npe_${step}"
ppn="npe_node_${step}"
fi
ppn="npe_node_${step}_${RUN}"
[[ -z "${!ppn+0}" ]] && ppn="npe_node_${step}"
nprocs="npe_${step}_${RUN}"
[[ -z ${!nprocs+0} ]] && nprocs="npe_${step}"

(( nnodes = (${!nprocs}+${!ppn}-1)/${!ppn} ))
(( ntasks = nnodes*${!ppn} ))
# With ESMF threading, the model wants to use the full node
Expand Down Expand Up @@ -319,18 +311,7 @@ elif [[ "${step}" = "awips" ]]; then

elif [[ "${step}" = "gempak" ]]; then

export CFP_MP="YES"

if [[ ${CDUMP} == "gfs" ]]; then
npe_gempak=${npe_gempak_gfs}
npe_node_gempak=${npe_node_gempak_gfs}
fi

nth_max=$((npe_node_max / npe_node_gempak))

export NTHREADS_GEMPAK=${nth_gempak:-1}
[[ ${NTHREADS_GEMPAK} -gt ${nth_max} ]] && export NTHREADS_GEMPAK=${nth_max}
export APRUN="${launcher} -n ${npe_gempak} ${mpmd_opt}"
echo "WARNING: ${step} is not enabled on ${machine}!"

elif [[ "${step}" = "fit2obs" ]]; then

Expand Down
Loading

0 comments on commit 36f99d9

Please sign in to comment.