dwww Home | Manual pages | Find package

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 Mon Jan 27 11:06:23 CET 2025.