📄 mpi.h.in
字号:
/* * Since these values are arbitrary to Open MPI, we might as well make * them the same as ROMIO for ease of mapping. These values taken * from ROMIO's mpio.h file. */#define MPI_MODE_CREATE 1 /* ADIO_CREATE */ #define MPI_MODE_RDONLY 2 /* ADIO_RDONLY */#define MPI_MODE_WRONLY 4 /* ADIO_WRONLY */#define MPI_MODE_RDWR 8 /* ADIO_RDWR */#define MPI_MODE_DELETE_ON_CLOSE 16 /* ADIO_DELETE_ON_CLOSE */#define MPI_MODE_UNIQUE_OPEN 32 /* ADIO_UNIQUE_OPEN */#define MPI_MODE_EXCL 64 /* ADIO_EXCL */#define MPI_MODE_APPEND 128 /* ADIO_APPEND */#define MPI_MODE_SEQUENTIAL 256 /* ADIO_SEQUENTIAL */#define MPI_DISPLACEMENT_CURRENT -54278278#define MPI_SEEK_SET 600#define MPI_SEEK_CUR 602#define MPI_SEEK_END 604#define MPI_MAX_DATAREP_STRING 128/* * MPI-2 One-Sided Communications asserts */#define MPI_MODE_NOCHECK 1#define MPI_MODE_NOPRECEDE 2#define MPI_MODE_NOPUT 4#define MPI_MODE_NOSTORE 8#define MPI_MODE_NOSUCCEED 16#define MPI_LOCK_EXCLUSIVE 1#define MPI_LOCK_SHARED 2/* * Predefined attribute keyvals * * DO NOT CHANGE THE ORDER WITHOUT ALSO CHANGING THE ORDER IN * src/attribute/attribute_predefined.c and mpif.h.in. */enum { /* MPI-1 */ MPI_TAG_UB, MPI_HOST, MPI_IO, MPI_WTIME_IS_GLOBAL, /* MPI-2 */ MPI_APPNUM, MPI_LASTUSEDCODE, MPI_UNIVERSE_SIZE, MPI_WIN_BASE, MPI_WIN_SIZE, MPI_WIN_DISP_UNIT, /* Even though these four are IMPI attributes, they need to be there for all MPI jobs */ IMPI_CLIENT_SIZE, IMPI_CLIENT_COLOR, IMPI_HOST_SIZE, IMPI_HOST_COLOR};/* * Error classes and codes * Do not change the values of these without also modifying mpif.h.in. */#define MPI_SUCCESS 0 #define MPI_ERR_BUFFER 1#define MPI_ERR_COUNT 2#define MPI_ERR_TYPE 3#define MPI_ERR_TAG 4#define MPI_ERR_COMM 5#define MPI_ERR_RANK 6#define MPI_ERR_REQUEST 7#define MPI_ERR_ROOT 8#define MPI_ERR_GROUP 9#define MPI_ERR_OP 10#define MPI_ERR_TOPOLOGY 11#define MPI_ERR_DIMS 12#define MPI_ERR_ARG 13#define MPI_ERR_UNKNOWN 14#define MPI_ERR_TRUNCATE 15#define MPI_ERR_OTHER 16#define MPI_ERR_INTERN 17#define MPI_ERR_IN_STATUS 18#define MPI_ERR_PENDING 19#define MPI_ERR_ACCESS 20#define MPI_ERR_AMODE 21#define MPI_ERR_ASSERT 22#define MPI_ERR_BAD_FILE 23#define MPI_ERR_BASE 24#define MPI_ERR_CONVERSION 25#define MPI_ERR_DISP 26#define MPI_ERR_DUP_DATAREP 27#define MPI_ERR_FILE_EXISTS 28#define MPI_ERR_FILE_IN_USE 29#define MPI_ERR_FILE 30#define MPI_ERR_INFO_KEY 31#define MPI_ERR_INFO_NOKEY 32#define MPI_ERR_INFO_VALUE 33#define MPI_ERR_INFO 34#define MPI_ERR_IO 35#define MPI_ERR_KEYVAL 36#define MPI_ERR_LOCKTYPE 37#define MPI_ERR_NAME 38#define MPI_ERR_NO_MEM 39#define MPI_ERR_NOT_SAME 40#define MPI_ERR_NO_SPACE 41#define MPI_ERR_NO_SUCH_FILE 42#define MPI_ERR_PORT 43#define MPI_ERR_QUOTA 44#define MPI_ERR_READ_ONLY 45#define MPI_ERR_RMA_CONFLICT 46#define MPI_ERR_RMA_SYNC 47#define MPI_ERR_SERVICE 48#define MPI_ERR_SIZE 49#define MPI_ERR_SPAWN 50#define MPI_ERR_UNSUPPORTED_DATAREP 51#define MPI_ERR_UNSUPPORTED_OPERATION 52#define MPI_ERR_WIN 53#define MPI_ERR_LASTCODE 54#define MPI_ERR_SYSRESOURCE -2/* * Comparison results. Don't change the order of these, the group * comparison functions rely on it. * Do not change the order of these without also modifying mpif.h.in. */enum { MPI_IDENT, MPI_CONGRUENT, MPI_SIMILAR, MPI_UNEQUAL};/* * MPI_Init_thread constants * Do not change the order of these without also modifying mpif.h.in. */enum { MPI_THREAD_SINGLE, MPI_THREAD_FUNNELED, MPI_THREAD_SERIALIZED, MPI_THREAD_MULTIPLE};/* * Datatype combiners. * Do not change the order of these without also modifying mpif.h.in. */enum { MPI_COMBINER_NAMED, MPI_COMBINER_DUP, MPI_COMBINER_CONTIGUOUS, MPI_COMBINER_VECTOR, MPI_COMBINER_HVECTOR_INTEGER, MPI_COMBINER_HVECTOR, MPI_COMBINER_INDEXED, MPI_COMBINER_HINDEXED_INTEGER, MPI_COMBINER_HINDEXED, MPI_COMBINER_INDEXED_BLOCK, MPI_COMBINER_STRUCT_INTEGER, MPI_COMBINER_STRUCT, MPI_COMBINER_SUBARRAY, MPI_COMBINER_DARRAY, MPI_COMBINER_F90_REAL, MPI_COMBINER_F90_COMPLEX, MPI_COMBINER_F90_INTEGER, MPI_COMBINER_RESIZED};/* * NULL handles */#define MPI_GROUP_NULL (&ompi_mpi_group_null)#define MPI_COMM_NULL (&ompi_mpi_comm_null)#define MPI_REQUEST_NULL (&ompi_request_null)#define MPI_OP_NULL (&ompi_mpi_op_null)#define MPI_ERRHANDLER_NULL (&ompi_mpi_errhandler_null)#define MPI_INFO_NULL (&ompi_mpi_info_null)#define MPI_WIN_NULL (&ompi_mpi_win_null)#define MPI_FILE_NULL (&ompi_mpi_file_null)#define MPI_STATUS_IGNORE ((MPI_Status *) 0)#define MPI_STATUSES_IGNORE ((MPI_Status *) 0)/* MPI-2 specifies that the name "MPI_TYPE_NULL_DELETE_FN" (and all related friends) must be accessible in C, C++, and Fortran. This is unworkable if the back-end Fortran compiler uses all caps for its linker symbol convention -- it results in two functions with different signatures that have the same name (i.e., both C and Fortran use the symbol MPI_TYPE_NULL_DELETE_FN). So we have to #define the C names to be something else, so that they names are *accessed* through MPI_TYPE_NULL_DELETE_FN, but their actual symbol name is different. However, this file is included when the fortran wrapper functions are compiled in Open MPI, so we do *not* want these #defines in this case (i.e., we need the Fortran wrapper function to be compiled as MPI_TYPE_NULL_DELETE_FN). So add some #if kinds of protection for this case. */#if !defined(OMPI_COMPILING_F77_WRAPPERS)#define MPI_NULL_DELETE_FN OMPI_C_MPI_NULL_DELETE_FN#define MPI_NULL_COPY_FN OMPI_C_MPI_NULL_COPY_FN#define MPI_DUP_FN OMPI_C_MPI_DUP_FN#define MPI_TYPE_NULL_DELETE_FN OMPI_C_MPI_TYPE_NULL_DELETE_FN#define MPI_TYPE_NULL_COPY_FN OMPI_C_MPI_TYPE_NULL_COPY_FN#define MPI_TYPE_DUP_FN OMPI_C_MPI_TYPE_DUP_FN#define MPI_COMM_NULL_DELETE_FN OMPI_C_MPI_COMM_NULL_DELETE_FN#define MPI_COMM_NULL_COPY_FN OMPI_C_MPI_COMM_NULL_COPY_FN#define MPI_COMM_DUP_FN OMPI_C_MPI_COMM_DUP_FN#define MPI_WIN_NULL_DELETE_FN OMPI_C_MPI_WIN_NULL_DELETE_FN#define MPI_WIN_NULL_COPY_FN OMPI_C_MPI_WIN_NULL_COPY_FN#define MPI_WIN_DUP_FN OMPI_C_MPI_WIN_DUP_FN#endifOMPI_DECLSPEC int OMPI_C_MPI_TYPE_NULL_DELETE_FN( MPI_Datatype datatype, int type_keyval, void* attribute_val_out, void* extra_state );OMPI_DECLSPEC int OMPI_C_MPI_TYPE_NULL_COPY_FN( MPI_Datatype datatype, int type_keyval, void* extra_state, void* attribute_val_in, void* attribute_val_out, int* flag );OMPI_DECLSPEC int OMPI_C_MPI_TYPE_DUP_FN( MPI_Datatype datatype, int type_keyval, void* extra_state, void* attribute_val_in, void* attribute_val_out, int* flag );OMPI_DECLSPEC int OMPI_C_MPI_COMM_NULL_DELETE_FN( MPI_Comm comm, int comm_keyval, void* attribute_val_out, void* extra_state );OMPI_DECLSPEC int OMPI_C_MPI_COMM_NULL_COPY_FN( MPI_Comm comm, int comm_keyval, void* extra_state, void* attribute_val_in, void* attribute_val_out, int* flag );OMPI_DECLSPEC int OMPI_C_MPI_COMM_DUP_FN( MPI_Comm comm, int comm_keyval, void* extra_state, void* attribute_val_in,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -