10.2. Defined Constants for C and Fortran


Up: Language Binding Next: C bindings for Point-to-Point Communication Previous: Introduction

These are required defined constants, to be defined in the files mpi.h (for C) and mpif.h (for Fortran).


/* return codes (both C and Fortran) */ 
MPI_SUCCESS 
MPI_ERR_BUFFER 
MPI_ERR_COUNT 
MPI_ERR_TYPE 
MPI_ERR_TAG 
MPI_ERR_COMM 
MPI_ERR_RANK 
MPI_ERR_REQUEST 
MPI_ERR_ROOT 
MPI_ERR_GROUP 
MPI_ERR_OP 
MPI_ERR_TOPOLOGY 
MPI_ERR_DIMS 
MPI_ERR_ARG 
MPI_ERR_UNKNOWN 
MPI_ERR_TRUNCATE 
MPI_ERR_OTHER 
MPI_ERR_INTERN 
MPI_PENDING 
MPI_ERR_IN_STATUS 
MPI_ERR_LASTCODE 
 
/* assorted constants (both C and Fortran) */ 
MPI_BOTTOM 
MPI_PROC_NULL 
MPI_ANY_SOURCE 
MPI_ANY_TAG 
MPI_UNDEFINED 
MPI_BSEND_OVERHEAD 
MPI_KEYVAL_INVALID 
 
/* status size and reserved index values (Fortran) */ 
MPI_STATUS_SIZE 
MPI_SOURCE 
MPI_TAG 
MPI_ERROR 
 
/* Error-handling specifiers (C and Fortran) */ 
MPI_ERRORS_ARE_FATAL 
MPI_ERRORS_RETURN 
 
/* Maximum sizes for strings */ 
MPI_MAX_PROCESSOR_NAME 
MPI_MAX_ERROR_STRING 
 
/* elementary datatypes (C) */ 
MPI_CHAR 
MPI_SHORT 
MPI_INT   
MPI_LONG  
MPI_UNSIGNED_CHAR 
MPI_UNSIGNED_SHORT 
MPI_UNSIGNED 
MPI_UNSIGNED_LONG 
MPI_FLOAT  
MPI_DOUBLE  
MPI_LONG_DOUBLE 
MPI_BYTE  
MPI_PACKED 
 
 
 
/* elementary datatypes (Fortran) */ 
MPI_INTEGER 
MPI_REAL 
MPI_DOUBLE_PRECISION 
MPI_COMPLEX 
MPI_DOUBLE_COMPLEX 
MPI_LOGICAL 
MPI_CHARACTER 
MPI_BYTE 
MPI_PACKED 
 
/* datatypes for reduction functions (C) */ 
MPI_FLOAT_INT 
MPI_DOUBLE_INT 
MPI_LONG_INT 
MPI_2INT 
MPI_SHORT_INT 
MPI_LONG_DOUBLE_INT 
 
/* datatypes for reduction functions (Fortran) */ 
MPI_2REAL 
MPI_2DOUBLE_PRECISION 
MPI_2INTEGER 
 
/* optional datatypes (Fortran) */ 
MPI_INTEGER1 
MPI_INTEGER2 
MPI_INTEGER4 
MPI_REAL2 
MPI_REAL4 
MPI_REAL8 
 
/* optional datatypes (C) */ 
MPI_LONG_LONG_INT 
 
/* special datatypes for constructing derived datatypes 
MPI_UB 
MPI_LB 
 
/* reserved communicators (C and Fortran) */ 
MPI_COMM_WORLD 
MPI_COMM_SELF 
 
/* results of communicator and group comparisons */ 
 
MPI_IDENT 
MPI_CONGRUENT 
MPI_SIMILAR 
MPI_UNEQUAL 
 
/* environmental inquiry keys (C and Fortran) */ 
MPI_TAG_UB 
MPI_IO 
MPI_HOST 
MPI_WTIME_IS_GLOBAL 
 
/* collective operations (C and Fortran) */ 
MPI_MAX 
MPI_MIN 
MPI_SUM 
MPI_PROD 
MPI_MAXLOC 
MPI_MINLOC 
MPI_BAND 
MPI_BOR 
MPI_BXOR 
MPI_LAND 
MPI_LOR 
MPI_LXOR 
 
/* Null handles */ 
MPI_GROUP_NULL 
MPI_COMM_NULL 
MPI_DATATYPE_NULL 
MPI_REQUEST_NULL 
MPI_OP_NULL 
MPI_ERRHANDLER_NULL 
 
/* Empty group */ 
MPI_GROUP_EMPTY 
 
/* topologies (C and Fortran) */ 
MPI_GRAPH 
MPI_CART 
 
The following are defined C type definitions, also included in the file mpi.h.


/* opaque types (C) */ 
MPI_Aint 
MPI_Status 
 
/* handles to assorted structures (C) */ 
MPI_Group 
MPI_Comm 
MPI_Datatype 
MPI_Request 
MPI_Op 
 
/* prototypes for user-defined functions (C) */ 
typedef int  MPI_Copy_function(MPI_Comm oldcomm, int keyval, 
                    void *extra_state, void *attribute_val_in, 
                    void *attribute_val_out, int *flag); 
typedef int  MPI_Delete_function(MPI_Comm comm, int keyval, 
                          void *attribute_val, void *extra_state) 
typedef void MPI_Handler_function(MPI_Comm *, int *, ...); 
typedef void MPI_User_function( void *invec, void *inoutvec, int *len, 
                      MPI_Datatype *datatype); 
For Fortran, here are examples of how each of the user-defined functions should be declared.

The user-function argument to MPI_OP_CREATE should be declared like this:

FUNCTION USER_FUNCTION( INVEC(*), INOUTVEC(*), LEN, TYPE) 
<type> INVEC(LEN), INOUTVEC(LEN) 
 INTEGER LEN, TYPE 
The copy-function argument to MPI_KEYVAL_CREATE should be declared like this:
 PROCEDURE COPY_FUNCTION(OLDCOMM, KEYVAL, EXTRA_STATE, 
               ATTRIBUTE_VAL_IN, ATTRIBUTE_VAL_OUT, FLAG, IERR) 
 INTEGER OLDCOMM, KEYVAL, EXTRA_STATE, ATTRIBUTE_VAL_IN, 
         ATTRIBUTE_VAL_OUT, IERR 
 LOGICAL FLAG 
The delete-function argument to MPI_KEYVAL_CREATE should be declared like this:
PROCEDURE DELETE_FUNCTION(COMM, KEYVAL, ATTRIBUTE_VAL, EXTRA_STATE, IERR) 
 INTEGER COMM, KEYVAL, ATTRIBUTE_VAL, EXTRA_STATE, IERR 



Up: Language Binding Next: C bindings for Point-to-Point Communication Previous: Introduction


Return to MPI 1.1 Standard Index
Return to MPI 2.0 Standard Index
Return to MPI Forum Home Page

MPI-1.1 of June 12, 1995
HTML Generated on November 1, 2000