Add capability to run forecast in segments#2795
Conversation
|
I still have some more testing to do (and I think documentation to update), but wanted to get a draft out since people are going on leave. |
7cd1192 to
cd3d7c8
Compare
|
Will check and see if the documentation needs to be updated Friday, but I think the last few bugs from this update are gone. |
|
CI Passed Hercules at |
|
Hercules testing completed successfully, resetting label. |
cd3d7c8 to
eb17358
Compare
|
Appears no documentation updates are needed at this time after all. |
| export FCST_SEGMENTS_STR_GFS="@FCST_SEGMENTS_GFS@" | ||
| IFS=', ' read -ra FCST_SEGMENTS_GFS <<< "${FCST_SEGMENTS_STR_GFS}" | ||
| if (( ${FCST_SEGMENT:- -1} < 0 )); then | ||
| # Jobs other than the forecast don't care about segments, only the | ||
| # absolute start and end | ||
| declare -x FHMIN_GFS=${FCST_SEGMENTS_GFS[0]} | ||
| declare -x FHMAX_GFS=${FCST_SEGMENTS_GFS[-1]} | ||
| else | ||
| declare -x FHMIN_GFS=${FCST_SEGMENTS_GFS[${FCST_SEGMENT}]} | ||
| declare -x FHMAX_GFS=${FCST_SEGMENTS_GFS[${FCST_SEGMENT}+1]} | ||
| fi |
There was a problem hiding this comment.
Is there a way to not do any of this in a config file and calculate this in a j-job or exscript?
There was a problem hiding this comment.
Not without massive additional changes. FHMAX_GFS especially gets used later in this config, and then also in the job-specific configs that would be sourced immediately afterwards.
There was a problem hiding this comment.
Re-done how we discussed Mon afternoon.
d9f01cb to
6816722
Compare
Changes the way forecast segments are defined. Restores the original `FHMIN_GFS` and `FHMAX_GFS` and then adds a local `breakpnts` variable that contains the intermediate stopping points (if any). The original list of segment endpoints is then constructed from that. The determination of the `FHMIN` and `FHMAX` based on the segment is moved from `config.base` to `config.fcst`. This required adding some additional checks in `config.fcst` to clip other `FHMAX` variables to `FHMAX`.
Updates the extended GFS case to use forecast segments to test that capability for the GFS system (the GEFS case already tests segments as well).
Earlier update to parse comma-separated bash variables as lists in python mean we no longer need to do that in the task scripts. This commit is incomplete until a follow-up PR that will update the wxflow hash.
With comma-separated lists now being read into python as lists, the jinja templates for the archive job had to be updated to not attempt to create them anymore.
Missed updating one of the dependencies from task to metatask.
|
All Cases Passed on Hercules Manually setting state label for Hercules to PASSED |
|
The extended test is working when I try manually, so I am going to attempt CI again. |
|
|
Automated global-workflow Testing Results: |
|
Experiment C96_atm3DVar_extended_7179c004 FAIL on Wcoss2 at 08/10/24 01:42:27 AM Error logs: Follow link here to view the contents of the above file(s): (link) |
|
|
Automated global-workflow Testing Results: |
|
Experiment C96C48_hybatmDA_3877cc5e FAIL on Wcoss2 at 08/10/24 05:42:38 AM Error logs: Follow link here to view the contents of the above file(s): (link) |
|
|
Automated global-workflow Testing Results: |
|
Experiment C96C48_hybatmDA_c73eecd2 FAIL on Wcoss2 at 08/10/24 07:06:33 AM Error logs: Follow link here to view the contents of the above file(s): (link) |
|
|
Automated global-workflow Testing Results: |
|
All CI Test Cases Passed on Wcoss2: |
| export JEDIYAML="${PARMgfs}/gdas/aero/variational/3dvar_fgat_gfs_aero.yaml.j2" | ||
| else | ||
| export aero_bkg_times="6" | ||
| export aero_bkg_times="6," # Trailing comma is necessary so this is treated as a list |
DavidHuber-NOAA
left a comment
There was a problem hiding this comment.
Looks good to me.
Description
Adds the ability to run a forecast in segments instead of all at once. To accomplish this, a new local
checkpntsvariable is introduced toconfig.baseto contain a comma-separated list of intermediate stopping points for the forecast. This is combined withFHMIN_GFSandFHMAX_GFSto create a comma-separated stringFCST_SEGMENTSwith all the start/end points that is used byconfig.fcstand rocoto workflow. Capability to parse these into python lists was added to wxflow in an accompanying PR. Ifcheckpntsis an empty string, this will result in a single-segment forecast.To accommodate the new segment metatasks that must be run serially, the capability of
create_task()was expanded to allow a dictionary key ofis_serial, which controls whether a metatask is parallel or serial using pre-existing capability in rocoto. The default when not given is parallel (i.e. most metatasks).Resolves #2274
Refs NOAA-EMC/wxflow#39
Refs NOAA-EMC/wxflow#40
Type of change
Change characteristics
How has this been tested?
Checklist