1! 2! Copyright (C) by Argonne National Laboratory 3! See COPYRIGHT in top-level directory 4! 5 6module mpi_f08_compile_constants 7 8use,intrinsic :: iso_c_binding, only: c_int 9use :: mpi_f08_types 10use :: mpi_c_interface_types, only: c_Aint, c_Count, c_Offset 11 12!==================================================================== 13! Make names brought in from other modules private if they should not 14! be exposed in program units using this module 15!==================================================================== 16 17! Make names from iso_c_binding private 18private :: c_int 19 20! Make names from mpi_c_interface_types private 21private :: c_Aint 22private :: c_Count 23private :: c_Offset 24 25 26! MPI version 27integer, parameter :: MPI_VERSION = 3 28integer, parameter :: MPI_SUBVERSION = 1 29 30! Error classes 31integer, parameter :: MPI_SUCCESS = 0 32integer, parameter :: MPI_ERR_BUFFER = 1 33integer, parameter :: MPI_ERR_COUNT = 2 34integer, parameter :: MPI_ERR_TYPE = 3 35integer, parameter :: MPI_ERR_TAG = 4 36integer, parameter :: MPI_ERR_COMM = 5 37integer, parameter :: MPI_ERR_RANK = 6 38integer, parameter :: MPI_ERR_ROOT = 7 39integer, parameter :: MPI_ERR_GROUP = 8 40integer, parameter :: MPI_ERR_OP = 9 41integer, parameter :: MPI_ERR_TOPOLOGY = 10 42integer, parameter :: MPI_ERR_DIMS = 11 43integer, parameter :: MPI_ERR_ARG = 12 44integer, parameter :: MPI_ERR_UNKNOWN = 13 45integer, parameter :: MPI_ERR_TRUNCATE = 14 46integer, parameter :: MPI_ERR_OTHER = 15 47integer, parameter :: MPI_ERR_INTERN = 16 48integer, parameter :: MPI_ERR_IN_STATUS = 17 49integer, parameter :: MPI_ERR_PENDING = 18 50integer, parameter :: MPI_ERR_REQUEST = 19 51integer, parameter :: MPI_ERR_ACCESS = 20 52integer, parameter :: MPI_ERR_AMODE = 21 53integer, parameter :: MPI_ERR_BAD_FILE = 22 54integer, parameter :: MPI_ERR_CONVERSION = 23 55integer, parameter :: MPI_ERR_DUP_DATAREP = 24 56integer, parameter :: MPI_ERR_FILE_EXISTS = 25 57integer, parameter :: MPI_ERR_FILE_IN_USE = 26 58integer, parameter :: MPI_ERR_FILE = 27 59integer, parameter :: MPI_ERR_INFO = 28 60integer, parameter :: MPI_ERR_INFO_KEY = 29 61integer, parameter :: MPI_ERR_INFO_VALUE = 30 62integer, parameter :: MPI_ERR_INFO_NOKEY = 31 63integer, parameter :: MPI_ERR_IO = 32 64integer, parameter :: MPI_ERR_NAME = 33 65integer, parameter :: MPI_ERR_NO_MEM = 34 66integer, parameter :: MPI_ERR_NOT_SAME = 35 67integer, parameter :: MPI_ERR_NO_SPACE = 36 68integer, parameter :: MPI_ERR_NO_SUCH_FILE = 37 69integer, parameter :: MPI_ERR_PORT = 38 70integer, parameter :: MPI_ERR_QUOTA = 39 71integer, parameter :: MPI_ERR_READ_ONLY = 40 72integer, parameter :: MPI_ERR_SERVICE = 41 73integer, parameter :: MPI_ERR_SPAWN = 42 74integer, parameter :: MPI_ERR_UNSUPPORTED_DATAREP = 43 75integer, parameter :: MPI_ERR_UNSUPPORTED_OPERATION = 44 76integer, parameter :: MPI_ERR_WIN = 45 77integer, parameter :: MPI_ERR_BASE = 46 78integer, parameter :: MPI_ERR_LOCKTYPE = 47 79integer, parameter :: MPI_ERR_KEYVAL = 48 80integer, parameter :: MPI_ERR_RMA_CONFLICT = 49 81integer, parameter :: MPI_ERR_RMA_SYNC = 50 82integer, parameter :: MPI_ERR_SIZE = 51 83integer, parameter :: MPI_ERR_DISP = 52 84integer, parameter :: MPI_ERR_ASSERT = 53 85integer, parameter :: MPI_ERR_RMA_RANGE = 55 86integer, parameter :: MPI_ERR_RMA_ATTACH = 56 87integer, parameter :: MPI_ERR_RMA_SHARED = 57 88integer, parameter :: MPI_ERR_RMA_FLAVOR = 58 89integer, parameter :: MPI_ERR_LASTCODE = 1073741823 ! 0x3fffffff 90 91! Predefined error handlers 92type(MPI_Errhandler), parameter :: MPI_ERRORS_ARE_FATAL = MPI_Errhandler(1409286144) ! 0x54000000 93type(MPI_Errhandler), parameter :: MPI_ERRORS_RETURN = MPI_Errhandler(1409286145) ! 0x54000001 94 95! Compare operations 96integer, parameter :: MPI_IDENT = 0 97integer, parameter :: MPI_CONGRUENT = 1 98integer, parameter :: MPI_SIMILAR = 2 99integer, parameter :: MPI_UNEQUAL = 3 100 101! Window flavors and models 102integer, parameter :: MPI_WIN_FLAVOR_CREATE = 1 103integer, parameter :: MPI_WIN_FLAVOR_ALLOCATE = 2 104integer, parameter :: MPI_WIN_FLAVOR_DYNAMIC = 3 105integer, parameter :: MPI_WIN_FLAVOR_SHARED = 4 106integer, parameter :: MPI_WIN_SEPARATE = 1 107integer, parameter :: MPI_WIN_UNIFIED = 2 108 109! Collective operations 110type(MPI_Op), parameter :: MPI_MAX = MPI_Op(1476395009) ! 0x58000001 111type(MPI_Op), parameter :: MPI_MIN = MPI_Op(1476395010) ! 0x58000002 112type(MPI_Op), parameter :: MPI_SUM = MPI_Op(1476395011) ! 0x58000003 113type(MPI_Op), parameter :: MPI_PROD = MPI_Op(1476395012) ! 0x58000004 114type(MPI_Op), parameter :: MPI_LAND = MPI_Op(1476395013) ! 0x58000005 115type(MPI_Op), parameter :: MPI_BAND = MPI_Op(1476395014) ! 0x58000006 116type(MPI_Op), parameter :: MPI_LOR = MPI_Op(1476395015) ! 0x58000007 117type(MPI_Op), parameter :: MPI_BOR = MPI_Op(1476395016) ! 0x58000008 118type(MPI_Op), parameter :: MPI_LXOR = MPI_Op(1476395017) ! 0x58000009 119type(MPI_Op), parameter :: MPI_BXOR = MPI_Op(1476395018) ! 0x5800000a 120type(MPI_Op), parameter :: MPI_MINLOC = MPI_Op(1476395019) ! 0x5800000b 121type(MPI_Op), parameter :: MPI_MAXLOC = MPI_Op(1476395020) ! 0x5800000c 122type(MPI_Op), parameter :: MPI_REPLACE = MPI_Op(1476395021) ! 0x5800000d 123type(MPI_Op), parameter :: MPI_NO_OP = MPI_Op(1476395022) ! 0x5800000e 124 125! Predefined comms and null handles 126type(MPI_Comm), parameter :: MPI_COMM_WORLD = MPI_Comm(1140850688) ! 0x44000000 127type(MPI_Comm), parameter :: MPI_COMM_SELF = MPI_Comm(1140850689) ! 0x44000001 128type(MPI_Comm), parameter :: MPI_COMM_NULL = MPI_Comm(67108864) ! 0x04000000 129type(MPI_Group), parameter :: MPI_GROUP_EMPTY = MPI_Group(1207959552) ! 0x48000000 130type(MPI_Group), parameter :: MPI_GROUP_NULL = MPI_Group(134217728) ! 0x08000000 131type(MPI_Win), parameter :: MPI_WIN_NULL = MPI_Win(536870912) ! 0x20000000 132type(MPI_File), parameter :: MPI_FILE_NULL = MPI_File(0) 133type(MPI_Op), parameter :: MPI_OP_NULL = MPI_Op(402653184) ! 0x18000000 134type(MPI_Datatype), parameter :: MPI_DATATYPE_NULL = MPI_Datatype(201326592) ! 0x0c000000 135type(MPI_Request), parameter :: MPI_REQUEST_NULL = MPI_Request(738197504) ! 0x2c000000 136type(MPI_Errhandler), parameter :: MPI_ERRHANDLER_NULL = MPI_Errhandler(335544320) ! 0x14000000 137type(MPI_Info), parameter :: MPI_INFO_NULL = MPI_Info(469762048) ! 0x1c000000 138type(MPI_Info), parameter :: MPI_INFO_ENV = MPI_Info(1543503873) ! 0x5c000001 139type(MPI_Message), parameter :: MPI_MESSAGE_NULL = MPI_Message(738197504) ! 0x2c000000 140type(MPI_Message), parameter :: MPI_MESSAGE_NO_PROC = MPI_Message(1811939328) ! 0x6c000000 141 142! Attributes 143integer, parameter :: MPI_TAG_UB = 1681915906 ! 0x64400002 144integer, parameter :: MPI_HOST = 1681915908 ! 0x64400004 145integer, parameter :: MPI_IO = 1681915910 ! 0x64400006 146integer, parameter :: MPI_WTIME_IS_GLOBAL = 1681915912 ! 0x64400008 147integer, parameter :: MPI_UNIVERSE_SIZE = 1681915914 ! 0x6440000a 148integer, parameter :: MPI_LASTUSEDCODE = 1681915916 ! 0x6440000c 149integer, parameter :: MPI_APPNUM = 1681915918 ! 0x6440000e 150integer, parameter :: MPI_WIN_BASE = 1711276034 ! 0x66000002 151integer, parameter :: MPI_WIN_SIZE = 1711276036 ! 0x66000004 152integer, parameter :: MPI_WIN_DISP_UNIT = 1711276038 ! 0x66000006 153integer, parameter :: MPI_WIN_CREATE_FLAVOR = 1711276040 ! 0x66000008 154integer, parameter :: MPI_WIN_MODEL = 1711276042 ! 0x6600000a 155 156! String sizes 157integer, parameter :: MPI_MAX_ERROR_STRING = @MPI_MAX_ERROR_STRING@ 158integer, parameter :: MPI_MAX_PORT_NAME = 256 159integer, parameter :: MPI_MAX_OBJECT_NAME = 128 160integer, parameter :: MPI_MAX_INFO_KEY = 255 161integer, parameter :: MPI_MAX_INFO_VAL = 1024 162integer, parameter :: MPI_MAX_PROCESSOR_NAME = @MPI_MAX_PROCESSOR_NAME@ 163integer, parameter :: MPI_MAX_DATAREP_STRING = 128 164integer, parameter :: MPI_MAX_LIBRARY_VERSION_STRING = @MPI_MAX_LIBRARY_VERSION_STRING@ 165 166! Predefined constants 167integer, parameter :: MPI_UNDEFINED = -32766 168integer, parameter :: MPI_KEYVAL_INVALID = 603979776 ! 0x24000000 169integer, parameter :: MPI_BSEND_OVERHEAD = @BSEND_OVERHEAD@ 170integer, parameter :: MPI_PROC_NULL = -1 171integer, parameter :: MPI_ANY_SOURCE = -2 172integer, parameter :: MPI_ANY_TAG = -1 173integer, parameter :: MPI_ROOT = -3 174 175! Topology types 176integer, parameter :: MPI_GRAPH = 1 177integer, parameter :: MPI_CART = 2 178integer, parameter :: MPI_DIST_GRAPH = 3 179 180! RMA lock types 181integer, parameter :: MPI_LOCK_EXCLUSIVE = 234 182integer, parameter :: MPI_LOCK_SHARED = 235 183 184! F08 specific constants 185logical, parameter :: MPI_SUBARRAYS_SUPPORTED = .true. 186logical, parameter :: MPI_ASYNC_PROTECTS_NONBLOCKING = .true. 187 188integer, parameter :: MPI_ADDRESS_KIND = c_Aint 189integer, parameter :: MPI_OFFSET_KIND = c_Offset 190integer, parameter :: MPI_COUNT_KIND = c_Count 191integer, parameter :: MPI_INTEGER_KIND = c_int 192 193! Datatypes 194type(MPI_Datatype), parameter :: MPI_COMPLEX = MPI_Datatype(@MPI_COMPLEX@) 195type(MPI_Datatype), parameter :: MPI_DOUBLE_COMPLEX = MPI_Datatype(@MPI_DOUBLE_COMPLEX@) 196type(MPI_Datatype), parameter :: MPI_LOGICAL = MPI_Datatype(@MPI_LOGICAL@) 197type(MPI_Datatype), parameter :: MPI_REAL = MPI_Datatype(@MPI_REAL@) 198type(MPI_Datatype), parameter :: MPI_DOUBLE_PRECISION = MPI_Datatype(@MPI_DOUBLE_PRECISION@) 199type(MPI_Datatype), parameter :: MPI_INTEGER = MPI_Datatype(@MPI_INTEGER@) 200type(MPI_Datatype), parameter :: MPI_2INTEGER = MPI_Datatype(@MPI_2INTEGER@) 201type(MPI_Datatype), parameter :: MPI_2DOUBLE_PRECISION = MPI_Datatype(@MPI_2DOUBLE_PRECISION@) 202type(MPI_Datatype), parameter :: MPI_2REAL = MPI_Datatype(@MPI_2REAL@) 203type(MPI_Datatype), parameter :: MPI_CHARACTER = MPI_Datatype(@MPI_CHARACTER@) 204 205type(MPI_Datatype), parameter :: MPI_BYTE = MPI_Datatype(@F08_BYTE@) 206type(MPI_Datatype), parameter :: MPI_UB = MPI_Datatype(@F08_UB@) 207type(MPI_Datatype), parameter :: MPI_LB = MPI_Datatype(@F08_LB@) 208type(MPI_Datatype), parameter :: MPI_PACKED = MPI_Datatype(@F08_PACKED@) 209type(MPI_Datatype), parameter :: MPI_INTEGER1 = MPI_Datatype(@F08_INTEGER1@) 210type(MPI_Datatype), parameter :: MPI_INTEGER2 = MPI_Datatype(@F08_INTEGER2@) 211type(MPI_Datatype), parameter :: MPI_INTEGER4 = MPI_Datatype(@F08_INTEGER4@) 212type(MPI_Datatype), parameter :: MPI_INTEGER8 = MPI_Datatype(@F08_INTEGER8@) 213type(MPI_Datatype), parameter :: MPI_INTEGER16 = MPI_Datatype(@F08_INTEGER16@) 214type(MPI_Datatype), parameter :: MPI_REAL4 = MPI_Datatype(@F08_REAL4@) 215type(MPI_Datatype), parameter :: MPI_REAL8 = MPI_Datatype(@F08_REAL8@) 216type(MPI_Datatype), parameter :: MPI_REAL16 = MPI_Datatype(@F08_REAL16@) 217type(MPI_Datatype), parameter :: MPI_COMPLEX8 = MPI_Datatype(@F08_COMPLEX8@) 218type(MPI_Datatype), parameter :: MPI_COMPLEX16 = MPI_Datatype(@F08_COMPLEX16@) 219type(MPI_Datatype), parameter :: MPI_COMPLEX32 = MPI_Datatype(@F08_COMPLEX32@) 220type(MPI_Datatype), parameter :: MPI_CHAR = MPI_Datatype(@F08_CHAR@) 221type(MPI_Datatype), parameter :: MPI_SIGNED_CHAR = MPI_Datatype(@F08_SIGNED_CHAR@) 222type(MPI_Datatype), parameter :: MPI_UNSIGNED_CHAR = MPI_Datatype(@F08_UNSIGNED_CHAR@) 223type(MPI_Datatype), parameter :: MPI_WCHAR = MPI_Datatype(@F08_WCHAR@) 224type(MPI_Datatype), parameter :: MPI_SHORT = MPI_Datatype(@F08_SHORT@) 225type(MPI_Datatype), parameter :: MPI_UNSIGNED_SHORT = MPI_Datatype(@F08_UNSIGNED_SHORT@) 226type(MPI_Datatype), parameter :: MPI_INT = MPI_Datatype(@F08_INT@) 227type(MPI_Datatype), parameter :: MPI_UNSIGNED = MPI_Datatype(@F08_UNSIGNED@) 228type(MPI_Datatype), parameter :: MPI_LONG = MPI_Datatype(@F08_LONG@) 229type(MPI_Datatype), parameter :: MPI_UNSIGNED_LONG = MPI_Datatype(@F08_UNSIGNED_LONG@) 230type(MPI_Datatype), parameter :: MPI_FLOAT = MPI_Datatype(@F08_FLOAT@) 231type(MPI_Datatype), parameter :: MPI_DOUBLE = MPI_Datatype(@F08_DOUBLE@) 232type(MPI_Datatype), parameter :: MPI_LONG_DOUBLE = MPI_Datatype(@F08_LONG_DOUBLE@) 233type(MPI_Datatype), parameter :: MPI_LONG_LONG_INT = MPI_Datatype(@F08_LONG_LONG_INT@) 234type(MPI_Datatype), parameter :: MPI_UNSIGNED_LONG_LONG = MPI_Datatype(@F08_UNSIGNED_LONG_LONG@) 235type(MPI_Datatype), parameter :: MPI_LONG_LONG = MPI_Datatype(@F08_LONG_LONG@) 236type(MPI_Datatype), parameter :: MPI_FLOAT_INT = MPI_Datatype(@F08_FLOAT_INT@) 237type(MPI_Datatype), parameter :: MPI_DOUBLE_INT = MPI_Datatype(@F08_DOUBLE_INT@) 238type(MPI_Datatype), parameter :: MPI_LONG_INT = MPI_Datatype(@F08_LONG_INT@) 239type(MPI_Datatype), parameter :: MPI_SHORT_INT = MPI_Datatype(@F08_SHORT_INT@) 240type(MPI_Datatype), parameter :: MPI_2INT = MPI_Datatype(@F08_2INT@) 241type(MPI_Datatype), parameter :: MPI_LONG_DOUBLE_INT = MPI_Datatype(@F08_LONG_DOUBLE_INT@) 242type(MPI_Datatype), parameter :: MPI_INT8_T = MPI_Datatype(@F08_INT8_T@) 243type(MPI_Datatype), parameter :: MPI_INT16_T = MPI_Datatype(@F08_INT16_T@) 244type(MPI_Datatype), parameter :: MPI_INT32_T = MPI_Datatype(@F08_INT32_T@) 245type(MPI_Datatype), parameter :: MPI_INT64_T = MPI_Datatype(@F08_INT64_T@) 246type(MPI_Datatype), parameter :: MPI_UINT8_T = MPI_Datatype(@F08_UINT8_T@) 247type(MPI_Datatype), parameter :: MPI_UINT16_T = MPI_Datatype(@F08_UINT16_T@) 248type(MPI_Datatype), parameter :: MPI_UINT32_T = MPI_Datatype(@F08_UINT32_T@) 249type(MPI_Datatype), parameter :: MPI_UINT64_T = MPI_Datatype(@F08_UINT64_T@) 250type(MPI_Datatype), parameter :: MPI_C_BOOL = MPI_Datatype(@F08_C_BOOL@) 251type(MPI_Datatype), parameter :: MPI_C_FLOAT_COMPLEX = MPI_Datatype(@F08_C_FLOAT_COMPLEX@) 252type(MPI_Datatype), parameter :: MPI_C_COMPLEX = MPI_Datatype(@F08_C_COMPLEX@) 253type(MPI_Datatype), parameter :: MPI_C_DOUBLE_COMPLEX = MPI_Datatype(@F08_C_DOUBLE_COMPLEX@) 254type(MPI_Datatype), parameter :: MPI_C_LONG_DOUBLE_COMPLEX = MPI_Datatype(@F08_C_LONG_DOUBLE_COMPLEX@) 255type(MPI_Datatype), parameter :: MPI_AINT = MPI_Datatype(@F08_AINT@) 256type(MPI_Datatype), parameter :: MPI_OFFSET = MPI_Datatype(@F08_OFFSET@) 257type(MPI_Datatype), parameter :: MPI_COUNT = MPI_Datatype(@F08_COUNT@) 258type(MPI_Datatype), parameter :: MPI_CXX_BOOL = MPI_Datatype(@F08_CXX_BOOL@) 259type(MPI_Datatype), parameter :: MPI_CXX_FLOAT_COMPLEX = MPI_Datatype(@F08_CXX_FLOAT_COMPLEX@) 260type(MPI_Datatype), parameter :: MPI_CXX_DOUBLE_COMPLEX = MPI_Datatype(@F08_CXX_DOUBLE_COMPLEX@) 261type(MPI_Datatype), parameter :: MPI_CXX_LONG_DOUBLE_COMPLEX = MPI_Datatype(@F08_CXX_LONG_DOUBLE_COMPLEX@) 262 263! Datatype combiners 264integer, parameter :: MPI_COMBINER_NAMED = 1 265integer, parameter :: MPI_COMBINER_DUP = 2 266integer, parameter :: MPI_COMBINER_CONTIGUOUS = 3 267integer, parameter :: MPI_COMBINER_VECTOR = 4 268integer, parameter :: MPI_COMBINER_HVECTOR_INTEGER = 5 269integer, parameter :: MPI_COMBINER_HVECTOR = 6 270integer, parameter :: MPI_COMBINER_INDEXED = 7 271integer, parameter :: MPI_COMBINER_HINDEXED_INTEGER = 8 272integer, parameter :: MPI_COMBINER_HINDEXED = 9 273integer, parameter :: MPI_COMBINER_INDEXED_BLOCK = 10 274integer, parameter :: MPI_COMBINER_STRUCT_INTEGER = 11 275integer, parameter :: MPI_COMBINER_STRUCT = 12 276integer, parameter :: MPI_COMBINER_SUBARRAY = 13 277integer, parameter :: MPI_COMBINER_DARRAY = 14 278integer, parameter :: MPI_COMBINER_F90_REAL = 15 279integer, parameter :: MPI_COMBINER_F90_COMPLEX = 16 280integer, parameter :: MPI_COMBINER_F90_INTEGER = 17 281integer, parameter :: MPI_COMBINER_RESIZED = 18 282integer, parameter :: MPI_COMBINER_HINDEXED_BLOCK = 19 283 284integer, parameter :: MPI_TYPECLASS_REAL = 1 285integer, parameter :: MPI_TYPECLASS_INTEGER = 2 286integer, parameter :: MPI_TYPECLASS_COMPLEX = 3 287 288integer, parameter :: MPI_MODE_NOCHECK = 1024 289integer, parameter :: MPI_MODE_NOSTORE = 2048 290integer, parameter :: MPI_MODE_NOPUT = 4096 291integer, parameter :: MPI_MODE_NOPRECEDE = 8192 292integer, parameter :: MPI_MODE_NOSUCCEED = 16384 293 294integer, parameter :: MPI_COMM_TYPE_SHARED = 1 295 296integer, parameter :: MPI_THREAD_SINGLE = 0 297integer, parameter :: MPI_THREAD_FUNNELED = 1 298integer, parameter :: MPI_THREAD_SERIALIZED = 2 299integer, parameter :: MPI_THREAD_MULTIPLE = 3 300 301integer, parameter :: MPI_MODE_RDONLY = 2 302integer, parameter :: MPI_MODE_RDWR = 8 303integer, parameter :: MPI_MODE_WRONLY = 4 304integer, parameter :: MPI_MODE_DELETE_ON_CLOSE = 16 305integer, parameter :: MPI_MODE_UNIQUE_OPEN = 32 306integer, parameter :: MPI_MODE_CREATE = 1 307integer, parameter :: MPI_MODE_EXCL = 64 308integer, parameter :: MPI_MODE_APPEND = 128 309integer, parameter :: MPI_MODE_SEQUENTIAL = 256 310 311integer, parameter :: MPI_SEEK_SET = 600 312integer, parameter :: MPI_SEEK_CUR = 602 313integer, parameter :: MPI_SEEK_END = 604 314 315integer, parameter :: MPI_ORDER_C = 56 316integer, parameter :: MPI_ORDER_FORTRAN = 57 317 318integer, parameter :: MPI_DISTRIBUTE_BLOCK = 121 319integer, parameter :: MPI_DISTRIBUTE_CYCLIC = 122 320integer, parameter :: MPI_DISTRIBUTE_NONE = 123 321integer, parameter :: MPI_DISTRIBUTE_DFLT_DARG = -49767 322 323integer(kind=MPI_OFFSET_KIND), parameter :: MPI_DISPLACEMENT_CURRENT = -54278278 324end module mpi_f08_compile_constants 325