Provided by: openmpi-doc_4.1.6-7ubuntu2_all bug

NAME

       MPI_Improbe - Non-blocking matched probe for a message.

SYNTAX

C Syntax

       #include <mpi.h>
       int MPI_Improbe(int source, int tag, MPI_Comm comm,
            int *flag, MPI_Message *message, MPI_Status *status)

Fortran Syntax

       USE MPI
       ! or the older form: INCLUDE 'mpif.h'
       MPI_IMPROBE(SOURCE, TAG, COMM, FLAG, MESSAGE, STATUS, IERROR)
            LOGICAL   FLAG
            INTEGER   SOURCE, TAG, COMM, MESSAGE
            INTEGER   STATUS(MPI_STATUS_SIZE), IERROR

Fortran 2008 Syntax

       USE mpi_f08
       MPI_Improbe(source, tag, comm, flag, message, status, ierror)
            INTEGER, INTENT(IN) :: source, tag
            TYPE(MPI_Comm), INTENT(IN) :: comm
            INTEGER, INTENT(OUT) :: flag
            TYPE(MPI_Message), INTENT(OUT) :: message
            TYPE(MPI_Status) :: status
            INTEGER, OPTIONAL, INTENT(OUT) :: ierror

C++ Syntax

       There is no C++ binding for this function.

INPUT PARAMETERS

       source    Source rank or MPI_ANY_SOURCE (integer).

       tag       Tag value or MPI_ANY_TAG (integer).

       comm      Communicator (handle).

OUTPUT PARAMETERS

       flag      Flag (logical).

       message   Message (handle).

       status    Status object (status).

       IERROR    Fortran only: Error status (integer).

DESCRIPTION

       Like  MPI_Probe  and  MPI_Iprobe, the MPI_Mprobe and MPI_Improbe operations allow incoming
       messages to be queried  without  actually  receiving  them,  except  that  MPI_Mprobe  and
       MPI_Improbe  provide  a  mechanism  to  receive  the  specific  message  that  was matched
       regardless of other intervening probe or receive operations.  This gives  the  application
       an  opportunity to decide how to receive the message, based on the information returned by
       the probe.  In particular, the application may allocate  memory  for  the  receive  buffer
       according to the length of the probed message.

       A   matching   probe  with  MPI_PROC_NULL  as  source  returns  flag  =  true,  message  =
       MPI_MESSAGE_NO_PROC,  and  the  status  object  returns  source  =  MPI_PROC_NULL,  tag  =
       MPI_ANY_TAG, and count = 0.

       MPI_Iprobe  returns a true value in flag if a message has been matched and can be received
       by passing the message handle to the  MPI_Mrecv  or  MPI_Imrecv  functions,  provided  the
       source was not MPI_PROC_NULL.

NOTE

       This is an MPI-3 function and has no C++ binding.

ERRORS

       Almost all MPI routines return an error value; C routines as the value of the function and
       Fortran routines in the last argument. C++ functions do not return errors.

       Before the error value is returned, the current MPI error handler is called.  By  default,
       this  error  handler aborts the MPI job, except for I/O function errors. The error handler
       may   be   changed   with   MPI_Comm_set_errhandler;   the   predefined   error    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 continue past an error.

SEE ALSO

       MPI_Mprobe
       MPI_Probe
       MPI_Iprobe
       MPI_Mrecv
       MPI_Imrecv
       MPI_Cancel