MPI

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:

   http://www.open-mpi.org

The MPI standards are available at the following URL:

    http://www.mpi-forum.org

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".

ENVIRONMENT

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:

   http://www.open-mpi.org/faq/?category=tuning#mca-params

ERRORS

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             7      Invalid root.
MPI_ERR_GROUP            8      Null group passed to function.
MPI_ERR_OP               9      Invalid operation.
MPI_ERR_TOPOLOGY        10      Invalid topology.

MPI_ERR_DIMS            11      Illegal dimension argument.
MPI_ERR_ARG             12      Invalid argument.
MPI_ERR_UNKNOWN         13      Unknown error.
MPI_ERR_TRUNCATE        14      Message truncated on receive.
MPI_ERR_OTHER           15      Other error; use Error_string.

MPI_ERR_INTERN          16      Internal error code.
MPI_ERR_IN_STATUS       17      Look in status for error value.
MPI_ERR_PENDING         18      Pending request.
MPI_ERR_ACCESS          19      Permission denied.
MPI_ERR_AMODE           20      Unsupported amode passed to open.

MPI_ERR_ASSERT          21      Invalid assert.
MPI_ERR_BAD_FILE        22      Invalid file name (for example,
                                path name too long).
MPI_ERR_BASE            23      Invalid base.
MPI_ERR_CONVERSION      24      An error occurred in a user-supplied
                                data-conversion function.
MPI_ERR_DISP            25      Invalid displacement.

MPI_ERR_DUP_DATAREP     26      Conversion functions could not
                                be registered because a data
                                representation identifier that was
                                already defined was passed to
                                MPI_REGISTER_DATAREP.
MPI_ERR_FILE_EXISTS     27      File exists.
MPI_ERR_FILE_IN_USE     28      File operation could not be
                                completed, as the file is currently
                                open by some process.
MPI_ERR_FILE            29
MPI_ERR_INFO_KEY        30      Illegal info key.

MPI_ERR_INFO_NOKEY      31      No such key.
MPI_ERR_INFO_VALUE      32      Illegal info value.
MPI_ERR_INFO            33      Invalid info object.
MPI_ERR_IO              34      I/O error.
MPI_ERR_KEYVAL          35      Illegal key value.

MPI_ERR_LOCKTYPE        36      Invalid locktype.
MPI_ERR_NAME            37      Name not found.
MPI_ERR_NO_MEM          38      Memory exhausted.
MPI_ERR_NOT_SAME        39
MPI_ERR_NO_SPACE        40      Not enough space.

MPI_ERR_NO_SUCH_FILE    41      File (or directory) does not exist.
MPI_ERR_PORT            42      Invalid port.
MPI_ERR_QUOTA           43      Quota exceeded.
MPI_ERR_READ_ONLY       44      Read-only file system.
MPI_ERR_RMA_CONFLICT    45      Conflicting accesses to window.

MPI_ERR_RMA_SYNC        46      Erroneous RMA synchronization.
MPI_ERR_SERVICE         47      Invalid publish/unpublish.
MPI_ERR_SIZE            48      Invalid size.
MPI_ERR_SPAWN           49      Error spawning.
MPI_ERR_UNSUPPORTED_DATAREP
                        50      Unsupported datarep passed to
                                MPI_File_set_view.

MPI_ERR_UNSUPPORTED_OPERATION
                        51      Unsupported operation, such as
                                seeking on a file that supports
                                only sequential access.
MPI_ERR_WIN             52      Invalid window.
MPI_ERR_LASTCODE        53      Last error code.

MPI_ERR_SYSRESOURCE     -2      Out of resources