Open MPI logo

MPI(3) man page (version 3.0.6)

  |   Home   |   Support   |   FAQ   |  

« Return to documentation listing

Table of Contents


MPI - General information Open MPI 3.0.6.


Open MPI is an open source implementation of MPI (message-passing interface), the industry-standard specification for writing message-passing programs. Message passing is a programming model that gives the programmer explicit control over interprocess communication.

The MPI specification was developed by the MPI Forum, a group of software developers, computer vendors, academics, and computer-science researchers whose goal was to develop a standard for writing message-passing programs that would be efficient, flexible, and portable.

The outcome, known as the MPI Standard, was first published in 1993; its most recent version (MPI-2) was published in July 1997. Open MPI 1.2 includes all MPI 1.2-compliant and MPI 2-compliant routines.

For more information about Open MPI, see the following URL:

The MPI standards are available at the following URL:

Man Page Syntax

Man pages for Open MPI and Open MPI I/O routines are named according to C syntax, that is, they begin with the prefix "MPI_", all in uppercase, and the first letter following the "MPI_" prefix is also uppercase. The rest of the letters in the routine are all lowercase, for example, "MPI_Comm_get_attr".


To fine-tune your Open MPI environment, you can either use arguments to the mpirun, orterun, or mpiexec commands, or you can use MCA parameters.

For more information on arguments, see the orterun.1 man page.

For a complete listing of MCA parameters and their descriptions, issue the command ompi_info -h or ompi_info -param all all. This information also appears in the FAQ on the Open MPI web site at:


All MPI routines (except MPI_Wtime and MPI_Wtick) return an error value; C routines as the value of the function and Fortran routines in the last argument. Before the value is returned, the current MPI error handler is called. By default, this error handler aborts the MPI job. 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.

For more information on Open MPI error codes, see mpi.h in the include directory.

Standard error return classes for Open MPI:

MPI_SUCCESS                0      Successful return code.
MPI_ERR_BUFFER             1      Invalid buffer pointer.
MPI_ERR_COUNT              2      Invalid count argument.
MPI_ERR_TYPE               3      Invalid datatype argument.
MPI_ERR_TAG                4      Invalid tag argument.
MPI_ERR_COMM               5      Invalid communicator.
MPI_ERR_RANK               6      Invalid rank.
MPI_ERR_REQUEST            7      Invalid MPI_Request handle.
MPI_ERR_ROOT               8      Invalid root.
MPI_ERR_GROUP              9      Null group passed to function.
MPI_ERR_OP                10      Invalid operation.
MPI_ERR_TOPOLOGY          11      Invalid topology.
MPI_ERR_DIMS              12      Illegal dimension argument.
MPI_ERR_ARG               13      Invalid argument.
MPI_ERR_UNKNOWN           14      Unknown error.
MPI_ERR_TRUNCATE          15      Message truncated on receive.
MPI_ERR_OTHER             16      Other error; use Error_string.
MPI_ERR_INTERN            17      Internal error code.
MPI_ERR_IN_STATUS         18      Look in status for error value.
MPI_ERR_PENDING           19      Pending request.
MPI_ERR_ACCESS            20      Permission denied.
MPI_ERR_AMODE             21      Unsupported amode passed to open.
MPI_ERR_ASSERT            22      Invalid assert.
MPI_ERR_BAD_FILE          23      Invalid file name (for example,
                                  path name too long).
MPI_ERR_BASE              24      Invalid base.
MPI_ERR_CONVERSION        25      An error occurred in a user-supplied
                                  data-conversion function.
MPI_ERR_DISP              26      Invalid displacement.
MPI_ERR_DUP_DATAREP       27      Conversion functions could not
                                  be registered because a data
                                  representation identifier that was
                                  already defined was passed to
MPI_ERR_FILE_EXISTS       28      File exists.
MPI_ERR_FILE_IN_USE       29      File operation could not be
                                  completed, as the file is currently
                                  open by some process.
MPI_ERR_FILE              30      Invalid file handle.
MPI_ERR_INFO_KEY          31      Illegal info key.
MPI_ERR_INFO_NOKEY        32      No such key.
MPI_ERR_INFO_VALUE        33      Illegal info value.
MPI_ERR_INFO              34      Invalid info object.
MPI_ERR_IO                35      I/O error.
MPI_ERR_KEYVAL            36      Illegal key value.
MPI_ERR_LOCKTYPE          37      Invalid locktype.
MPI_ERR_NAME              38      Name not found.
MPI_ERR_NO_MEM            39      Memory exhausted.
MPI_ERR_NOT_SAME          40      Collective argument not identical
                                  on all processes, or collective
                                  routines called in a different order
                                  by different processes.
MPI_ERR_NO_SPACE          41      Not enough space.
MPI_ERR_NO_SUCH_FILE      42      File (or directory) does not exist.
MPI_ERR_PORT              43      Invalid port.
MPI_ERR_QUOTA             44      Quota exceeded.
MPI_ERR_READ_ONLY         45      Read-only file system.
MPI_ERR_RMA_CONFLICT      46      Conflicting accesses to window.
MPI_ERR_RMA_SYNC          47      Erroneous RMA synchronization.
MPI_ERR_SERVICE           48      Invalid publish/unpublish.
MPI_ERR_SIZE              49      Invalid size.
MPI_ERR_SPAWN             50      Error spawning.
                          51      Unsupported datarep passed to
                          52      Unsupported operation, such as
                                  seeking on a file that supports
                                  only sequential access.
MPI_ERR_WIN               53      Invalid window.
MPI_T_ERR_MEMORY          54      Out of memory.
MPI_T_ERR_NOT_INITIALIZED 55      Interface not initialized.
MPI_T_ERR_CANNOT_INIT     56      Interface not in the state to be
MPI_T_ERR_INVALID_INDEX   57      The enumeration index is invalid.
MPI_T_ERR_INVALID_ITEM    58      The item index queried is out of
MPI_T_ERR_INVALID_HANDLE  59      The handle is invalid.
MPI_T_ERR_OUT_OF_HANDLES  60      No more handles available.
MPI_T_ERR_OUT_OF_SESSIONS 61      No more sessions available.
MPI_T_ERR_INVALID_SESSION 62      Session argument is not a valid
                          63      Variable cannot be set at this
MPI_T_ERR_CVAR_SET_NEVER  64      Variable cannot be set until end of
                          65      Variable cannot be started or stopped.
MPI_T_ERR_PVAR_NO_WRITE   66      Variable cannot be written or reset.
MPI_T_ERR_PVAR_NO_ATOMIC  67      Variable cannot be read and written
MPI_ERR_RMA_RANGE         68      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        69      Memory cannot be attached (e.g.,
                                  because of resource exhaustion).
MPI_ERR_RMA_FLAVOR        70      Passed window has the wrong flavor
                                  for the called function.
MPI_ERR_RMA_SHARED        71      Memory cannot be shared (e.g., some
                                  process in the group of the specified
                                  communicator cannot expose shared
MPI_T_ERR_INVALID         72      Invalid use of the interface or bad
                                  parameter values(s).
MPI_T_ERR_INVALID_NAME    73      The variable or category name is
MPI_ERR_LASTCODE          93      Last error code.

Table of Contents

« Return to documentation listing