Blame www/www3/MPI_Reduce_scatter.html

Packit 0848f5
Packit 0848f5
<HTML>
Packit 0848f5
<HEAD>
Packit 0848f5
<META NAME="GENERATOR" CONTENT="DOCTEXT">
Packit 0848f5
<TITLE>MPI_Reduce_scatter</TITLE>
Packit 0848f5
</HEAD>
Packit 0848f5
<BODY BGCOLOR="FFFFFF">
Packit 0848f5

MPI_Reduce_scatter

Packit 0848f5
Combines values and scatters the results 
Packit 0848f5

Synopsis

Packit 0848f5
Packit 0848f5
int MPI_Reduce_scatter(const void *sendbuf, void *recvbuf, const int recvcounts[],
Packit 0848f5
                      MPI_Datatype datatype, MPI_Op op, MPI_Comm comm)
Packit 0848f5
Packit 0848f5

Input Parameters

Packit 0848f5
Packit 0848f5
sendbuf
starting address of send buffer (choice)
Packit 0848f5
Packit 0848f5
recvcounts
integer array specifying the
Packit 0848f5
number of elements in result distributed to each process.
Packit 0848f5
Array must be identical on all calling processes. 
Packit 0848f5
Packit 0848f5
datatype
data type of elements of input buffer (handle)
Packit 0848f5
Packit 0848f5
op
operation (handle)
Packit 0848f5
Packit 0848f5
comm
communicator (handle)
Packit 0848f5
Packit 0848f5

Packit 0848f5

Output Parameters

Packit 0848f5
recvbuf
starting address of receive buffer (choice)
Packit 0848f5
Packit 0848f5

Packit 0848f5

Thread and Interrupt Safety

Packit 0848f5

Packit 0848f5
This routine is thread-safe.  This means that this routine may be
Packit 0848f5
safely used by multiple threads without the need for any user-provided
Packit 0848f5
thread locks.  However, the routine is not interrupt safe.  Typically,
Packit 0848f5
this is due to the use of memory allocation routines such as <tt>malloc
Packit 0848f5
</tt>or other non-MPICH runtime routines that are themselves not interrupt-safe.
Packit 0848f5

Packit 0848f5

Notes for Fortran

Packit 0848f5
All MPI routines in Fortran (except for <tt>MPI_WTIME</tt> and <tt>MPI_WTICK</tt>) have
Packit 0848f5
an additional argument <tt>ierr</tt> at the end of the argument list.  <tt>ierr
Packit 0848f5
</tt>is an integer and has the same meaning as the return value of the routine
Packit 0848f5
in C.  In Fortran, MPI routines are subroutines, and are invoked with the
Packit 0848f5
<tt>call</tt> statement.
Packit 0848f5

Packit 0848f5
All MPI objects (e.g., <tt>MPI_Datatype</tt>, <tt>MPI_Comm</tt>) are of type <tt>INTEGER
Packit 0848f5
</tt>in Fortran.
Packit 0848f5

Packit 0848f5

Notes on collective operations

Packit 0848f5

Packit 0848f5
The reduction functions (<tt>MPI_Op</tt>) do not return an error value.  As a result,
Packit 0848f5
if the functions detect an error, all they can do is either call <tt>MPI_Abort
Packit 0848f5
</tt>or silently skip the problem.  Thus, if you change the error handler from
Packit 0848f5
<tt>MPI_ERRORS_ARE_FATAL</tt> to something else, for example, <tt>MPI_ERRORS_RETURN</tt>,
Packit 0848f5
then no error may be indicated.
Packit 0848f5

Packit 0848f5
The reason for this is the performance problems in ensuring that
Packit 0848f5
all collective routines return the same error value.
Packit 0848f5

Packit 0848f5

Errors

Packit 0848f5

Packit 0848f5
All MPI routines (except <tt>MPI_Wtime</tt> and <tt>MPI_Wtick</tt>) return an error value;
Packit 0848f5
C routines as the value of the function and Fortran routines in the last
Packit 0848f5
argument.  Before the value is returned, the current MPI error handler is
Packit 0848f5
called.  By default, this error handler aborts the MPI job.  The error handler
Packit 0848f5
may be changed with <tt>MPI_Comm_set_errhandler</tt> (for communicators),
Packit 0848f5
<tt>MPI_File_set_errhandler</tt> (for files), and <tt>MPI_Win_set_errhandler</tt> (for
Packit 0848f5
RMA windows).  The MPI-1 routine <tt>MPI_Errhandler_set</tt> may be used but
Packit 0848f5
its use is deprecated.  The predefined error handler
Packit 0848f5
<tt>MPI_ERRORS_RETURN</tt> may be used to cause error values to be returned.
Packit 0848f5
Note that MPI does not guarentee that an MPI program can continue past
Packit 0848f5
an error; however, MPI implementations will attempt to continue whenever
Packit 0848f5
possible.
Packit 0848f5

Packit 0848f5
MPI_SUCCESS
No error; MPI routine completed successfully.
Packit 0848f5
Packit 0848f5
MPI_ERR_COMM
Invalid communicator. A common error is to use a null
Packit 0848f5
communicator in a call (not even allowed in <tt>MPI_Comm_rank</tt>).
Packit 0848f5
Packit 0848f5
MPI_ERR_COUNT
Invalid count argument. Count arguments must be
Packit 0848f5
non-negative; a count of zero is often valid.
Packit 0848f5
Packit 0848f5
MPI_ERR_TYPE
Invalid datatype argument. Additionally, this error can
Packit 0848f5
occur if an uncommitted MPI_Datatype (see <tt>MPI_Type_commit</tt>) is used
Packit 0848f5
in a communication call.
Packit 0848f5
Packit 0848f5
MPI_ERR_BUFFER
Invalid buffer pointer. Usually a null buffer where
Packit 0848f5
one is not valid.
Packit 0848f5
Packit 0848f5
MPI_ERR_OP
Invalid operation. MPI operations (objects of type <tt>MPI_Op</tt>)
Packit 0848f5
must either be one of the predefined operations (e.g., <tt>MPI_SUM</tt>) or
Packit 0848f5
created with <tt>MPI_Op_create</tt>.
Packit 0848f5
Packit 0848f5
MPI_ERR_BUFFER
This error class is associcated with an error code that
Packit 0848f5
indicates that two buffer arguments are aliased; that is, the 
Packit 0848f5
describe overlapping storage (often the exact same storage).  This
Packit 0848f5
is prohibited in MPI (because it is prohibited by the Fortran 
Packit 0848f5
standard, and rather than have a separate case for C and Fortran, the
Packit 0848f5
MPI Forum adopted the more restrictive requirements of Fortran).
Packit 0848f5
Packit 0848f5
</BODY></HTML>