a.croucher at auckland.ac.nz
Thu Dec 2 17:03:52 CST 2021
This question is not strictly PETSc-related but I figure you guys are
probably most likely to know the answer.
I need to do some simple computations involving only a small subset of
the parallel processes in my simulation.
From reading the MPI documentation and a few tutorials it looks like
mpi_comm_create_group() is probably the thing to use for creating the
MPI communicator in this case. Since there are only a few processes in
the group, from what I can gather this function should be more efficient
than mpi_comm_create(), as it's only collective on the group, not the
whole parent communicator (MPI_COMM_WORLD).
1) Is it correct that mpi_comm_create_group() should be a better option
in this case than mpi_comm_create()? I had a grep through the PETSc
source code and there are some calls to mpi_comm_create() but none to
mpi_comm_create_group(). But maybe the use case is different.
2) If mpi_comm_create_group() is the better option, is it necessary to
call it on all processes, or only the ones in the group? The tutorial at
calls it on all processes, but other stuff I've read suggests you only
need to call it on processes in the group. It seems to work either way,
but you have to use the communicator a little differently.
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