A collective operation is executed by having all processes in the group
call the communication routine, with matching arguments.
The syntax and semantics of the collective operations are
defined to be consistent with the syntax and semantics of the
point-to-point operations. Thus, user-defined datatypes are allowed
and must match between sending and receiving processes as specified
in Chapter .
One of the key arguments is an intracommunicator that defines the group
of participating processes and provides
a communication domain for the operation.
In calls where a root process is defined,
some arguments are specified as
``significant only at root,'' and are ignored for all
participants except the root.
The reader is referred to Chapter
for information concerning communication buffers and type matching rules,
to Chapter
for
user-defined datatypes, and to
Chapter
for information on how to define groups and
create communicators.
The type-matching conditions for the collective operations are more
strict than the corresponding conditions between sender and receiver
in point-to-point. Namely, for collective operations,
the amount of data sent must exactly
match the amount of data specified by the receiver.
Distinct type maps (the layout in memory, see Section )
between sender and receiver are still allowed.
type matchingcollective, and type matching
Collective communication calls may use the same
communicators as point-to-point communication; MPI guarantees that
messages generated on behalf of collective communication calls will not
be confused with messages generated by point-to-point communication.
A more detailed discussion of correct use of collective
routines is found in Section .