Thanks Ben !

I opened https://github.com/open-mpi/ompi/issues/6016 in order to track this issue, and wrote a simpler example that evidences this issue.

We should follow-up there from now.


fwiw, several bug fixes have not been backported into the v3 branches.

Note that using the ddt datatype instead of MPI_DATATYPE_NULL could be good enough as a workaround for the time being

(and unlike forcing the coll/basic component, performances will be unaffected)



Cheers,


Gilles


On 11/2/2018 2:34 PM, Ben Menadue wrote:
Hi,

I haven’t heard back from the user yet, but I just put this example together which works on 1, 2, and 3 ranks but fails for 4. Unfortunately it needs a fair amount of memory, about 14.3GB per process, so I was running it with -map-by ppr:1:node.

It doesn’t fail with the segfault as the user’s code does, but it does SIGABRT:

16:12bjm900@r4320 MPI_TESTS> mpirun -mca pml ob1 -mca coll ^fca,hcoll -map-by ppr:1:node -np 4 ./a.out
[r4450:11544] ../../../../../opal/datatype/opal_datatype_pack.h:53
Pointer 0x2bb7ceedb010 size 131040 is outside [0x2b9ec63cb010,0x2bad1458b010] for
base ptr 0x2b9ec63cb010 count 1 and data
[r4450:11544] Datatype 0x145fe90[] size 30720000000 align 4 id 0 length 7 used 6 true_lb 0 true_ub 61440000000 (true_extent 61440000000) lb 0 ub 61440000000 (extent 61440000000)
nbElems -909934592 loops 4 flags 104 (committed )-c-----GD--[---][---]
   contain OPAL_FLOAT4:*
--C--------[---][---]    OPAL_LOOP_S 192 times the next 2 elements extent 80000000 --C---P-D--[---][---]    OPAL_FLOAT4 count 20000000 disp 0xaba950000 (46080000000) blen 0 extent 4 (size 80000000) --C--------[---][---]    OPAL_LOOP_E prev 2 elements first elem displacement 46080000000 size of data 80000000 --C--------[---][---]    OPAL_LOOP_S 192 times the next 2 elements extent 80000000 --C---P-D--[---][---]    OPAL_FLOAT4 count 20000000 disp 0x0 (0) blen 0 extent 4 (size 80000000) --C--------[---][---]    OPAL_LOOP_E prev 2 elements first elem displacement 0 size of data 80000000 -------G---[---][---]    OPAL_LOOP_E prev 6 elements first elem displacement 46080000000 size of data 655228928
Optimized description
-cC---P-DB-[---][---]     OPAL_UINT1 count -1819869184 disp 0xaba950000 (46080000000) blen 1 extent 1 (size 15360000000) -cC---P-DB-[---][---]     OPAL_UINT1 count -1819869184 disp 0x0 (0) blen 1 extent 1 (size 15360000000) -------G---[---][---]    OPAL_LOOP_E prev 2 elements first elem displacement 46080000000
[r4450:11544] *** Process received signal ***
[r4450:11544] Signal: Aborted (6)
[r4450:11544] Signal code:  (-6)

Cheers,
Ben




On 2 Nov 2018, at 12:09 pm, Ben Menadue <ben.mena...@nci.org.au <mailto:ben.mena...@nci.org.au>> wrote:

HI Gilles,

On 2 Nov 2018, at 11:03 am, Gilles Gouaillardet <gil...@rist.or.jp <mailto:gil...@rist.or.jp>> wrote: I noted the stack traces refers opal_cuda_memcpy(). Is this issue specific to CUDA environments ?

No, this is just on normal CPU-only nodes. But memcpy always goes through opal_cuda_memcpy when CUDA support is enabled, even if there’s no GPUs in use (or indeed, even installed).

The coll/tuned default collective module is known not to work when tasks use matching but different signatures. For example, one task sends one vector of N elements, and the other task receives N elements.

This is the call that triggers it:

ierror = MPI_Allgatherv(MPI_IN_PLACE, 0, MPI_DATATYPE_NULL, S[0], recvcounts, displs, mpitype_vec_nobs, node_comm);

(and changing the source datatype to MPI_BYTE to avoid the NULL handle doesn’t help).

A workaround worth trying is to
mpirun --mca coll basic ...

Thanks — using --mca coll basic,libnbc fixes it (basic on its own fails because it can’t work out what to use for Iallgather).

Last but not least, could you please post a minimal example (and the number of MPI tasks used) that can evidence the issue ?

I’m just waiting for the user to get back to me with the okay to share the code. Otherwise, I’ll see what I can put together myself. It works on 42 cores (at 14 per node = 3 nodes) but fails for 43 cores (so 1 rank on the 4th node). The communicator includes 1 rank per node, so it’s going from a three-rank communicator to a four-rank communicator — perhaps the tuned algorithm changes at that point?

Cheers,
Ben

_______________________________________________
devel mailing list
devel@lists.open-mpi.org <mailto:devel@lists.open-mpi.org>
https://lists.open-mpi.org/mailman/listinfo/devel



_______________________________________________
devel mailing list
devel@lists.open-mpi.org
https://lists.open-mpi.org/mailman/listinfo/devel

_______________________________________________
devel mailing list
devel@lists.open-mpi.org
https://lists.open-mpi.org/mailman/listinfo/devel

Reply via email to