-
Notifications
You must be signed in to change notification settings - Fork 53
Asynchronous setup #514
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
Asynchronous setup #514
Conversation
/azp run |
Azure Pipelines successfully started running 3 pipeline(s). |
Try to understand this PR correctly. It only addresses the connection phase and does not resolve the issue of supporting on-side registered memory. In the send/recv case, both ranks still need to send their registered memory information to the peer, even though the receiving side does not require the peer's registered memory right? |
This is not what this PR addresses. What you are talking about is the channel's requirement. This PR is only about simplifying the initialization phase. |
* In cases when the same `tag` is used for receiving data from the same remote rank, #514 changed the behavior of `Communicator::connect` and `Communicator::recvMemory` to receive data in the order of `std::shared_future::get()` is called, instead of the original behvaior that receive data in the order of the method calls. Since the original behavior is more intuitive, we get that back. Now when `get()` is called on a future, the async function will first call `wait()` on the latest previously returned future. In a recursive manner, this will call `wait()` on all previous futures that are not yet ready. * Removed all deprecated API calls and replaced into the new ones.
Cherry-picked a part of features from #167: now
Communicator::setup()
is unneeded.Communicator::sendMemory()
conducts the task inline, andCommunicator::recvMemory()
andCommunicator::connect()
conducts the task asynchronously without explicit setup.