-
Notifications
You must be signed in to change notification settings - Fork 7
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Support multiple different progress modes
In order to reliably and timely make progress within UCX the user is responsible for occasionally call `progess` on the UCX worker. Originally I used a Julia `Timer` object to gurantee progress especially in the context of asymmetric communication, e.g. active messages. The `Timer` object would trigger ever millisecond resulting in a much higher latency, following that I implemented the polling interface using the WAKEUP feature, but that turns of support for shared memory openucx/ucx#5322 and turned out to have relativly high overhead in a pure latency test on the order of ~20microseconds. I experimented with two other modes (1) the busy waiting mode, but that is using unfair scheduling and might livelock and libuv `Idle`. Idle callbacks are a bit odd, but seem to work well everytime Julia ticks the event loop libuv will call the progress function. The performanc of busy waiting seems to degrade with multiple threads, while the idler performs well, but I have not yet performed a whole system comparision.
- Loading branch information
Showing
4 changed files
with
247 additions
and
81 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.