## 6.5.6. Partitioning of Cartesian structures

Up: Topology Constructors Next: Low-level topology functions Previous: Cartesian Shift Coordinates

MPI_CART_SUB(comm, remain_dims, newcomm)
[ IN comm] communicator with cartesian structure (handle)
[ IN remain_dims] the `i`th entry of remain_dims specifies whether the
`i`th dimension is kept in the subgrid (`true`) or is dropped (`false`) (logical vector)
[ OUT newcomm] communicator containing the subgrid that includes the calling process (handle)

`int MPI_Cart_sub(MPI_Comm comm, int *remain_dims, MPI_Comm *newcomm)
`

`MPI_CART_SUB(COMM, REMAIN_DIMS, NEWCOMM, IERROR)
INTEGER COMM, NEWCOMM, IERROR
LOGICAL REMAIN_DIMS(*)
`

If a cartesian topology has been created with MPI_CART_CREATE, the function
MPI_CART_SUB can be used to partition the communicator group into subgroups that form lower-dimensional cartesian subgrids, and to build for each subgroup a communicator with the associated subgrid cartesian topology. (This function is closely related to MPI_COMM_SPLIT.)

Example

Assume that MPI_CART_CREATE(..., comm) has defined a grid. Let `remain_dims = (true, false, true)`. Then a call to,

    MPI_CART_SUB(comm, remain_dims, comm_new),

will create three communicators each with eight processes in a cartesian topology. If `remain_dims = (false, false, true)` then the call to MPI_CART_SUB(comm, remain_dims, comm_new) will create six non-overlapping communicators, each with four processes, in a one-dimensional cartesian topology.

Up: Topology Constructors Next: Low-level topology functions Previous: Cartesian Shift Coordinates

Return to MPI 1.1 Standard Index
Return to MPI-2 Standard Index
Return to MPI Forum Home Page

MPI-1.1 of June 12, 1995
HTML Generated on August 6, 1997