MPI_Testsome(3) Open MPI MPI_Testsome(3)
NAME
MPI_Testsome - Tests for completion of one or more previously initiated
communications in a list.
SYNTAX
C Syntax
#include <mpi.h>
int MPI_Testsome(int incount, MPI_Request array_of_requests[],
int *outcount, int array_of_indices[],
MPI_Status array_of_statuses[])
Fortran Syntax
USE MPI
! or the older form: INCLUDE 'mpif.h'
MPI_TESTSOME(INCOUNT, ARRAY_OF_REQUESTS, OUTCOUNT,
ARRAY_OF_INDICES, ARRAY_OF_STATUSES, IERROR)
INTEGER INCOUNT, ARRAY_OF_REQUESTS(*)
INTEGER OUTCOUNT, ARRAY_OF_INDICES(*)
INTEGER ARRAY_OF_STATUSES(MPI_STATUS_SIZE,*), IERROR
Fortran 2008 Syntax
USE mpi_f08
MPI_Testsome(incount, array_of_requests, outcount, array_of_indices,
array_of_statuses, ierror)
INTEGER, INTENT(IN) :: incount
TYPE(MPI_Request), INTENT(INOUT) :: array_of_requests(incount)
INTEGER, INTENT(OUT) :: outcount, array_of_indices(*)
TYPE(MPI_Status) :: array_of_statuses(*)
INTEGER, OPTIONAL, INTENT(OUT) :: ierror
C++ Syntax
#include <mpi.h>
static int Request::Testsome(int incount, Request
array_of_requests[], int array_of_indices[],
Status array_of_statuses[])
static int Request::Testsome(int incount, Request
array_of_requests[], int array_of_indices[])
INPUT PARAMETERS
incount Length of array_of_requests (integer).
array_of_requests
Array of requests (array of handles).
OUTPUT PARAMETERS
outcount Number of completed requests (integer).
array_of_indices
Array of indices of operations that completed (array of inte-
gers).
array_of_statuses
Array of status objects for operations that completed (array
of status).
IERROR Fortran only: Error status (integer).
DESCRIPTION
Behaves like MPI_Waitsome, except that it returns immediately.
Returns in outcount the number of requests from the list array_of_re-
quests that have completed. Returns in the first outcount locations of
the array array_of_indices the indices of these operations (index
within the array array_of_requests; the array is indexed from 0 in C
and from 1 in Fortran). Returns in the first outcount locations of the
array array_of_status the status for these completed operations. If a
request that completed was allocated by a nonblocking communication
call, then it is deallocated, and the associated handle is set to
MPI_REQUEST_NULL.
If no operation has completed it returns outcount = 0. If there is no
active handle in the list, it returns outcount = MPI_UNDEFINED.
MPI_Testsome is a local operation, which returns immediately, whereas
MPI_Waitsome blocks until a communication completes, if it was passed a
list that contains at least one active handle. Both calls fulfill a
fairness requirement: If a request for a receive repeatedly appears in
a list of requests passed to MPI_Waitsome or MPI_Testsome, and a match-
ing send has been posted, then the receive will eventually succeed un-
less the send is satisfied by another receive; send requests also ful-
fill this fairness requirement.
Errors that occur during the execution of MPI_Testsome are handled as
for MPI_Waitsome.
If your application does not need to examine the array_of_statuses
field, you can save resources by using the predefined constant MPI_STA-
TUSES_IGNORE can be used as a special value for the array_of_statuses
argument.
NOTES
The use of MPI_Testsome is likely to be more efficient than the use of
MPI_Testany. The former returns information on all completed communica-
tions; with the latter, a new call is required for each communication
that completes.
A server with multiple clients can use MPI_Waitsome so as not to starve
any client. Clients send messages to the server with service requests.
The server calls MPI_Waitsome with one receive request for each client,
then handles all receives that have completed. If a call to MPI_Waitany
is used instead, then one client could starve while requests from an-
other client always sneak in first.
ERRORS
For each invocation of MPI_Testsome, if one or more requests generate
an MPI exception, only the first MPI request that caused an exception
will be passed to its corresponding error handler. No other error han-
dlers will be invoked (even if multiple requests generated exceptions).
However, all requests that generate an exception will have a relevant
error code set in the corresponding status.MPI_ERROR field (unless
MPI_STATUSES_IGNORE was used).
The default error handler aborts the MPI job, except for I/O function
errors. The error handler may be changed with MPI_Comm_set_errhandler,
MPI_File_set_errhandler, or MPI_Win_set_errhandler (depending on the
type of MPI handle that generated the MPI request); the predefined er-
ror handler MPI_ERRORS_RETURN may be used to cause error values to be
returned. Note that MPI does not guarantee that an MPI program can con-
tinue past an error.
If the invoked error handler allows MPI_Testsome to return to the
caller, the value MPI_ERR_IN_STATUS will be returned in the C and For-
tran bindings. In C++, if the predefined error handler MPI::ER-
RORS_THROW_EXCEPTIONS is used, the value MPI::ERR_IN_STATUS will be
contained in the MPI::Exception object. The MPI_ERROR field can then
be examined in the array of returned statuses to determine exactly
which request(s) generated an exception.
SEE ALSO
MPI_Comm_set_errhandler
MPI_File_set_errhandler
MPI_Test
MPI_Testall
MPI_Testany
MPI_Wait
MPI_Waitall
MPI_Waitany
MPI_Waitsome
MPI_Win_set_errhandler
4.1.2 Nov 24, 2021 MPI_Testsome(3)
Generated by dwww version 1.14 on Sat Jun 13 11:22:38 CEST 2026.