Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[develop] Changes for Derecho, a new platform #894

Merged
merged 16 commits into from
Sep 19, 2023
Merged
3 changes: 3 additions & 0 deletions etc/lmod-setup.csh
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,9 @@ else if ( "$L_MACHINE" == singularity ) then
else if ( "$L_MACHINE" == gaea ) then
source /lustre/f2/dev/role.epic/contrib/Lmod_init.csh

else if ( "$L_MACHINE" == derecho ) then
module reset

else if ( "$L_MACHINE" == odin ) then
module unload modules
unset -f module
Expand Down
5 changes: 4 additions & 1 deletion etc/lmod-setup.sh
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ Usage: source etc/lmod-setup.sh PLATFORM

OPTIONS:
PLATFORM - name of machine you are building on
(e.g. cheyenne | hera | jet | orion | wcoss2 )
(e.g. cheyenne | hera | jet | orion | wcoss2 )
EOF_USAGE
exit 1
else
Expand Down Expand Up @@ -47,6 +47,9 @@ elif [ "$L_MACHINE" = singularity ]; then
elif [ "$L_MACHINE" = gaea ]; then
source /lustre/f2/dev/role.epic/contrib/Lmod_init.sh

elif [ "$L_MACHINE" = derecho ]; then
module reset

elif [ "$L_MACHINE" = odin ]; then
module unload modules
unset -f module
Expand Down
35 changes: 35 additions & 0 deletions modulefiles/build_derecho_intel.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
help([[
This module loads libraries for building the UFS SRW App on
the CISL machine Derecho (Cray) using Intel-classic-2023.0.0
]])

whatis([===[Loads libraries needed for building the UFS SRW App on Cheyenne ]===])

load(pathJoin("cmake", os.getenv("cmake_ver") or "3.26.3"))
load(pathJoin("ncarenv", os.getenv("ncarenv_ver") or "23.06"))
load(pathJoin("craype", os.getenv("craype_ver") or "2.7.20"))

unload("netcdf")
unload("hdf5")
load(pathJoin("intel-classic", os.getenv("intel_classic_ver") or "2023.0.0"))
load(pathJoin("cray-mpich", os.getenv("cray_mpich_ver") or "8.1.25"))

prepend_path("MODULEPATH","/glade/work/epicufsrt/contrib/derecho/hpc-stack/intel-classic-2023.0.0/modulefiles/stack")
load(pathJoin("hpc", os.getenv("hpc_ver") or "1.2.0"))
load(pathJoin("hpc-intel-classic", os.getenv("hpc_intel_classic_ver") or "2023.0.0"))
load(pathJoin("hpc-cray-mpich", os.getenv("hpc_cray_mpich_ver") or "8.1.25"))

load(pathJoin("ncarcompilers", os.getenv("ncarcompilers_ver") or "1.0.0"))
load(pathJoin("mkl", os.getenv("mkl_ver") or "2023.0.0"))

load("srw_common")

setenv("CC","cc")
setenv("FC","ftn")
setenv("CXX","CC")

setenv("CMAKE_C_COMPILER","cc")
setenv("CMAKE_CXX_COMPILER","CC")
setenv("CMAKE_Fortran_COMPILER","ftn")
setenv("CMAKE_Platform","derecho.intel")

14 changes: 7 additions & 7 deletions modulefiles/srw_common.lua
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
load("jasper/2.0.25")
load("zlib/1.2.11")
load_any("png/1.6.35", "libpng/1.6.37")
load("libpng/1.6.37")

load_any("netcdf/4.7.4", "netcdf-c/4.7.4")
load_any("netcdf/4.7.4", "netcdf-fortran/4.5.4")
load_any("pio/2.5.7", "parallelio/2.5.2")
load_any("esmf/8.3.0b09", "esmf/8.2.0")
load("fms/2022.04")
load_any("netcdf/4.9.2", "netcdf-c/4.9.2")
load_any("netcdf/4.9.2", "netcdf-fortran/4.6.0")
load_any("pio/2.5.10", "parallelio/2.5.10")
load("esmf/8.4.2")
load("fms/2023.01")

load("bufr/11.7.0")
load("bacio/2.4.1")
Expand All @@ -19,7 +19,7 @@ load("w3emc/2.9.2")

load_any("gftl-shared/v1.5.0", "gftl-shared/1.5.0")
load_any("yafyaml/v0.5.1", "yafyaml/0.5.1")
load_any("mapl/2.22.0-esmf-8.3.0b09", "mapl/2.11.0-esmf-8.2.0")
load_any("mapl/2.35.2-esmf-8.4.2")

load("nemsio/2.5.4")
load("sfcio/1.4.1")
Expand Down
3 changes: 3 additions & 0 deletions modulefiles/tasks/derecho/aqm_ics.local.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
load(pathJoin("cmake", os.getenv("cmake_ver") or "3.22.0"))
load("nco/4.9.5")
load("miniconda_regional_workflow_cmaq")
3 changes: 3 additions & 0 deletions modulefiles/tasks/derecho/aqm_lbcs.local.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
load(pathJoin("cmake", os.getenv("cmake_ver") or "3.22.0"))
load("nco/4.9.5")
load("miniconda_regional_workflow_cmaq")
2 changes: 2 additions & 0 deletions modulefiles/tasks/derecho/fire_emission.local.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
load("ncarenv")
load("miniconda_regional_workflow_cmaq")
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
unload("python")
load("conda")
prepend_path("MODULEPATH","/glade/work/epicufsrt/contrib/derecho/miniconda3/modulefiles")
load(pathJoin("miniconda3", os.getenv("miniconda3_ver") or "4.12.0"))

setenv("SRW_ENV", "regional_workflow_cmaq")
4 changes: 4 additions & 0 deletions modulefiles/tasks/derecho/nexus_emission.local.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
load("nco/5.0.6")

load("ncarenv")
load("miniconda_regional_workflow_cmaq")
2 changes: 2 additions & 0 deletions modulefiles/tasks/derecho/nexus_gfs_sfc.local.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
load("ncarenv")
load("miniconda_regional_workflow_cmaq")
3 changes: 3 additions & 0 deletions modulefiles/tasks/derecho/nexus_post_split.local.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
load(pathJoin("nco", os.getenv("nco_ver") or "5.0.6"))
load("ncarenv")
load("miniconda_regional_workflow_cmaq")
5 changes: 5 additions & 0 deletions modulefiles/tasks/derecho/plot_allvars.local.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
unload("python")
prepend_path("MODULEPATH","/glade/work/epicufsrt/contrib/miniconda3/modulefiles")
load(pathJoin("miniconda3", os.getenv("miniconda3_ver") or "4.12.0"))

setenv("SRW_ENV", "regional_workflow")
2 changes: 2 additions & 0 deletions modulefiles/tasks/derecho/point_source.local.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
load("ncarenv")
load("miniconda_regional_workflow_cmaq")
2 changes: 2 additions & 0 deletions modulefiles/tasks/derecho/pre_post_stat.local.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
load("nco/4.9.5")
load("miniconda_regional_workflow_cmaq")
5 changes: 5 additions & 0 deletions modulefiles/tasks/derecho/python_srw.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
unload("python")
prepend_path("MODULEPATH","/glade/work/epicufsrt/contrib/derecho/miniconda3/modulefiles")
load(pathJoin("miniconda3", os.getenv("miniconda3_ver") or "4.12.0"))

setenv("SRW_ENV", "workflow_tools")
6 changes: 6 additions & 0 deletions modulefiles/tasks/derecho/run_vx.local.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
--[[
Compiler-specific modules are used for met and metplus libraries
--]]
load(pathJoin("met", os.getenv("met_ver") or "10.1.2"))
load(pathJoin("metplus", os.getenv("metplus_ver") or "4.1.3"))
load("python_srw")
24 changes: 24 additions & 0 deletions modulefiles/wflow_derecho.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
help([[
This module loads python environement for running the UFS SRW App on
on the CISL machine Derecho (Cray)
]])

whatis([===[Loads libraries for running the UFS SRW Workflow on Derecho ]===])

load("ncarenv")

append_path("MODULEPATH","/glade/work/epicufsrt/contrib/derecho/rocoto/modulefiles")
load("rocoto")

unload("python")

load("set_pythonpath")
prepend_path("MODULEPATH","/glade/work/epicufsrt/contrib/derecho/miniconda3/modulefiles")
load(pathJoin("miniconda3", os.getenv("miniconda3_ver") or "4.12.0"))

if mode() == "load" then
LmodMsgRaw([===[Please do the following to activate conda:
> conda activate workflow_tools
]===])
end

6 changes: 3 additions & 3 deletions tests/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,9 @@ for the current code in the users ufs-srweather-app directory. It consists of t

Currently, the following configurations are supported:

Machine | Cheyenne | Hera | Jet | Orion | wcoss2 |
------------| ------------|--------|--------|--------|---------|
Compiler(s) | Intel, GNU | Intel | Intel | Intel | Intel |
Machine | Derecho | Cheyenne | Hera | Jet | Orion | wcoss2 |
------------|---------|-------------|--------|--------|--------|---------|
Compiler(s) | Intel | Intel, GNU | Intel | Intel | Intel | Intel |

The CMake build is done in the ``build_${compiler}`` directory.
The executables for each build are installed under the ``bin_${compiler}`` directory.
Expand Down
55 changes: 55 additions & 0 deletions tests/WE2E/machine_suites/comprehensive.derecho
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
community
natalie-perlin marked this conversation as resolved.
Show resolved Hide resolved
custom_ESGgrid
custom_GFDLgrid__GFDLgrid_USE_NUM_CELLS_IN_FILENAMES_eq_FALSE
custom_GFDLgrid
deactivate_tasks
grid_CONUS_25km_GFDLgrid_ics_FV3GFS_lbcs_FV3GFS_suite_GFS_v16
grid_CONUS_3km_GFDLgrid_ics_FV3GFS_lbcs_FV3GFS_suite_RRFS_v1beta
grid_RRFS_AK_13km_ics_FV3GFS_lbcs_FV3GFS_suite_GFS_v16_plot
grid_RRFS_AK_3km_ics_FV3GFS_lbcs_FV3GFS_suite_HRRR
grid_RRFS_CONUS_13km_ics_FV3GFS_lbcs_FV3GFS_suite_RAP
grid_RRFS_CONUS_13km_ics_FV3GFS_lbcs_FV3GFS_suite_GFS_v16_plot
grid_RRFS_CONUS_13km_ics_FV3GFS_lbcs_FV3GFS_suite_HRRR
grid_RRFS_CONUS_13km_ics_FV3GFS_lbcs_FV3GFS_suite_RRFS_v1beta
grid_RRFS_CONUS_25km_ics_FV3GFS_lbcs_FV3GFS_suite_GFS_v15p2
grid_RRFS_CONUS_25km_ics_FV3GFS_lbcs_FV3GFS_suite_GFS_v16_plot
grid_RRFS_CONUS_25km_ics_FV3GFS_lbcs_FV3GFS_suite_GFS_v17_p8_plot
grid_RRFS_CONUS_25km_ics_FV3GFS_lbcs_FV3GFS_suite_HRRR
grid_RRFS_CONUS_25km_ics_FV3GFS_lbcs_FV3GFS_suite_RAP
grid_RRFS_CONUS_25km_ics_FV3GFS_lbcs_FV3GFS_suite_RRFS_v1beta
grid_RRFS_CONUS_25km_ics_FV3GFS_lbcs_RAP_suite_RAP
grid_RRFS_CONUS_25km_ics_GSMGFS_lbcs_GSMGFS_suite_GFS_v15p2
grid_RRFS_CONUS_25km_ics_NAM_lbcs_NAM_suite_GFS_v16
grid_RRFS_CONUS_25km_ics_NAM_lbcs_NAM_suite_RRFS_v1beta
grid_RRFS_CONUS_3km_ics_FV3GFS_lbcs_FV3GFS_suite_GFS_v15p2
grid_RRFS_CONUS_3km_ics_FV3GFS_lbcs_FV3GFS_suite_GFS_v15_thompson_mynn_lam3km
grid_RRFS_CONUS_3km_ics_FV3GFS_lbcs_FV3GFS_suite_GFS_v16
grid_RRFS_CONUS_3km_ics_FV3GFS_lbcs_FV3GFS_suite_HRRR
grid_RRFS_CONUS_3km_ics_FV3GFS_lbcs_FV3GFS_suite_RRFS_v1beta
grid_RRFS_CONUScompact_13km_ics_FV3GFS_lbcs_FV3GFS_suite_GFS_v16
grid_RRFS_CONUScompact_13km_ics_HRRR_lbcs_RAP_suite_HRRR
grid_RRFS_CONUScompact_13km_ics_HRRR_lbcs_RAP_suite_RRFS_v1beta
grid_RRFS_CONUScompact_25km_ics_FV3GFS_lbcs_FV3GFS_suite_GFS_v16
grid_RRFS_CONUScompact_25km_ics_HRRR_lbcs_HRRR_suite_HRRR
grid_RRFS_CONUScompact_25km_ics_HRRR_lbcs_RAP_suite_RRFS_v1beta
grid_RRFS_CONUScompact_3km_ics_FV3GFS_lbcs_FV3GFS_suite_GFS_v16
grid_RRFS_CONUScompact_3km_ics_HRRR_lbcs_RAP_suite_HRRR
grid_RRFS_CONUScompact_3km_ics_HRRR_lbcs_RAP_suite_RRFS_v1beta
grid_RRFS_NA_13km_ics_FV3GFS_lbcs_FV3GFS_suite_RAP
grid_SUBCONUS_Ind_3km_ics_FV3GFS_lbcs_FV3GFS_suite_WoFS_v0
grid_SUBCONUS_Ind_3km_ics_HRRR_lbcs_HRRR_suite_HRRR
grid_SUBCONUS_Ind_3km_ics_HRRR_lbcs_RAP_suite_WoFS_v0
grid_SUBCONUS_Ind_3km_ics_NAM_lbcs_NAM_suite_GFS_v16
grid_SUBCONUS_Ind_3km_ics_RAP_lbcs_RAP_suite_RRFS_v1beta_plot
GST_release_public_v1
MET_ensemble_verification_only_vx
MET_verification_only_vx
nco
nco_ensemble
nco_grid_RRFS_CONUS_13km_ics_FV3GFS_lbcs_FV3GFS_suite_GFS_v16
nco_grid_RRFS_CONUS_25km_ics_FV3GFS_lbcs_FV3GFS_timeoffset_suite_GFS_v16
nco_grid_RRFS_CONUS_3km_ics_FV3GFS_lbcs_FV3GFS_suite_GFS_v15_thompson_mynn_lam3km
nco_grid_RRFS_CONUScompact_25km_ics_HRRR_lbcs_RAP_suite_HRRR
pregen_grid_orog_sfc_climo
specify_EXTRN_MDL_SYSBASEDIR_ICS_LBCS
specify_template_filenames
10 changes: 10 additions & 0 deletions tests/WE2E/machine_suites/coverage.derecho
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
community
natalie-perlin marked this conversation as resolved.
Show resolved Hide resolved
grid_RRFS_CONUScompact_13km_ics_HRRR_lbcs_RAP_suite_RRFS_v1beta
grid_RRFS_CONUS_13km_ics_FV3GFS_lbcs_FV3GFS_suite_RAP
grid_RRFS_CONUS_13km_ics_FV3GFS_lbcs_FV3GFS_suite_HRRR
grid_RRFS_CONUS_3km_ics_FV3GFS_lbcs_FV3GFS_suite_GFS_v15_thompson_mynn_lam3km
grid_RRFS_CONUScompact_25km_ics_HRRR_lbcs_HRRR_suite_HRRR
grid_RRFS_CONUScompact_3km_ics_HRRR_lbcs_RAP_suite_RRFS_v1beta
grid_SUBCONUS_Ind_3km_ics_RAP_lbcs_RAP_suite_RRFS_v1beta_plot
nco_ensemble
nco_grid_RRFS_CONUS_3km_ics_FV3GFS_lbcs_FV3GFS_suite_GFS_v15_thompson_mynn_lam3km
2 changes: 1 addition & 1 deletion tests/WE2E/setup_WE2E_tests.sh
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ function usage {

}

machines=( hera jet cheyenne orion wcoss2 gaea odin singularity macos noaacloud )
machines=( hera jet cheyenne derecho orion wcoss2 gaea odin singularity macos noaacloud )

if [ "$1" = "-h" ] ; then usage ; fi
[[ $# -le 2 ]] && usage
Expand Down
2 changes: 1 addition & 1 deletion tests/build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ function usage() {
exit 1
}

machines=( hera jet cheyenne orion wcoss2 gaea odin singularity macos noaacloud )
machines=( hera jet cheyenne derecho orion wcoss2 gaea odin singularity macos noaacloud )

[[ $# -gt 4 ]] && usage

Expand Down
2 changes: 1 addition & 1 deletion ush/get_crontab_contents.py
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ def get_crontab_contents(called_from_cron):
# themselves being called as cron jobs. In that case, we must instead
# call the system version of crontab at /usr/bin/crontab.
#
if MACHINE == "CHEYENNE":
if MACHINE == "CHEYENNE" or MACHINE == "DERECHO":
if called_from_cron:
__crontab_cmd__ = "/usr/bin/crontab"

Expand Down
36 changes: 36 additions & 0 deletions ush/machine/derecho.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
platform:
WORKFLOW_MANAGER: rocoto
NCORES_PER_NODE: 128
SCHED: pbspro
CCPA_OBS_DIR: /glade/work/epicufsrt/contrib/UFS_SRW_data/develop/obs_data/ccpa/proc
MRMS_OBS_DIR: /glade/work/epicufsrt/contrib/UFS_SRW_data/develop/obs_data/mrms/proc
NDAS_OBS_DIR: /glade/work/epicufsrt/contrib/UFS_SRW_data/develop/obs_data/ndas/proc
DOMAIN_PREGEN_BASEDIR: /glade/work/epicufsrt/contrib/UFS_SRW_data/develop/FV3LAM_pregen
QUEUE_DEFAULT: main
QUEUE_FCST: main
QUEUE_HPSS: main
RUN_CMD_FCST: mpiexec -n ${PE_MEMBER01} --hostfile ${PBS_NODEFILE}
RUN_CMD_POST: mpiexec -n $nprocs --hostfile ${PBS_NODEFILE}
RUN_CMD_PRDGEN: mpiexec -n $nprocs --hostfile ${PBS_NODEFILE}
RUN_CMD_SERIAL: time
RUN_CMD_UTILS: mpiexec -n $nprocs --hostfile ${PBS_NODEFILE}
RUN_CMD_NEXUS: mpiexec -n $nprocs --hostfile ${PBS_NODEFILE}
RUN_CMD_AQMLBC: mpiexec -n ${NUMTS} --hostfile ${PBS_NODEFILE}
PRE_TASK_CMDS: '{ ulimit -s unlimited; ulimit -a; }'
TEST_EXTRN_MDL_SOURCE_BASEDIR: /glade/work/epicufsrt/contrib/UFS_SRW_data/develop/input_model_data
TEST_AQM_INPUT_BASEDIR: /glade/work/epicufsrt/contrib/UFS_SRW_data/develop/aqm_data
TEST_PREGEN_BASEDIR: /glade/work/epicufsrt/contrib/UFS_SRW_data/develop/FV3LAM_pregen
TEST_ALT_EXTRN_MDL_SYSBASEDIR_ICS: /glade/work/epicufsrt/contrib/UFS_SRW_data/develop/dummy_FV3GFS_sys_dir
TEST_ALT_EXTRN_MDL_SYSBASEDIR_LBCS: /glade/work/epicufsrt/contrib/UFS_SRW_data/develop/dummy_FV3GFS_sys_dir
TEST_VX_FCST_INPUT_BASEDIR: '{{ "/glade/work/epicufsrt/contrib/UFS_SRW_data/develop/output_data/fcst_" }}{{ "ens" if (global.NUM_ENS_MEMBERS > 0) else "det" }}{{ "/{{workflow.PREDEF_GRID_NAME}}" }}{% raw %}{% endraw %}'
FIXaer: /glade/work/epicufsrt/contrib/UFS_SRW_data/develop/fix/fix_aer
FIXgsi: /glade/work/epicufsrt/contrib/UFS_SRW_data/develop/fix/fix_gsi
FIXgsm: /glade/work/epicufsrt/contrib/UFS_SRW_data/develop/fix/fix_am
FIXlut: /glade/work/epicufsrt/contrib/UFS_SRW_data/develop/fix/fix_lut
FIXorg: /glade/work/epicufsrt/contrib/UFS_SRW_data/develop/fix/fix_orog
FIXsfc: /glade/work/epicufsrt/contrib/UFS_SRW_data/develop/fix/fix_sfc_climo
FIXshp: /glade/work/epicufsrt/contrib/UFS_SRW_data/develop/NaturalEarth
EXTRN_MDL_DATA_STORES: disk aws nomads
data:
ics_lbcs:
FV3GFS: /glade/p/ral/jntp/UFS_CAM/COMGFS/gfs.${yyyymmdd}/${hh}
2 changes: 1 addition & 1 deletion ush/valid_param_vals.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
valid_vals_RUN_ENVIR: ["nco", "community"]
valid_vals_VERBOSE: [True, False]
valid_vals_DEBUG: [True, False]
valid_vals_MACHINE: ["HERA", "WCOSS2", "ORION", "JET", "ODIN", "CHEYENNE", "STAMPEDE", "LINUX", "MACOS", "NOAACLOUD", "SINGULARITY", "GAEA"]
valid_vals_MACHINE: ["HERA", "WCOSS2", "ORION", "JET", "ODIN", "CHEYENNE", "DERECHO", "STAMPEDE", "LINUX", "MACOS", "NOAACLOUD", "SINGULARITY", "GAEA"]
valid_vals_SCHED: ["slurm", "pbspro", "lsf", "lsfcray", "none"]
valid_vals_FCST_MODEL: ["ufs-weather-model"]
valid_vals_WORKFLOW_MANAGER: ["rocoto", "ecflow", "none"]
Expand Down