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

Implement new WorkGraph push/pop #1108

Closed
ibaned opened this issue Sep 15, 2017 · 2 comments
Closed

Implement new WorkGraph push/pop #1108

ibaned opened this issue Sep 15, 2017 · 2 comments
Assignees
Labels
Enhancement Improve existing capability; will potentially require voting
Milestone

Comments

@ibaned
Copy link
Contributor

ibaned commented Sep 15, 2017

debugging #988 revealed less-than-ideal aspects of the current WorkGraph push/pop implementation. @hcedwar suggested a new design, this issue is to implement that new design and compare to the current one in terms of performance and robustness.

@ibaned ibaned added the Enhancement Improve existing capability; will potentially require voting label Sep 15, 2017
@ibaned ibaned added this to the 2017 October milestone Sep 15, 2017
@ibaned ibaned self-assigned this Sep 15, 2017
@hcedwar
Copy link
Contributor

hcedwar commented Sep 15, 2017

New algorithm has only a single state for push/pop of the ready queue and uses the ready queue begin/end indices as performance hints. This entirely avoids the problems with updating a split-state (#988). Also replaces a compare-and-swap loop with a simple atomic increment.

@hcedwar
Copy link
Contributor

hcedwar commented Sep 15, 2017

Pop function should not spin waiting for work. Instead return either (a) a valid work index, (b) value indicating that all work is done, or (c) value indicating that no work index is currently available. The back-end specific scheduler should be handling condition (c), not the pop function.

@hcedwar hcedwar self-assigned this Sep 19, 2017
@hcedwar hcedwar added this to In Progress in On-node Task DAG Sep 20, 2017
@hcedwar hcedwar modified the milestones: 2017 October, 2017 September Sep 20, 2017
@hcedwar hcedwar moved this from In Progress to In Develop in On-node Task DAG Sep 21, 2017
@crtrott crtrott closed this as completed Oct 28, 2017
@hcedwar hcedwar moved this from In Develop to Done in On-node Task DAG Feb 23, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Enhancement Improve existing capability; will potentially require voting
Projects
No open projects
Development

No branches or pull requests

3 participants