MPI_Comm_split - Creates new communicators based on colors
       and keys


SYNOPSIS

       C:

            #include <mpi.h>

            int MPI_Comm_split ( comm, color, key, comm_out )
            MPI_Comm  comm;
            int       color, key;
            MPI_Comm *comm_out;

       C++:

            #include <mpi.h>

            Intracomm Intracomm::Split(
            int               color,
            int               key) const

       Fortran:

            INCLUDE "mpif.h" (or USE MPI)

            INTEGER comm, color, key, newcomm, ierror

            CALL MPI_COMM_SPLIT(comm, color, key, newcomm,
            ierror)


STANDARDS

       This release implements the MPI 1.2 standard, as
       documented by the MPI Forum in the spring 1997 release of
       MPI:  A Message Passing Interface Standard.


DESCRIPTION

       The MPI_Comm_split routine creates new communicators based
       on colors and keys.  This routine accepts the following
       parameters:

       comm      Specifies the communicator. (handle)

       color     Specifies the control of subset assignment.
                 color must be nonnegative or MPI_UNDEFINED.
                 (nonnegative integer)

       key       Specifies the control of rank assignment.
                 (integer)

       comm_out  Returns a new communicator. (handle)

                 completion, which is in MPI_SUCCESS.
                 MPI_SUCCESS is defined in the mpif.h file.


NOTES

       The algorithm that is used for creating new communicators
       based on colors and keys is as follows:

       1.     A table of colors and keys is built (has a next
              field also).

       2.     The MPI_Allreduce(3) routine is used to merge the
              tables of all processes.

       3.     Two contexts are allocated for all of the
              communicators to be created.  These same two
              contexts can be used for all created communicators
              because the communicators will not overlap.

       4.     If the local process has a color of MPI_UNDEFINED,
              it can return a null communicator.

       5.     The table entries that match the local process
              color are sorted by key and rank.

       6.     A group is created from the sorted list and a
              communicator is created with this group and the
              previously allocated contexts.

       Note:  This algorithm contains inefficiencies that can be
       removed.


SEE ALSO

       MPI_Allreduce(3)


Man(1) output converted with man2html