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

Test tag user callback with discarded return #267

Conversation

pentschev
Copy link
Member

@pentschev pentschev commented Aug 14, 2024

We were recently inquired by a user whether relying only on the ucs_status_t passed to the user callback and discarding the ucxx::RequestTag return from ucxx::Endpoint::tagSend and ucxx::Endpoint::tagRecv is valid. This turns out to be a valid usage, although I'm unsure whether encouraging this is a good idea, since requests such as ucxx::Endpoint::amRecv require that the user retrieve the resulting buffer from the returned ucxx::RequestAm, and if this is discarded the buffer is lost. This PR adds a test for the aforementioned use case but makes no changes to documentation to prevent encouraging this pattern until we can decide whether we should support it or not.

For requests such as ucxx::Endpoint::amRecv, it might be worth studying whether we could pass the resulting buffer and any other attributes associated with it to the callback, in that case we may be able to provide a safe pattern to always use the callback if the user doesn't want to keep a reference to the returned ucxx::Request object.

We were recently inquired by a user whether relying only on the
`ucs_status_t` passed to the user callback and discarding the
`ucxx::RequestTag` return from `ucxx::Endpoint::tagSend` and
`ucxx::Endpoint::tagRecv` is valid.  This turns out to be a valid usage,
althought I'm unsure whether encouraging this is a good idea, since
requests such as `ucxx::Endpoint::amRecv` require that the user retrieve
the resulting buffer from the returned `ucxx::RequestAm`, and if this is
discarded the buffer is lost. This PR adds a test for the aforementioned
use case but makes no changes to documentation to prevent encouraging
this pattern until we can decide whether we should support it or not.

For requests such as `ucxx::Endpoint::amRecv`, it might be worth
studying whether we could pass the resulting buffer and any other
attributes associated with it to the callback, in that case we may be
able to provide a safe pattern to always use the callback if the user
doesn't want to keep a referencce to the returned `ucxx::Request`
object.
@pentschev
Copy link
Member Author

Thanks @wence- for approving, since this is only adding a test, I'll go ahead and merge it even though we're in code freeze already.

@pentschev
Copy link
Member Author

/merge

@pentschev
Copy link
Member Author

Oh, actually we need admin merge. Since this isn't critical for 24.10 I'll then retarget and merge it once tests pass.

@pentschev pentschev changed the base branch from branch-0.40 to branch-0.41 September 30, 2024 11:36
@rapids-bot rapids-bot bot merged commit 1de4574 into rapidsai:branch-0.41 Sep 30, 2024
68 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants