Repository navigation
Conversation
get_real_id_slow() looked up the sign-extended 32-bit value whenever bit 31 was set, a workaround for MPICH's negative datatype handles. Open MPI's predefined handles are addresses in libmpi.so, and above 2 GiB bit 31 is set (MPI_COMM_WORLD at 0x837c4bc0 on Hercules). The lookup then failed and the rank stopped in get_virt_id_entry() at the first MPI_Comm_rank. Try the exact value first, then the sign-extended one.
…eted The drain completes pending sends and non-blocking collectives by mapping their virtual request to MPI_REQUEST_NULL, with no status. MPI_Test_internal(), behind every Wait and Test wrapper, then passed that upper-half MPI_REQUEST_NULL to the lower half's MPI_Test. In MPICH it is one integer in both halves. In Open MPI it is &ompi_request_null, a different address in each half, so the lower half took it for a live request that never completes: after a checkpoint, the application spun forever in MPI_Wait (p2p_nonblocking, p2p_large, nonblocking_collectives). Pass the lower half's MPI_REQUEST_NULL instead; MPI_Request_get_status had the same problem.
Since 9b1c14c the upper half loads libmpistub.so in place of every library named libmpi, Open MPI's libmpi.so.40 included. The stub has MPICH's ABI and defines none of Open MPI's ompi_mpi_* objects, so libmana.so, built with Open MPI's mpi.h, fails to load: "undefined symbol: ompi_mpi_real". Under Open MPI, skip the swap, as before 9b1c14c.
|
Warning Review limit reachedYou've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. Next included review available in 59 minutes. View limit details
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
Can you check if PR#529 solves you problem? I think it's covered in PR#529. |
|
Sorry, I hadn't seen #529 when I opened this. Yes, #529 covers all three: the lookup key by handle size, the lower half's
This PR had 18 of 23 with Open MPI 4.1.4. The Intel failure is The merge has two conflicts with #522, both small. In #529 also fixes #531: on Open MPI, the first user keyval is now 7. #532 is still open with #529: I'm closing this in favor of #529. |
Under Open MPI 4.1.4, programs did not launch, and after a checkpoint they hung.
MPI_COMM_WORLD. Try the exact value first (no change for MPICH).MPI_REQUEST_NULLdiffers between the halves. A send the drain completed reached the lower half'sMPI_Testas the upper half's null, and never completed. Pass the lower half's null.libmpistub.solacks Open MPI'sompi_mpi_*objects, solibmana.sofailed to load. Keep the real library under Open MPI. @xuyao00, if you'd rather the stub define them, I'll drop this commit.Hercules, 2 nodes (with #527): 18/23 in both modes. The rest are the Fortran tests (the wrappers assume MPICH's handles),
attributes(#531), and two tests not built for Open MPI. Intel MPI: unchanged, 22/23 (#524).🤖 Generated with Claude Code