PetscSubcomm#

A decomposition of an MPI communicator into subcommunicators

Synopsis#

typedef struct _n_PetscSubcomm *PetscSubcomm;

Notes#

After a call to PetscSubcommSetType(), PetscSubcommSetTypeGeneral(), or PetscSubcommSetFromOptions() one may call

`PetscSubcommChild()` returns the associated subcommunicator on this process
`PetscSubcommContiguousParent()` returns a parent communitor but with all child of the same subcommunicator having contiguous rank

Sample Usage#

       `PetscSubcommCreate()`
       `PetscSubcommSetNumber()`
       `PetscSubcommSetType`(`PETSC_SUBCOMM_INTERLACED`);
       ccomm = `PetscSubcommChild()`
       `PetscSubcommDestroy()`

Notes#

`PETSC_SUBCOMM_GENERAL` - similar to `MPI_Comm_split()` each process sets the new communicator (color) they will belong to and the order within that communicator
`PETSC_SUBCOMM_CONTIGUOUS` - each new communicator contains a set of process with contiguous ranks in the original MPI communicator
`PETSC_SUBCOMM_INTERLACED` - each new communictor contains a set of processes equally far apart in rank from the others in that new communicator

Example: Consider a communicator with six processes split into 3 subcommunicators.

`PETSC_SUBCOMM_CONTIGUOUS` - the first communicator contains rank 0,1  the second rank 2,3 and the third rank 4,5 in the original ordering of the original communicator
`PETSC_SUBCOMM_INTERLACED` - the first communicator contains rank 0,3, the second 1,4 and the third 2,5

Developer Note#

This is used in objects such as PCREDUNDANT to manage the subcommunicators on which the redundant computations are performed.

See Also#

PetscSubcommCreate(), PetscSubcommSetNumber(), PetscSubcommSetType(), PetscSubcommView(), PetscSubcommSetFromOptions()

Level#

advanced

Location#

include/petscsystypes.h


Edit on GitLab

Index of all Sys routines
Table of Contents for all manual pages
Index of all manual pages