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

Enable parallel metp jobs and fix race condition with the gfscleanup job #2907

Merged
2 changes: 1 addition & 1 deletion parm/archive/enkf.yaml.j2
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ enkf:
{% else %}
{% set steps = ["eobs", "eupd"] %}
{% for mem in range(1, nmem_ens + 1) %}
{% do steps.append("eomg_mem{{ '%03d' % mem }}") %}
{% do steps.append("eomg_mem" ~ '%03d' % mem) %}
{% endfor %}
{% endif %}
{% endif %}
Expand Down
4 changes: 2 additions & 2 deletions parm/config/gfs/config.resources
Original file line number Diff line number Diff line change
Expand Up @@ -987,8 +987,8 @@ case ${step} in
threads_per_task=1
walltime_gdas="03:00:00"
walltime_gfs="06:00:00"
ntasks=1
tasks_per_node=1
ntasks=4
tasks_per_node=4
export memory="80G"
;;

Expand Down
2 changes: 1 addition & 1 deletion sorc/verif-global.fd
8 changes: 6 additions & 2 deletions workflow/rocoto/gfs_tasks.py
Original file line number Diff line number Diff line change
Expand Up @@ -855,8 +855,8 @@ def fcst(self):
try:
task = fcst_map[self.app_config.mode]()
except KeyError:
raise NotImplementedError(f'{self.app_config.mode} is not a valid type.\n' +
'Currently supported forecast types are:\n' +
raise NotImplementedError(f'{self.app_config.mode} is not a valid type.\n'
f'Currently supported forecast types are:\n'
f'{" | ".join(fcst_map.keys())}')

return task
Expand Down Expand Up @@ -2330,6 +2330,10 @@ def cleanup(self):
dep_dict = {'type': 'task', 'name': f'{self.run}npoess_pgrb2_0p5deg'}
deps.append(rocoto.add_dependency(dep_dict))

if self.app_config.do_metp and self.run in ['gfs']:
dep_dict = {'type': 'metatask', 'name': f'{self.run}metp'}
deps.append(rocoto.add_dependency(dep_dict))

dependencies = rocoto.create_dependency(dep_condition='and', dep=deps)

resources = self.get_resource('cleanup')
Expand Down
Loading