-
Notifications
You must be signed in to change notification settings - Fork 3
The cascade config structure
Use a cascade structure to separate concerns so that a task/job only defines required environmental variables in runtime
exp.setup -> [config.ens if do_ensemble] -> config.${MACHINE} -> config.base -> [config.${task_id}]
config.${MACHINE} -> config.base -> [config.realtime if it is a realtime run]
NOTE:
-
[ ]means optional - resources config files are only visible in the workflow setup process and are not needed in runtime
- task-specific resource settings are through variable cascade in resources/config.base. For example, we define
WALLTIMEfor all tasks first. If we want to set a different WALLTIME for spinupfcst, we can add a variableWALLTIME_FCST_SPINUPin config/resources/config.base.setup_xml.pyhas a function calledget_cascade_envto get the correct environmental setting in a reverse cascade way. Examples:
export NODES=${NODES:-"<nodes>1:ppn=1</nodes>"} #the NODES variable has to include the tag <nodes> or <cores>
........
........
# fcst
export NODES_FCST=${NODES_FCST:-"<nodes>3:ppn=40</nodes>"}
export WALLTIME_FCST=${WALLTIME_FCST:-"00:50:00"}
Set up top-level options for an experiment, such as directories, NET, VERSION, TAG, days for a realtime run or retro period for a retro run.
Community users (non-NCO environment) can also preempt some variables through this file.
Most system settings go into this file
Define machine-dependent settings, such as COMINgfs, COMINrap, etc.
For resources configuration, this file defines
ACCOUNT, QUEUE, PARTITION, RESERVATION, NODES, WALLTIME, NATIVE, MEMORY
on different machines
Define task specific settings, such as config.clean:
export CLEAN_HRS_LOG="1440" #60 days
#
export CLEAN_HRS_UNGRIB="72"
#
export CLEAN_HRS_IC="72"
export CLEAN_HRS_LBC="72"
#
export CLEAN_HRS_FCST="72"
export CLEAN_HRS_FCST_HISTORY="24"
export CLEAN_HRS_FCST_DIAG="24"
export CLEAN_HRS_FCST_RESTART="24"
#
export CLEAN_HRS_DA="72"
export CLEAN_HRS_ENSBE="72"
export CLEAN_HRS_IODA="72"
This file is optional. We only need this file if a task accumulates many setting options (e.g. 20+?) or needs complicated logic such as defining SDL/VDL DA parameters.
This file defines DEADLINE and STARTTIME for rocoto-based realtime runs, not needed by and does not affect NCO