-
Notifications
You must be signed in to change notification settings - Fork 945
OSHMEM/MCA/SPML/UCX: v1.5 implement put_signal and put_signal_nbi #13568
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
Conversation
oshmem/mca/spml/ucx/spml_ucx.c
Outdated
| return res; | ||
| } | ||
|
|
||
| return mca_spml_ucx_signal_common(ctx, sig_addr, signal, sig_op, dst); |
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.
Don't we need a fence here?
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.
Not according to the v1.5 spec
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.
Not according to the v1.5 spec
can you pls elaborate why not needed?
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.
Also, should we use non-blocking signal here?
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.
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.
My bad, we do need a fence here
oshmem/mca/spml/ucx/spml_ucx.c
Outdated
| return OSHMEM_ERROR; | ||
| } | ||
|
|
||
| return res; |
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.
maybe move the return to lines 1662/1658 directly?
oshmem/mca/spml/ucx/spml_ucx.c
Outdated
| return res; | ||
| } | ||
|
|
||
| return mca_spml_ucx_signal_common(ctx, sig_addr, signal, sig_op, dst); |
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.
need fence before this, to ensure ordering
oshmem/mca/spml/ucx/spml_ucx.c
Outdated
| return res; | ||
| } | ||
|
|
||
| return mca_spml_ucx_signal_common(ctx, sig_addr, signal, sig_op, dst); |
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.
Not according to the v1.5 spec
can you pls elaborate why not needed?
oshmem/mca/spml/ucx/spml_ucx.c
Outdated
| return res; | ||
| } | ||
|
|
||
| return mca_spml_ucx_signal_common(ctx, sig_addr, signal, sig_op, dst); |
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.
Also, should we use non-blocking signal here?
|
@yosefe Can re-review please? |
oshmem/mca/spml/ucx/spml_ucx.c
Outdated
| } | ||
|
|
||
| /* This routine is not implemented */ | ||
| static inline int mca_spml_ucx_signal_common(shmem_ctx_t ctx, |
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.
split to mca_spml_ucx_signal_common and mca_spml_ucx_signal_common_nb
006d7f1 to
963553a
Compare
oshmem/mca/spml/ucx/spml_ucx.c
Outdated
| uint64_t *sig_addr, | ||
| uint64_t signal, | ||
| int sig_op, | ||
| int dst) |
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.
pls align
cba77c9 to
26fa31a
Compare
yosefe
left a comment
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.
it seems my previous comment about using non-blocking atomic was wrong. "add" and "swap" a
| int pe) | ||
| { | ||
| #if HAVE_DECL_UCP_ATOMIC_OP_NBX | ||
| return mca_atomic_ucx_op_nb(ctx, target, value, size, pe, UCP_ATOMIC_OP_SWAP); |
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.
how mca_atomic_ucx_op_nb is different from mca_atomic_ucx_op?
can't we just reuse mca_atomic_ucx_op?
| return res; | ||
| } | ||
|
|
||
| return mca_spml_ucx_signal(ctx, sig_addr, signal, sig_op, dst); |
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.
we need fence also here in the blocking version because it controls the remote ordering
Signed-off-by: Roie Danino <[email protected]> OSHMEM/MCA/ATOMIC: added atomic_set mca function, and made non-retrieving atomic operations non-blocking Signed-off-by: Roie Danino <[email protected]>
6a1e665 to
1afefcf
Compare

What?
Implements
mca_spml_ucx_put_signalandmca_spml_ucx_put_signal_nbfor OpenSHMEM signaling operations with UCX backend.Why
The put_signal operations are part of the OpenSHMEM 1.5 specification and were previously unimplemented (returning OSHMEM_ERR_NOT_IMPLEMENTED).