Constants - Meaning of MPI's defined constants
Note that the Fortran types should only be used in Fortran
programs, and the C types should only be used in C programs. For example, it
is in error to use MPI_INT for a Fortran INTEGER. Datatypes are of
type MPI_Datatype in C, type INTEGER in Fortran, and
Type(MPI_Datatype) in Fortran08
Communicators are of type MPI_Comm in C, INTEGER in
Fortran, and Type(MPI_Comm) in Fortran08
- MPI_COMM_WORLD
- - Contains all of the processes
- MPI_COMM_SELF
- - Contains only the calling process
Groups are of type MPI_Group in C, INTEGER in
Fortran, and Type(MPI_Group) in Fortran08
- MPI_GROUP_EMPTY
- - A group containing no members.
The collective combination operations (e.g., MPI_REDUCE ,
MPI_ALLREDUCE , MPI_REDUCE_SCATTER , and MPI_SCAN )
take a combination operation. This operation is of type MPI_Op in C
and of type INTEGER in Fortran. The predefined operations are
- MPI_MAX
- - return the maximum
- MPI_MIN
- - return the minimum
- MPI_SUM
- - return the sum
- MPI_PROD
- - return the product
- MPI_LAND
- - return the logical and
- MPI_BAND
- - return the bitwise and
- MPI_LOR
- - return the logical or
- MPI_BOR
- - return the bitwise of
- MPI_LXOR
- - return the logical exclusive or
- MPI_BXOR
- - return the bitwise exclusive or
- MPI_MINLOC
- - return the minimum and the location (actually, the value of the second
element of the structure where the minimum of the first is found)
- MPI_MAXLOC
- - return the maximum and the location
- MPI_REPLACE
- - replace b with a
- MPI_NO_OP
- - perform no operation
The reduction functions ( MPI_Op ) do not return an error
value. As a result, if the functions detect an error, all they can do is
either call MPI_Abort or silently skip the problem. Thus, if you
change the error handler from MPI_ERRORS_ARE_FATAL to something else,
for example, MPI_ERRORS_RETURN , then no error may be indicated.
The reason for this is the performance problems in ensuring that
all collective routines return the same error value.
Note that not all datatypes are valid for these functions. For
example, MPI_COMPLEX is not valid for MPI_MAX and
MPI_MIN . In addition, the MPI 1.1 standard did not include the C
types MPI_CHAR and MPI_UNSIGNED_CHAR among the lists of
arithmetic types for operations like MPI_SUM . However, since the C
type char is an integer type (like short ), it should have
been included. The MPI Forum will probably include char and
unsigned char as a clarification to MPI 1.1; until then, users are
advised that MPI implementations may not accept MPI_CHAR and
MPI_UNSIGNED_CHAR as valid datatypes for MPI_SUM ,
MPI_PROD , etc. MPICH does allow these datatypes.
These are the same in C and Fortran
- MPI_TAG_UB
- - Largest tag value
- MPI_HOST
- - Rank of process that is host, if any
- MPI_IO
- - Rank of process that can do I/O
- MPI_WTIME_IS_GLOBAL
- - Has value 1 if MPI_WTIME is globally synchronized.
- MPI_UNIVERSE_SIZE
- - Number of available processes. See the standard for a description of
limitations on this value
- MPI_LASTUSEDCODE
- - Last used MPI error code (check - code or class?)
- MPI_APPNUM
- - Application number, starting from 0. See the standard for
MPI_COMM_SPAWN_MULTIPLE and mpiexec for details
- MPI_WIN_SEPARATE
- - Separate public and private copies of window memory
- MPI_WIN_UNIFIED
- - The public and private copies are identical (by which we mean that
updates are eventually observed without additional RMA operations)
- MPI_LOCK_EXCLUSIVE
- - Only one process at a time will execute accesses within the lock
- MPI_LOCK_SHARED
- - Not exclusive; multiple processes may execute accesses within the lock
See section 11.5 in MPI 3.1 for a detailed description of each of
these assertion values.
- MPI_MODE_NOCHECK
- - The matching calls to MPI_WIN_POST or MPI_WIN_START have already
completed, or no process holds or will attempt to acquire, a conflicting
lock.
- MPI_MODE_NOSTORE
- - The local window has not been updated by stores since the last
synchronization
- MPI_MODE_NOPUT
- - The local window will not be updated by put or accumulate until the next
synchronization
- MPI_MODE_NOPRECEDE
- - The fence does not complete any locally issued RMA calls
- MPI_MODE_NOSUCCEED
- - The fence does not start any locally issued RMA calls
The MPI_Status datatype is a structure in C. The three
elements for use by programmers are
- MPI_SOURCE
- - Who sent the message
- MPI_TAG
- - What tag the message was sent with
- MPI_ERROR
- - Any error return (only when the error returned by the routine has error
class MPI_ERR_IN_STATUS )
- MPI_STATUS_IGNORE
- - Ignore a single MPI_Status argument
- MPI_STATUSES_IGNORE
- - Ignore an array of MPI_Status
- MPI_T_VERBOSITY_USER_BASIC
- - Basic information of interest to users
- MPI_T_VERBOSITY_USER_DETAIL
- - Detailed information of interest to users
- MPI_T_VERBOSITY_USER_ALL
- - All remaining information of interest to users
- MPI_T_VERBOSITY_TUNER_BASIC
- - Basic information required for tuning
- MPI_T_VERBOSITY_TUNER_DETAIL
- - Detailed information required for tuning
- MPI_T_VERBOSITY_TUNER_ALL
- - All remaining information required for tuning
- MPI_T_VERBOSITY_MPIDEV_BASIC
- - Basic information for MPI implementors
- MPI_T_VERBOSITY_MPIDEV_DETAIL
- - Detailed information for MPI implementors
- MPI_T_VERBOSITY_MPIDEV_ALL
- - All remaining information for MPI implementors
- MPI_T_BIND_NO_OBJECT
- - Applies globally to entire MPI process
- MPI_T_BIND_MPI_COMM
- - MPI communicators
- MPI_T_BIND_MPI_DATATYPE
- - MPI datatypes
- MPI_T_BIND_MPI_ERRHANDLER
- - MPI error handlers
- MPI_T_BIND_MPI_FILE
- - MPI file handles
- MPI_T_BIND_MPI_GROUP
- - MPI groups
- MPI_T_BIND_MPI_OP
- - MPI reduction operators
- MPI_T_BIND_MPI_REQUEST
- - MPI requests
- MPI_T_BIND_MPI_WIN
- - MPI windows for one-sided communication
- MPI_T_BIND_MPI_MESSAGE
- - MPI message object
- MPI_T_BIND_MPI_INFO
- - MPI info object
- MPI_T_SCOPE_CONSTANT
- - read-only, value is constant
- MPI_T_SCOPE_READONLY
- - read-only, cannot be written, but can change
- MPI_T_SCOPE_LOCAL
- - may be writeable, writing is a local operation
- MPI_T_SCOPE_GROUP
- - may be writeable, must be done to a group of processes, all processes in
a group must be set to consistent values
- MPI_T_SCOPE_GROUP_EQ
- - may be writeable, must be done to a group of processes, all processes in
a group must be set to the same value
- MPI_T_SCOPE_ALL
- - may be writeable, must be done to all processes, all connected processes
must be set to consistent values
- MPI_T_SCOPE_ALL_EQ
- - may be writeable, must be done to all processes, all connected processes
must be set to the same value
- MPI_T_PVAR_CLASS_STATE
- - set of discrete states (MPI_INT)
- MPI_T_PVAR_CLASS_LEVEL
- - utilization level of a resource
- MPI_T_PVAR_CLASS_SIZE
- - size of a resource
- MPI_T_PVAR_CLASS_PERCENTAGE
- - percentage utilization of a resource
- MPI_T_PVAR_CLASS_HIGHWATERMARK
- - high watermark of a resource
- MPI_T_PVAR_CLASS_LOWWATERMARK
- - low watermark of a resource
- MPI_T_PVAR_CLASS_COUNTER
- - number of occurrences of an event
- MPI_T_PVAR_CLASS_AGGREGATE
- - aggregate value over an event (e.g., sum of all memory allocations)
- MPI_T_PVAR_CLASS_TIMER
- - aggretate time spent executing event
- MPI_T_PVAR_CLASS_GENERIC
- - used for any other time of performance variable
- MPI_Aint
- - C type that holds any valid address.
- MPI_Count
- - C type that holds any valid count.
- MPI_Offset
- - C type that holds any valid file offset.
- MPI_Handler_function
- - C function for handling errors (see MPI_Errhandler_create )
.
- MPI_User_function
- - C function to combine values (see collective operations and
MPI_Op_create )
- MPI_Copy_function
- - Function to copy attributes (see MPI_Keyval_create )
- MPI_Delete_function
- - Function to delete attributes (see MPI_Keyval_create )
- MPI_ERRORS_ARE_FATAL
- - Error handler that forces exit on error
- MPI_ERRORS_RETURN
- - Error handler that returns error codes (as value of MPI routine in C and
through last argument in Fortran)
- MPI_ERRORS_ABORT
- - Error handler that forces exit on error (only aborts local process if
the error handler is invoked on a session)