error codes
Most MPI functions return an error code indicating successful execution (MPI_SUCCESS), or providing information on the type MPI_SUCCESS of MPI exception that occurred. In certain circumstances, when the MPI function may complete several distinct operations, and therefore may generate several independent errors, the MPI function may return multiple error codes. This may occur with some of the calls described in Section that complete multiple nonblocking communications. As described in that section, the call may return the code MPI_ERR_IN_STATUS, in which case a detailed error code is returned MPI_ERR_IN_STATUS with the status of each communication.
The error codes returned by MPI are left entirely to the implementation (with the exception of MPI_SUCCESS, MPI_ERR_IN_STATUS and MPI_ERR_PENDING). MPI_SUCCESS MPI_ERR_IN_STATUS MPI_ERR_PENDING This is done to allow an implementation to provide as much information as possible in the error code. Error codes can be translated into meaningful messages using the function below.
MPI_ERROR_STRING(errorcode, string, resultlen) IN errorcode Error code returned by an MPI routine OUT string Text that corresponds to the errorcode OUT resultlen Length (in printable character) of the result returned in string.MPI_Error_string(int errorcode, char *string, int *resultlen)
MPI_ERROR_STRING(ERRORCODE, STRING, RESULTLEN, IERROR)INTEGER ERRORCODE, RESULTLEN, IERROR
CHARACTER*(*) STRING
Returns the error string associated with an error code or class. The argument string must represent storage that is at least MPI_MAX_ERROR_STRING characters long. MPI_MAX_ERROR_STRING
The number of characters actually written is returned in the output argument, resultlen.
The use of implementation-dependent error codes allows implementers to provide more information, but prevents one from writing portable error-handling code. To solve this problem, MPI provides a standard set of specified error values, called error classes, and a function that maps each error code into a suitable error class. error classes
Valid error classes are
MPI_SUCCESS No error MPI_ERR_BUFFER Invalid buffer pointer MPI_ERR_COUNT Invalid count argument MPI_ERR_TYPE Invalid datatype argument MPI_ERR_TAG Invalid tag argument MPI_ERR_COMM Invalid communicator MPI_ERR_RANK Invalid rank MPI_ERR_REQUEST Invalid request MPI_ERR_ROOT Invalid root MPI_ERR_GROUP Invalid group MPI_ERR_OP Invalid operation MPI_ERR_TOPOLOGY Invalid topology MPI_ERR_DIMS Invalid dimensions argument MPI_ERR_ARG Invalid argument of some other kind MPI_ERR_UNKNOWN Unknown error MPI_ERR_TRUNCATE Message truncated on receive MPI_ERR_OTHER Known error not in this list MPI_ERR_INTERN Internal MPI error MPI_ERR_IN_STATUS Error code is in status MPI_ERR_PENDING Pending request MPI_ERR_LASTCODE Last error codeMost of these classes are self explanatory. The use of MPI_ERR_IN_STATUS and MPI_ERR_PENDING is explained in Section . The list of standard classes may be extended in the future.
The function MPI_ERROR_STRING can be used to compute the error string associated with an error class.
The error codes satisfy,
MPI_Error_class(int errorcode, int *errorclass)
MPI_ERROR_CLASS(ERRORCODE, ERRORCLASS, IERROR)INTEGER ERRORCODE, ERRORCLASS, IERROR
The function MPI_ERROR_CLASS maps each error code into a standard error code (error class). It maps each standard error code onto itself.