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

spawn on demand / event driven graph #3304

Open
oliver-sanders opened this issue Aug 21, 2019 · 6 comments
Open

spawn on demand / event driven graph #3304

oliver-sanders opened this issue Aug 21, 2019 · 6 comments
Milestone

Comments

@oliver-sanders
Copy link
Member

oliver-sanders commented Aug 21, 2019

Replace the iterative task pool with an event-driven graph solution.

Just realised that despite all the discussion we don't actually have an issue open for this
(let me know if I've simply missed it).

For a longer (and much more rambling) read see https://github.com/cylc/cylc-flow/wiki/Possible-Cylc-Futures#event-driven-scheduler.

Quick overview

  • Translate an iterative problem into a lookup problem.
    • O(N) => O(1)
    • Messages come into the system,
    • a lookup associates them with nodes in the graph,
    • these events propagate through the graph,
    • so there is no need to loop over the task pool to determine consequences.
  • Implement cycling "drivers" to provide a simple abstract interface for things a graph could cycle over.

Benefits

Further desired benefits

@oliver-sanders oliver-sanders added this to the cylc-9 milestone Aug 21, 2019
@hjoliver
Copy link
Member

Another benefit:

  • should be much easier for users to understand (currently the task pool model has to be understood to explain some aspects of workflow evolution and response to commands).

@matthewrmshin
Copy link
Contributor

(Should we mark some of the issues mentioned above as superseded and close them down?)

@matthewrmshin
Copy link
Contributor

(Can probably supersede #2329 as well.)

@oliver-sanders
Copy link
Member Author

(Should we mark some of the issues mentioned above as superseded and close them down?)

I guess, maybe some of the ones in the first section?

(Can probably supersede #2329 as well.)

Good point, added.

@matthewrmshin
Copy link
Contributor

#993 was the original version of this issue!

@hjoliver
Copy link
Member

hjoliver commented Jul 29, 2020

update post merge of task-proxy based spawn on demand

With merge of #3515 Cylc now has "spawn on demand" but by a different method than suggested here, which required less extensive refactoring: task proxies simply record (during graph parsing) who depends on their outputs, and spawn them as outputs are completed. So there is still no explicit use of the graph at run time.

We should probably close this issue and replace it with several others:

  • consider converting to the method suggest here on the Cylc 9 timescale?
  • other enhancements suggested here - e.g. see "further desired benefits" above.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants