-
Notifications
You must be signed in to change notification settings - Fork 26
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
Add support for RMA over UCP #166
Add support for RMA over UCP #166
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
In a first pass, things look like they're going in the right direction, I've left a couple of comments. It would be great if you could also add some tests.
cpp/CMakeLists.txt
Outdated
@@ -77,6 +77,7 @@ rapids_cmake_support_conda_env(conda_env MODIFY_PREFIX_PATH) | |||
# * compiler options ------------------------------------------------------------------------------ | |||
rapids_find_package( | |||
ucx REQUIRED | |||
GLOBAL_TARGETS ucx::ucp ucx::ucs ucx::uct |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think such changes shouldn't be necessary, you mentioned offline they were required to build from inside another project. We'll have our CMake experts look at what would need to change here when the PR is ready for review.
cpp/include/ucxx/constructors.h
Outdated
bool send, | ||
void* buffer, | ||
size_t length, | ||
uint64_t remote_addr, | ||
ucp_rkey_h rkey, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
As discussed offline, the changes were made on top of an older branch before #121 was merged (on December 12), which reorganizes how data is passed to constructors and thus prevents adding several different arguments to them as is done here, we now instead have “data classes” that include all operation-specific arguments and makes the API cleaner and less error-prone (i.e., with the user accidentally swapping arguments), as you can see in the newest constructors. We will want to have this updated to the new style.
ucp_get_nbx
and ucp_put_nbx
c027263
to
c592ed5
Compare
Add `ucxx::MemoryHandle` and `ucxx::RemoteKey` C++ classes, wrapping UCP memory handles (`ucp_mem_h`) and remote keys (`ucp_rkey_h`), respectively. These new classes are required to provide basic support for RMA (Remote Memory Access) operations being implemented in #166 . Authors: - Peter Andreas Entschev (https://github.com/pentschev) Approvers: - Lawrence Mitchell (https://github.com/wence-) - Bradley Dice (https://github.com/bdice) - Robert Maynard (https://github.com/robertmaynard) URL: #190
Thanks @mdemoret-nv for working on this! |
/merge |
This PR adds support for RMA over UCP protocols, adding interfaces for the following functions:
ucp_get_nbx
,ucp_put_nbx
,ucp_ep_flush_nbx
anducp_worker_flush_nbx
. The implementation follows the same pattern use for allucxx::Request
operations.Blocked waiting for #190 .