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

A general scheduling interface #27

Open
sertel opened this issue Oct 15, 2018 · 0 comments
Open

A general scheduling interface #27

sertel opened this issue Oct 15, 2018 · 0 comments

Comments

@sertel
Copy link
Contributor

sertel commented Oct 15, 2018

The current implementation places each task/node in the dataflow graph onto its own thread and let's it run to completion. As such scheduling is performed by the OS scheduler (assuming that Rust's threads map directly to OS threads.)

To schedule the dataflow graph maybe more efficiently, we would like to be able to build our own scheduler (such that we can provide specific scheduling algorithms easily). The challenge: without touching the code generation!

The idea is to replace the type of the channels with our own implementation. With that in place, a send call puts work into the work queue while a recv call waits until work is available. A good start is to provide a simple implementation of the concept of tasks and IVars which leads directly to an implementation of a work stealing scheduler.
See the work on monad par in Haskell for details.

This would require us to change only a single line in the code generation (, the one that makes the type of channels a configuration parameter of the code generation).

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

1 participant