Hi Guillaume,Just to add to George’s suggestion and following the same idea – instead of the Allgather, which could cause scalability problems, you could just do a Reduce or Allreduce with all processes with rank 0 in the new communicator contributing 1 and the rest 0 and then use an add as the reduction operator.Martin________________________________________________________________________Martin Schulz, schulzm@llnl.gov, http://scalability.llnl.gov/CASC @ Lawrence Livermore National Laboratory, Livermore, USAFrom: <mpi-forum-bounces@lists.mpi-forum.org> on behalf of George Bosilca <bosilca@icl.utk.edu>
Reply-To: Main mailing list <mpi-forum@lists.mpi-forum.org>
Date: Thursday, December 15, 2016 at 11:41 AM
To: Main mailing list <mpi-forum@lists.mpi-forum.org>
Subject: Re: [Mpi-forum] MPI_Comm_split_type questionGuillaume,If I understand you correctly you are trying to figure out how many unique groups (and therefore communicators) were globally created as a result of an MPI_Comm_split_type operation. Unfortunately, depending on the type passed to this function (there is a single one defined by MPI, but in Open MPI we support several extensions), the resulting communicator can be created without the need for global knowledge, and thus it is impossible to know how many have communicators have been create in total.To extend on what JeffH proposed, you can count the resulting number of communicators by doing an MPI_Allgather on the initial communicator on a data where each participant provide their rank in the newly created communicator (then returned by the MPI_Comm_split* operation), and then counting the number of 0.George.On Dec 15, 2016, at 14:05 , Jeff Hammond <jeff.science@gmail.com> wrote:_______________________________________________On Thu, Dec 15, 2016 at 10:29 AM, Guillaume Mercier <guillaume.mercier@u-bordeaux.fr> wrote:
Hi Jeff,
On 15/12/2016 18:48, Jeff Hammond wrote:The number of output communicators from MPI_Comm_split(_type) is always
one.
Yes, obviously.Different ranks may get different outputs, but one cannot transfer
a communicator object from one rank to another.
That's my issue actually.If you want to do how many total output communicators there are, you can
perform an MPI_Allgather on the color arguments and see how many unique
values there are.
I'm not sure about that: tae the case of MPI_Comm_split_type with
MPI_COMM_TYPE_SHARED. According to tha standards :"this type splits
the communicator into subcommunicators each of which can create a shared memory region".
So, there is only one color, but several subcommunicators.
Or am I understanding this the wrong way?Each rank gets its own subcommunicator object that captures the ranks of the shared memory domain, as supported by MPI_Win_allocate_shared.I'm still not sure I understand what the issue is. What are you trying to do?JeffRegards
Guillaume
_______________________________________________
mpi-forum mailing list
mpi-forum@lists.mpi-forum.org
https://lists.mpi-forum.org/mailman/listinfo/mpi-forum --
mpi-forum mailing list
mpi-forum@lists.mpi-forum.org
https://lists.mpi-forum.org/mailman/listinfo/mpi-forum
_______________________________________________
mpi-forum mailing list
mpi-forum@lists.mpi-forum.org
https://lists.mpi-forum.org/mailman/listinfo/mpi-forum