X-Mailer: QUALCOMM Windows Eudora Pro Version 4.2.2 Date: Thu, 05 Apr 2001 13:57:10 -0500 To: mpi-core@XXXXXXXXXXX From: William Gropp Subject: Inconsistent error behavior of multiple completion routines Sender: owner-mpi-core@XXXXXXXXXXXXX The description of the multiple completion routines (e.g., MPI_WAITSOME) contain this text: When one or more of the communications completed by MPI_WAITSOME fails, then it is desirable to return specific information on each communication. The arguments outcount, array_of_indices and array_of_statuses will be adjusted to indicate completion of all communications that have succeeded or failed. The call will return the error code MPI_ERR_IN_STATUS and the error field of each status returned will be set to indicate success or to indicate the specific error that occurred. The call will return MPI_SUCCESS if no request resulted in an error, and will return another error code if it failed for other reasons (such as invalid arguments). In such cases, it will not update the error fields of the statuses This is not consistent with the description of error handlers; in particular, it seems to be an exception to the default handler MPI_ERRORS_ARE_FATAL (even for the case where no request is in error, such as a negative request count). With the MPI-1.0 version, one interpretation was for the associated error handler for each request (through the communicator for that request, assuming that a valid communicator is present for the request) be invoked for each erroneous request. I propose the following clarification: For requests for communication on valid communicators (including File operations) that raise an MPI exception (see MPI 1.2, Error Handling), if the corresponding error handler is MPI_ERRORS_RETURN, the error field of the status will be set to indicate the error and the call will return the error code MPI_ERR_IN_STATUS. Requests that succeeded will have the corresponding error field set to MPI_SUCCESS. For requests with other error handlers that raise an MPI exception, the corresponding error handler will be invoked. For requests for which the communicator cannot be determined, or for other errors unrelated to any request (such as invalid arguments), the error handler on MPI_COMM_WORLD will be called (see MPI 1.2, section 7.2). Comments? This comes up in handling errors encountered within a library that has changed the error handler on a dup'ed communicator and MPI_COMM_WORLD is still MPI_ERRORS_ARE_FATAL. Also note that "MPI exception" is the term in the MPI 1 standard, and does not refer to C++ exceptions. Bill