-
Notifications
You must be signed in to change notification settings - Fork 266
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
[coro_rdma][coro_ucx][feat] add rdmapp ucxpp libraries, examples and tests #886
Open
howardlau1999
wants to merge
1
commit into
alibaba:support_rdma
Choose a base branch
from
howardlau1999:rdma_dev
base: support_rdma
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Conversation
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
b50b98b
to
97f49a4
Compare
97f49a4
to
548bb22
Compare
7e7e4d4
to
ef8e7c9
Compare
不使用ucx的原因能阐述一下吗?谢谢 |
UCX 我也打算支持,因为 RDMA 的接口和 Socket 接口有很大不同,目前是打算先调通 RDMA 相关功能的流程,后面可以对 RDMA 相关的抽象增加 UCX 支持 |
howardlau1999
commented
Mar 13, 2025
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.
不使用ucx的原因能阐述一下吗?谢谢
已添加 UCX 相关实现,不过似乎无法在 softroce 环境下测试,在物理真实 roce 硬件下测试可以跑通
demo pseudocode code to show rpc with rdma: struct rdma_service_t {
pingpong_context ctx;
pingpong_dest get_pingpong_test(pingpong_dest from_peer) {
ELOG_INFO << "remote gid: " << from_peer.gid
<< ", remote qp_num: " << from_peer.qpn;
pingpong_dest dest{};
dest.lid = ctx.lid;
dest.qpn = ctx.qp->qp_num;
dest.psn = g_psn++;
memcpy(dest.gid, ctx.str_gid, 33);
modify_qp_to_rts(ctx.qp, from_peer);
return dest;
}
};
struct pingpong_dest {
int lid;
int qpn;
int psn;
char gid[33];
};
int main() {
coro_rpc_server server(/*thread=*/std::thread::hardware_concurrency(),
/*port=*/8801);
auto ctx = create_rdma_ctx();
rdma_service_t rdma_srv{ctx};
server.register_handler<&rdma_service_t::get_pingpong_test>(&rdma_srv);
server.start();
} //client
Lazy<void> show_rpc_call() {
auto ctx = create_rdma_ctx();
coro_rpc_client client;
[[maybe_unused]] auto ec = co_await client.connect("127.0.0.1", "8801");
assert(!ec);
pingpong_dest dest{};
dest.lid = ctx.lid;
dest.qpn = ctx.qp->qp_num;
dest.psn = ++g_psn;
memcpy(dest.gid, ctx.str_gid, 33);
auto ret1 = co_await client.call<&rdma_service_t::get_pingpong_test>(dest);
auto peer = ret1.value();
modify_qp_to_rts(ctx.qp, peer);
} |
a552c5c
to
a4c82ce
Compare
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Why
Preliminary support of RDMA transport
What is changing
rdmapp
for coroutine adaptation for ibverbsasio
Example
See
src/coro_rdma/examples/example.cpp