Skip to content
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

tag_recv_nb takes UCXWorker or UCXEndpoint #619

Open
jakirkham opened this issue Sep 28, 2020 · 6 comments
Open

tag_recv_nb takes UCXWorker or UCXEndpoint #619

jakirkham opened this issue Sep 28, 2020 · 6 comments

Comments

@jakirkham
Copy link
Member

Currently tag_recv_nb takes a UCXWorker or a UCXEndpoint. Though it looks like we always supply a UCXEndpoint when calling tag_recv_nb. Given this, do we actually have a need to supply both? Or should we simplify the API to only take a UCXEndpoint? Mentioning this in part as other send/recv calls do the latter as well.

@jakirkham
Copy link
Member Author

Related it appears _inflight_msgs is defined in UCXWorker and UCXEndpoint. Do both classes need to track this? Or would it be possible to track this in just one of them?

@jakirkham
Copy link
Member Author

As UCXEndpoint has an associated UCXWorker, we might be able to just take a UCXEndpoint in tag_recv_nb and retrieve the associated UCXWorker from it where needed.

@madsbk
Copy link
Member

madsbk commented Sep 29, 2020

This is on purpose, tag_recv_nb() use to take a UCXEndpoint but as part of the effort of separating the low-level UCX API from the higher level Python/Async API, tag_recv_nb() now takes a UCXWorker, which match the UCX API.

@jakirkham
Copy link
Member Author

Yeah that makes sense. Was looking at the UCX API and noticed that as well. Just wondering if there's an opportunity here to deduplicate things a bit. WDYT?

@jakirkham
Copy link
Member Author

Based on today's meeting, it sounds like @MattBBaker's works will help us solve this by using addresses. Though please correct me if I misunderstood anything, Matt 🙂

@MattBBaker
Copy link
Contributor

Just now noticed this, but I don't think so. The use case for UCXWorker address is that it is created, then sent over the network where the otherside gets it as a buffer that is a magic byte string. That byte string is fed into the ucp_create_ep() with a flag that says, "Your input data is to be interpreted as a ucp_address_t" and you get an EP from that.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Status: No status
Development

No branches or pull requests

3 participants