If we don't take in account resilience I would not expect MPI_Probe to have that many opportunities to return errors. However, in order to keep the implementation consistent (with the other MPI functions) I would abide to the following.
MPI_ERROR_IN_STATUS is only for calls taking multiple requests as input, so I don't think this should be applied to the MPI_Probe. I would expect the return to be equal to status.MPI_ERROR (similar to only other function working on a single request, such as MPI_Test).
It better trigger the error-handler attached to the communicator, as explicitly requested by the MPI standard (section 8.3).
> A user can associate error handlers to three types of objects: communicators, windows, and files. The specified error handling routine will be used for any MPI exception that occurs during a call to MPI for the respective object.
On Mar 21, 2011, at 16:50 , Joshua Hursey wrote:
> If MPI_Probe() encounters an error causing it to exit with the 'status.MPI_ERROR' set, say:
> ret = MPI_Probe(MPI_ANY_SOURCE, MPI_ANY_TAG, MPI_COMM_WORLD, &status);
> Should it return an error? So should it return:
> - ret = status.MPI_ERROR
> - ret = MPI_ERROR_IN_STATUS
> - ret = MPI_SUCCESS
> Additionally, should it trigger the error handler on the communicator?
> In Open MPI, it will always return MPI_SUCCESS (pml_ob1_iprobe.c:74), but it feels like this is wrong. I looked to the MPI standard for some insight, but could not find where it addresses the return code of MPI_Probe.
> Can anyone shed some light on this topic for me?
> Joshua Hursey
> Postdoctoral Research Associate
> Oak Ridge National Laboratory
> devel mailing list
"To preserve the freedom of the human mind then and freedom of the press, every spirit should be ready to devote itself to martyrdom; for as long as we may think as we will, and speak as we think, the condition of man will proceed in improvement."
-- Thomas Jefferson, 1799