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

Non-blocking atomic fetch is not non-blocking #1066

Open
wrrobin opened this issue Sep 30, 2022 · 4 comments
Open

Non-blocking atomic fetch is not non-blocking #1066

wrrobin opened this issue Sep 30, 2022 · 4 comments
Assignees
Labels

Comments

@wrrobin
Copy link
Collaborator

wrrobin commented Sep 30, 2022

Non-blocking atomic fetch uses fi_fetch_atomic with DELIVERY_COMPLETE flag. This ensures that the value is fetched before returning. Should it use the FI_INJECT without any completion semantics?

Also, for the same reason, does the blocking atomic fetch require a call to get_wait?

@markbrown314
Copy link
Collaborator

I am assuming this is the same issue: #1061

@markbrown314 markbrown314 marked this as a duplicate of #1061 Feb 22, 2025
@avincigu
Copy link
Collaborator

@wrrobin I am looking at shmem_transport_fetch_atomic_nbi function in transport_ofi.h and I see that in the fi_fetch_atomicmsg call the argument passed is FI_INJECT. Has these bug already been fixed then or am I missing something?

@wrrobin
Copy link
Collaborator Author

wrrobin commented Feb 28, 2025

@avincigu - IIRC, this was fixed only for CXI provider. For other providers, the path may not have been optimized.

@avincigu
Copy link
Collaborator

avincigu commented Feb 28, 2025

Thanks @wrrobin

So OFI uses that line of code I described so I think that one checks out. UCX is calling which I also assume in non-blocking. Portals has this comment "transport_fetch_atomic already buffers the source argument" and then calls a regular fetch atomic so I am assuming the comment is accurate. The onnly place I don't know if we are calling something that is blocking is in shmem_shr_transport_fetch_atomic, I don't see any non-blocking stuff there and in the code you reference here: #1062

The rest seems fine, I think.

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

No branches or pull requests

3 participants