Open goutham-kuncham opened 1 month ago
could you rerun the test with
export OMPI_MCA_pml=ob1
export OMPI_MCA_btl=^uct
and see if the test passes?
I see you are not using oversubscribe, do you have enough slots for the spawns in your host file?
If that simple error case is not what's happening, I'll try to replicate.
could you rerun the test with
export OMPI_MCA_pml=ob1 export OMPI_MCA_btl=^uct
and see if the test passes?
@hppritcha I am getting the same error even after exporting the above mentioned env variables.
I see you are not using oversubscribe, do you have enough slots for the spawns in your host file?
If that simple error case is not what's happening, I'll try to replicate.
@abouteiller Yes, I do have enough slots for spawn. Below is my hostfile.
$ cat hosts
mi100-05 slots=64
I also tested with --map-by node:OVERSUBSCRIBE
but that didn't resolve this issue. Below is the command that I used.
mpirun -n 4 -hostfile hosts --with-ft ulfm --map-by node:OVERSUBSCRIBE ./ulmf-commspawn-bug
Reproducer code works fine if I skip using --with-ft ulfm
. But I wanted to use ulfm for other tasks. So I cannot skip the flag for my code.
$ mpirun -n 4 -hostfile hosts ./ulmf-commspawn-bug
Child
Child
Parent
Parent
Parent
Parent
I don't think we're looking at the right issue here, as the root cause is not related to spawn or anything related to dynamic processing but to a selection of the collective algorithm for the iagree operation.
@goutham-kuncham Is this patch fixing your problem ?
diff --git a/ompi/mca/coll/base/coll_base_comm_select.c b/ompi/mca/coll/base/coll_base_comm_select.c
index e67aab62c7..f4a15bc9d8 100644
--- a/ompi/mca/coll/base/coll_base_comm_select.c
+++ b/ompi/mca/coll/base/coll_base_comm_select.c
@@ -327,8 +327,8 @@ int mca_coll_base_comm_select(ompi_communicator_t * comm)
CHECK_NULL(which_func, comm, scatter_init) ||
CHECK_NULL(which_func, comm, scatterv_init) ||
#if OPAL_ENABLE_FT_MPI
- CHECK_NULL(which_func, comm, agree) ||
- CHECK_NULL(which_func, comm, iagree) ||
+ ((OMPI_COMM_IS_INTRA(comm)) && CHECK_NULL(which_func, comm, agree)) ||
+ ((OMPI_COMM_IS_INTRA(comm)) && CHECK_NULL(which_func, comm, iagree)) ||
#endif /* OPAL_ENABLE_FT_MPI */
CHECK_NULL(which_func, comm, reduce_local) ) {
/* TODO -- Once the topology flags are set before coll_select then
in ompi/coll/mca/ftagree/coll_ftagree_module.c line 130 we do not set an iera_inter function. We do not have an implementation for that function.
Background information
What version of Open MPI are you using? (e.g., v4.1.6, v5.0.1, git branch name and hash, etc.)
Describe how Open MPI was installed (e.g., from a source/distribution tarball, from a git clone, from an operating system distribution package, etc.)
If you are building/installing from a git clone, please copy-n-paste the output from
git submodule status
.Please describe the system on which you are running
Rocky Linux 8.5
x86_64 (AMD EPYC 7713 64-Core Processor)
Infiniband (But Able to reproduce error with Intra-node)
Details of the problem
I am encountering an error when attempting to spawn new ranks using the MPI_Comm_spawn API with User-Level Failure Mitigation (ULFM) enabled.
Reproducer Code:
Steps to reproduce
Expected output
Here in this code we are launching 4 ranks using launcher and trying to spawn 2 more ranks using MPI_Comm_spawn API
Current output / Error
Note: I am unable to reproduce this issue with earlier OMPI versions.
v5.0.2 tag