Open jeffhammond opened 1 year ago
! The constants that cannot be used in initialization expressions or assignments in Fortran are as follows:
! Buffer address sentinels
integer :: MPI_BOTTOM = 0
integer :: MPI_IN_PLACE = 1
integer :: MPI_ARGV_NULL = 0
integer :: MPI_ARGVS_NULL = 0
integer :: MPI_ERRCODES_IGNORE = -1
integer :: MPI_UNWEIGHTED = -1
integer :: MPI_WEIGHTS_EMPTY = 0
Only MPI_BOTTOM
and MPI_IN_PLACE
are handled right now.
Functions that use the others aren't present yet.
! thread levels
integer, parameter :: MPI_THREAD_SINGLE = 0
integer, parameter :: MPI_THREAD_FUNNELED = 1
integer, parameter :: MPI_THREAD_SERIALIZED = 2
integer, parameter :: MPI_THREAD_MULTIPLE = 3
! comparisons (communicators and groups)
integer, parameter :: MPI_IDENT = 0
integer, parameter :: MPI_CONGRUENT = 1
integer, parameter :: MPI_SIMILAR = 2
integer, parameter :: MPI_UNEQUAL = 3
DONE
! useful handles
type(MPI_Comm), parameter :: MPI_COMM_WORLD = MPI_Comm(MPI_VAL = -1000000)
type(MPI_Comm), parameter :: MPI_COMM_SELF = MPI_Comm(MPI_VAL = -1)
DONE
! NULL handles
type(MPI_Comm), parameter :: MPI_COMM_NULL = MPI_Comm(MPI_VAL = -911)
type(MPI_Datatype), parameter :: MPI_DATATYPE_NULL = MPI_Datatype(MPI_VAL = -911)
type(MPI_File), parameter :: MPI_FILE_NULL = MPI_File(MPI_VAL = -911)
type(MPI_Group), parameter :: MPI_GROUP_NULL = MPI_Group(MPI_VAL = -911)
type(MPI_Info), parameter :: MPI_INFO_NULL = MPI_Info(MPI_VAL = -911)
type(MPI_Message), parameter :: MPI_MESSAGE_NULL = MPI_Message(MPI_VAL = -911)
type(MPI_Op), parameter :: MPI_OP_NULL = MPI_Op(MPI_VAL = -911)
type(MPI_Request), parameter :: MPI_REQUEST_NULL = MPI_Request(MPI_VAL = -911)
type(MPI_Win), parameter :: MPI_WIN_NULL = MPI_Win(MPI_VAL = -911)
DONE
! IGNORE sentinels
type(MPI_Status) :: MPI_STATUS_IGNORE
type(MPI_Status) :: MPI_STATUSES_IGNORE
! use a ridiculously large value that will always be larger than
! what any implementation uses, to avoid having to query the
! underlying implementation
integer, parameter :: MPI_MAX_PROCESSOR_NAME = (1024*1024)
integer, parameter :: MPI_MAX_LIBRARY_VERSION_STRING = (1024*1024)
integer, parameter :: MPI_MAX_ERROR_STRING = (1024*1024)
integer, parameter :: MPI_MAX_DATAREP_STRING = (1024*1024)
integer, parameter :: MPI_MAX_INFO_KEY = (1024*1024)
integer, parameter :: MPI_MAX_INFO_VAL = (1024*1024)
integer, parameter :: MPI_MAX_OBJECT_NAME = (1024*1024)
integer, parameter :: MPI_MAX_PORT_NAME = (1024*1024)
! built-in ops
type(MPI_Op), parameter :: MPI_MAX = MPI_Op(MPI_VAL = -10001)
type(MPI_Op), parameter :: MPI_MIN = MPI_Op(MPI_VAL = -10002)
type(MPI_Op), parameter :: MPI_SUM = MPI_Op(MPI_VAL = -10003)
type(MPI_Op), parameter :: MPI_PROD = MPI_Op(MPI_VAL = -10004)
type(MPI_Op), parameter :: MPI_MAXLOC = MPI_Op(MPI_VAL = -10005)
type(MPI_Op), parameter :: MPI_MINLOC = MPI_Op(MPI_VAL = -10006)
type(MPI_Op), parameter :: MPI_BAND = MPI_Op(MPI_VAL = -10007)
type(MPI_Op), parameter :: MPI_BOR = MPI_Op(MPI_VAL = -10008)
type(MPI_Op), parameter :: MPI_BXOR = MPI_Op(MPI_VAL = -10009)
type(MPI_Op), parameter :: MPI_LAND = MPI_Op(MPI_VAL = -10010)
type(MPI_Op), parameter :: MPI_LOR = MPI_Op(MPI_VAL = -10011)
type(MPI_Op), parameter :: MPI_LXOR = MPI_Op(MPI_VAL = -10012)
type(MPI_Op), parameter :: MPI_REPLACE = MPI_Op(MPI_VAL = -10013)
type(MPI_Op), parameter :: MPI_NO_OP = MPI_Op(MPI_VAL = -10014)
Currently, only these are missing:
MPI_BSEND_OVERHEAD is missing
MPI_KEYVAL_INVALID is missing
MPI_ROOT is missing
MPI_MAX_STRINGTAG_LEN is missing
MPI_MAX_PSET_NAME_LEN is missing
MPI_PACKED is missing
Some constants may be present but not yet supported in convert_constants.h
...
see MPI 4.0 19.1.2