-
Notifications
You must be signed in to change notification settings - Fork 8
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
remove superfluous ABT_thread_yield() call #293
Conversation
Careful here; this |
Ah, shoot. I keep forgetting about the desire to support the use case where execution streams are mapped to multiple pools. I'll take a closer look. If that's the case (that we need to do a blind yield, even if there is nothing to do in the current pool, in case there is another pool to be serviced) then its the other yield call at https://github.com/mochi-hpc/mochi-margo/blob/main/src/margo-core.c#L1984 that needs to be removed. It doesn't make sense to do a yield and then a few lines further down in the function yield again, so one of them needs to go. It sounds like we need to cut the one that has guards around it checking the current pool and go with the one that yields no matter what. I haven't checked the Argobots code, but for some reason these yields have a measurable cost in low latency operations even if there is nothing to yield to. I must be the cost of pushing the work unit back into the pool (possibly checking other pools depending on the ES configuration) and then popping it back out. |
967f205
to
4bee21b
Compare
Trying another strategy with this commit (and also more carefully commenting the reasoning for the logic). If this passes CI then I think it will work. |
Codecov ReportAll modified and coverable lines are covered by tests ✅
Additional details and impacted files@@ Coverage Diff @@
## main #293 +/- ##
==========================================
+ Coverage 57.80% 57.86% +0.05%
==========================================
Files 70 70
Lines 10168 10165 -3
Branches 1335 1334 -1
==========================================
+ Hits 5878 5882 +4
+ Misses 3456 3451 -5
+ Partials 834 832 -2 ☔ View full report in Codecov by Sentry. |
- eliminates duplicate yield call in favor of just calling the one that has the fewest condition restrictions so that we cover more configuration cases - also redo comments to better describe the reasoning behind the logic
4bee21b
to
9854e4e
Compare
Yeah this variation seems to work fine. Squashing and merging. Thanks for pointing out the problem with the original attempt @mdorier |
improves ops/s by 2-3% in sequntial benchmarks