From 7c50b85b65a1b69bfdbac95b51b09922c21d55b7 Mon Sep 17 00:00:00 2001 From: AntonMFernando Date: Thu, 6 Feb 2025 12:04:10 -0500 Subject: [PATCH 1/8] modified workflow\rocoto\gfs_tasks.py --- workflow/rocoto/gfs_tasks.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/workflow/rocoto/gfs_tasks.py b/workflow/rocoto/gfs_tasks.py index 5874125874..91abe20c33 100644 --- a/workflow/rocoto/gfs_tasks.py +++ b/workflow/rocoto/gfs_tasks.py @@ -2415,6 +2415,22 @@ def arch_tars(self): dep_dict = {'type': 'task', 'name': f'{self.run}_mos_{job}'} deps.append(rocoto.add_dependency(dep_dict)) + if self.options['do_gempak']: + if self.run in ['gdas']: + dep_dict = {'type': 'task', 'name': f'{self.run}_gempakmetancdc'} + deps.append(rocoto.add_dependency(dep_dict)) + elif self.run in ['gfs']: + dep_dict = {'type': 'task', 'name': f'{self.run}_gempakmeta'} + deps.append(rocoto.add_dependency(dep_dict)) + if self.app_config.mode in ['cycled']: + dep_dict = {'type': 'task', 'name': f'{self.run}_gempakncdcupapgif'} + deps.append(rocoto.add_dependency(dep_dict)) + if self.options['do_goes']: + dep_dict = {'type': 'task', 'name': f'{self.run}_npoess_pgrb2_0p5deg'} + deps.append(rocoto.add_dependency(dep_dict)) + dep_dict = {'type': 'metatask', 'name': f'{self.run}_gempakgrb2spec'} + deps.append(rocoto.add_dependency(dep_dict)) + if self.options['do_metp'] and self.run in ['gfs']: deps2 = [] # taskvalid only handles regular tasks, so just check the first metp job exists From 7ce040b88bb5e2b46217effd87cb6a6cfe083901 Mon Sep 17 00:00:00 2001 From: AntonMFernando Date: Thu, 6 Feb 2025 15:14:13 -0500 Subject: [PATCH 2/8] modified env\HERA.env --- env/HERA.env | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/env/HERA.env b/env/HERA.env index ec49724842..5d1469056e 100755 --- a/env/HERA.env +++ b/env/HERA.env @@ -274,7 +274,7 @@ elif [[ "${step}" = "gempak" ]]; then export CFP_MP="YES" export NTHREADS_GEMPAK=${NTHREADS1} - [[ ${NTHREADS_GEMPAK} -gt ${max_threads_per_task} ]] && export NTHREADS_GEMPAK=${max_threads_per_task} + [[ ${NTHREADS_GEMPAK} -gt ${max_threads_per_task} ]] && export NTHREADS_GEMPAK=${max_threads_per_task} || true elif [[ "${step}" = "fit2obs" ]]; then From 8fcfb3e21af8883aa7b4bbf04f882586d8320b92 Mon Sep 17 00:00:00 2001 From: AntonMFernando Date: Thu, 6 Feb 2025 15:33:43 -0500 Subject: [PATCH 3/8] modified env\HERA.env --- env/HERA.env | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/env/HERA.env b/env/HERA.env index 5d1469056e..b359c5b729 100755 --- a/env/HERA.env +++ b/env/HERA.env @@ -273,8 +273,9 @@ elif [[ "${step}" = "gempak" ]]; then export CFP_MP="YES" - export NTHREADS_GEMPAK=${NTHREADS1} - [[ ${NTHREADS_GEMPAK} -gt ${max_threads_per_task} ]] && export NTHREADS_GEMPAK=${max_threads_per_task} || true + if [[ ${NTHREADS_GEMPAK} -gt ${max_threads_per_task} ]]; then + export NTHREADS_GEMPAK=${max_threads_per_task} + fi elif [[ "${step}" = "fit2obs" ]]; then From 0aed7698c9d1fd1fc9aa9bd4879036cb65347cbb Mon Sep 17 00:00:00 2001 From: AntonMFernando Date: Fri, 7 Feb 2025 11:22:18 -0500 Subject: [PATCH 4/8] added missing module load --- modulefiles/module_base.hera.lua | 23 +++++++++++++++++++++++ versions/run.hera.ver | 23 +++++++++++++++++++++++ 2 files changed, 46 insertions(+) diff --git a/modulefiles/module_base.hera.lua b/modulefiles/module_base.hera.lua index 701cc4667d..038bdab73c 100644 --- a/modulefiles/module_base.hera.lua +++ b/modulefiles/module_base.hera.lua @@ -54,3 +54,26 @@ prepend_path("MODULEPATH", pathJoin("/scratch1/NCEPDEV/global/glopara/git/Fit2Ob load(pathJoin("fit2obs", (os.getenv("fit2obs_ver") or "None"))) whatis("Description: GFS run environment") + +git diff versions/ modulefiles/ +diff --git a/modulefiles/module_base.hera.lua b/modulefiles/module_base.hera.lua +index 701cc466..99ee60de 100644 +--- a/modulefiles/module_base.hera.lua ++++ b/modulefiles/module_base.hera.lua +@@ -17,6 +17,7 @@ load(pathJoin("libpng", (os.getenv("libpng_ver") or "None"))) + load(pathJoin("cdo", (os.getenv("cdo_ver") or "None"))) + load(pathJoin("R", (os.getenv("R_ver") or "None"))) + load(pathJoin("perl", (os.getenv("perl_ver") or "None"))) ++load(pathJoin("imagemagick", (os.getenv("imagemagick_ver") or "None"))) + + load(pathJoin("hdf5", (os.getenv("hdf5_ver") or "None"))) + load(pathJoin("netcdf-c", (os.getenv("netcdf_c_ver") or "None"))) +diff --git a/versions/run.hera.ver b/versions/run.hera.ver +index 6ebc64d9..99341ab3 100644 +--- a/versions/run.hera.ver ++++ b/versions/run.hera.ver +@@ -5,6 +5,7 @@ export spack_env=gsi-addon-dev-rocky8 + export hpss_ver=hpss + export ncl_ver=6.6.2 + export R_ver=3.6.1 ++export imagemagick_ver=7.1.1-11 \ No newline at end of file diff --git a/versions/run.hera.ver b/versions/run.hera.ver index 6ebc64d9f2..5e9e1e431e 100644 --- a/versions/run.hera.ver +++ b/versions/run.hera.ver @@ -11,3 +11,26 @@ export perl_ver=5.38.0 source "${HOMEgfs:-}/versions/spack.ver" export spack_mod_path="/scratch1/NCEPDEV/nems/role.epic/spack-stack/spack-stack-${spack_stack_ver}/envs/${spack_env}/install/modulefiles/Core" + +git diff versions/ modulefiles/ +diff --git a/modulefiles/module_base.hera.lua b/modulefiles/module_base.hera.lua +index 701cc466..99ee60de 100644 +--- a/modulefiles/module_base.hera.lua ++++ b/modulefiles/module_base.hera.lua +@@ -17,6 +17,7 @@ load(pathJoin("libpng", (os.getenv("libpng_ver") or "None"))) + load(pathJoin("cdo", (os.getenv("cdo_ver") or "None"))) + load(pathJoin("R", (os.getenv("R_ver") or "None"))) + load(pathJoin("perl", (os.getenv("perl_ver") or "None"))) ++load(pathJoin("imagemagick", (os.getenv("imagemagick_ver") or "None"))) + + load(pathJoin("hdf5", (os.getenv("hdf5_ver") or "None"))) + load(pathJoin("netcdf-c", (os.getenv("netcdf_c_ver") or "None"))) +diff --git a/versions/run.hera.ver b/versions/run.hera.ver +index 6ebc64d9..99341ab3 100644 +--- a/versions/run.hera.ver ++++ b/versions/run.hera.ver +@@ -5,6 +5,7 @@ export spack_env=gsi-addon-dev-rocky8 + export hpss_ver=hpss + export ncl_ver=6.6.2 + export R_ver=3.6.1 ++export imagemagick_ver=7.1.1-11 From c63a8b7a3aa53fd9c995c4aac98fc3c12733ad1a Mon Sep 17 00:00:00 2001 From: AntonMFernando Date: Fri, 7 Feb 2025 11:40:49 -0500 Subject: [PATCH 5/8] modified modules --- modulefiles/module_base.hera.lua | 23 +---------------------- versions/run.hera.ver | 23 +---------------------- 2 files changed, 2 insertions(+), 44 deletions(-) diff --git a/modulefiles/module_base.hera.lua b/modulefiles/module_base.hera.lua index 038bdab73c..fb177f2bd8 100644 --- a/modulefiles/module_base.hera.lua +++ b/modulefiles/module_base.hera.lua @@ -55,25 +55,4 @@ load(pathJoin("fit2obs", (os.getenv("fit2obs_ver") or "None"))) whatis("Description: GFS run environment") -git diff versions/ modulefiles/ -diff --git a/modulefiles/module_base.hera.lua b/modulefiles/module_base.hera.lua -index 701cc466..99ee60de 100644 ---- a/modulefiles/module_base.hera.lua -+++ b/modulefiles/module_base.hera.lua -@@ -17,6 +17,7 @@ load(pathJoin("libpng", (os.getenv("libpng_ver") or "None"))) - load(pathJoin("cdo", (os.getenv("cdo_ver") or "None"))) - load(pathJoin("R", (os.getenv("R_ver") or "None"))) - load(pathJoin("perl", (os.getenv("perl_ver") or "None"))) -+load(pathJoin("imagemagick", (os.getenv("imagemagick_ver") or "None"))) - - load(pathJoin("hdf5", (os.getenv("hdf5_ver") or "None"))) - load(pathJoin("netcdf-c", (os.getenv("netcdf_c_ver") or "None"))) -diff --git a/versions/run.hera.ver b/versions/run.hera.ver -index 6ebc64d9..99341ab3 100644 ---- a/versions/run.hera.ver -+++ b/versions/run.hera.ver -@@ -5,6 +5,7 @@ export spack_env=gsi-addon-dev-rocky8 - export hpss_ver=hpss - export ncl_ver=6.6.2 - export R_ver=3.6.1 -+export imagemagick_ver=7.1.1-11 \ No newline at end of file +load(pathJoin("imagemagick", (os.getenv("imagemagick_ver") or "None"))) diff --git a/versions/run.hera.ver b/versions/run.hera.ver index 5e9e1e431e..d04777eb5c 100644 --- a/versions/run.hera.ver +++ b/versions/run.hera.ver @@ -12,25 +12,4 @@ export perl_ver=5.38.0 source "${HOMEgfs:-}/versions/spack.ver" export spack_mod_path="/scratch1/NCEPDEV/nems/role.epic/spack-stack/spack-stack-${spack_stack_ver}/envs/${spack_env}/install/modulefiles/Core" -git diff versions/ modulefiles/ -diff --git a/modulefiles/module_base.hera.lua b/modulefiles/module_base.hera.lua -index 701cc466..99ee60de 100644 ---- a/modulefiles/module_base.hera.lua -+++ b/modulefiles/module_base.hera.lua -@@ -17,6 +17,7 @@ load(pathJoin("libpng", (os.getenv("libpng_ver") or "None"))) - load(pathJoin("cdo", (os.getenv("cdo_ver") or "None"))) - load(pathJoin("R", (os.getenv("R_ver") or "None"))) - load(pathJoin("perl", (os.getenv("perl_ver") or "None"))) -+load(pathJoin("imagemagick", (os.getenv("imagemagick_ver") or "None"))) - - load(pathJoin("hdf5", (os.getenv("hdf5_ver") or "None"))) - load(pathJoin("netcdf-c", (os.getenv("netcdf_c_ver") or "None"))) -diff --git a/versions/run.hera.ver b/versions/run.hera.ver -index 6ebc64d9..99341ab3 100644 ---- a/versions/run.hera.ver -+++ b/versions/run.hera.ver -@@ -5,6 +5,7 @@ export spack_env=gsi-addon-dev-rocky8 - export hpss_ver=hpss - export ncl_ver=6.6.2 - export R_ver=3.6.1 -+export imagemagick_ver=7.1.1-11 +export imagemagick_ver=7.1.1-11 From 1c992d0f9d190883021525d77a4b7105342aae45 Mon Sep 17 00:00:00 2001 From: AntonMFernando Date: Wed, 12 Feb 2025 11:41:08 -0500 Subject: [PATCH 6/8] modified workflow\rocoto\gfs_tasks.py --- workflow/rocoto/gfs_tasks.py | 108 +++++++++++++++++++++++++++-------- 1 file changed, 84 insertions(+), 24 deletions(-) diff --git a/workflow/rocoto/gfs_tasks.py b/workflow/rocoto/gfs_tasks.py index 91abe20c33..fa2fcbf303 100644 --- a/workflow/rocoto/gfs_tasks.py +++ b/workflow/rocoto/gfs_tasks.py @@ -2473,36 +2473,96 @@ def cleanup(self): deps.append(rocoto.add_dependency(dep_dict)) else: - dep_dict = {'type': 'task', 'name': f'{self.run}_arch_vrfy'} - deps.append(rocoto.add_dependency(dep_dict)) - if self.options['do_archtar']: - dep_dict = {'type': 'task', 'name': f'{self.run}_arch_tars'} + if self.app_config.mode in ['cycled']: + if self.run in ['gfs']: + dep_dict = {'type': 'task', 'name': f'{self.run}_atmanlprod'} + deps.append(rocoto.add_dependency(dep_dict)) + if self.options['do_vminmon']: + dep_dict = {'type': 'task', 'name': f'{self.run}_vminmon'} + deps.append(rocoto.add_dependency(dep_dict)) + elif self.run in ['gdas']: + dep_dict = {'type': 'task', 'name': f'{self.run}_atmanlprod'} + deps.append(rocoto.add_dependency(dep_dict)) + if self.options['do_fit2obs']: + dep_dict = {'type': 'task', 'name': f'{self.run}_fit2obs'} + deps.append(rocoto.add_dependency(dep_dict)) + if self.options['do_verfozn']: + dep_dict = {'type': 'task', 'name': f'{self.run}_verfozn'} + deps.append(rocoto.add_dependency(dep_dict)) + if self.options['do_verfrad']: + dep_dict = {'type': 'task', 'name': f'{self.run}_verfrad'} + deps.append(rocoto.add_dependency(dep_dict)) + if self.options['do_vminmon']: + dep_dict = {'type': 'task', 'name': f'{self.run}_vminmon'} + deps.append(rocoto.add_dependency(dep_dict)) + if self.run in ['gfs'] and self.options['do_tracker']: + dep_dict = {'type': 'task', 'name': f'{self.run}_tracker'} deps.append(rocoto.add_dependency(dep_dict)) - - if self.options['do_gempak']: - if self.run in ['gdas']: - dep_dict = {'type': 'task', 'name': f'{self.run}_gempakmetancdc'} + if self.run in ['gfs'] and self.options['do_genesis']: + dep_dict = {'type': 'task', 'name': f'{self.run}_genesis'} deps.append(rocoto.add_dependency(dep_dict)) - elif self.run in ['gfs']: - dep_dict = {'type': 'task', 'name': f'{self.run}_gempakmeta'} + if self.run in ['gfs'] and self.options['do_genesis_fsu']: + dep_dict = {'type': 'task', 'name': f'{self.run}_genesis_fsu'} deps.append(rocoto.add_dependency(dep_dict)) - if self.app_config.mode in ['cycled']: - dep_dict = {'type': 'task', 'name': f'{self.run}_gempakncdcupapgif'} + # Post job dependencies + dep_dict = {'type': 'metatask', 'name': f'{self.run}_atmos_prod'} + deps.append(rocoto.add_dependency(dep_dict)) + if self.options['do_wave']: + dep_dict = {'type': 'metatask', 'name': f'{self.run}_wavepostsbs'} + deps.append(rocoto.add_dependency(dep_dict)) + dep_dict = {'type': 'task', 'name': f'{self.run}_wavepostpnt'} + deps.append(rocoto.add_dependency(dep_dict)) + if self.options['do_wave_bnd']: + dep_dict = {'type': 'task', 'name': f'{self.run}_wavepostbndpnt'} deps.append(rocoto.add_dependency(dep_dict)) - if self.options['do_goes']: - dep_dict = {'type': 'task', 'name': f'{self.run}_npoess_pgrb2_0p5deg'} - deps.append(rocoto.add_dependency(dep_dict)) - dep_dict = {'type': 'metatask', 'name': f'{self.run}_gempakgrb2spec'} + if self.options['do_ocean']: + if self.run in ['gfs']: + dep_dict = {'type': 'metatask', 'name': f'{self.run}_ocean_prod'} + deps.append(rocoto.add_dependency(dep_dict)) + if self.options['do_ice']: + if self.run in ['gfs']: + dep_dict = {'type': 'metatask', 'name': f'{self.run}_ice_prod'} + deps.append(rocoto.add_dependency(dep_dict)) + # MOS job dependencies + if self.run in ['gfs'] and self.options['do_mos']: + mos_jobs = ["stn_prep", "grd_prep", "ext_stn_prep", "ext_grd_prep", + "stn_fcst", "grd_fcst", "ext_stn_fcst", "ext_grd_fcst", + "stn_prdgen", "grd_prdgen", "ext_stn_prdgen", "ext_grd_prdgen", + "wx_prdgen", "wx_ext_prdgen"] + for job in mos_jobs: + dep_dict = {'type': 'task', 'name': f'{self.run}_mos_{job}'} + deps.append(rocoto.add_dependency(dep_dict)) + + if self.options['do_gempak']: + if self.run in ['gdas']: + dep_dict = {'type': 'task', 'name': f'{self.run}_gempakmetancdc'} + deps.append(rocoto.add_dependency(dep_dict)) + elif self.run in ['gfs']: + dep_dict = {'type': 'task', 'name': f'{self.run}_gempakmeta'} + deps.append(rocoto.add_dependency(dep_dict)) + if self.app_config.mode in ['cycled']: + dep_dict = {'type': 'task', 'name': f'{self.run}_gempakncdcupapgif'} deps.append(rocoto.add_dependency(dep_dict)) + if self.options['do_goes']: + dep_dict = {'type': 'task', 'name': f'{self.run}_npoess_pgrb2_0p5deg'} + deps.append(rocoto.add_dependency(dep_dict)) + dep_dict = {'type': 'metatask', 'name': f'{self.run}_gempakgrb2spec'} + deps.append(rocoto.add_dependency(dep_dict)) - if self.options['do_metp'] and self.run in ['gfs']: - deps2 = [] - # taskvalid only handles regular tasks, so just check the first metp job exists - dep_dict = {'type': 'taskvalid', 'name': f'{self.run}_metpg2g1', 'condition': 'not'} - deps2.append(rocoto.add_dependency(dep_dict)) - dep_dict = {'type': 'metatask', 'name': f'{self.run}_metp'} - deps2.append(rocoto.add_dependency(dep_dict)) - deps.append(rocoto.create_dependency(dep_condition='or', dep=deps2)) + if self.options['do_metp'] and self.run in ['gfs']: + deps2 = [] + # taskvalid only handles regular tasks, so just check the first metp job exists + dep_dict = {'type': 'taskvalid', 'name': f'{self.run}_metpg2g1', 'condition': 'not'} + deps2.append(rocoto.add_dependency(dep_dict)) + dep_dict = {'type': 'metatask', 'name': f'{self.run}_metp'} + deps2.append(rocoto.add_dependency(dep_dict)) + deps.append(rocoto.create_dependency(dep_condition='or', dep=deps2)) + + dep_dict = {'type': 'task', 'name': f'{self.run}_arch_vrfy'} + deps.append(rocoto.add_dependency(dep_dict)) + if self.options['do_archtar']: + dep_dict = {'type': 'task', 'name': f'{self.run}_arch_tars'} + deps.append(rocoto.add_dependency(dep_dict)) dependencies = rocoto.create_dependency(dep_condition='and', dep=deps) From 85910365013292298fa8efcc59f42d5c9763fb89 Mon Sep 17 00:00:00 2001 From: AntonMFernando-NOAA <167725623+AntonMFernando-NOAA@users.noreply.github.com> Date: Thu, 13 Feb 2025 12:57:43 -0500 Subject: [PATCH 7/8] Update env/HERA.env Co-authored-by: Walter Kolczynski - NOAA --- env/HERA.env | 1 + 1 file changed, 1 insertion(+) diff --git a/env/HERA.env b/env/HERA.env index b359c5b729..68f64617e1 100755 --- a/env/HERA.env +++ b/env/HERA.env @@ -273,6 +273,7 @@ elif [[ "${step}" = "gempak" ]]; then export CFP_MP="YES" + export NTHREADS_GEMPAK=${NTHREADS1} if [[ ${NTHREADS_GEMPAK} -gt ${max_threads_per_task} ]]; then export NTHREADS_GEMPAK=${max_threads_per_task} fi From 342a7861d8cdd5659c0f73e751d6c177727f5821 Mon Sep 17 00:00:00 2001 From: AntonMFernando-NOAA <167725623+AntonMFernando-NOAA@users.noreply.github.com> Date: Thu, 13 Feb 2025 12:58:10 -0500 Subject: [PATCH 8/8] Update workflow/rocoto/gfs_tasks.py Co-authored-by: Walter Kolczynski - NOAA --- workflow/rocoto/gfs_tasks.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/workflow/rocoto/gfs_tasks.py b/workflow/rocoto/gfs_tasks.py index 6af2628b89..f540ee2167 100644 --- a/workflow/rocoto/gfs_tasks.py +++ b/workflow/rocoto/gfs_tasks.py @@ -2488,7 +2488,7 @@ def cleanup(self): if self.run in ['gfs'] and self.options['do_genesis_fsu']: dep_dict = {'type': 'task', 'name': f'{self.run}_genesis_fsu'} deps.append(rocoto.add_dependency(dep_dict)) - # Post job dependencies + # Post job dependencies dep_dict = {'type': 'metatask', 'name': f'{self.run}_atmos_prod'} deps.append(rocoto.add_dependency(dep_dict)) if self.options['do_wave']: