Skip to content

Commit a10f618

Browse files
committed
Merge branch 'develop' into feature/lnd_regrid_iau
* develop: Only run METplus in the 3Dvar tests (NOAA-EMC#3245) Clone, build, and run C48_ATM and C48_S2SW on Gaea C5 and C6 (NOAA-EMC#3106)
2 parents dbebb2e + 3f4877f commit a10f618

24 files changed

+283
-29
lines changed

ci/cases/pr/C96_atm3DVar.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ arguments:
1414
nens: 0
1515
interval: 24
1616
start: cold
17-
yaml: {{ HOMEgfs }}/ci/cases/yamls/gfs_defaults_ci.yaml
17+
yaml: {{ HOMEgfs }}/ci/cases/yamls/gfs_metp_ci.yaml
1818

1919
skip_ci_on_hosts:
2020
- wcoss2

ci/cases/yamls/gfs_defaults_ci.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,4 @@ defaults:
33
base:
44
ACCOUNT: {{ 'HPC_ACCOUNT' | getenv }}
55
DO_TEST_MODE: "NO"
6+
DO_METP: "NO"

ci/cases/yamls/gfs_extended_ci.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ base:
88
DO_GEMPAK: "YES"
99
DO_AWIPS: "YES"
1010
DO_NPOESS: "YES"
11+
DO_METP: "YES"
1112
DO_GENESIS_FSU: "NO"
1213
FCST_BREAKPOINTS: 192
1314
FHMAX_GFS: 384

ci/cases/yamls/gfs_metp_ci.yaml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
defaults:
2+
!INC {{ HOMEgfs }}/parm/config/gfs/yaml/defaults.yaml
3+
base:
4+
ACCOUNT: {{ 'HPC_ACCOUNT' | getenv }}
5+
DO_TEST_MODE: "NO"
6+
DO_METP: "YES"

env/GAEA.env renamed to env/GAEAC5.env

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,19 +26,19 @@ if [[ -n "${ntasks:-}" && -n "${max_tasks_per_node:-}" && -n "${tasks_per_node:-
2626
NTHREADS1=${threads_per_task:-1}
2727
[[ ${NTHREADSmax} -gt ${max_threads_per_task} ]] && NTHREADSmax=${max_threads_per_task}
2828
[[ ${NTHREADS1} -gt ${max_threads_per_task} ]] && NTHREADS1=${max_threads_per_task}
29-
# This may be useful when Gaea is fully ported, so ignore SC warning
29+
# This may be useful when GaeaC5 is fully ported, so ignore SC warning
3030
# shellcheck disable=SC2034
3131
APRUN_default="${launcher} -n ${ntasks}"
3232
else
33-
echo "ERROR config.resources must be sourced before sourcing GAEA.env"
33+
echo "ERROR config.resources must be sourced before sourcing GAEAC5.env"
3434
exit 2
3535
fi
3636

3737
if [[ "${step}" = "prep" ]]; then
3838

3939
export POE="NO"
4040
export BACK="NO"
41-
export sys_tp="GAEA"
41+
export sys_tp="GAEAC5"
4242
export launcher_PREP="srun"
4343

4444
elif [[ "${step}" = "anal" ]] || [[ "${step}" = "analcalc" ]]; then
@@ -86,7 +86,7 @@ elif [[ "${step}" = "upp" ]]; then
8686

8787
elif [[ "${step}" = "atmos_products" ]]; then
8888

89-
export USE_CFP="YES" # Use MPMD for downstream product generation on Gaea
89+
export USE_CFP="YES" # Use MPMD for downstream product generation on GaeaC5
9090

9191
elif [[ "${step}" = "oceanice_products" ]]; then
9292

@@ -98,4 +98,11 @@ elif [[ "${step}" = "fit2obs" ]]; then
9898
export NTHREADS_FIT2OBS=${NTHREADS1}
9999
export MPIRUN="${APRUN_default} --cpus-per-task=${NTHREADS_FIT2OBS}"
100100

101+
elif [[ "${step}" = "waveinit" ]] || [[ "${step}" = "waveprep" ]] || [[ "${step}" = "wavepostsbs" ]] || [[ "${step}" = "wavepostbndpnt" ]] || [[ "${step}" = "wavepostbndpntbll" ]] || [[ "${step}" = "wavepostpnt" ]]; then
102+
103+
export CFP_MP="YES"
104+
if [[ "${step}" = "waveprep" ]]; then export MP_PULSE=0 ; fi
105+
export wavempexec=${launcher}
106+
export wave_mpmd=${mpmd_opt}
107+
101108
fi

env/GAEAC6.env

Lines changed: 108 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,108 @@
1+
#! /usr/bin/env bash
2+
3+
if [[ $# -ne 1 ]]; then
4+
5+
echo "Must specify an input argument to set runtime environment variables!"
6+
exit 1
7+
8+
fi
9+
10+
step=$1
11+
12+
export launcher="srun -l --export=ALL"
13+
export mpmd_opt="--multi-prog --output=mpmd.%j.%t.out"
14+
15+
export OMP_STACKSIZE=2048000
16+
export NTHSTACK=1024000000
17+
18+
ulimit -s unlimited
19+
ulimit -a
20+
21+
# Calculate common variables
22+
# Check first if the dependent variables are set
23+
if [[ -n "${ntasks:-}" && -n "${max_tasks_per_node:-}" && -n "${tasks_per_node:-}" ]]; then
24+
max_threads_per_task=$((max_tasks_per_node / tasks_per_node))
25+
NTHREADSmax=${threads_per_task:-${max_threads_per_task}}
26+
NTHREADS1=${threads_per_task:-1}
27+
[[ ${NTHREADSmax} -gt ${max_threads_per_task} ]] && NTHREADSmax=${max_threads_per_task}
28+
[[ ${NTHREADS1} -gt ${max_threads_per_task} ]] && NTHREADS1=${max_threads_per_task}
29+
# This may be useful when GaeaC6 is fully ported, so ignore SC warning
30+
# shellcheck disable=SC2034
31+
APRUN_default="${launcher} -n ${ntasks}"
32+
else
33+
echo "ERROR config.resources must be sourced before sourcing GAEAC6.env"
34+
exit 2
35+
fi
36+
37+
if [[ "${step}" = "prep" ]]; then
38+
39+
export POE="NO"
40+
export BACK="NO"
41+
export sys_tp="GAEAC6"
42+
export launcher_PREP="srun"
43+
44+
elif [[ "${step}" = "anal" ]] || [[ "${step}" = "analcalc" ]]; then
45+
46+
export MKL_NUM_THREADS=4
47+
export MKL_CBWR=AUTO
48+
49+
export CFP_MP=${CFP_MP:-"YES"}
50+
export USE_CFP=${USE_CFP:-"YES"}
51+
export APRUNCFP="${launcher} -n \$ncmd ${mpmd_opt}"
52+
53+
export NTHREADS_GSI=${NTHREADSmax}
54+
export APRUN_GSI="${APRUN_default} --cpus-per-task=${NTHREADS_GSI}"
55+
56+
export NTHREADS_CALCINC=${threads_per_task_calcinc:-1}
57+
[[ ${NTHREADS_CALCINC} -gt ${max_threads_per_task} ]] && export NTHREADS_CALCINC=${max_threads_per_task}
58+
export APRUN_CALCINC="${launcher} \$ncmd --cpus-per-task=${NTHREADS_CALCINC}"
59+
60+
export NTHREADS_CYCLE=${threads_per_task_cycle:-12}
61+
[[ ${NTHREADS_CYCLE} -gt ${max_tasks_per_node} ]] && export NTHREADS_CYCLE=${max_tasks_per_node}
62+
ntasks_cycle=${ntiles:-6}
63+
export APRUN_CYCLE="${launcher} -n ${ntasks_cycle} --cpus-per-task=${NTHREADS_CYCLE}"
64+
65+
export NTHREADS_GAUSFCANL=1
66+
ntasks_gausfcanl=${ntasks_gausfcanl:-1}
67+
export APRUN_GAUSFCANL="${launcher} -n ${ntasks_gausfcanl} --cpus-per-task=${NTHREADS_GAUSFCANL}"
68+
69+
elif [[ "${step}" = "sfcanl" ]]; then
70+
71+
export NTHREADS_CYCLE=${threads_per_task:-14}
72+
export APRUN_CYCLE="${APRUN_default} --cpus-per-task=${NTHREADS_CYCLE}"
73+
74+
elif [[ "${step}" = "fcst" ]]; then
75+
76+
(( nnodes = (ntasks+tasks_per_node-1)/tasks_per_node ))
77+
(( ufs_ntasks = nnodes*tasks_per_node ))
78+
# With ESMF threading, the model wants to use the full node
79+
export APRUN_UFS="${launcher} -n ${ufs_ntasks}"
80+
unset nnodes ufs_ntasks
81+
82+
elif [[ "${step}" = "upp" ]]; then
83+
84+
export NTHREADS_UPP=${NTHREADS1}
85+
export APRUN_UPP="${APRUN_default} --cpus-per-task=${NTHREADS_UPP}"
86+
87+
elif [[ "${step}" = "atmos_products" ]]; then
88+
89+
export USE_CFP="YES" # Use MPMD for downstream product generation on GaeaC6
90+
91+
elif [[ "${step}" = "oceanice_products" ]]; then
92+
93+
export NTHREADS_OCNICEPOST=${NTHREADS1}
94+
export APRUN_OCNICEPOST="${launcher} -n 1 --cpus-per-task=${NTHREADS_OCNICEPOST}"
95+
96+
elif [[ "${step}" = "fit2obs" ]]; then
97+
98+
export NTHREADS_FIT2OBS=${NTHREADS1}
99+
export MPIRUN="${APRUN_default} --cpus-per-task=${NTHREADS_FIT2OBS}"
100+
101+
elif [[ "${step}" = "waveinit" ]] || [[ "${step}" = "waveprep" ]] || [[ "${step}" = "wavepostsbs" ]] || [[ "${step}" = "wavepostbndpnt" ]] || [[ "${step}" = "wavepostbndpntbll" ]] || [[ "${step}" = "wavepostpnt" ]]; then
102+
103+
export CFP_MP="YES"
104+
if [[ "${step}" = "waveprep" ]]; then export MP_PULSE=0 ; fi
105+
export wavempexec=${launcher}
106+
export wave_mpmd=${mpmd_opt}
107+
108+
fi
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
help([[
2-
Load environment to run GFS on Gaea
2+
Load environment to run GFS on Gaea C5
33
]])
44

55
local spack_mod_path=(os.getenv("spack_mod_path") or "None")

modulefiles/module_base.gaeac6.lua

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
help([[
2+
Load environment to run GFS on Gaea C6
3+
]])
4+
5+
local spack_mod_path=(os.getenv("spack_mod_path") or "None")
6+
prepend_path("MODULEPATH", spack_mod_path)
7+
8+
load(pathJoin("stack-intel", (os.getenv("stack_intel_ver") or "None")))
9+
load(pathJoin("stack-cray-mpich", (os.getenv("stack_cray_mpich_ver") or "None")))
10+
load(pathJoin("python", (os.getenv("python_ver") or "None")))
11+
12+
load(pathJoin("jasper", (os.getenv("jasper_ver") or "None")))
13+
load(pathJoin("libpng", (os.getenv("libpng_ver") or "None")))
14+
load(pathJoin("cdo", (os.getenv("cdo_ver") or "None")))
15+
load(pathJoin("hdf5", (os.getenv("hdf5_ver") or "None")))
16+
load(pathJoin("netcdf-c", (os.getenv("netcdf_c_ver") or "None")))
17+
load(pathJoin("netcdf-fortran", (os.getenv("netcdf_fortran_ver") or "None")))
18+
load(pathJoin("perlbrew", (os.getenv("perl_ver") or "None")))
19+
20+
load(pathJoin("nco", (os.getenv("nco_ver") or "None")))
21+
load(pathJoin("prod_util", (os.getenv("prod_util_ver") or "None")))
22+
load(pathJoin("grib-util", (os.getenv("grib_util_ver") or "None")))
23+
load(pathJoin("g2tmpl", (os.getenv("g2tmpl_ver") or "None")))
24+
load(pathJoin("gsi-ncdiag", (os.getenv("gsi_ncdiag_ver") or "None")))
25+
load(pathJoin("crtm", (os.getenv("crtm_ver") or "None")))
26+
load(pathJoin("bufr", (os.getenv("bufr_ver") or "None")))
27+
load(pathJoin("wgrib2", (os.getenv("wgrib2_ver") or "None")))
28+
load(pathJoin("py-netcdf4", (os.getenv("py_netcdf4_ver") or "None")))
29+
load(pathJoin("py-f90nml", (os.getenv("py_f90nml_ver") or "None")))
30+
load(pathJoin("py-pyyaml", (os.getenv("py_pyyaml_ver") or "None")))
31+
load(pathJoin("py-jinja2", (os.getenv("py_jinja2_ver") or "None")))
32+
load(pathJoin("py-pandas", (os.getenv("py_pandas_ver") or "None")))
33+
load(pathJoin("py-python-dateutil", (os.getenv("py_python_dateutil_ver") or "None")))
34+
load(pathJoin("met", (os.getenv("met_ver") or "None")))
35+
load(pathJoin("metplus", (os.getenv("metplus_ver") or "None")))
36+
load(pathJoin("py-xarray", (os.getenv("py_xarray_ver") or "None")))
37+
38+
setenv("WGRIB2","wgrib2")
39+
setenv("UTILROOT",(os.getenv("prod_util_ROOT") or "None"))
40+
41+
prepend_path("MODULEPATH", pathJoin("/gpfs/f6/bil-fire8/world-shared/global/glopara/git/prepobs/v" .. (os.getenv("prepobs_run_ver") or "None"), "modulefiles"))
42+
load(pathJoin("prepobs", (os.getenv("prepobs_run_ver") or "None")))
43+
44+
prepend_path("MODULEPATH", pathJoin("/gpfs/f6/bil-fire8/world-shared/global/glopara/git/Fit2Obs/v" .. (os.getenv("fit2obs_ver") or "None"), "modulefiles"))
45+
load(pathJoin("fit2obs", (os.getenv("fit2obs_ver") or "None")))
46+
47+
whatis("Description: GFS run setup environment")
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
help([[
2-
Load environment to run GFS workflow setup scripts on Gaea
2+
Load environment to run GFS workflow setup scripts on Gaea C5
33
]])
44

55
prepend_path("MODULEPATH", "/ncrc/proj/epic/rocoto/modulefiles")
66
load(pathJoin("rocoto"))
77

88
prepend_path("MODULEPATH", "/ncrc/proj/epic/spack-stack/spack-stack-1.6.0/envs/unified-env/install/modulefiles/Core")
99

10-
local stack_intel_ver=os.getenv("stack_intel_ver") or "2023.1.0"
10+
local stack_intel_ver=os.getenv("stack_intel_ver") or "2023.2.0"
1111
local python_ver=os.getenv("python_ver") or "3.10.13"
1212

1313
load(pathJoin("stack-intel", stack_intel_ver))
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
help([[
2+
Load environment to run GFS workflow setup scripts on Gaea C6
3+
]])
4+
5+
prepend_path("MODULEPATH", "/ncrc/proj/epic/rocoto/modulefiles")
6+
load(pathJoin("rocoto"))
7+
8+
prepend_path("MODULEPATH", "/ncrc/proj/epic/spack-stack/c6/spack-stack-1.6.0/envs/unified-env/install/modulefiles/Core")
9+
10+
local stack_intel_ver=os.getenv("stack_intel_ver") or "2023.2.0"
11+
local python_ver=os.getenv("python_ver") or "3.10.13"
12+
13+
load(pathJoin("stack-intel", stack_intel_ver))
14+
load(pathJoin("python", python_ver))
15+
load("py-jinja2")
16+
load("py-pyyaml")
17+
load("py-numpy")
18+
load("git-lfs")
19+
20+
whatis("Description: GFS run setup environment")

0 commit comments

Comments
 (0)