205. Error Codes and Classes

PreviousUpNext
Up: Contents Next: Error Classes, Error Codes, and Error Handlers Previous: Freeing Errorhandlers and Retrieving Error Strings

The error codes returned by MPI are left entirely to the implementation (with the exception of MPI_SUCCESS). This is done to allow an implementation to provide as much information as possible in the error code (for use with MPI_ERROR_STRING).

To make it possible for an application to interpret an error code, the routine MPI_ERROR_CLASSconverts any error code into one of a small set of standard error codes, called error classes. Valid error classes are shown in Table 6 and Table 7 .

MPI_SUCCESSNo error
MPI_ERR_BUFFERInvalid buffer pointer
MPI_ERR_COUNTInvalid count argument
MPI_ERR_TYPEInvalid datatype argument
MPI_ERR_TAGInvalid tag argument
MPI_ERR_COMMInvalid communicator
MPI_ERR_RANKInvalid rank
MPI_ERR_REQUESTInvalid request (handle)
MPI_ERR_ROOTInvalid root
MPI_ERR_GROUPInvalid group
MPI_ERR_OPInvalid operation
MPI_ERR_TOPOLOGYInvalid topology
MPI_ERR_DIMSInvalid dimension argument
MPI_ERR_ARGInvalid argument of some other kind
MPI_ERR_UNKNOWNUnknown error
MPI_ERR_TRUNCATEMessage truncated on receive
MPI_ERR_OTHERKnown error not in this list
MPI_ERR_INTERNInternal MPI (implementation) error
MPI_ERR_IN_STATUSError code is in status
MPI_ERR_PENDINGPending request

MPI_ERR_KEYVAL

Invalid keyval has been passed
MPI_ERR_NO_MEM MPI_ALLOC_MEM failed because memory is exhausted
MPI_ERR_BASEInvalid base passed to MPI_FREE_MEM
MPI_ERR_INFO_KEYKey longer than MPI_MAX_INFO_KEY
MPI_ERR_INFO_VALUEValue longer than MPI_MAX_INFO_VAL
MPI_ERR_INFO_NOKEYInvalid key passed to MPI_INFO_DELETE

MPI_ERR_SPAWN

Error in spawning processes
MPI_ERR_PORTInvalid port name passed to MPI_COMM_CONNECT
MPI_ERR_SERVICEInvalid service name passed to MPI_UNPUBLISH_NAME
MPI_ERR_NAMEInvalid service name passed to MPI_LOOKUP_NAME

MPI_ERR_WIN

Invalid win argument
MPI_ERR_SIZE Invalid size argument
MPI_ERR_DISP Invalid disp argument
MPI_ERR_INFOInvalid info argument
MPI_ERR_LOCKTYPE Invalid locktype argument
MPI_ERR_ASSERT Invalid assert argument
MPI_ERR_RMA_CONFLICT Conflicting accesses to window
MPI_ERR_RMA_SYNC Wrong synchronization of RMA calls

Table 6: Error classes (Part 1)

MPI_ERR_RMA_RANGE Target memory is not part of the window (in the case of a window created with MPI_WIN_CREATE_DYNAMIC, target memory is not attached)
MPI_ERR_RMA_ATTACH Memory cannot be attached (e.g., because of resource exhaustion)
MPI_ERR_RMA_SHARED Memory cannot be shared (e.g., some process in the group of the specified communicator cannot expose shared memory)
MPI_ERR_RMA_FLAVOR Passed window has the wrong flavor for the called function

MPI_ERR_FILE

Invalid file handle
MPI_ERR_NOT_SAME Collective argument not identical on all processes, or collective routines called in a different order by different processes
MPI_ERR_AMODE Error related to the amode passed to MPI_FILE_OPEN
MPI_ERR_UNSUPPORTED_DATAREP Unsupported datarep passed to MPI_FILE_SET_VIEW
MPI_ERR_UNSUPPORTED_OPERATION Unsupported operation, such as seeking on a file which supports sequential access only
MPI_ERR_NO_SUCH_FILE File does not exist
MPI_ERR_FILE_EXISTS File exists
MPI_ERR_BAD_FILE Invalid file name (e.g., path name too long)
MPI_ERR_ACCESS Permission denied
MPI_ERR_NO_SPACE Not enough space
MPI_ERR_QUOTA Quota exceeded
MPI_ERR_READ_ONLY Read-only file or file system
MPI_ERR_FILE_IN_USE File operation could not be completed, as the file is currently open by some process
MPI_ERR_DUP_DATAREP Conversion functions could not be registered because a data representation identifier that was already defined was passed to MPI_REGISTER_DATAREP
MPI_ERR_CONVERSION An error occurred in a user supplied data conversion function.
MPI_ERR_IO Other I/O error
MPI_ERR_LASTCODELast error code

Table 7: Error classes (Part 2)

The error classes are a subset of the error codes: an MPI function may return an error class number; and the function MPI_ERROR_STRING can be used to compute the error string associated with an error class. The values defined for MPI error classes are valid MPI error codes.

The error codes satisfy,

0 = constMPI_SUCCESS < constMPI_ERR_... leq constMPI_ERR_LASTCODE.


Rationale.

The difference between MPI_ERR_UNKNOWN and MPI_ERR_OTHER is that MPI_ERROR_STRING can return useful information about MPI_ERR_OTHER.

Note that MPI_SUCCESS = 0 is necessary to be consistent with C practice; the separation of error classes and error codes allows us to define the error classes this way. Having a known LASTCODE is often a nice sanity check as well. ( End of rationale.)

MPI_ERROR_CLASS( errorcode, errorclass )
IN errorcodeError code returned by an MPI routine
OUT errorclassError class associated with errorcode

int MPI_Error_class(int errorcode, int *errorclass)

MPI_Error_class(errorcode, errorclass, ierror)
INTEGER, INTENT(IN) :: errorcode
INTEGER, INTENT(OUT) :: errorclass
INTEGER, OPTIONAL, INTENT(OUT) :: ierror
MPI_ERROR_CLASS(ERRORCODE, ERRORCLASS, IERROR)
INTEGER ERRORCODE, ERRORCLASS, IERROR

The function MPI_ERROR_CLASS maps each standard error code (error class) onto itself.


PreviousUpNext
Up: Contents Next: Error Classes, Error Codes, and Error Handlers Previous: Freeing Errorhandlers and Retrieving Error Strings


Return to MPI-3.1 Standard Index
Return to MPI Forum Home Page

(Unofficial) MPI-3.1 of June 4, 2015
HTML Generated on June 4, 2015