Deduplicating processing by reusing processed output
- Dominant language
- Python
- Stars
- 33
- Forks
- 19
- Avg merge
- 1d 22h
- Merged PRs (30d)
- 30
Description
### What problem does your feature request solve?
As we run large CSET runs, and especially those with case aggregation, etc., performance is starting to become a concern. We currently write out the data after a processing run and has been proposed to reuse this data when aggregating, as that would save significant compute/IO time.
### Describe the solution you'd like
It would be nice to reuse this processing, however we also want to minimise the interdependency of the cylc tasks to maintain parallelism.
### Describe alternatives you've considered
We could move to running all recipes inside the same process, then using dask or similar to deduplicate the tasks required. This would cost us multi-machine parallelism, but would allow us to make better use of many core machines, and would significantly reduce overall compute time.
Contributor guide
No contributing guide indexed for this repository
Research direction
Start by tracing how processing outputs are written and how Cylc aggregation tasks consume them. Compare reusing those outputs with the alternative of running recipes in one process using Dask or similar. Done should mean duplicated processing and I/O are reduced while multi-machine parallelism is preserved as far as practical.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- data-engineering, distributed-systems, performance
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100