MPI_Iscatter function - Message Passing Interface (original) (raw)
Scatters data from one member across all members of a group in a non-blocking way. This function performs the inverse of the operation that is performed by the MPI_Igatherfunction.
Syntax
int MPIAPI MPI_Iscatter(
_In_opt_ const void *sendbuf,
_In_ int sendcount,
_In_ MPI_Datatype sendtype,
_Out_opt_ void *recvbuf,
_In_ int recvcount,
_In_ MPI_Datatype recvtype,
_In_ int root,
_In_ MPI_Comm comm,
_Out_ MPI_Request *request
);
Parameters
- sendbuf [in, optional]
The pointer to a buffer that contains the data to be sent to the root process.
This parameter is ignored for all non-root processes.
If the comm parameter references an intracommunicator, you can specify an in-place option by specifying MPI_IN_PLACE in the root process. The recvcount and recvtype parameters are ignored. The scattered vector is still considered to contain n segments, where n is the group size; the segment that corresponds to the root process is not moved. - sendcount [in]
The number of elements in the send buffer. If sendcount is zero, the data part of the message is empty.
This parameter is ignored for all non-root processes. - sendtype [in]
The data type of each element in the buffer.
This parameter is ignored for all non-root processes. - recvbuf [out, optional]
The handle to a buffer that contains the data that is received on each process. The number and data type of the elements in the buffer are specified in the recvcount and recvtype parameters. - recvcount [in]
The number of elements in the receive buffer. If the count is zero, the data part of the message is empty. - recvtype [in]
The MPI data type of the elements in the receive buffer. - root [in]
The rank of the receiving process within the specified communicator. - comm [in]
The MPI_Comm communicator handle. - request [out]
The MPI_Request handle representing the communication operation.
Return value
Returns MPI_SUCCESS on success. Otherwise, the return value is an error code.
In Fortran, the return value is stored in the IERROR parameter.
Fortran
MPI_ISCATTER(SENDBUF, SENDCOUNT, SENDTYPE, RECVBUF, RECVCOUNT, RECVTYPE, ROOT, COMM, REQUEST, IERROR)
<type> SENDBUF(*), RECVBUF(*)
INTEGER SENDCOUNT, SENDTYPE, RECVCOUNT, RECVTYPE, ROOT, COMM, REQUEST, IERROR
A non-blocking call initiates a collective reduction operation which must be completed in a separate completion call. Once initiated, the operation may progress independently of any computation or other communication at participating processes. In this manner, non-blocking reduction operations can mitigate possible synchronizing effects of reduction operations by running them in the “background.”
All completion calls (e.g., MPI_Wait) are supported for non-blocking reduction operations.
Requirements
Product | Microsoft MPI v7 |
---|---|
Header | Mpi.h; Mpif.h |
Library | Msmpi.lib |
DLL | Msmpi.dll |