[petsc-dev] mpi_comm_create_group()
Adrian Croucher
a.croucher at auckland.ac.nz
Thu Dec 2 22:56:33 CST 2021
On 12/3/21 5:53 PM, Jed Brown wrote:
>> Ah, interesting. I guess mpi_comm_split() might also have the advantage
>> that each rank only needs to know if it is in the group or not, rather
>> than needing an array of all participating ranks, as mpi_comm_create()
>> and mpi_comm_create_group() do.
> That's exactly why it's often more convenient. But it is collective on the parent communicator.
Yes, I was a bit concerned about that after reading this (from
https://cvw.cac.cornell.edu/MPIAdvTopics/subdividing):
" ...the MPI specification states that the call to MPI_Comm_create must
be executed by all processes in the input communicator (in our case,
MPI_COMM_WORLD), and that all processes must pass the same value for the
group argument (grp), even if they do not belong to the new group. This
can be a dire problem with a very large number of processes, such as are
found in petascale systems, so MPI_COMM_CREATE_GROUP was introduced in
MPI-3 to alleviate this problem."
- Adrian
--
Dr Adrian Croucher
Senior Research Fellow
Department of Engineering Science
University of Auckland, New Zealand
email: a.croucher at auckland.ac.nz
tel: +64 (0)9 923 4611
More information about the petsc-dev
mailing list