-
Notifications
You must be signed in to change notification settings - Fork 21
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
[Load Balancing - Backoff] Waking up children with loop tasks #76
Labels
bug 🪲
Something isn't working
Comments
Another potential issue is that when a child is woken up with a task, it tries to wakeup its own children and then runs the task immediately. In the case of for loop the next scheduling point is the implicit Lines 23 to 47 in a1d862b
Should we add a an extra loadBalance on entry for just stolen tasks? |
mratsim
added a commit
that referenced
this issue
Dec 28, 2019
mratsim
added a commit
that referenced
this issue
Dec 28, 2019
mratsim
added a commit
that referenced
this issue
Dec 29, 2019
mratsim
added a commit
that referenced
this issue
Dec 29, 2019
mratsim
added a commit
that referenced
this issue
Dec 29, 2019
* Address #76, send enough loop tasks to woken up children * Fix idle subtree worker count * Fix sending too much tasks to subtree * in the worksharing case we shouldn't add one to the number of thieves estimation, it's already done in the proxy proc * loadBalance on loop tasks entry to address #76 (comment) * Fix sending the next iteration to children
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
From #68 (comment)
Looking into the code we have in all state machines
shareWork
followed byhandleThieves
weave/weave/victims.nim
Lines 249 to 305 in a1d862b
shareWork
will wakeup a thread if distributeWork is successful.distributeWork
will first look for plain tasks and then for the current splittable task. When evaluating the amount of work to send since the child is sleeping, it will take into account the whole subtree and so only sends a low amount of tasks to the child if plenty of steals are pending.Normally, the remainder should be sent in handleThieves but in handleThieves the child is awake so all that worker subtree is not checked again and the tasks are never sent leading to load imbalance.
The text was updated successfully, but these errors were encountered: