petsc-3.13.6 2020-09-29
Report Typos and Errors


A decomposition of an MPI communicator into subcommunicators


typedef struct _n_PetscSubcomm* PetscSubcomm;


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()


  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 Notes

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()




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