-
Notifications
You must be signed in to change notification settings - Fork 877
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
UCX: Segfault in Fetch_and_op after Get #6552
Comments
@yosefe @jladd-mlnx FYI. |
I was able to repro this bug with ompi v4.0.x and the fix is: #6594. OMPI master does not reproduce this. |
@jladd-mlnx Any progress? |
I just tested |
@janjust can you pls confirm if OCS/UCX component checks atomic operation size is 32 or 64 before posting it to UCX? edit: the comment is irrelevant for this issue. |
@yosefe , hmm, you're right, it does not. |
@janjust So is the plan to add fallback to AM logic for 32 and 64 bit atomics? |
@jladd-mlnx 32/64bit atomic ops are handled. It's the 8bit and 16bit that are not, and yes for those the plan is to use AM logic. |
Target date? |
@jladd-mlnx I don't have one yet |
@artpol84 @janjust sorry, my comment #6552 (comment) is misleading, it was supposed to be for #6777) The issue here is probably lack of progress calls with OSC/UCX which causes a deadlock when using SW atomics. for example. start_atomicity() looks suspicious because it does not call opal_progress() while waiting for completion. |
But why at all SW atomics are involved on IB system? |
But it does call ucp progress which should be enough for AMO, isnt' it? |
the problem is that it progresses only one worker, is there is some other worker on that process (e.g pml/ucx or some other osc/ucx worker) it will not progress |
we have SW atomics if HW does not support it directly, for example on older hardware |
Ok, this is important, because @janjust was trying to reproduce and couldn’t. |
We will check the progress guess. |
@artpol84 I can confirm that the issue persists with
( Output from
Also:
|
@devreal, thanks! |
@devreal can I please ask what version of libibverbs and OFED are you using? it could be detected by running |
Sure:
There is no |
@devreal Is this issue always reproduced? I can reproduce a similar trace (mine ends up in HW atomics), but the issue is not always reproduced.
|
@yosefe @artpol84 Just a note on progress, though it seems that in v4.0.x opal progress isn't called, it's called in master, by extension also in the failing commit https://github.com/open-mpi/ompi/blob/master/opal/mca/common/ucx/common_ucx.h#L66
|
@janjust Yes, I can reproduce this consistently every time I run the reproducer. Is there a way to figure out why software atomics are being used? |
@devreal I would assume it's due to inbox/OFED version, not sure of a surefire way to determine the reason why SW atomics are used. Your HW supports HW atomics. |
According to @yosefe, one of the cause could be an old OFED. |
@artpol84 The @janjust Unfortunately, the error still occurs. I tried running under DDT again but the segfault occurs in a macro so I'm at a loss there (I might try inlining that specific macro to get more information). I also tried running with
|
@yosefe is there a way to force SW tm so we can try to reproduce locally? |
@devreal, |
I just realized that I used the wrong version in my last test, will report back when I used the actual branch with #6810. |
Great! That was my expectation! |
On the use of sw atomics: I'm fairly sure the good ol' ibverbs btl supported hardware atomics on this system so in that regard switching to UCX causes a performance regression on that machine (for our use case at least). I haven't tested another IB-based systems I have access to, will do that today. What are the minimum OFED requirements for hw atomics to be available? |
@devreal you seem to be using rdma-core 17 which does not support HW atomics with UCX (the problem it supports only 64-bit atomics where UCX supports both 32 and 64-bit). with MLNX_OFED 4.6 (latest release) they would be supported. |
@yosefe Just so I understand it correctly: unless the site manages to install the latest MLNX_OFED, RMA atomics will be done in software if UCX is used (that is in 4.x and the upcoming 5.x)? That seems like a significant step back for Open MPI's RMA implementation, which so far has been the only fully usable MPI RMA implementation with decent hardware support for me. IIRC, @hjelmn mentioned the issue with 32bit integers somewhere and that the ibverbs btl uses CAS in that case (which makes it slower than 64bit, yes). I'd argue that this is an acceptable trade-off if 64bit operations can be done in hardware instead... |
@devreal So this issues is fixed with my branch, can it be closed? |
Fixed with #6810 in the |
I am observing a Segfault in UCX when issuing a specific sequence of operations on an exclusively locked window. I was able to boil it down to an example that calls
MPI_Rget
+MPI_Wait
followed byMPI_Fetch_and_op
. The segfault in the fetch-and-op seems to depend on the previous operation, i.e., a put or other fetch-and-op does not trigger it.The example code:
Buitlt with
DDT reports:
Not sure whether this is related to #6549 or #6546.
I used the Open MPI 4.0.1 release tarball and the Open UCX tarball. Open MPI was configured using:
The segfault is consistently reproducible on our IB cluster.
Please let me know if I can provide any other information.
The text was updated successfully, but these errors were encountered: