34#define MPI_PROC_NULL (-1)
37#define MPI_ANY_SOURCE (-2)
46#define MPI_ANY_TAG (-1)
49#define MPI_BOTTOM (void *)0
52#define MPI_IN_PLACE NULL
54#define MPI_BSEND_OVERHEAD 0
61#define MPI_ERR_BUFFER 1
62#define MPI_ERR_COUNT 2
68#define MPI_ERR_GROUP 8
70#define MPI_ERR_TOPOLOGY 10
71#define MPI_ERR_DIMS 11
73#define MPI_ERR_UNKNOWN 13
74#define MPI_ERR_TRUNCATE 14
75#define MPI_ERR_OTHER 15
76#define MPI_ERR_INTERN 16
77#define MPI_ERR_IN_STATUS 17
78#define MPI_ERR_PENDING 18
79#define MPI_ERR_INFO 19
80#define MPI_ERR_NO_MEM 20
81#define MPI_ERR_REQUEST 32
82#define MPI_ERR_KEYVAL 33
83#define MPI_ERR_INFO_KEY 34
84#define MPI_ERR_INFO_VALUE 35
85#define MPI_ERR_INFO_NOKEY 36
86#define MPI_ERR_VALUE_TOO_LARGE 37
88#define MPI_ERR_NAME 40
89#define MPI_ERR_PORT 41
90#define MPI_ERR_CONVERSION 42
91#define MPI_ERR_PROC_ABORTED 43
92#define MPI_ERR_SERVICE 44
93#define MPI_ERR_SPAWN 45
95#define MPI_ERR_FILE 64
97#define MPI_ERR_AMODE 66
98#define MPI_ERR_UNSUPPORTED_OPERATION 67
99#define MPI_ERR_UNSUPPORTED_DATAREP 68
100#define MPI_ERR_READ_ONLY 69
101#define MPI_ERR_ACCESS 70
102#define MPI_ERR_DUP_DATAREP 71
103#define MPI_ERR_NO_SUCH_FILE 72
104#define MPI_ERR_NOT_SAME 73
105#define MPI_ERR_BAD_FILE 74
106#define MPI_ERR_FILE_IN_USE 75
107#define MPI_ERR_NO_SPACE 76
108#define MPI_ERR_QUOTA 77
109#define MPI_ERR_FILE_EXISTS 78
111#define MPI_ERR_WIN 92
112#define MPI_ERR_BASE 93
113#define MPI_ERR_SIZE 94
114#define MPI_ERR_DISP 96
115#define MPI_ERR_LOCKTYPE 97
116#define MPI_ERR_ASSERT 98
117#define MPI_ERR_RMA_CONFLICT 99
118#define MPI_ERR_RMA_SYNC 100
119#define MPI_ERR_RMA_RANGE 101
120#define MPI_ERR_RMA_ATTACH 102
121#define MPI_ERR_RMA_SHARED 103
122#define MPI_ERR_RMA_FLAVOR 104
124#define MPI_ERR_SESSION 112
127#define MPI_T_ERR_INVALID 128
128#define MPI_T_ERR_MEMORY 129
129#define MPI_T_ERR_NOT_INITIALIZED 130
130#define MPI_T_ERR_CANNOT_INIT 131
131#define MPI_T_ERR_NOT_ACCESSIBLE 132
132#define MPI_T_ERR_INVALID_INDEX 133
133#define MPI_T_ERR_INVALID_NAME 134
134#define MPI_T_ERR_INVALID_HANDLE 135
135#define MPI_T_ERR_OUT_OF_HANDLES 136
136#define MPI_T_ERR_OUT_OF_SESSIONS 137
137#define MPI_T_ERR_INVALID_SESSION 138
138#define MPI_T_ERR_CVAR_SET_NOT_NOW 139
139#define MPI_T_ERR_CVAR_SET_NEVER 140
140#define MPI_T_ERR_PVAR_NO_STARTSTOP 141
141#define MPI_T_ERR_PVAR_NO_WRITE 142
142#define MPI_T_ERR_PVAR_NO_ATOMIC 143
143#define MPI_T_ERR_NOT_SUPPORTED 144
144#define MPI_T_ERR_INVALID_ITEM 145
146#define MPI_ERR_LASTCODE 160
152#define MPI_UNDEFINED (-2147483647)
153#define MPI_UNDEFINED_RANK MPI_UNDEFINED
158#define MPI_THREAD_SINGLE 0
159#define MPI_THREAD_FUNNELED 1
160#define MPI_THREAD_SERIALIZED 2
161#define MPI_THREAD_MULTIPLE 3
178#define MPI_INFO_NULL ((MPI_Info)0)
180#define MPI_INFO_ENV ((MPI_Info)1)
182#define _NM_MPI_INFO_OFFSET ((MPI_Info)2)
183#define MPI_MAX_INFO_KEY 255
184#define MPI_MAX_INFO_VAL 1024
190#define MPI_STATUS_SIZE 5
205#define MPI_STATUS_IGNORE (MPI_Status *)0
206#define MPI_STATUSES_IGNORE (MPI_Status *)0
219#define MPI_REQUEST_NULL ((MPI_Request)0)
221#define _NM_MPI_REQUEST_OFFSET 1
238#define MPI_MESSAGE_NULL ((MPI_Message)0)
246#define MPI_GROUP_NULL ((MPI_Group)0)
248#define MPI_GROUP_EMPTY ((MPI_Group)1)
250#define _NM_MPI_GROUP_OFFSET 2
256#define MPI_IDENT 0x01
258#define MPI_SIMILAR 0x02
260#define MPI_CONGRUENT 0x03
262#define MPI_UNEQUAL 0x04
270#define MPI_COMM_NULL ((MPI_Comm)0)
272#define MPI_COMM_WORLD ((MPI_Comm)1)
274#define MPI_COMM_SELF ((MPI_Comm)2)
276#define _NM_MPI_COMM_OFFSET 3
280#define MPI_COMM_TYPE_SHARED 1
283#define MPI_GRAPH 0x01
293#define MPI_SESSION_NULL ((MPI_Session)0)
295#define NM_MPI_SESSION_WORLD ((MPI_Session)1)
297#define _NM_MPI_SESSION_OFFSET 2
299#define MPI_MAX_PSET_NAME_LEN 64
306#define MPI_DATATYPE_NULL ((MPI_Datatype)0)
308#define MPI_CHAR ((MPI_Datatype)1)
309#define MPI_UNSIGNED_CHAR ((MPI_Datatype)2)
310#define MPI_SIGNED_CHAR ((MPI_Datatype)3)
311#define MPI_BYTE ((MPI_Datatype)4)
312#define MPI_SHORT ((MPI_Datatype)5)
313#define MPI_UNSIGNED_SHORT ((MPI_Datatype)6)
314#define MPI_INT ((MPI_Datatype)7)
315#define MPI_UNSIGNED ((MPI_Datatype)8)
316#define MPI_LONG ((MPI_Datatype)9)
317#define MPI_UNSIGNED_LONG ((MPI_Datatype)10)
318#define MPI_FLOAT ((MPI_Datatype)11)
319#define MPI_DOUBLE ((MPI_Datatype)12)
320#define MPI_LONG_DOUBLE ((MPI_Datatype)13)
321#define MPI_LONG_LONG_INT ((MPI_Datatype)14)
322#define MPI_LONG_LONG MPI_LONG_LONG_INT
323#define MPI_UNSIGNED_LONG_LONG ((MPI_Datatype)15)
325#define MPI_CHARACTER ((MPI_Datatype)16)
326#define MPI_LOGICAL ((MPI_Datatype)17)
327#define MPI_REAL ((MPI_Datatype)18)
328#define MPI_REAL2 ((MPI_Datatype)19)
329#define MPI_REAL4 ((MPI_Datatype)20)
330#define MPI_REAL8 ((MPI_Datatype)21)
331#define MPI_REAL16 ((MPI_Datatype)22)
332#define MPI_DOUBLE_PRECISION ((MPI_Datatype)23)
333#define MPI_INTEGER ((MPI_Datatype)24)
334#define MPI_INTEGER1 ((MPI_Datatype)25)
335#define MPI_INTEGER2 ((MPI_Datatype)26)
336#define MPI_INTEGER4 ((MPI_Datatype)27)
337#define MPI_INTEGER8 ((MPI_Datatype)28)
338#define MPI_INTEGER16 ((MPI_Datatype)29)
339#define MPI_COMPLEX ((MPI_Datatype)30)
340#define MPI_COMPLEX4 ((MPI_Datatype)31)
341#define MPI_COMPLEX8 ((MPI_Datatype)32)
342#define MPI_COMPLEX16 ((MPI_Datatype)33)
343#define MPI_COMPLEX32 ((MPI_Datatype)34)
344#define MPI_DOUBLE_COMPLEX ((MPI_Datatype)35)
345#define MPI_PACKED ((MPI_Datatype)36)
347#define MPI_LONG_INT ((MPI_Datatype)37)
348#define MPI_SHORT_INT ((MPI_Datatype)38)
349#define MPI_FLOAT_INT ((MPI_Datatype)39)
350#define MPI_DOUBLE_INT ((MPI_Datatype)40)
351#define MPI_LONG_DOUBLE_INT ((MPI_Datatype)41)
353#define MPI_2INT ((MPI_Datatype)42)
354#define MPI_2INTEGER ((MPI_Datatype)43)
355#define MPI_2REAL ((MPI_Datatype)44)
356#define MPI_2DOUBLE_PRECISION ((MPI_Datatype)45)
358#define MPI_UB ((MPI_Datatype)46)
359#define MPI_LB ((MPI_Datatype)47)
361#define MPI_INT8_T ((MPI_Datatype)48)
362#define MPI_INT16_T ((MPI_Datatype)49)
363#define MPI_INT32_T ((MPI_Datatype)50)
364#define MPI_INT64_T ((MPI_Datatype)51)
365#define MPI_UINT8_T ((MPI_Datatype)52)
366#define MPI_UINT16_T ((MPI_Datatype)53)
367#define MPI_UINT32_T ((MPI_Datatype)54)
368#define MPI_UINT64_T ((MPI_Datatype)55)
369#define MPI_AINT ((MPI_Datatype)56)
370#define MPI_OFFSET ((MPI_Datatype)57)
371#define MPI_C_BOOL ((MPI_Datatype)58)
372#define MPI_C_COMPLEX MPI_C_FLOAT_COMPLEX
373#define MPI_C_FLOAT_COMPLEX ((MPI_Datatype)59)
374#define MPI_C_DOUBLE_COMPLEX ((MPI_Datatype)60)
375#define MPI_C_LONG_DOUBLE_COMPLEX ((MPI_Datatype)61)
376#define MPI_WCHAR ((MPI_Datatype)62)
378#define MPI_COUNT ((MPI_Datatype)63)
380#define MPI_CXX_BOOL MPI_DATATYPE_NULL
381#define MPI_CXX_FLOAT_COMPLEX MPI_DATATYPE_NULL
382#define MPI_CXX_DOUBLE_COMPLEX MPI_DATATYPE_NULL
383#define MPI_CXX_LONG_DOUBLE_COMPLEX MPI_DATATYPE_NULL
385#define _NM_MPI_DATATYPE_OFFSET 64
409#define MPI_ORDER_FORTRAN 2
413#define MPI_DISTRIBUTE_BLOCK 1
414#define MPI_DISTRIBUTE_CYCLIC 2
415#define MPI_DISTRIBUTE_NONE 3
416#define MPI_DISTRIBUTE_DFLT_DARG 4
423#define MPI_OP_NULL ((MPI_Op)0)
424#define MPI_MAX ((MPI_Op)1)
425#define MPI_MIN ((MPI_Op)2)
426#define MPI_SUM ((MPI_Op)3)
427#define MPI_PROD ((MPI_Op)4)
428#define MPI_LAND ((MPI_Op)5)
429#define MPI_BAND ((MPI_Op)6)
430#define MPI_LOR ((MPI_Op)7)
431#define MPI_BOR ((MPI_Op)8)
432#define MPI_LXOR ((MPI_Op)9)
433#define MPI_BXOR ((MPI_Op)10)
434#define MPI_MINLOC ((MPI_Op)11)
435#define MPI_MAXLOC ((MPI_Op)12)
436#define MPI_REPLACE ((MPI_Op)13)
437#define MPI_NO_OP ((MPI_Op)14)
438#define _NM_MPI_OP_OFFSET 15
441#define MPI_MAX_PROCESSOR_NAME 256
442#define MPI_MAX_ERROR_STRING 512
443#define MPI_MAX_NAME_STRING 256
444#define MPI_MAX_OBJECT_NAME 256
445#define MPI_MAX_LIBRARY_VERSION_STRING 256
451#define MPI_WIN_NULL ((MPI_Win)0)
452#define _NM_MPI_WIN_OFFSET ((MPI_Win)1)
456#define MPI_MODE_NO_ASSERT 0x00
457#define MPI_MODE_NOCHECK 0x01
458#define MPI_MODE_NOSTORE 0x02
459#define MPI_MODE_NOPUT 0x04
460#define MPI_MODE_NOPRECEDE 0x08
461#define MPI_MODE_NOSUCCEED 0x10
466#define MPI_WIN_FLAVOR_CREATE 0
467#define MPI_WIN_FLAVOR_ALLOCATE 1
468#define MPI_WIN_FLAVOR_DYNAMIC 2
469#define MPI_WIN_FLAVOR_SHARED 3
474#define MPI_WIN_BASE 0
475#define MPI_WIN_SIZE 1
476#define MPI_WIN_DISP_UNIT 2
477#define MPI_WIN_CREATE_FLAVOR 3
478#define MPI_WIN_MODEL 4
483#define MPI_WIN_SEPARATE 0
484#define MPI_WIN_UNIFIED 1
489#define MPI_LOCK_EXCLUSIVE 1
490#define MPI_LOCK_SHARED 2
498#define MPI_ERRHANDLER_NULL ((MPI_Errhandler)0)
500#define MPI_ERRORS_ARE_FATAL ((MPI_Errhandler)1)
501#define MPI_ERRORS_RETURN ((MPI_Errhandler)2)
502#define _NM_MPI_ERRHANDLER_OFFSET 3
520#define MPI_NULL_COPY_FN ((MPI_Copy_function*)0)
521#define MPI_DUP_FN ((MPI_Copy_function*)-1)
522#define MPI_NULL_DELETE_FN ((MPI_Delete_function*)0)
527#define MPI_COMM_NULL_COPY_FN ((MPI_Comm_copy_attr_function*)0)
529#define MPI_COMM_NULL_DELETE_FN ((MPI_Comm_delete_attr_function*)0)
531#define MPI_COMM_DUP_FN ((MPI_Comm_copy_attr_function*)-1)
538#define MPI_WIN_NULL_COPY_FN ((MPI_Win_copy_attr_function*)0)
539#define MPI_TYPE_NULL_COPY_FN ((MPI_Type_copy_attr_function*)0)
541#define MPI_WIN_NULL_DELETE_FN ((MPI_Win_delete_attr_function*)0)
542#define MPI_TYPE_NULL_DELETE_FN ((MPI_Type_delete_attr_function*)0)
544#define MPI_WIN_DUP_FN ((MPI_Win_copy_attr_function*)-1)
545#define MPI_TYPE_DUP_FN ((MPI_Type_copy_attr_function*)-1)
547#define MPI_KEYVAL_INVALID 0
552#define MPI_WTIME_IS_GLOBAL 4
553#define MPI_UNIVERSE_SIZE 5
555#define MPI_LASTUSEDCODE 7
556#define _NM_MPI_ATTR_OFFSET 8
566#define MPI_T_ENUM_NULL ((MPI_T_enum)0)
570#define MPI_T_CVAR_HANDLE_NULL ((MPI_T_cvar_handle)0)
574#define MPI_T_PVAR_HANDLE_NULL ((MPI_T_pvar_handle)0)
575#define MPI_T_PVAR_ALL_HANDLES ((MPI_T_pvar_handle)-1)
579#define MPI_T_PVAR_SESSION_NULL ((MPI_T_pvar_session)0)
582#define MPI_T_VERBOSITY_USER_BASIC 1
583#define MPI_T_VERBOSITY_USER_DETAIL 2
584#define MPI_T_VERBOSITY_USER_ALL 3
585#define MPI_T_VERBOSITY_TUNER_BASIC 4
586#define MPI_T_VERBOSITY_TUNER_DETAIL 5
587#define MPI_T_VERBOSITY_TUNER_ALL 6
588#define MPI_T_VERBOSITY_MPIDEV_BASIC 7
589#define MPI_T_VERBOSITY_MPIDEV_DETAIL 8
590#define MPI_T_VERBOSITY_MPIDEV_ALL 9
593#define MPI_T_BIND_NO_OBJECT 0
594#define MPI_T_BIND_MPI_COMM 1
595#define MPI_T_BIND_MPI_DATATYPE 2
596#define MPI_T_BIND_MPI_ERRHANDLER 3
597#define MPI_T_BIND_MPI_FILE 4
598#define MPI_T_BIND_MPI_GROUP 5
599#define MPI_T_BIND_MPI_OP 6
600#define MPI_T_BIND_MPI_REQUEST 7
601#define MPI_T_BIND_MPI_WIN 8
602#define MPI_T_BIND_MPI_MESSAGE 9
603#define MPI_T_BIND_MPI_INFO 10
604#define MPI_T_BIND_MPI_SESSION 11
607#define MPI_T_SCOPE_CONSTANT 1
608#define MPI_T_SCOPE_READONLY 2
609#define MPI_T_SCOPE_LOCAL 3
610#define MPI_T_SCOPE_GROUP 4
611#define MPI_T_SCOPE_GROUP_EQ 5
612#define MPI_T_SCOPE_ALL 6
613#define MPI_T_SCOPE_ALL_EQ 7
617#define MPI_T_PVAR_CLASS_STATE 1
618#define MPI_T_PVAR_CLASS_LEVEL 2
619#define MPI_T_PVAR_CLASS_SIZE 3
620#define MPI_T_PVAR_CLASS_PERCENTAGE 4
621#define MPI_T_PVAR_CLASS_HIGHWATERMARK 5
622#define MPI_T_PVAR_CLASS_LOWWATERMARK 6
623#define MPI_T_PVAR_CLASS_COUNTER 7
624#define MPI_T_PVAR_CLASS_AGGREGATE 8
625#define MPI_T_PVAR_CLASS_TIMER 9
626#define MPI_T_PVAR_CLASS_GENERIC 10
633#ifndef NMAD_FORTRAN_TARGET_NONE
639#if defined(NM_FORTRAN_SIZEOF_INTEGER_4)
640typedef int32_t MPI_Fint;
641#elif defined(NM_FORTRAN_SIZEOF_INTEGER_8)
642typedef int64_t MPI_Fint;
644#error undefined Fortran INTEGER size
nm_mpi_status_t status
status of request
void * NM_MPI_F_MPI_ERRCODES_IGNORE
MPI_Comm_errhandler_function MPI_Comm_errhandler_fn
pre MPI-2.2 compatibility type
MPI_Fint * MPI_F_STATUS_IGNORE
integer type interoperable between C and FORTRAN
MPI_Info MPI_Info_f2c(MPI_Fint info)
int MPI_Op
Operator handle.
int MPI_Grequest_free_function(void *extra_state)
int MPI_Request
Request handle.
int() MPI_Type_delete_attr_function(MPI_Datatype datatype, int type_keyval, void *attribute_val, void *extra_state)
int MPI_Grequest_cancel_function(void *extra_state, int complete)
void() MPI_Comm_errhandler_function(MPI_Comm *, int *,...)
int MPI_Group
Group handle.
int MPI_Status_f2c(MPI_Fint *f_status, MPI_Status *c_status)
MPI_Win MPI_Win_f2c(MPI_Fint win)
int() MPI_Delete_function(MPI_Comm comm, int keyval, void *attribute_val, void *extra_state)
int MPI_Message
handle for matching probe
nm_mpi_type_combiner_t
Types of datatypes.
@ MPI_COMBINER_DUP
type is duplicated from another type
@ MPI_COMBINER_INDEXED
indexed type
@ MPI_COMBINER_STRUCT
structured type
@ MPI_COMBINER_RESIZED
type is resized from another type
@ MPI_COMBINER_HINDEXED_BLOCK
@ MPI_COMBINER_INDEXED_BLOCK
@ MPI_COMBINER_HVECTOR
vector with stride in bytes
@ MPI_COMBINER_NAMED
basic type built-in MPI
@ MPI_COMBINER_HINDEXED
indexed type, offset in bytes
@ MPI_COMBINER_CONTIGUOUS
contiguous array
@ MPI_COMBINER_VECTOR
vector with stride
nm_mpi_aint_t MPI_Aint
type that holds an address
int() MPI_Copy_function(MPI_Comm oldcomm, int keyval, void *extra_state, void *attribute_val_in, void *attribute_val_out, int *flag)
MPI_Datatype MPI_Type_f2c(MPI_Fint datatype)
MPI_Fint * MPI_F_STATUSES_IGNORE
int MPI_Session
Session handle.
MPI_Group MPI_Group_f2c(MPI_Fint group)
int MPI_Comm
Communicator handle.
MPI_Win_errhandler_function MPI_Win_errhandler_fn
pre MPI-2.2 compatibility type
void() MPI_Win_errhandler_function(MPI_Win *, int *,...)
MPI_Fint MPI_Type_c2f(MPI_Datatype datatype)
int MPI_Win
Window handle.
MPI_Fint MPI_Comm_c2f(MPI_Comm comm)
void * NM_MPI_F_MPI_IN_PLACE
MPI_Request MPI_Request_f2c(MPI_Fint request)
intptr_t nm_mpi_aint_t
internal type for counts
void MPI_Session_errhandler_function(MPI_Session *, int *error_code,...)
int MPI_Grequest_query_function(void *extra_state, MPI_Status *status)
MPI_Fint MPI_Group_c2f(MPI_Group group)
int() MPI_Win_delete_attr_function(MPI_Win win, int win_keyval, void *attribute_val, void *extra_state)
int MPI_T_enum
an enumeration for MPI tool support
int() MPI_Type_copy_attr_function(MPI_Datatype oldtype, int type_keyval, void *extra_state, void *attribute_val_in, void *attribute_val_out, int *flag)
int64_t nm_mpi_count_t
internal type for counts
void * NM_MPI_F_MPI_BOTTOM
Those are not mandatory in MPI but are useful for fortran stubs.
MPI_Op MPI_Op_f2c(MPI_Fint op)
int MPI_Info
An info opaque object.
MPI_Comm MPI_Comm_f2c(MPI_Fint comm)
MPI_Errhandler MPI_Errhandler_f2c(MPI_Fint errhandler)
int MPI_Status_c2f(MPI_Status *c_status, MPI_Fint *f_status)
void * NM_MPI_F_MPI_WEIGHTS_EMPTY
MPI_Fint MPI_Op_c2f(MPI_Op op)
void() MPI_Handler_function(MPI_Comm *, int *,...)
int() MPI_Comm_copy_attr_function(MPI_Comm oldcomm, int comm_keyval, void *extra_state, void *attribute_val_in, void *attribute_val_out, int *flag)
int() MPI_Comm_delete_attr_function(MPI_Comm comm, int comm_keyval, void *attribute_val, void *extra_state)
MPI_Fint MPI_Win_c2f(MPI_Win win)
void * NM_MPI_F_MPI_UNWEIGHTED
MPI_Fint MPI_Request_c2f(MPI_Request request)
void * NM_MPI_F_MPI_ARGV_NULL
nm_mpi_count_t MPI_Count
public type for counts
MPI_Fint MPI_Errhandler_c2f(MPI_Errhandler errhandler)
MPI_Fint MPI_Info_c2f(MPI_Info info)
int() MPI_Win_copy_attr_function(MPI_Win oldwin, int win_keyval, void *extra_state, void *attribute_val_in, void *attribute_val_out, int *flag)
void * NM_MPI_F_MPI_ARGVS_NULL
int MPI_Datatype
Datatype handle.
int MPI_SOURCE
field name mandatory by spec
int size
size of data received
int MPI_TAG
field name mandatory by spec
int cancelled
whether request was cancelled
int MPI_ERROR
field name mandatory by spec