IBM Books

MPI Subroutine Reference

MPI_COMM_SPLIT, MPI_Comm_split

Purpose

Splits a communicator into multiple communicators based on color and key.

C synopsis

#include <mpi.h>
int MPI_Comm_split(MPI_Comm comm_in, int color, int key, MPI_Comm *comm_out);

C++ synopsis

#include mpi.h
MPI::Intercomm MPI::Intercomm::Split(int color, int key) const;

#include mpi.h
MPI::Intracomm MPI::Intracomm::Split(int color, int key) const;

FORTRAN synopsis

include 'mpif.h' or use mpi
MPI_COMM_SPLIT(INTEGER COMM_IN, INTEGER COLOR, INTEGER KEY,
    INTEGER COMM_OUT, INTEGER IERROR)

Parameters

comm_in
is the original communicator (handle) (IN)

color
is an integer specifying control of subset assignment (IN)

key
is an integer specifying control of rank assignment (IN)

comm_out
is the new communicator (handle) (OUT)

IERROR
is the FORTRAN return code. It is always the last argument.

Description

MPI_COMM_SPLIT is a collective operation that partitions the group associated with comm_in into disjoint subgroups, one for each value of color. Each subgroup contains all tasks of the same color. Within each subgroup, the tasks are ranked in the order defined by the value of the argument key. Ties are broken according to their rank in the old group. A new communicator is created for each subgroup and returned in comm_out. If a task supplies the color value MPI_UNDEFINED, comm_out returns MPI_COMM_NULL. Even though this is a collective operation, each task is allowed to provide different values for color and key.

The value of color must be greater than or equal to 0.

Notes

The result of MPI_COMM_SPLIT on an intercommunicator is that those tasks on one side of the intercommunicator with the same color as those tasks on the other side of the intercommunicator combine to create a new intercommunicator. The key argument describes the relative rank of tasks on each side of the intercommunicator. For those colors that are specified only on one side of the intercommunicator, MPI_COMM_NULL is returned. MPI_COMM_NULL is also returned to those tasks that specify MPI_UNDEFINED as the color.

Errors

Fatal errors:

Conflicting collective operations on communicator

Invalid color
color < 0

Invalid communicator

MPI not initialized

MPI already finalized

Related information

MPI_CART_SUB


[ Top of Page | Previous Page | Next Page | Table of Contents | Index ]