From b2b2bac3f706891c30b23a2454e9d198c23c3643 Mon Sep 17 00:00:00 2001 From: Dana Singh Date: Mon, 8 Jun 2026 17:30:04 -0400 Subject: [PATCH 1/8] #906 Develop test yamls for fre run subtools --- fre/run/tests/yaml/exp.yaml | 25 +++++++++++++++ fre/run/tests/yaml/input_datasets.yaml | 28 +++++++++++++++++ fre/run/tests/yaml/layouts.yaml | 43 ++++++++++++++++++++++++++ fre/run/tests/yaml/model.yaml | 14 +++++++++ 4 files changed, 110 insertions(+) create mode 100644 fre/run/tests/yaml/exp.yaml create mode 100644 fre/run/tests/yaml/input_datasets.yaml create mode 100644 fre/run/tests/yaml/layouts.yaml create mode 100644 fre/run/tests/yaml/model.yaml diff --git a/fre/run/tests/yaml/exp.yaml b/fre/run/tests/yaml/exp.yaml new file mode 100644 index 000000000..2fce26bee --- /dev/null +++ b/fre/run/tests/yaml/exp.yaml @@ -0,0 +1,25 @@ +## could include namelist info, dataset info, mode info + +run: + inputs: + namelist: + atmos_nml: "" + files: + - $(includeDir)/nml/ocean_g12.nml + - $(includeDir)/nml/am5_common.nml + - $(includeDir)/nml/lm4p2_common.nml + - $(includeDir)/nml/am5_c96L65.nml + - $(includeDir)/nml/am5_amip.nml + datasets: ## reference specific sections of input.yaml[datasets] + common_LM4p2: '{{ input.datasets.common_LM4p2 }}' + runtime_mode: + production: + simtime: $(EXP_AMIP_LEN) + simtime_units: years + segment_simtime: '12' #could just be P12M + segment_simtime_units: months + layouts: + c96L65_production: '{{ layouts.c96L65_production}}' + +## hm - can combine model, settings, layouts and exp.yaml +## then clean out layouts.yaml ... diff --git a/fre/run/tests/yaml/input_datasets.yaml b/fre/run/tests/yaml/input_datasets.yaml new file mode 100644 index 000000000..6043da70c --- /dev/null +++ b/fre/run/tests/yaml/input_datasets.yaml @@ -0,0 +1,28 @@ +input: + datasets: + common_LM4p2: + - label: input + target: INPUT/soil_type.nc + chksum: '' + timestamp: '' + platform: $(platform) + source: $(MODEL_GEN5_INPUTS)/common_LM4/soil_type_gsde_5minute.nc + - label: input + target: INPUT/ + chksum: '' + timestamp: '' + platform: $(platform) + source: $(MODEL_GEN5_INPUTS)/common_LM4/biodata.nc + AGAIN_common_LM4p2: + - label: input + target: INPUT/soil_type.nc + chksum: '' + timestamp: '' + platform: $(platform) + source: $(MODEL_GEN5_INPUTS)/common_LM4/soil_type_gsde_5minute.nc + - label: input + target: INPUT/ + chksum: '' + timestamp: '' + platform: $(platform) + source: $(MODEL_GEN5_INPUTS)/common_LM4/biodata.nc diff --git a/fre/run/tests/yaml/layouts.yaml b/fre/run/tests/yaml/layouts.yaml new file mode 100644 index 000000000..117bc5b39 --- /dev/null +++ b/fre/run/tests/yaml/layouts.yaml @@ -0,0 +1,43 @@ +layouts: + c96L65_production: + job_wallclock: '16:00:00' + seg_runtime: '3:00:00' + atm: + ranks: '576' + threads: null + layout: 4,24 + io_layout: 1,4 + mask_table: null + lnd: + ranks: null + threads: null + layout: 4,24 + io_layout: 1,4 + mask_table: null + ocn: + ranks: '0' + threads: null + layout: 96,6 + io_layout: 1,3 + mask_table: null + ice: + ranks: null + threads: null + layout: 96,6 + io_layout: 1,3 + mask_table: null + c384L65_production: + job_wallclock: '16:00:00' + seg_runtime: '8:00:00' + atm: + ranks: '4608' + threads: null + layout: 24,32 + io_layout: 1,4 + mask_table: null + lnd: + ranks: null + threads: null + layout: 24,32 + io_layout: 1,4 + mask_table: null diff --git a/fre/run/tests/yaml/model.yaml b/fre/run/tests/yaml/model.yaml new file mode 100644 index 000000000..4ff5c7bf4 --- /dev/null +++ b/fre/run/tests/yaml/model.yaml @@ -0,0 +1,14 @@ +fre_properties: + shared_yamls: + - "run/layouts.yaml" + - "run/input_datasets.yaml" +build: + compile: "compile.yaml" + platform: "platforms.yaml" + +experiments: + experiment_name: + settings: "settings.yaml" + run: ["{{ fre_properties.shared_yamls }}", "run/exp.yaml"] + postprocess: + analysis: From 0b47e8ef1001c2f8d01103323f67157404d8193e Mon Sep 17 00:00:00 2001 From: Dana Singh Date: Tue, 9 Jun 2026 12:20:31 -0400 Subject: [PATCH 2/8] #906 update yamls --- .../tests/yaml/{exp.yaml => experiment.yaml} | 0 fre/run/tests/yaml/layouts.yaml | 42 +++---------------- fre/run/tests/yaml/model.yaml | 9 +++- 3 files changed, 13 insertions(+), 38 deletions(-) rename fre/run/tests/yaml/{exp.yaml => experiment.yaml} (100%) diff --git a/fre/run/tests/yaml/exp.yaml b/fre/run/tests/yaml/experiment.yaml similarity index 100% rename from fre/run/tests/yaml/exp.yaml rename to fre/run/tests/yaml/experiment.yaml diff --git a/fre/run/tests/yaml/layouts.yaml b/fre/run/tests/yaml/layouts.yaml index 117bc5b39..fce8c3acd 100644 --- a/fre/run/tests/yaml/layouts.yaml +++ b/fre/run/tests/yaml/layouts.yaml @@ -2,42 +2,12 @@ layouts: c96L65_production: job_wallclock: '16:00:00' seg_runtime: '3:00:00' - atm: - ranks: '576' - threads: null - layout: 4,24 - io_layout: 1,4 - mask_table: null - lnd: - ranks: null - threads: null - layout: 4,24 - io_layout: 1,4 - mask_table: null - ocn: - ranks: '0' - threads: null - layout: 96,6 - io_layout: 1,3 - mask_table: null - ice: - ranks: null - threads: null - layout: 96,6 - io_layout: 1,3 - mask_table: null + atm: {ranks: '576', threads: null, layout: 4,24, io_layout: 1,4, mask_table: null} + lnd: {ranks: null, threads: null, layout: 4,24, io_layout: 1,4, mask_table: null} + ocn: {ranks: '0', threads: null, layout: 96,6, io_layout: 1,3, mask_table: null} + ice: {ranks: null, threads: null, layout: 96,6, io_layout: 1,3, mask_table: null} c384L65_production: job_wallclock: '16:00:00' seg_runtime: '8:00:00' - atm: - ranks: '4608' - threads: null - layout: 24,32 - io_layout: 1,4 - mask_table: null - lnd: - ranks: null - threads: null - layout: 24,32 - io_layout: 1,4 - mask_table: null + atm: {ranks: '4608', threads: null, layout: 24,32, io_layout: 1,4, mask_table: null} + lnd: {ranks: null, threads: null, layout: 24,32, io_layout: 1,4, mask_table: null} diff --git a/fre/run/tests/yaml/model.yaml b/fre/run/tests/yaml/model.yaml index 4ff5c7bf4..107561ef7 100644 --- a/fre/run/tests/yaml/model.yaml +++ b/fre/run/tests/yaml/model.yaml @@ -2,13 +2,18 @@ fre_properties: shared_yamls: - "run/layouts.yaml" - "run/input_datasets.yaml" + build: compile: "compile.yaml" platform: "platforms.yaml" experiments: - experiment_name: + foo_experiment: settings: "settings.yaml" - run: ["{{ fre_properties.shared_yamls }}", "run/exp.yaml"] + run: + - "{{ fre_properties.shared_yamls }}" + - "run/exp.yaml" postprocess: + - "pp1.yaml" analysis: + - "analysis1.yaml" From edac326d14819819d113ed99d67f3a9c1e7958b8 Mon Sep 17 00:00:00 2001 From: Dana Singh Date: Tue, 9 Jun 2026 14:31:17 -0400 Subject: [PATCH 3/8] #906 update model yaml --- fre/run/tests/yaml/model.yaml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/fre/run/tests/yaml/model.yaml b/fre/run/tests/yaml/model.yaml index 107561ef7..14a930e2d 100644 --- a/fre/run/tests/yaml/model.yaml +++ b/fre/run/tests/yaml/model.yaml @@ -1,3 +1,8 @@ +#Potential process for combining: +# 1. model, settings, layouts, datasets, experiment yamls combined +# 2. experiment yaml references bits in layouts and datasets +# 3. layouts and datasets are cleaned out (all of them are not needed and makes the final config giant) + fre_properties: shared_yamls: - "run/layouts.yaml" From 63727f72fe288aab064d398eccddaf1cf0f6837d Mon Sep 17 00:00:00 2001 From: Dana Singh Date: Tue, 9 Jun 2026 14:40:02 -0400 Subject: [PATCH 4/8] #906 generalize and update some configs --- fre/run/tests/yaml/experiment.yaml | 10 ++++------ fre/run/tests/yaml/input_datasets.yaml | 20 ++++++++++---------- fre/run/tests/yaml/layouts.yaml | 7 +------ fre/run/tests/yaml/platforms.yaml | 23 +++++++++++++++++++++++ fre/run/tests/yaml/settings.yaml | 8 ++++++++ 5 files changed, 46 insertions(+), 22 deletions(-) create mode 100644 fre/run/tests/yaml/platforms.yaml create mode 100644 fre/run/tests/yaml/settings.yaml diff --git a/fre/run/tests/yaml/experiment.yaml b/fre/run/tests/yaml/experiment.yaml index 2fce26bee..069c92cb3 100644 --- a/fre/run/tests/yaml/experiment.yaml +++ b/fre/run/tests/yaml/experiment.yaml @@ -3,7 +3,7 @@ run: inputs: namelist: - atmos_nml: "" + atmos_nml: "have to figure this one out" files: - $(includeDir)/nml/ocean_g12.nml - $(includeDir)/nml/am5_common.nml @@ -11,7 +11,7 @@ run: - $(includeDir)/nml/am5_c96L65.nml - $(includeDir)/nml/am5_amip.nml datasets: ## reference specific sections of input.yaml[datasets] - common_LM4p2: '{{ input.datasets.common_LM4p2 }}' + common_LM4p2: '{{ input.datasets.common_LM4_ex1 }}' runtime_mode: production: simtime: $(EXP_AMIP_LEN) @@ -19,7 +19,5 @@ run: segment_simtime: '12' #could just be P12M segment_simtime_units: months layouts: - c96L65_production: '{{ layouts.c96L65_production}}' - -## hm - can combine model, settings, layouts and exp.yaml -## then clean out layouts.yaml ... + c96L65_ex_production: '{{ layouts.c96L65_ex_production}}' +#to-do: add regression example? diff --git a/fre/run/tests/yaml/input_datasets.yaml b/fre/run/tests/yaml/input_datasets.yaml index 6043da70c..5dd36e9d1 100644 --- a/fre/run/tests/yaml/input_datasets.yaml +++ b/fre/run/tests/yaml/input_datasets.yaml @@ -1,28 +1,28 @@ input: datasets: - common_LM4p2: + common_LM4_ex1: - label: input target: INPUT/soil_type.nc chksum: '' timestamp: '' - platform: $(platform) - source: $(MODEL_GEN5_INPUTS)/common_LM4/soil_type_gsde_5minute.nc + platform: {{ platform }} + source: /some/path/soil_type.nc - label: input target: INPUT/ chksum: '' timestamp: '' - platform: $(platform) - source: $(MODEL_GEN5_INPUTS)/common_LM4/biodata.nc - AGAIN_common_LM4p2: + platform: {{ platform }} + source: /some/path/biodata.nc + common_LM4_ex2: - label: input target: INPUT/soil_type.nc chksum: '' timestamp: '' - platform: $(platform) - source: $(MODEL_GEN5_INPUTS)/common_LM4/soil_type_gsde_5minute.nc + platform: {{ platform }} + source: /some/path/soil_type_gsde_5minute.nc - label: input target: INPUT/ chksum: '' timestamp: '' - platform: $(platform) - source: $(MODEL_GEN5_INPUTS)/common_LM4/biodata.nc + platform: {{ platform }} + source: /some/path/biodata.nc diff --git a/fre/run/tests/yaml/layouts.yaml b/fre/run/tests/yaml/layouts.yaml index fce8c3acd..f97dfb6ca 100644 --- a/fre/run/tests/yaml/layouts.yaml +++ b/fre/run/tests/yaml/layouts.yaml @@ -1,13 +1,8 @@ layouts: - c96L65_production: + c96L65_ex_production: job_wallclock: '16:00:00' seg_runtime: '3:00:00' atm: {ranks: '576', threads: null, layout: 4,24, io_layout: 1,4, mask_table: null} lnd: {ranks: null, threads: null, layout: 4,24, io_layout: 1,4, mask_table: null} ocn: {ranks: '0', threads: null, layout: 96,6, io_layout: 1,3, mask_table: null} ice: {ranks: null, threads: null, layout: 96,6, io_layout: 1,3, mask_table: null} - c384L65_production: - job_wallclock: '16:00:00' - seg_runtime: '8:00:00' - atm: {ranks: '4608', threads: null, layout: 24,32, io_layout: 1,4, mask_table: null} - lnd: {ranks: null, threads: null, layout: 24,32, io_layout: 1,4, mask_table: null} diff --git a/fre/run/tests/yaml/platforms.yaml b/fre/run/tests/yaml/platforms.yaml new file mode 100644 index 000000000..0cbe9cb79 --- /dev/null +++ b/fre/run/tests/yaml/platforms.yaml @@ -0,0 +1,23 @@ +platforms: + - name: ncrc5.intel23 + compiler: intel + envSetup: ["module use -a /ncrc/home2/fms/local/modulefiles", + "source $MODULESHOME/init/sh", + !join ["module load ", *INTEL, "/2023.2.0"], + "module load fre/bronx-23", + "module load cray-hdf5/1.12.2.11", + "module load cray-netcdf/4.9.0.11"] + mkTemplate: !join ["/ncrc/home2/fms/local/opt/fre-commands/bronx-20/site/ncrc5/", *INTEL, ".mk"] + modelRoot: ${HOME}/fremake_canopy/test + - name: hpcme.intel25 + compiler: intel + RUNenv: "" + modelRoot: /apps + container: True + containerBuild: "podman" + containerRun: "apptainer" + containerBase: "gitlab.gfdl.noaa.gov:5050/fre/hpc-me/base-ubuntu24.04-intel:2025.3" + mkTemplate: "/apps/mkmf/templates/hpcme-intel2025.03-oneapi.mk" + container2step: True + container2base: "gitlab.gfdl.noaa.gov:5050/fre/hpc-me/base-ubuntu24.04-intel:2025.3rte" + volume: *VOLUME diff --git a/fre/run/tests/yaml/settings.yaml b/fre/run/tests/yaml/settings.yaml new file mode 100644 index 000000000..5d40510cc --- /dev/null +++ b/fre/run/tests/yaml/settings.yaml @@ -0,0 +1,8 @@ +run: + workflow: + repository: "some_url.git" + version: "main" + settings: + site: "gaea" + switches: + clean_work: True From d14a76ec8af7c8ad2ba7674c1885d638cbd913c3 Mon Sep 17 00:00:00 2001 From: Dana Singh Date: Tue, 9 Jun 2026 14:50:48 -0400 Subject: [PATCH 5/8] #906 add some notes for myself --- fre/run/tests/yaml/model.yaml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/fre/run/tests/yaml/model.yaml b/fre/run/tests/yaml/model.yaml index 14a930e2d..bb80c8449 100644 --- a/fre/run/tests/yaml/model.yaml +++ b/fre/run/tests/yaml/model.yaml @@ -22,3 +22,9 @@ experiments: - "pp1.yaml" analysis: - "analysis1.yaml" + +# Though it may seems repetitive, I personally like the "run", "pp", "analysis", and "settings" keys +# 1. more explicit +# 2. easy to flatten +# 3. probably easier if user just wants postprocessing yamls (if on ppan) or no post-processing (just on gaea) +# 4. easier to see/manage the order yamls are combined (if order matters in some cases) From e72ced5a9b36a8614c6dc278b085b4844a0ec159 Mon Sep 17 00:00:00 2001 From: Dana Singh Date: Tue, 9 Jun 2026 14:52:19 -0400 Subject: [PATCH 6/8] #906 organize yamls --- fre/run/tests/yaml/{ => run}/experiment.yaml | 0 fre/run/tests/yaml/{ => run}/input_datasets.yaml | 0 fre/run/tests/yaml/{ => run}/layouts.yaml | 0 3 files changed, 0 insertions(+), 0 deletions(-) rename fre/run/tests/yaml/{ => run}/experiment.yaml (100%) rename fre/run/tests/yaml/{ => run}/input_datasets.yaml (100%) rename fre/run/tests/yaml/{ => run}/layouts.yaml (100%) diff --git a/fre/run/tests/yaml/experiment.yaml b/fre/run/tests/yaml/run/experiment.yaml similarity index 100% rename from fre/run/tests/yaml/experiment.yaml rename to fre/run/tests/yaml/run/experiment.yaml diff --git a/fre/run/tests/yaml/input_datasets.yaml b/fre/run/tests/yaml/run/input_datasets.yaml similarity index 100% rename from fre/run/tests/yaml/input_datasets.yaml rename to fre/run/tests/yaml/run/input_datasets.yaml diff --git a/fre/run/tests/yaml/layouts.yaml b/fre/run/tests/yaml/run/layouts.yaml similarity index 100% rename from fre/run/tests/yaml/layouts.yaml rename to fre/run/tests/yaml/run/layouts.yaml From 9e8a516e63883d3ab360eadc445028eb0e6987d1 Mon Sep 17 00:00:00 2001 From: Dana Singh Date: Thu, 11 Jun 2026 13:23:01 -0400 Subject: [PATCH 7/8] #906 re-organize --- fre/run/tests/yaml/{run => }/input_datasets.yaml | 0 fre/run/tests/yaml/{run => }/layouts.yaml | 0 fre/run/tests/yaml/{run => run_exp}/experiment.yaml | 0 fre/run/tests/yaml/{ => run_exp}/settings.yaml | 0 4 files changed, 0 insertions(+), 0 deletions(-) rename fre/run/tests/yaml/{run => }/input_datasets.yaml (100%) rename fre/run/tests/yaml/{run => }/layouts.yaml (100%) rename fre/run/tests/yaml/{run => run_exp}/experiment.yaml (100%) rename fre/run/tests/yaml/{ => run_exp}/settings.yaml (100%) diff --git a/fre/run/tests/yaml/run/input_datasets.yaml b/fre/run/tests/yaml/input_datasets.yaml similarity index 100% rename from fre/run/tests/yaml/run/input_datasets.yaml rename to fre/run/tests/yaml/input_datasets.yaml diff --git a/fre/run/tests/yaml/run/layouts.yaml b/fre/run/tests/yaml/layouts.yaml similarity index 100% rename from fre/run/tests/yaml/run/layouts.yaml rename to fre/run/tests/yaml/layouts.yaml diff --git a/fre/run/tests/yaml/run/experiment.yaml b/fre/run/tests/yaml/run_exp/experiment.yaml similarity index 100% rename from fre/run/tests/yaml/run/experiment.yaml rename to fre/run/tests/yaml/run_exp/experiment.yaml diff --git a/fre/run/tests/yaml/settings.yaml b/fre/run/tests/yaml/run_exp/settings.yaml similarity index 100% rename from fre/run/tests/yaml/settings.yaml rename to fre/run/tests/yaml/run_exp/settings.yaml From 1ad640c4f3dd65d80d91214fb0b65829bd66b7a2 Mon Sep 17 00:00:00 2001 From: Dana Singh Date: Thu, 11 Jun 2026 13:43:08 -0400 Subject: [PATCH 8/8] #906 update --- fre/run/tests/yaml/model.yaml | 6 ++++++ fre/run/tests/yaml/run_exp/experiment.yaml | 7 +------ 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/fre/run/tests/yaml/model.yaml b/fre/run/tests/yaml/model.yaml index bb80c8449..6d957fb39 100644 --- a/fre/run/tests/yaml/model.yaml +++ b/fre/run/tests/yaml/model.yaml @@ -7,6 +7,12 @@ fre_properties: shared_yamls: - "run/layouts.yaml" - "run/input_datasets.yaml" + shared_nml: + - "$(includeDir)/nml/ocean_g12.nml" + - "$(includeDir)/nml/am5_common.nml" + - "$(includeDir)/nml/lm4p2_common.nml" + - "$(includeDir)/nml/am5_c96L65.nml" + - "$(includeDir)/nml/am5_amip.nml" build: compile: "compile.yaml" diff --git a/fre/run/tests/yaml/run_exp/experiment.yaml b/fre/run/tests/yaml/run_exp/experiment.yaml index 069c92cb3..637023e10 100644 --- a/fre/run/tests/yaml/run_exp/experiment.yaml +++ b/fre/run/tests/yaml/run_exp/experiment.yaml @@ -4,12 +4,7 @@ run: inputs: namelist: atmos_nml: "have to figure this one out" - files: - - $(includeDir)/nml/ocean_g12.nml - - $(includeDir)/nml/am5_common.nml - - $(includeDir)/nml/lm4p2_common.nml - - $(includeDir)/nml/am5_c96L65.nml - - $(includeDir)/nml/am5_amip.nml + files: {{ fre_properties.shared_nml }} datasets: ## reference specific sections of input.yaml[datasets] common_LM4p2: '{{ input.datasets.common_LM4_ex1 }}' runtime_mode: