AMPI: Cleanup of unimplemented functions
[charm.git] / src / libs / ck-libs / ampi / ampi.h
blobca0698305049c85aa90a65046079b101c8c3ff1f
1 #ifndef _MPI_H
2 #define _MPI_H
4 #include <stdlib.h> /* for redefinition of exit() below */
5 #include <inttypes.h> /* for intptr_t */
6 #include "conv-config.h"
7 #include "charm-api.h" /* for CLINKAGE */
9 #ifdef __cplusplus
10 #if CMK_CUDA
11 #include "hapi.h"
12 #endif
13 #endif
15 /* NON-standard define: this lets people #ifdef on
16 AMPI, e.g. to portably use AMPI extensions to the MPI standard. */
17 #define AMPI
19 /* Macro to define the AMPI'fied name of an MPI function, plus the AMPI'fied
20 * PMPI name. When building Charm++/AMPI on top of MPI, we rename the user's
21 * MPI_ calls to use AMPI_. */
22 #if CMK_CONVERSE_MPI
23 #define AMPI_API_DEF(return_type, function_name, ...) \
24 return_type A##function_name(__VA_ARGS__); \
25 return_type AP##function_name(__VA_ARGS__);
26 #else
27 #define AMPI_API_DEF(return_type, function_name, ...) \
28 return_type function_name(__VA_ARGS__); \
29 return_type P##function_name(__VA_ARGS__);
30 #endif
32 #ifdef __cplusplus
33 # define AMPI_API_STATIC_CAST(type, obj) (static_cast<type>(obj))
34 # define AMPI_API_REINTERPRET_CAST(type, obj) (reinterpret_cast<type>(obj))
35 #else
36 # define AMPI_API_STATIC_CAST(type, obj) ((type)(obj))
37 # define AMPI_API_REINTERPRET_CAST(type, obj) ((type)(obj))
38 #endif
40 CLINKAGE void AMPI_Exit(int exitCode);
41 /* Allow applications to terminate cleanly with exit():
42 * In C++ applications, this can conflict with user-defined
43 * exit routines inside namespaces, such as Foo::exit(), so
44 * we allow turning off AMPI's renaming of exit() with
45 * -DAMPI_RENAME_EXIT=0. Same for 'atexit' below... */
46 #ifndef AMPI_RENAME_EXIT
47 #define AMPI_RENAME_EXIT 1
48 #endif
49 #if AMPI_RENAME_EXIT
50 #define exit(status) AMPI_Exit(status)
51 #endif
53 /* Notify AMPI when atexit() is used in order to prevent running MPI_Finalize()
54 in a function registered with atexit. Only applies when including mpi.h. */
55 CLINKAGE void ampiMarkAtexit(void);
56 #ifndef AMPI_RENAME_ATEXIT
57 #define AMPI_RENAME_ATEXIT 1
58 #endif
59 #if AMPI_RENAME_ATEXIT
60 #define atexit(...) do {atexit(__VA_ARGS__); atexit(ampiMarkAtexit);} while(0)
61 #endif
64 Silently rename the user's main routine.
65 This is needed so we can call the routine as a new thread,
66 instead of as an actual "main".
68 #ifdef __cplusplus /* C++ version-- rename "main" as "AMPI_Main_cpp" */
69 # define main AMPI_Main_cpp
70 int AMPI_Main_cpp(int argc,char **argv); /* prototype for C++ main routine */
71 int AMPI_Main_cpp(void); /* prototype for C++ main routines without args, as in autoconf tests */
73 extern "C" {
74 #else /* C version-- rename "main" as "AMPI_Main" */
75 # define main AMPI_Main
76 #endif
78 int AMPI_Main(); /* declaration for C main routine (not a strict prototype!) */
79 void AMPI_Main_c(int argc,char **argv); /* C wrapper for calling AMPI_Main() from C++ */
81 typedef void (*MPI_MainFn) (int,char**);
83 typedef int MPI_Datatype;
84 typedef intptr_t MPI_Aint;
85 typedef int MPI_Fint;
86 typedef MPI_Aint MPI_Count;
87 typedef long long int MPI_Offset;
88 #define HAVE_MPI_OFFSET 1 /* ROMIO requires us to set this */
90 /********************** MPI-1.1 prototypes and defines ***************************/
91 /* MPI-1 Errors */
92 #define MPI_SUCCESS 0
93 #define MPI_ERR_BUFFER 1
94 #define MPI_ERR_COUNT 2
95 #define MPI_ERR_TYPE 3
96 #define MPI_ERR_TAG 4
97 #define MPI_ERR_COMM 5
98 #define MPI_ERR_RANK 6
99 #define MPI_ERR_REQUEST 7
100 #define MPI_ERR_ROOT 8
101 #define MPI_ERR_GROUP 9
102 #define MPI_ERR_OP 10
103 #define MPI_ERR_TOPOLOGY 11
104 #define MPI_ERR_DIMS 12
105 #define MPI_ERR_ARG 13
106 #define MPI_ERR_UNKNOWN 14
107 #define MPI_ERR_TRUNCATE 15
108 #define MPI_ERR_OTHER 16
109 #define MPI_ERR_INTERN 17
110 #define MPI_ERR_IN_STATUS 18
111 #define MPI_ERR_PENDING 19
112 /* MPI-2 Errors */
113 #define MPI_ERR_ACCESS 20
114 #define MPI_ERR_AMODE 21
115 #define MPI_ERR_ASSERT 22
116 #define MPI_ERR_BAD_FILE 23
117 #define MPI_ERR_BASE 24
118 #define MPI_ERR_CONVERSION 25
119 #define MPI_ERR_DISP 26
120 #define MPI_ERR_DUP_DATAREP 27
121 #define MPI_ERR_FILE_EXISTS 28
122 #define MPI_ERR_FILE_IN_USE 29
123 #define MPI_ERR_FILE 30
124 #define MPI_ERR_INFO_KEY 31
125 #define MPI_ERR_INFO_NOKEY 32
126 #define MPI_ERR_INFO_VALUE 33
127 #define MPI_ERR_INFO 34
128 #define MPI_ERR_IO 35
129 #define MPI_ERR_KEYVAL 36
130 #define MPI_ERR_LOCKTYPE 37
131 #define MPI_ERR_NAME 38
132 #define MPI_ERR_NO_MEM 39
133 #define MPI_ERR_NOT_SAME 40
134 #define MPI_ERR_NO_SPACE 41
135 #define MPI_ERR_NO_SUCH_FILE 42
136 #define MPI_ERR_PORT 43
137 #define MPI_ERR_QUOTA 44
138 #define MPI_ERR_READ_ONLY 45
139 #define MPI_ERR_RMA_CONFLICT 46
140 #define MPI_ERR_RMA_SYNC 47
141 #define MPI_ERR_SERVICE 48
142 #define MPI_ERR_SIZE 49
143 #define MPI_ERR_SPAWN 50
144 #define MPI_ERR_UNSUPPORTED_DATAREP 51
145 #define MPI_ERR_UNSUPPORTED_OPERATION 52
146 #define MPI_ERR_WIN 53
147 #define MPI_ERR_LASTCODE 53
148 #define MPI_LASTUSEDCODE 53
149 /* 0=MPI_SUCCESS<MPI_ERRs(...)<MPI_ERR<=MPI_ERR_LASTCODE<=MPI_LASTUSEDCODE */
151 #define MPI_MAX_PROCESSOR_NAME 256
152 #define MPI_MAX_ERROR_STRING 256
153 #define MPI_MAX_LIBRARY_VERSION_STRING 256
155 #define MPI_VERSION 2
156 #define MPI_SUBVERSION 2
158 #define MPI_THREAD_SINGLE 1
159 #define MPI_THREAD_FUNNELED 2
160 #define MPI_THREAD_SERIALIZED 3
161 #define MPI_THREAD_MULTIPLE 4
163 /* these values have to match values in ampif.h */
164 /* base types */
165 #define MPI_DATATYPE_NULL -1
166 #define MPI_DOUBLE 0
167 #define MPI_INT 1
168 #define MPI_INTEGER MPI_INT
169 #define MPI_FLOAT 2
170 #define MPI_LOGICAL 3
171 #define MPI_C_BOOL 4
172 #define MPI_CHAR 5
173 #define MPI_BYTE 6
174 #define MPI_PACKED 7
175 #define MPI_SHORT 8
176 #define MPI_LONG 9
177 #define MPI_UNSIGNED_CHAR 10
178 #define MPI_UNSIGNED_SHORT 11
179 #define MPI_UNSIGNED 12
180 #define MPI_UNSIGNED_LONG 13
181 #define MPI_LONG_DOUBLE 14
182 /* mpi-2+ types */
183 #define MPI_LONG_LONG_INT 15
184 #define MPI_LONG_LONG MPI_LONG_LONG_INT
185 #define MPI_OFFSET MPI_LONG_LONG
186 #define MPI_SIGNED_CHAR 16
187 #define MPI_UNSIGNED_LONG_LONG 17
188 #define MPI_WCHAR 18
189 #define MPI_INT8_T 19
190 #define MPI_INT16_T 20
191 #define MPI_INT32_T 21
192 #define MPI_INT64_T 22
193 #define MPI_UINT8_T 23
194 #define MPI_UINT16_T 24
195 #define MPI_UINT32_T 25
196 #define MPI_UINT64_T 26
197 #define MPI_AINT 27
198 #define MPI_COUNT MPI_AINT
199 #define MPI_LB 28
200 #define MPI_UB 29
202 * AMPI_MAX_BASIC_TYPE is defined in ddt.h
203 * and is tied to the above values, if the above
204 * indexes change or values are added/deleted
205 * you may need to change AMPI_MAX_BASIC_TYPE
207 /* tuple types */
208 #define MPI_FLOAT_INT 30
209 #define MPI_DOUBLE_INT 31
210 #define MPI_LONG_INT 32
211 #define MPI_2INT 33
212 #define MPI_SHORT_INT 34
213 #define MPI_LONG_DOUBLE_INT 35
214 #define MPI_2FLOAT 36
215 #define MPI_2DOUBLE 37
216 /* mpi-2+ types */
217 #define MPI_COMPLEX 38
218 #define MPI_FLOAT_COMPLEX 39
219 #define MPI_DOUBLE_COMPLEX 40
220 #define MPI_LONG_DOUBLE_COMPLEX 41
222 * AMPI_MAX_PREDEFINED_TYPE is defined in ddt.h
223 * and is tied to the above values, if the above
224 * indexes change or values are added/deleted
225 * you may need to change AMPI_MAX_PREDEFINED_TYPE
228 #define MPI_ANY_TAG MPI_TAG_UB_VALUE+1
229 #define MPI_REQUEST_NULL (-1)
230 #define MPI_GROUP_NULL (-1)
231 #define MPI_GROUP_EMPTY 0
232 #define MPI_COMM_NULL (-1)
233 #define MPI_PROC_NULL (-2)
234 #define MPI_ROOT (-3)
235 #define MPI_ANY_SOURCE (-1)
236 #define MPI_KEYVAL_INVALID (-1)
237 #define MPI_INFO_NULL (-1)
239 #define MPI_IN_PLACE AMPI_API_REINTERPRET_CAST(void *, -1L)
241 #define MPI_BOTTOM AMPI_API_REINTERPRET_CAST(void *, -2L)
242 #define MPI_UNDEFINED (-32766)
244 #define MPI_IDENT 0
245 #define MPI_SIMILAR 1
246 #define MPI_CONGRUENT 2
247 #define MPI_UNEQUAL 3
249 #define MPI_COMM_TYPE_SHARED 1
250 #define AMPI_COMM_TYPE_HOST 2
251 #define AMPI_COMM_TYPE_PROCESS 3
252 #define AMPI_COMM_TYPE_WTH 4
254 typedef int MPI_Op;
256 typedef void (MPI_User_function)(void *invec, void *inoutvec,
257 int *len, MPI_Datatype *datatype);
259 #define MPI_OP_NULL -1
260 #define MPI_MAX 0
261 #define MPI_MIN 1
262 #define MPI_SUM 2
263 #define MPI_PROD 3
264 #define MPI_LAND 4
265 #define MPI_BAND 5
266 #define MPI_LOR 6
267 #define MPI_BOR 7
268 #define MPI_LXOR 8
269 #define MPI_BXOR 9
270 #define MPI_MAXLOC 10
271 #define MPI_MINLOC 11
272 #define MPI_REPLACE 12
273 #define MPI_NO_OP 13
275 * AMPI_MAX_PREDEFINED_OP is defined in ampiimpl.h
276 * and is tied to the above values, if the above
277 * indexes change or values are added/deleted
278 * you may need to change AMPI_MAX_PREDEFINED_TYPE
281 #define MPI_UNWEIGHTED 0
282 #define MPI_CART 1
283 #define MPI_GRAPH 2
284 #define MPI_DIST_GRAPH 3
286 /* This is one less than the system-tags defined in ampiimpl.h.
287 * This is so that the tags used by the system don't clash with user-tags.
288 * The MPI 3.1 standard requires this to be at least 32767 (2^15 -1).
290 #define MPI_TAG_UB_VALUE 1073741824
292 /* These are the builtin MPI keyvals, plus some AMPI specific ones. */
293 #define MPI_TAG_UB -2
294 #define MPI_HOST -3
295 #define MPI_IO -4
296 #define MPI_WTIME_IS_GLOBAL -5
297 #define MPI_APPNUM -6
298 #define MPI_UNIVERSE_SIZE -7
299 #define MPI_WIN_BASE -8
300 #define MPI_WIN_SIZE -9
301 #define MPI_WIN_DISP_UNIT -10
302 #define MPI_WIN_MODEL -11
303 #define MPI_WIN_CREATE_FLAVOR -12
304 #define AMPI_MY_WTH -13
305 #define AMPI_NUM_WTHS -14
306 #define AMPI_MY_PROCESS -15
307 #define AMPI_NUM_PROCESSES -16
309 /** Communicators give a communication context to a set of processors.
310 An intercommunicator can be used for point to point messaging between two groups.
311 An intracommunicator can be used to send messages within a single group. */
312 typedef int MPI_Comm;
314 /** Groups represent an set of processors 0...n-1. They can be created locally */
315 typedef int MPI_Group;
317 typedef int MPI_Info;
319 #define MPI_COMM_SELF AMPI_API_STATIC_CAST(MPI_Comm, 1000000) /*MPI_COMM_SELF is the first split comm */
320 #define MPI_COMM_FIRST_SPLIT AMPI_API_STATIC_CAST(MPI_Comm, 1000000) /*Communicator from MPI_Comm_split */
321 #define MPI_COMM_FIRST_GROUP AMPI_API_STATIC_CAST(MPI_Comm, 2000000) /*Communicator from MPI_Comm_group */
322 #define MPI_COMM_FIRST_CART AMPI_API_STATIC_CAST(MPI_Comm, 3000000) /*Communicator from MPI_Cart_create */
323 #define MPI_COMM_FIRST_GRAPH AMPI_API_STATIC_CAST(MPI_Comm, 4000000) /*Communicator from MPI_Graph_create */
324 #define MPI_COMM_FIRST_DIST_GRAPH AMPI_API_STATIC_CAST(MPI_Comm, 5000000) /*Communicator from MPI_Dist_Graph_create */
325 #define MPI_COMM_FIRST_INTER AMPI_API_STATIC_CAST(MPI_Comm, 6000000) /*Communicator from MPI_Intercomm_create*/
326 #define MPI_COMM_FIRST_INTRA AMPI_API_STATIC_CAST(MPI_Comm, 7000000) /*Communicator from MPI_Intercomm_merge*/
327 #define MPI_COMM_FIRST_RESVD AMPI_API_STATIC_CAST(MPI_Comm, 8000000) /*Communicator reserved for now*/
328 #define MPI_COMM_WORLD AMPI_API_STATIC_CAST(MPI_Comm, 9000000) /*Start of universe*/
329 #define MPI_MAX_COMM_WORLDS 8
330 extern MPI_Comm MPI_COMM_UNIVERSE[MPI_MAX_COMM_WORLDS];
332 #define MPI_INFO_ENV AMPI_API_STATIC_CAST(MPI_Info, 0)
333 #define AMPI_INFO_LB_SYNC AMPI_API_STATIC_CAST(MPI_Info, 1)
334 #define AMPI_INFO_LB_ASYNC AMPI_API_STATIC_CAST(MPI_Info, 2)
335 #define AMPI_INFO_CHKPT_IN_MEMORY AMPI_API_STATIC_CAST(MPI_Info, 3)
337 /* the size of MPI_Status must conform to MPI_STATUS_SIZE in ampif.h */
338 struct AmpiMsg;
339 typedef int MPI_Request;
340 typedef struct {
341 int MPI_TAG, MPI_SOURCE, MPI_COMM, MPI_LENGTH, MPI_ERROR, MPI_CANCEL; /* FIXME: MPI_ERROR is never used */
342 struct AmpiMsg *msg;
343 } MPI_Status;
345 #define MPI_STATUS_IGNORE AMPI_API_REINTERPRET_CAST(MPI_Status *, 0)
346 #define MPI_STATUSES_IGNORE AMPI_API_REINTERPRET_CAST(MPI_Status *, 0)
348 /* type for MPI messages used in MPI_Mprobe, MPI_Mrecv, MPI_Improbe, MPI_Imrecv */
349 typedef int MPI_Message;
350 #define MPI_MESSAGE_NULL -1
351 #define MPI_MESSAGE_NO_PROC -2
353 typedef int MPI_Errhandler;
354 #define MPI_ERRHANDLER_NULL 0
355 #define MPI_ERRORS_RETURN 1
356 #define MPI_ERRORS_ARE_FATAL 2
358 typedef void (MPI_Comm_errhandler_fn)(MPI_Comm *, int *, ...);
359 typedef void (MPI_Comm_errhandler_function)(MPI_Comm *, int *, ...);
360 typedef int (MPI_Comm_copy_attr_function)(MPI_Comm oldcomm, int keyval,
361 void *extra_state, void *attribute_val_in,
362 void *attribute_val_out, int *flag);
363 typedef int (MPI_Comm_delete_attr_function)(MPI_Comm comm, int keyval,
364 void *attribute_val, void *extra_state);
366 typedef void (MPI_Handler_function)(MPI_Comm *, int *, ...);
367 typedef int (MPI_Copy_function)(MPI_Comm oldcomm, int keyval,
368 void *extra_state, void *attribute_val_in,
369 void *attribute_val_out, int *flag);
370 typedef int (MPI_Delete_function)(MPI_Comm comm, int keyval,
371 void *attribute_val, void *extra_state);
373 #define MPI_COMM_NULL_COPY_FN MPI_comm_null_copy_fn
374 #define MPI_COMM_NULL_DELETE_FN MPI_comm_null_delete_fn
375 #define MPI_COMM_DUP_FN MPI_comm_dup_fn
377 #define MPI_NULL_COPY_FN MPI_comm_null_copy_fn
378 #define MPI_NULL_DELETE_FN MPI_comm_null_delete_fn
379 #define MPI_DUP_FN MPI_comm_dup_fn
381 int MPI_COMM_NULL_COPY_FN ( MPI_Comm, int, void *, void *, void *, int * );
382 int MPI_COMM_NULL_DELETE_FN ( MPI_Comm, int, void *, void * );
383 int MPI_COMM_DUP_FN ( MPI_Comm, int, void *, void *, void *, int * );
385 typedef int MPI_Type_copy_attr_function(MPI_Datatype oldtype, int type_keyval, void *extra_state,
386 void *attribute_val_in, void *attribute_val_out, int *flag);
387 typedef int MPI_Type_delete_attr_function(MPI_Datatype datatype, int type_keyval,
388 void *attribute_val, void *extra_state);
390 #define MPI_TYPE_NULL_DELETE_FN MPI_type_null_delete_fn
391 #define MPI_TYPE_NULL_COPY_FN MPI_type_null_copy_fn
392 #define MPI_TYPE_DUP_FN MPI_type_dup_fn
394 int MPI_TYPE_NULL_COPY_FN ( MPI_Datatype, int, void *, void *, void *, int * );
395 int MPI_TYPE_NULL_DELETE_FN ( MPI_Datatype, int, void *, void * );
396 int MPI_TYPE_DUP_FN ( MPI_Datatype, int, void *, void *, void *, int * );
398 typedef int MPI_Grequest_query_function(void *extra_state, MPI_Status *status);
399 typedef int MPI_Grequest_free_function(void *extra_state);
400 typedef int MPI_Grequest_cancel_function(void *extra_state, int complete);
402 #include "pup_c.h"
404 typedef void (*MPI_PupFn)(pup_er, void*);
405 typedef void (*MPI_MigrateFn)(void);
407 /* for the datatype decoders */
408 #define MPI_COMBINER_NAMED 1
409 #define MPI_COMBINER_CONTIGUOUS 2
410 #define MPI_COMBINER_VECTOR 3
411 #define MPI_COMBINER_HVECTOR 4
412 #define MPI_COMBINER_HVECTOR_INTEGER 5
413 #define MPI_COMBINER_INDEXED 6
414 #define MPI_COMBINER_HINDEXED 7
415 #define MPI_COMBINER_HINDEXED_INTEGER 8
416 #define MPI_COMBINER_STRUCT 9
417 #define MPI_COMBINER_STRUCT_INTEGER 10
418 #define MPI_COMBINER_DARRAY 11
419 #define MPI_COMBINER_RESIZED 12
420 #define MPI_COMBINER_SUBARRAY 13
421 #define MPI_COMBINER_INDEXED_BLOCK 14
422 #define MPI_COMBINER_HINDEXED_BLOCK 15
424 #define MPI_BSEND_OVERHEAD 0
426 /* When AMPI is built on top of MPI, rename user's MPI_* calls to AMPI_* */
427 #if CMK_CONVERSE_MPI
428 /***pt2pt***/
429 #define MPI_Send AMPI_Send
430 #define PMPI_Send APMPI_Send
431 #define MPI_Ssend AMPI_Ssend
432 #define PMPI_Ssend APMPI_Ssend
433 #define MPI_Recv AMPI_Recv
434 #define PMPI_Recv APMPI_Recv
435 #define MPI_Mrecv AMPI_Mrecv
436 #define PMPI_Mrecv APMPI_Mrecv
437 #define MPI_Get_count AMPI_Get_count
438 #define PMPI_Get_count APMPI_Get_count
439 #define MPI_Bsend AMPI_Bsend
440 #define PMPI_Bsend APMPI_Bsend
441 #define MPI_Rsend AMPI_Rsend
442 #define PMPI_Rsend APMPI_Rsend
443 #define MPI_Buffer_attach AMPI_Buffer_attach
444 #define PMPI_Buffer_attach APMPI_Buffer_attach
445 #define MPI_Buffer_detach AMPI_Buffer_detach
446 #define PMPI_Buffer_detach APMPI_Buffer_detach
447 #define MPI_Isend AMPI_Isend
448 #define PMPI_Isend APMPI_Isend
449 #define MPI_Ibsend AMPI_Ibsend
450 #define PMPI_Ibsend APMPI_Ibsend
451 #define MPI_Issend AMPI_Issend
452 #define PMPI_Issend APMPI_Issend
453 #define MPI_Irsend AMPI_Irsend
454 #define PMPI_Irsend APMPI_Irsend
455 #define MPI_Irecv AMPI_Irecv
456 #define PMPI_Irecv APMPI_Irecv
457 #define MPI_Imrecv AMPI_Imrecv
458 #define PMPI_Imrecv APMPI_Imrecv
459 #define MPI_Waitany AMPI_Waitany
460 #define PMPI_Waitany APMPI_Waitany
461 #define MPI_Test AMPI_Test
462 #define PMPI_Test APMPI_Test
463 #define MPI_Wait AMPI_Wait
464 #define PMPI_Wait APMPI_Wait
465 #define MPI_Testany AMPI_Testany
466 #define PMPI_Testany APMPI_Testany
467 #define MPI_Waitall AMPI_Waitall
468 #define PMPI_Waitall APMPI_Waitall
469 #define MPI_Testall AMPI_Testall
470 #define PMPI_Testall APMPI_Testall
471 #define MPI_Waitsome AMPI_Waitsome
472 #define PMPI_Waitsome APMPI_Waitsome
473 #define MPI_Testsome AMPI_Testsome
474 #define PMPI_Testsome APMPI_Testsome
475 #define MPI_Request_get_status AMPI_Request_get_status
476 #define PMPI_Request_get_status APMPI_Request_get_status
477 #define MPI_Request_free AMPI_Request_free
478 #define PMPI_Request_free APMPI_Request_free
479 #define MPI_Grequest_start AMPI_Grequest_start
480 #define PMPI_Grequest_start APMPI_Grequest_start
481 #define MPI_Grequest_complete AMPI_Grequest_complete
482 #define PMPI_Grequest_complete APMPI_Grequest_complete
483 #define MPI_Cancel AMPI_Cancel
484 #define PMPI_Cancel APMPI_Cancel
485 #define MPI_Test_cancelled AMPI_Test_cancelled
486 #define PMPI_Test_cancelled APMPI_Test_cancelled
487 #define MPI_Status_set_cancelled AMPI_Status_set_cancelled
488 #define PMPI_Status_set_cancelled APMPI_Status_set_cancelled
489 #define MPI_Iprobe AMPI_Iprobe
490 #define PMPI_Iprobe APMPI_Iprobe
491 #define MPI_Probe AMPI_Probe
492 #define PMPI_Probe APMPI_Probe
493 #define MPI_Improbe AMPI_Improbe
494 #define PMPI_Improbe APMPI_Improbe
495 #define MPI_Mprobe AMPI_Mprobe
496 #define PMPI_Mprobe APMPI_Mprobe
497 #define MPI_Send_init AMPI_Send_init
498 #define PMPI_Send_init APMPI_Send_init
499 #define MPI_Ssend_init AMPI_Ssend_init
500 #define PMPI_Ssend_init APMPI_Ssend_init
501 #define MPI_Rsend_init AMPI_Rsend_init
502 #define PMPI_Rsend_init APMPI_Rsend_init
503 #define MPI_Bsend_init AMPI_Bsend_init
504 #define PMPI_Bsend_init APMPI_Bsend_init
505 #define MPI_Recv_init AMPI_Recv_init
506 #define PMPI_Recv_init APMPI_Recv_init
507 #define MPI_Start AMPI_Start
508 #define PMPI_Start APMPI_Start
509 #define MPI_Startall AMPI_Startall
510 #define PMPI_Startall APMPI_Startall
511 #define MPI_Sendrecv AMPI_Sendrecv
512 #define PMPI_Sendrecv APMPI_Sendrecv
513 #define MPI_Sendrecv_replace AMPI_Sendrecv_replace
514 #define PMPI_Sendrecv_replace APMPI_Sendrecv_replace
516 /***datatypes***/
517 #define MPI_Type_contiguous AMPI_Type_contiguous
518 #define PMPI_Type_contiguous APMPI_Type_contiguous
519 #define MPI_Type_vector AMPI_Type_vector
520 #define PMPI_Type_vector APMPI_Type_vector
521 #define MPI_Type_create_hvector AMPI_Type_create_hvector
522 #define PMPI_Type_create_hvector APMPI_Type_create_hvector
523 #define MPI_Type_hvector AMPI_Type_hvector
524 #define PMPI_Type_hvector APMPI_Type_hvector
525 #define MPI_Type_indexed AMPI_Type_indexed
526 #define PMPI_Type_indexed APMPI_Type_indexed
527 #define MPI_Type_create_hindexed AMPI_Type_create_hindexed
528 #define PMPI_Type_create_hindexed APMPI_Type_create_hindexed
529 #define MPI_Type_create_indexed_block AMPI_Type_create_indexed_block
530 #define PMPI_Type_create_indexed_block APMPI_Type_create_indexed_block
531 #define MPI_Type_create_hindexed_block AMPI_Type_create_hindexed_block
532 #define PMPI_Type_create_hindexed_block APMPI_Type_create_hindexed_block
533 #define MPI_Type_hindexed AMPI_Type_hindexed
534 #define PMPI_Type_hindexed APMPI_Type_hindexed
535 #define MPI_Type_create_struct AMPI_Type_create_struct
536 #define PMPI_Type_create_struct APMPI_Type_create_struct
537 #define MPI_Type_struct AMPI_Type_struct
538 #define PMPI_Type_struct APMPI_Type_struct
539 #define MPI_Type_get_envelope AMPI_Type_get_envelope
540 #define PMPI_Type_get_envelope APMPI_Type_get_envelope
541 #define MPI_Type_get_contents AMPI_Type_get_contents
542 #define PMPI_Type_get_contents APMPI_Type_get_contents
543 #define MPI_Type_commit AMPI_Type_commit
544 #define PMPI_Type_commit APMPI_Type_commit
545 #define MPI_Type_free AMPI_Type_free
546 #define PMPI_Type_free APMPI_Type_free
547 #define MPI_Type_get_extent AMPI_Type_get_extent
548 #define PMPI_Type_get_extent APMPI_Type_get_extent
549 #define MPI_Type_get_extent_x AMPI_Type_get_extent_x
550 #define PMPI_Type_get_extent_x APMPI_Type_get_extent_x
551 #define MPI_Type_extent AMPI_Type_extent
552 #define PMPI_Type_extent APMPI_Type_extent
553 #define MPI_Type_get_true_extent AMPI_Type_get_true_extent
554 #define PMPI_Type_get_true_extent APMPI_Type_get_true_extent
555 #define MPI_Type_get_true_extent_x AMPI_Type_get_true_extent_x
556 #define PMPI_Type_get_true_extent_X APMPI_Type_get_true_extent_x
557 #define MPI_Type_size AMPI_Type_size
558 #define PMPI_Type_size APMPI_Type_size
559 #define MPI_Type_size_x AMPI_Type_size_x
560 #define PMPI_Type_size_x APMPI_Type_size_x
561 #define MPI_Type_lb AMPI_Type_lb
562 #define PMPI_Type_lb APMPI_Type_lb
563 #define MPI_Type_ub AMPI_Type_ub
564 #define PMPI_Type_ub APMPI_Type_ub
565 #define MPI_Type_set_name AMPI_Type_set_name
566 #define PMPI_Type_set_name APMPI_Type_set_name
567 #define MPI_Type_get_name AMPI_Type_get_name
568 #define PMPI_Type_get_name APMPI_Type_get_name
569 #define MPI_Type_dup AMPI_Type_dup
570 #define PMPI_Type_dup APMPI_Type_dup
571 #define MPI_Type_create_resized AMPI_Type_create_resized
572 #define PMPI_Type_create_resized APMPI_Type_create_resized
573 #define MPI_Type_set_attr AMPI_Type_set_attr
574 #define PMPI_Type_set_attr APMPI_Type_set_attr
575 #define MPI_Type_get_attr AMPI_Type_get_attr
576 #define PMPI_Type_get_attr APMPI_Type_get_attr
577 #define MPI_Type_delete_attr AMPI_Type_delete_attr
578 #define PMPI_Type_delete_attr APMPI_Type_delete_attr
579 #define MPI_Type_create_keyval AMPI_Type_create_keyval
580 #define PMPI_Type_create_keyval APMPI_Type_create_keyval
581 #define MPI_Type_free_keyval AMPI_Type_free_keyval
582 #define PMPI_Type_free_keyval APMPI_Type_free_keyval
583 #define MPI_Get_address AMPI_Get_address
584 #define PMPI_Get_address APMPI_Get_address
585 #define MPI_Address AMPI_Address
586 #define PMPI_Address APMPI_Address
587 #define MPI_Status_set_elements AMPI_Status_set_elements
588 #define PMPI_Status_set_elements APMPI_Status_set_elements
589 #define MPI_Status_set_elements_x AMPI_Status_set_elements_x
590 #define PMPI_Status_set_elements_x APMPI_Status_set_elements_x
591 #define MPI_Get_elements AMPI_Get_elements
592 #define PMPI_Get_elements APMPI_Get_elements
593 #define MPI_Get_elements_x AMPI_Get_elements_x
594 #define PMPI_Get_elements_x APMPI_Get_elements_x
595 #define MPI_Pack AMPI_Pack
596 #define PMPI_Pack APMPI_Pack
597 #define MPI_Unpack AMPI_Unpack
598 #define PMPI_Unpack APMPI_Unpack
599 #define MPI_Pack_size AMPI_Pack_size
600 #define PMPI_Pack_size APMPI_Pack_size
602 /***collectives***/
603 #define MPI_Barrier AMPI_Barrier
604 #define PMPI_Barrier APMPI_Barrier
605 #define MPI_Ibarrier AMPI_Ibarrier
606 #define PMPI_Ibarrier APMPI_Ibarrier
607 #define MPI_Bcast AMPI_Bcast
608 #define PMPI_Bcast APMPI_Bcast
609 #define MPI_Ibcast AMPI_Ibcast
610 #define PMPI_Ibcast APMPI_Ibcast
611 #define MPI_Gather AMPI_Gather
612 #define PMPI_Gather APMPI_Gather
613 #define MPI_Igather AMPI_Igather
614 #define PMPI_Igather APMPI_Igather
615 #define MPI_Gatherv AMPI_Gatherv
616 #define PMPI_Gatherv APMPI_Gatherv
617 #define MPI_Igatherv AMPI_Igatherv
618 #define PMPI_Igatherv APMPI_Igatherv
619 #define MPI_Scatter AMPI_Scatter
620 #define PMPI_Scatter APMPI_Scatter
621 #define MPI_Iscatter AMPI_Iscatter
622 #define PMPI_Iscatter APMPI_Iscatter
623 #define MPI_Scatterv AMPI_Scatterv
624 #define PMPI_Scatterv APMPI_Scatterv
625 #define MPI_Iscatterv AMPI_Iscatterv
626 #define PMPI_Iscatterv APMPI_Iscatterv
627 #define MPI_Allgather AMPI_Allgather
628 #define PMPI_Allgather APMPI_Allgather
629 #define MPI_Iallgather AMPI_Iallgather
630 #define PMPI_Iallgather APMPI_Iallgather
631 #define MPI_Allgatherv AMPI_Allgatherv
632 #define PMPI_Allgatherv APMPI_Allgatherv
633 #define MPI_Iallgatherv AMPI_Iallgatherv
634 #define PMPI_Iallgatherv APMPI_Iallgatherv
635 #define MPI_Alltoall AMPI_Alltoall
636 #define PMPI_Alltoall APMPI_Alltoall
637 #define MPI_Ialltoall AMPI_Ialltoall
638 #define PMPI_Ialltoall APMPI_Ialltoall
639 #define MPI_Alltoallv AMPI_Alltoallv
640 #define PMPI_Alltoallv APMPI_Alltoallv
641 #define MPI_Ialltoallv AMPI_Ialltoallv
642 #define PMPI_Ialltoallv APMPI_Ialltoallv
643 #define MPI_Alltoallw AMPI_Alltoallw
644 #define PMPI_Alltoallw APMPI_Alltoallw
645 #define MPI_Ialltoallw AMPI_Ialltoallw
646 #define PMPI_Ialltoallw APMPI_Ialltoallw
647 #define MPI_Reduce AMPI_Reduce
648 #define PMPI_Reduce APMPI_Reduce
649 #define MPI_Ireduce AMPI_Ireduce
650 #define PMPI_Ireduce APMPI_Ireduce
651 #define MPI_Allreduce AMPI_Allreduce
652 #define PMPI_Allreduce APMPI_Allreduce
653 #define MPI_Iallreduce AMPI_Iallreduce
654 #define PMPI_Iallreduce APMPI_Iallreduce
655 #define MPI_Reduce_local AMPI_Reduce_local
656 #define PMPI_Reduce_local APMPI_Reduce_local
657 #define MPI_Reduce_scatter_block AMPI_Reduce_scatter_block
658 #define PMPI_Reduce_scatter_block APMPI_Reduce_scatter_block
659 #define MPI_Ireduce_scatter_block AMPI_Ireduce_scatter_block
660 #define PMPI_Ireduce_scatter_block APMPI_Ireduce_scatter_block
661 #define MPI_Reduce_scatter AMPI_Reduce_scatter
662 #define PMPI_Reduce_scatter APMPI_Reduce_scatter
663 #define MPI_Ireduce_scatter AMPI_Ireduce_scatter
664 #define PMPI_Ireduce_scatter APMPI_Ireduce_scatter
665 #define MPI_Scan AMPI_Scan
666 #define PMPI_Scan APMPI_Scan
667 #define MPI_Iscan AMPI_Iscan
668 #define PMPI_Iscan APMPI_Iscan
669 #define MPI_Exscan AMPI_Exscan
670 #define PMPI_Exscan APMPI_Exscan
671 #define MPI_Iexscan AMPI_Iexscan
672 #define PMPI_Iexscan APMPI_Iexscan
674 /***neighborhood collectives***/
675 #define MPI_Neighbor_alltoall AMPI_Neighbor_alltoall
676 #define PMPI_Neighbor_alltoall APMPI_Neighbor_alltoall
677 #define MPI_Ineighbor_alltoall AMPI_Ineighbor_alltoall
678 #define PMPI_Ineighbor_alltoall APMPI_Ineighbor_alltoall
679 #define MPI_Neighbor_alltoallv AMPI_Neighbor_alltoallv
680 #define PMPI_Neighbor_alltoallv APMPI_Neighbor_alltoallv
681 #define MPI_Ineighbor_alltoallv AMPI_Ineighbor_alltoallv
682 #define PMPI_Ineighbor_alltoallv APMPI_Ineighbor_alltoallv
683 #define MPI_Neighbor_alltoallw AMPI_Neighbor_alltoallw
684 #define PMPI_Neighbor_alltoallw APMPI_Neighbor_alltoallw
685 #define MPI_Ineighbor_alltoallw AMPI_Ineighbor_alltoallw
686 #define PMPI_Ineighbor_alltoallw APMPI_Ineighbor_alltoallw
687 #define MPI_Neighbor_allgather AMPI_Neighbor_allgather
688 #define PMPI_Neighbor_allgather APMPI_Neighbor_allgather
689 #define MPI_Ineighbor_allgather AMPI_Ineighbor_allgather
690 #define PMPI_Ineighbor_allgather APMPI_Ineighbor_allgather
691 #define MPI_Neighbor_allgatherv AMPI_Neighbor_allgatherv
692 #define PMPI_Neighbor_allgatherv APMPI_Neighbor_allgatherv
693 #define MPI_Ineighbor_allgatherv AMPI_Ineighbor_allgatherv
694 #define PMPI_Ineighbor_allgatherv APMPI_Ineighbor_allgatherv
696 /***ops***/
697 #define MPI_Op_create AMPI_Op_create
698 #define PMPI_Op_create APMPI_Op_create
699 #define MPI_Op_free AMPI_Op_free
700 #define PMPI_Op_free APMPI_Op_free
701 #define MPI_Op_commutative AMPI_Op_commutative
702 #define PMPI_Op_commutative APMPI_Op_commutative
704 /***groups***/
705 #define MPI_Group_size AMPI_Group_size
706 #define PMPI_Group_size APMPI_Group_size
707 #define MPI_Group_rank AMPI_Group_rank
708 #define PMPI_Group_rank APMPI_Group_rank
709 #define MPI_Group_translate_ranks AMPI_Group_translate_ranks
710 #define PMPI_Group_translate_ranks APMPI_Group_translate_ranks
711 #define MPI_Group_compare AMPI_Group_compare
712 #define PMPI_Group_compare APMPI_Group_compare
713 #define MPI_Comm_group AMPI_Comm_group
714 #define PMPI_Comm_group APMPI_Comm_group
715 #define MPI_Group_union AMPI_Group_union
716 #define PMPI_Group_union APMPI_Group_union
717 #define MPI_Group_intersection AMPI_Group_intersection
718 #define PMPI_Group_intersection APMPI_Group_intersection
719 #define MPI_Group_difference AMPI_Group_difference
720 #define PMPI_Group_difference APMPI_Group_difference
721 #define MPI_Group_incl AMPI_Group_incl
722 #define PMPI_Group_incl APMPI_Group_incl
723 #define MPI_Group_excl AMPI_Group_excl
724 #define PMPI_Group_excl APMPI_Group_excl
725 #define MPI_Group_range_incl AMPI_Group_range_incl
726 #define PMPI_Group_range_incl APMPI_Group_range_incl
727 #define MPI_Group_range_excl AMPI_Group_range_excl
728 #define PMPI_Group_range_excl APMPI_Group_range_excl
729 #define MPI_Group_free AMPI_Group_free
730 #define PMPI_Group_free APMPI_Group_free
732 /***communicators***/
733 #define MPI_Intercomm_create AMPI_Intercomm_create
734 #define PMPI_Intercomm_create APMPI_Intercomm_create
735 #define MPI_Intercomm_merge AMPI_Intercomm_merge
736 #define PMPI_Intercomm_merge APMPI_Intercomm_merge
737 #define MPI_Comm_create AMPI_Comm_create
738 #define PMPI_Comm_create APMPI_Comm_create
739 #define MPI_Comm_create_group AMPI_Comm_create_group
740 #define PMPI_Comm_create_group APMPI_Comm_create_group
741 #define MPI_Comm_size AMPI_Comm_size
742 #define PMPI_Comm_size APMPI_Comm_size
743 #define MPI_Comm_rank AMPI_Comm_rank
744 #define PMPI_Comm_rank APMPI_Comm_rank
745 #define MPI_Comm_compare AMPI_Comm_compare
746 #define PMPI_Comm_compare APMPI_Comm_compare
747 #define MPI_Comm_split AMPI_Comm_split
748 #define PMPI_Comm_split APMPI_Comm_split
749 #define MPI_Comm_split_type AMPI_Comm_split_type
750 #define PMPI_Comm_split_type APMPI_Comm_split_type
751 #define MPI_Comm_dup AMPI_Comm_dup
752 #define PMPI_Comm_dup APMPI_Comm_dup
753 #define MPI_Comm_idup AMPI_Comm_idup
754 #define PMPI_Comm_idup APMPI_Comm_idup
755 #define MPI_Comm_dup_with_info AMPI_Comm_dup_with_info
756 #define PMPI_Comm_dup_with_info APMPI_Comm_dup_with_info
757 #define MPI_Comm_idup_with_info AMPI_Comm_idup_with_info
758 #define PMPI_Comm_idup_with_info APMPI_Comm_idup_with_info
759 #define MPI_Comm_free AMPI_Comm_free
760 #define PMPI_Comm_free APMPI_Comm_free
761 #define MPI_Comm_test_inter AMPI_Comm_test_inter
762 #define PMPI_Comm_test_inter APMPI_Comm_test_inter
763 #define MPI_Comm_remote_size AMPI_Comm_remote_size
764 #define PMPI_Comm_remote_size APMPI_Comm_remote_size
765 #define MPI_Comm_remote_group AMPI_Comm_remote_group
766 #define PMPI_Comm_remote_group APMPI_Comm_remote_group
767 #define MPI_Comm_set_name AMPI_Comm_set_name
768 #define PMPI_Comm_set_name APMPI_Comm_set_name
769 #define MPI_Comm_get_name AMPI_Comm_get_name
770 #define PMPI_Comm_get_name APMPI_Comm_get_name
771 #define MPI_Comm_set_info AMPI_Comm_set_info
772 #define PMPI_Comm_set_info APMPI_Comm_set_info
773 #define MPI_Comm_get_info AMPI_Comm_get_info
774 #define PMPI_Comm_get_info APMPI_Comm_get_info
775 #define MPI_Comm_call_errhandler AMPI_Comm_call_errhandler
776 #define PMPI_Comm_call_errhandler APMPI_Comm_call_errhandler
777 #define MPI_Comm_create_errhandler AMPI_Comm_create_errhandler
778 #define PMPI_Comm_create_errhandler APMPI_Comm_create_errhandler
779 #define MPI_Comm_set_errhandler AMPI_Comm_set_errhandler
780 #define PMPI_Comm_set_errhandler APMPI_Comm_set_errhandler
781 #define MPI_Comm_get_errhandler AMPI_Comm_get_errhandler
782 #define PMPI_Comm_get_errhandler APMPI_Comm_get_errhandler
783 #define MPI_Comm_free_errhandler AMPI_Comm_free_errhandler
784 #define PMPI_Comm_free_errhandler APMPI_Comm_free_errhandler
785 #define MPI_Comm_create_keyval AMPI_Comm_create_keyval
786 #define PMPI_Comm_create_keyval APMPI_Comm_create_keyval
787 #define MPI_Comm_free_keyval AMPI_Comm_free_keyval
788 #define PMPI_Comm_free_keyval APMPI_Comm_free_keyval
789 #define MPI_Comm_set_attr AMPI_Comm_set_attr
790 #define PMPI_Comm_set_attr APMPI_Comm_set_attr
791 #define MPI_Comm_get_attr AMPI_Comm_get_attr
792 #define PMPI_Comm_get_attr APMPI_Comm_get_attr
793 #define MPI_Comm_delete_attr AMPI_Comm_delete_attr
794 #define PMPI_Comm_delete_attr APMPI_Comm_delete_attr
796 /***keyvals/attributes***/
797 #define MPI_Keyval_create AMPI_Keyval_create
798 #define PMPI_Keyval_create APMPI_Keyval_create
799 #define MPI_Keyval_free AMPI_Keyval_free
800 #define PMPI_Keyval_free APMPI_Keyval_free
801 #define MPI_Attr_put AMPI_Attr_put
802 #define PMPI_Attr_put APMPI_Attr_put
803 #define MPI_Attr_get AMPI_Attr_get
804 #define PMPI_Attr_get APMPI_Attr_get
805 #define MPI_Attr_delete AMPI_Attr_delete
806 #define PMPI_Attr_delete APMPI_Attr_delete
808 /***topologies***/
809 #define MPI_Cart_create AMPI_Cart_create
810 #define PMPI_Cart_create APMPI_Cart_create
811 #define MPI_Graph_create AMPI_Graph_create
812 #define PMPI_Graph_create APMPI_Graph_create
813 #define MPI_Dist_graph_create_adjacent AMPI_Dist_graph_create_adjacent
814 #define PMPI_Dist_graph_create_adjacent APMPI_Dist_graph_create_adjacent
815 #define MPI_Dist_graph_create AMPI_Dist_graph_create
816 #define PMPI_Dist_graph_create APMPI_Dist_graph_create
817 #define MPI_Topo_test AMPI_Topo_test
818 #define PMPI_Topo_test APMPI_Topo_test
819 #define MPI_Cart_map AMPI_Cart_map
820 #define PMPI_Cart_map APMPI_Cart_map
821 #define MPI_Graph_map AMPI_Graph_map
822 #define PMPI_Graph_map APMPI_Graph_map
823 #define MPI_Cartdim_get AMPI_Cartdim_get
824 #define PMPI_Cartdim_get APMPI_Cartdim_get
825 #define MPI_Cart_get AMPI_Cart_get
826 #define PMPI_Cart_get APMPI_Cart_get
827 #define MPI_Cart_rank AMPI_Cart_rank
828 #define PMPI_Cart_rank APMPI_Cart_rank
829 #define MPI_Cart_coords AMPI_Cart_coords
830 #define PMPI_Cart_coords APMPI_Cart_coords
831 #define MPI_Cart_shift AMPI_Cart_shift
832 #define PMPI_Cart_shift APMPI_Cart_shift
833 #define MPI_Graphdims_get AMPI_Graphdims_get
834 #define PMPI_Graphdims_get APMPI_Graphdims_get
835 #define MPI_Graph_get AMPI_Graph_get
836 #define PMPI_Graph_get APMPI_Graph_get
837 #define MPI_Graph_neighbors_count AMPI_Graph_neighbors_count
838 #define PMPI_Graph_neighbors_count APMPI_Graph_neighbors_count
839 #define MPI_Graph_neighbors AMPI_Graph_neighbors
840 #define PMPI_Graph_neighbors APMPI_Graph_neighbors
841 #define MPI_Dist_graph_neighbors_count AMPI_Dist_graph_neighbors_count
842 #define PMPI_Dist_graph_neighbors_count APMPI_Dist_graph_neighbors_count
843 #define MPI_Dist_graph_neighbors AMPI_Dist_graph_neighbors
844 #define PMPI_Dist_graph_neighbors APMPI_Dist_graph_neighbors
845 #define MPI_Dims_create AMPI_Dims_create
846 #define PMPI_Dims_create APMPI_Dims_create
847 #define MPI_Cart_sub AMPI_Cart_sub
848 #define PMPI_Cart_sub APMPI_Cart_sub
850 /***environment management***/
851 #define MPI_Errhandler_create AMPI_Errhandler_create
852 #define PMPI_Errhandler_create APMPI_Errhandler_create
853 #define MPI_Errhandler_set AMPI_Errhandler_set
854 #define PMPI_Errhandler_set APMPI_Errhandler_set
855 #define MPI_Errhandler_get AMPI_Errhandler_get
856 #define PMPI_Errhandler_get APMPI_Errhandler_get
857 #define MPI_Errhandler_free AMPI_Errhandler_free
858 #define PMPI_Errhandler_free APMPI_Errhandler_free
859 #define MPI_Add_error_code AMPI_Add_error_code
860 #define PMPI_Add_error_code APMPI_Add_error_code
861 #define MPI_Add_error_class AMPI_Add_error_class
862 #define PMPI_Add_error_class APMPI_Add_error_class
863 #define MPI_Add_error_string AMPI_Add_error_string
864 #define PMPI_Add_error_string APMPI_Add_error_string
865 #define MPI_Error_class AMPI_Error_class
866 #define PMPI_Error_class APMPI_Error_class
867 #define MPI_Error_string AMPI_Error_string
868 #define PMPI_Error_string APMPI_Error_string
869 #define MPI_Get_version AMPI_Get_version
870 #define PMPI_Get_version APMPI_Get_version
871 #define MPI_Get_library_version AMPI_Get_library_version
872 #define PMPI_Get_library_version APMPI_Get_library_version
873 #define MPI_Get_processor_name AMPI_Get_processor_name
874 #define PMPI_Get_processor_name APMPI_Get_processor_name
875 #define MPI_Wtime AMPI_Wtime
876 #define PMPI_Wtime APMPI_Wtime
877 #define MPI_Wtick AMPI_Wtick
878 #define PMPI_Wtick APMPI_Wtick
879 #define MPI_Is_thread_main AMPI_Is_thread_main
880 #define PMPI_Is_thread_main APMPI_Is_thread_main
881 #define MPI_Query_thread AMPI_Query_thread
882 #define PMPI_Query_thread APMPI_Query_thread
883 #define MPI_Init_thread AMPI_Init_thread
884 #define PMPI_Init_thread APMPI_Init_thread
885 #define MPI_Init AMPI_Init
886 #define PMPI_Init APMPI_Init
887 #define MPI_Initialized AMPI_Initialized
888 #define PMPI_Initialized APMPI_Initialized
889 #define MPI_Finalize AMPI_Finalize
890 #define PMPI_Finalize APMPI_Finalize
891 #define MPI_Finalized AMPI_Finalized
892 #define PMPI_Finalized APMPI_Finalized
893 #define MPI_Abort AMPI_Abort
894 #define PMPI_Abort APMPI_Abort
895 #define MPI_Pcontrol AMPI_Pcontrol
896 #define PMPI_Pcontrol APMPI_Pcontrol
898 /***windows/rma***/
899 #define MPI_Win_create AMPI_Win_create
900 #define PMPI_Win_create APMPI_Win_create
901 #define MPI_Win_free AMPI_Win_free
902 #define PMPI_Win_free APMPI_Win_free
903 #define MPI_Win_create_errhandler AMPI_Win_create_errhandler
904 #define PMPI_Win_create_errhandler APMPI_Win_create_errhandler
905 #define MPI_Win_call_errhandler AMPI_Win_call_errhandler
906 #define PMPI_Win_call_errhandler APMPI_Win_call_errhandler
907 #define MPI_Win_get_errhandler AMPI_Win_get_errhandler
908 #define PMPI_Win_get_errhandler APMPI_Win_get_errhandler
909 #define MPI_Win_set_errhandler AMPI_Win_set_errhandler
910 #define PMPI_Win_set_errhandler APMPI_Win_set_errhandler
911 #define MPI_Win_create_keyval AMPI_Win_create_keyval
912 #define PMPI_Win_create_keyval APMPI_Win_create_keyval
913 #define MPI_Win_free_keyval AMPI_Win_free_keyval
914 #define PMPI_Win_free_keyval APMPI_Win_free_keyval
915 #define MPI_Win_delete_attr AMPI_Win_delete_attr
916 #define PMPI_Win_delete_attr APMPI_Win_delete_attr
917 #define MPI_Win_get_attr AMPI_Win_get_attr
918 #define PMPI_Win_get_attr APMPI_Win_get_attr
919 #define MPI_Win_set_attr AMPI_Win_set_attr
920 #define PMPI_Win_set_attr APMPI_Win_set_attr
921 #define MPI_Win_get_group AMPI_Win_get_group
922 #define PMPI_Win_get_group APMPI_Win_get_group
923 #define MPI_Win_set_name AMPI_Win_set_name
924 #define PMPI_Win_set_name APMPI_Win_set_name
925 #define MPI_Win_get_name AMPI_Win_get_name
926 #define PMPI_Win_get_name APMPI_Win_get_name
927 #define MPI_Win_set_info AMPI_Win_set_info
928 #define PMPI_Win_set_info APMPI_Win_set_info
929 #define MPI_Win_get_info AMPI_Win_get_info
930 #define PMPI_Win_get_info APMPI_Win_get_info
931 #define MPI_Win_fence AMPI_Win_fence
932 #define PMPI_Win_fence APMPI_Win_fence
933 #define MPI_Win_lock AMPI_Win_lock
934 #define PMPI_Win_lock APMPI_Win_lock
935 #define MPI_Win_unlock AMPI_Win_unlock
936 #define PMPI_Win_unlock APMPI_Win_unlock
937 #define MPI_Win_post AMPI_Win_post
938 #define PMPI_Win_post APMPI_Win_post
939 #define MPI_Win_wait AMPI_Win_wait
940 #define PMPI_Win_wait APMPI_Win_wait
941 #define MPI_Win_start AMPI_Win_start
942 #define PMPI_Win_start APMPI_Win_start
943 #define MPI_Win_complete AMPI_Win_complete
944 #define PMPI_Win_complete APMPI_Win_complete
945 #define MPI_Win_test AMPI_Win_test
946 #define PMPI_Win_test APMPI_Win_test
947 #define MPI_Alloc_mem AMPI_Alloc_mem
948 #define PMPI_Alloc_mem APMPI_Alloc_mem
949 #define MPI_Free_mem AMPI_Free_mem
950 #define PMPI_Free_mem APMPI_Free_mem
951 #define MPI_Put AMPI_Put
952 #define PMPI_Put APMPI_Put
953 #define MPI_Get AMPI_Get
954 #define PMPI_Get APMPI_Get
955 #define MPI_Accumulate AMPI_Accumulate
956 #define PMPI_Accumulate APMPI_Accumulate
957 #define MPI_Get_accumulate AMPI_Get_accumulate
958 #define PMPI_Get_accumulate APMPI_Get_accumulate
959 #define MPI_Rput AMPI_Rput
960 #define PMPI_Rput APMPI_Rput
961 #define MPI_Rget AMPI_Rget
962 #define PMPI_Rget APMPI_Rget
963 #define MPI_Raccumulate AMPI_Raccumulate
964 #define PMPI_Raccumulate APMPI_Raccumulate
965 #define MPI_Rget_accumulate AMPI_Rget_accumulate
966 #define PMPI_Rget_accumulate APMPI_Rget_accumulate
967 #define MPI_Fetch_and_op AMPI_Fetch_and_op
968 #define PMPI_Fetch_and_op APMPI_Fetch_and_op
969 #define MPI_Compare_and_swap AMPI_Compare_and_swap
970 #define PMPI_Compare_and_swap APMPI_Compare_and_swap
972 /***infos***/
973 #define MPI_Info_create AMPI_Info_create
974 #define PMPI_Info_create APMPI_Info_create
975 #define MPI_Info_set AMPI_Info_set
976 #define PMPI_Info_set APMPI_Info_set
977 #define MPI_Info_delete AMPI_Info_delete
978 #define PMPI_Info_delete APMPI_Info_delete
979 #define MPI_Info_get AMPI_Info_get
980 #define PMPI_Info_get APMPI_Info_get
981 #define MPI_Info_get_valuelen AMPI_Info_get_valuelen
982 #define PMPI_Info_get_valuelen APMPI_Info_get_valuelen
983 #define MPI_Info_get_nkeys AMPI_Info_get_nkeys
984 #define PMPI_Info_get_nkeys APMPI_Info_get_nkeys
985 #define MPI_Info_get_nthkey AMPI_Info_get_nthkey
986 #define PMPI_Info_get_nthkey APMPI_Info_get_nthkey
987 #define MPI_Info_dup AMPI_Info_dup
988 #define PMPI_Info_dup APMPI_Info_dup
989 #define MPI_Info_free AMPI_Info_free
990 #define PMPI_Info_free APMPI_Info_free
992 /***MPIX***/
993 #define MPIX_Grequest_start AMPIX_Grequest_start
994 #define PMPIX_Grequest_start APMPIX_Grequest_start
995 #define MPIX_Grequest_class_create AMPIX_Grequest_class_create
996 #define PMPIX_Grequest_class_create APMPIX_Grequest_class_create
997 #define MPIX_Grequest_class_allocate AMPIX_Grequest_class_allocate
998 #define PMPIX_Grequest_class_allocate APMPIX_Grequest_class_allocate
1000 #define MPI_Pack_external AMPI_Pack_external
1001 #define PMPI_Pack_external APMPI_Pack_external
1002 #define MPI_Pack_external_size AMPI_Pack_external_size
1003 #define PMPI_Pack_external_size APMPI_Pack_external_size
1004 #define MPI_Unpack_external AMPI_Unpack_external
1005 #define PMPI_Unpack_external APMPI_Unpack_external
1007 #define MPI_File_call_errhandler AMPI_File_call_errhandler
1008 #define PMPI_File_call_errhandler APMPI_File_call_errhandler
1009 #define MPI_File_create_errhandler AMPI_File_create_errhandler
1010 #define PMPI_File_create_errhandler APMPI_File_create_errhandler
1011 #define MPI_File_get_errhandler AMPI_File_get_errhandler
1012 #define PMPI_File_get_errhandler APMPI_File_get_errhandler
1013 #define MPI_File_set_errhandler AMPI_File_set_errhandler
1014 #define PMPI_File_set_errhandler APMPI_File_set_errhandler
1016 #define MPI_Close_port AMPI_Close_port
1017 #define PMPI_Close_port APMPI_Close_port
1018 #define MPI_Comm_accept AMPI_Comm_accept
1019 #define PMPI_Comm_accept APMPI_Comm_accept
1020 #define MPI_Comm_connect AMPI_Comm_connect
1021 #define PMPI_Comm_connect APMPI_Comm_connect
1022 #define MPI_Comm_disconnect AMPI_Comm_disconnect
1023 #define PMPI_Comm_disconnect APMPI_Comm_disconnect
1024 #define MPI_Comm_get_parent AMPI_Comm_get_parent
1025 #define PMPI_Comm_get_parent APMPI_Comm_get_parent
1026 #define MPI_Comm_join AMPI_Comm_join
1027 #define PMPI_Comm_join APMPI_Comm_join
1028 #define MPI_Comm_spawn_multiple AMPI_Comm_spawn_multiple
1029 #define PMPI_Comm_spawn_multiple APMPI_Comm_spawn_multiple
1030 #define MPI_Lookup_name AMPI_Lookup_name
1031 #define PMPI_Lookup_name APMPI_Lookup_name
1032 #define MPI_Open_port AMPI_Open_port
1033 #define PMPI_Open_port APMPI_Open_port
1034 #define MPI_Publish_name AMPI_Publish_name
1035 #define PMPI_Publish_name APMPI_Publish_name
1036 #define MPI_Unpublish_name AMPI_Unpublish_name
1037 #define PMPI_Unpublish_name APMPI_Unpublish_name
1038 #define MPI_Comm_spawn AMPI_Comm_spawn
1039 #define PMPI_Comm_spawn APMPI_Comm_spawn
1041 #define MPI_Win_allocate AMPI_Win_allocate
1042 #define PMPI_Win_allocate APMPI_Win_allocate
1043 #define MPI_Win_allocate_shared AMPI_Win_allocate_shared
1044 #define PMPI_Win_allocate_shared APMPI_Win_allocate_shared
1045 #define MPI_Win_attach AMPI_Win_attach
1046 #define PMPI_Win_attach APMPI_Win_attach
1047 #define MPI_Win_create_dynamic AMPI_Win_create_dynamic
1048 #define PMPI_Win_create_dynamic APMPI_Win_create_dynamic
1049 #define MPI_Win_detach AMPI_Win_detach
1050 #define PMPI_Win_detach APMPI_Win_detach
1051 #define MPI_Win_flush AMPI_Win_flush
1052 #define PMPI_Win_flush APMPI_Win_flush
1053 #define MPI_Win_flush_all AMPI_Win_flush_all
1054 #define PMPI_Win_flush_all APMPI_Win_flush_all
1055 #define MPI_Win_flush_local AMPI_Win_flush_local
1056 #define PMPI_Win_flush_local APMPI_Win_flush_local
1057 #define MPI_Win_flush_local_all AMPI_Win_flush_local_all
1058 #define PMPI_Win_flush_local_all APMPI_Win_flush_local_all
1059 #define MPI_Win_lock_all AMPI_Win_lock_all
1060 #define PMPI_Win_lock_all APMPI_Win_lock_all
1061 #define MPI_Win_shared_query AMPI_Win_shared_query
1062 #define PMPI_Win_shared_query APMPI_Win_shared_query
1063 #define MPI_Win_sync AMPI_Win_sync
1064 #define PMPI_Win_sync APMPI_Win_sync
1065 #define MPI_Win_unlock_all AMPI_Win_unlock_all
1066 #define PMPI_Win_unlock_all APMPI_Win_unlock_all
1068 #define MPI_CONVERSION_FN_NULL AMPI_CONVERSION_FN_NULL
1069 #define PMPI_CONVERSION_FN_NULL APMPI_CONVERSION_FN_NULL
1070 #define MPI_File_iread_all AMPI_File_iread_all
1071 #define PMPI_File_iread_all APMPI_File_iread_all
1072 #define MPI_File_iread_at_all AMPI_File_iread_at_all
1073 #define PMPI_File_iread_at_all APMPI_File_iread_at_all
1074 #define MPI_File_iwrite_all AMPI_File_iwrite_all
1075 #define PMPI_File_iwrite_all APMPI_File_iwrite_all
1076 #define MPI_File_iwrite_at_all AMPI_File_iwrite_at_all
1077 #define PMPI_File_iwrite_at_all APMPI_File_iwrite_at_all
1079 #define MPI_Status_f082f AMPI_Status_f082f
1080 #define PMPI_Status_f082f APMPI_Status_f082f
1081 #define MPI_Status_f2f08 AMPI_Status_f2f08
1082 #define PMPI_Status_f2f08 APMPI_Status_f2f08
1083 #define MPI_Type_create_f90_complex AMPI_Type_create_f90_complex
1084 #define PMPI_Type_create_f90_complex APMPI_Type_create_f90_complex
1085 #define MPI_Type_create_f90_integer AMPI_Type_create_f90_integer
1086 #define PMPI_Type_create_f90_integer APMPI_Type_create_f90_integer
1087 #define MPI_Type_create_f90_real AMPI_Type_create_f90_real
1088 #define PMPI_Type_create_f90_real APMPI_Type_create_f90_real
1089 #define MPI_Type_match_size AMPI_Type_match_size
1090 #define PMPI_Type_match_size APMPI_Type_match_size
1091 #define MPI_Message_c2f AMPI_Message_c2f
1092 #define PMPI_Message_c2f APMPI_Message_c2f
1093 #define MPI_Message_f2c AMPI_Message_f2c
1094 #define PMPI_Message_f2c APMPI_Message_f2c
1095 #define MPI_Status_c2f AMPI_Status_c2f
1096 #define PMPI_Status_c2f APMPI_Status_c2f
1097 #define MPI_Status_c2f08 AMPI_Status_c2f08
1098 #define PMPI_Status_c2f08 APMPI_Status_c2f08
1099 #define MPI_Status_f082c AMPI_Status_f082c
1100 #define PMPI_Status_f082c APMPI_Status_f082c
1101 #define MPI_Status_f2c AMPI_Status_f2c
1102 #define PMPI_Status_f2c APMPI_Status_f2c
1104 #define MPI_T_category_changed AMPI_T_category_changed
1105 #define PMPI_T_category_changed APMPI_T_category_changed
1106 #define MPI_T_category_get_categories AMPI_T_category_get_categories
1107 #define PMPI_T_category_get_categories APMPI_T_category_get_categories
1108 #define MPI_T_category_get_cvars AMPI_T_category_get_cvars
1109 #define PMPI_T_category_get_cvars APMPI_T_category_get_cvars
1110 #define MPI_T_category_get_index AMPI_T_category_get_index
1111 #define PMPI_T_category_get_index APMPI_T_category_get_index
1112 #define MPI_T_category_get_info AMPI_T_category_get_info
1113 #define PMPI_T_category_get_info APMPI_T_category_get_info
1114 #define MPI_T_category_get_num AMPI_T_category_get_num
1115 #define PMPI_T_category_get_num APMPI_T_category_get_num
1116 #define MPI_T_category_get_pvars AMPI_T_category_get_pvars
1117 #define PMPI_T_category_get_pvars APMPI_T_category_get_pvars
1118 #define MPI_T_cvar_get_index AMPI_T_cvar_get_index
1119 #define PMPI_T_cvar_get_index APMPI_T_cvar_get_index
1120 #define MPI_T_cvar_get_info AMPI_T_cvar_get_info
1121 #define PMPI_T_cvar_get_info APMPI_T_cvar_get_info
1122 #define MPI_T_cvar_get_num AMPI_T_cvar_get_num
1123 #define PMPI_T_cvar_get_num APMPI_T_cvar_get_num
1124 #define MPI_T_cvar_handle_alloc AMPI_T_cvar_handle_alloc
1125 #define PMPI_T_cvar_handle_alloc APMPI_T_cvar_handle_alloc
1126 #define MPI_T_cvar_handle_free AMPI_T_cvar_handle_free
1127 #define PMPI_T_cvar_handle_free APMPI_T_cvar_handle_free
1128 #define MPI_T_cvar_read AMPI_T_cvar_read
1129 #define PMPI_T_cvar_read APMPI_T_cvar_read
1130 #define MPI_T_cvar_write AMPI_T_cvar_write
1131 #define PMPI_T_cvar_write APMPI_T_cvar_write
1132 #define MPI_T_enum_get_info AMPI_T_enum_get_info
1133 #define PMPI_T_enum_get_info APMPI_T_enum_get_info
1134 #define MPI_T_enum_get_item AMPI_T_enum_get_item
1135 #define PMPI_T_enum_get_item APMPI_T_enum_get_item
1136 #define MPI_T_finalize AMPI_T_finalize
1137 #define PMPI_T_finalize APMPI_T_finalize
1138 #define MPI_T_init_thread AMPI_T_init_thread
1139 #define PMPI_T_init_thread APMPI_T_init_thread
1140 #define MPI_T_pvar_get_index AMPI_T_pvar_get_index
1141 #define PMPI_T_pvar_get_index APMPI_T_pvar_get_index
1142 #define MPI_T_pvar_get_info AMPI_T_pvar_get_info
1143 #define PMPI_T_pvar_get_info APMPI_T_pvar_get_info
1144 #define MPI_T_pvar_get_num AMPI_T_pvar_get_num
1145 #define PMPI_T_pvar_get_num APMPI_T_pvar_get_num
1146 #define MPI_T_pvar_handle_alloc AMPI_T_pvar_handle_alloc
1147 #define PMPI_T_pvar_handle_alloc APMPI_T_pvar_handle_alloc
1148 #define MPI_T_pvar_handle_free AMPI_T_pvar_handle_free
1149 #define PMPI_T_pvar_handle_free APMPI_T_pvar_handle_free
1150 #define MPI_T_pvar_read AMPI_T_pvar_read
1151 #define PMPI_T_pvar_read APMPI_T_pvar_read
1152 #define MPI_T_pvar_readreset AMPI_T_pvar_readreset
1153 #define PMPI_T_pvar_readreset APMPI_T_pvar_readreset
1154 #define MPI_T_pvar_reset AMPI_T_pvar_reset
1155 #define PMPI_T_pvar_reset APMPI_T_pvar_reset
1156 #define MPI_T_pvar_session_create AMPI_T_pvar_session_create
1157 #define PMPI_T_pvar_session_create APMPI_T_pvar_session_create
1158 #define MPI_T_pvar_session_free AMPI_T_pvar_session_free
1159 #define PMPI_T_pvar_session_free APMPI_T_pvar_session_free
1160 #define MPI_T_pvar_start AMPI_T_pvar_start
1161 #define PMPI_T_pvar_start APMPI_T_pvar_start
1162 #define MPI_T_pvar_stop AMPI_T_pvar_stop
1163 #define PMPI_T_pvar_stop APMPI_T_pvar_stop
1164 #define MPI_T_pvar_write AMPI_T_pvar_write
1165 #define PMPI_T_pvar_write APMPI_T_pvar_write
1167 #endif //CMK_CONVERSE_MPI
1169 /***pt2pt***/
1170 AMPI_API_DEF(int, MPI_Send, const void *msg, int count, MPI_Datatype type, int dest,
1171 int tag, MPI_Comm comm)
1172 AMPI_API_DEF(int, MPI_Ssend, const void *msg, int count, MPI_Datatype type, int dest,
1173 int tag, MPI_Comm comm)
1174 AMPI_API_DEF(int, MPI_Recv, void *msg, int count, MPI_Datatype type, int src, int tag,
1175 MPI_Comm comm, MPI_Status *status)
1176 AMPI_API_DEF(int, MPI_Mrecv, void* buf, int count, MPI_Datatype datatype, MPI_Message *message,
1177 MPI_Status *status)
1178 AMPI_API_DEF(int, MPI_Get_count, const MPI_Status *sts, MPI_Datatype dtype, int *count)
1179 AMPI_API_DEF(int, MPI_Bsend, const void *buf, int count, MPI_Datatype datatype,
1180 int dest, int tag,MPI_Comm comm)
1181 AMPI_API_DEF(int, MPI_Rsend, const void *buf, int count, MPI_Datatype datatype,
1182 int dest, int tag,MPI_Comm comm)
1183 AMPI_API_DEF(int, MPI_Buffer_attach, void *buffer, int size)
1184 AMPI_API_DEF(int, MPI_Buffer_detach, void *buffer, int *size)
1185 AMPI_API_DEF(int, MPI_Isend, const void *buf, int count, MPI_Datatype datatype, int dest,
1186 int tag, MPI_Comm comm, MPI_Request *request)
1187 AMPI_API_DEF(int, MPI_Ibsend, const void *buf, int count, MPI_Datatype datatype, int dest,
1188 int tag, MPI_Comm comm, MPI_Request *request)
1189 AMPI_API_DEF(int, MPI_Issend, const void *buf, int count, MPI_Datatype datatype, int dest,
1190 int tag, MPI_Comm comm, MPI_Request *request)
1191 AMPI_API_DEF(int, MPI_Irsend, const void *buf, int count, MPI_Datatype datatype, int dest,
1192 int tag, MPI_Comm comm, MPI_Request *request)
1193 AMPI_API_DEF(int, MPI_Irecv, void *buf, int count, MPI_Datatype datatype, int src,
1194 int tag, MPI_Comm comm, MPI_Request *request)
1195 AMPI_API_DEF(int, MPI_Imrecv, void* buf, int count, MPI_Datatype datatype, MPI_Message *message,
1196 MPI_Request *request)
1197 AMPI_API_DEF(int, MPI_Wait, MPI_Request *request, MPI_Status *sts)
1198 AMPI_API_DEF(int, MPI_Test, MPI_Request *request, int *flag, MPI_Status *sts)
1199 AMPI_API_DEF(int, MPI_Waitany, int count, MPI_Request *request, int *index, MPI_Status *sts)
1200 AMPI_API_DEF(int, MPI_Testany, int count, MPI_Request *request, int *index, int *flag, MPI_Status *status)
1201 AMPI_API_DEF(int, MPI_Waitall, int count, MPI_Request *request, MPI_Status *sts)
1202 AMPI_API_DEF(int, MPI_Testall, int count, MPI_Request *request, int *flag, MPI_Status *sts)
1203 AMPI_API_DEF(int, MPI_Waitsome, int incount, MPI_Request *array_of_requests, int *outcount,
1204 int *array_of_indices, MPI_Status *array_of_statuses)
1205 AMPI_API_DEF(int, MPI_Testsome, int incount, MPI_Request *array_of_requests, int *outcount,
1206 int *array_of_indices, MPI_Status *array_of_statuses)
1207 AMPI_API_DEF(int, MPI_Request_get_status, MPI_Request request, int *flag, MPI_Status *sts)
1208 AMPI_API_DEF(int, MPI_Request_free, MPI_Request *request)
1209 AMPI_API_DEF(int, MPI_Grequest_start, MPI_Grequest_query_function *query_fn, MPI_Grequest_free_function *free_fn,\
1210 MPI_Grequest_cancel_function *cancel_fn, void *extra_state, MPI_Request *request)
1211 AMPI_API_DEF(int, MPI_Grequest_complete, MPI_Request request)
1212 AMPI_API_DEF(int, MPI_Cancel, MPI_Request *request)
1213 AMPI_API_DEF(int, MPI_Test_cancelled, const MPI_Status *status, int *flag) /* FIXME: always returns success */
1214 AMPI_API_DEF(int, MPI_Status_set_cancelled, MPI_Status *status, int flag)
1215 AMPI_API_DEF(int, MPI_Iprobe, int src, int tag, MPI_Comm comm, int *flag, MPI_Status *sts)
1216 AMPI_API_DEF(int, MPI_Probe, int source, int tag, MPI_Comm comm, MPI_Status *sts)
1217 AMPI_API_DEF(int, MPI_Improbe, int source, int tag, MPI_Comm comm, int *flag,
1218 MPI_Message *message, MPI_Status *status)
1219 AMPI_API_DEF(int, MPI_Mprobe, int source, int tag, MPI_Comm comm, MPI_Message *message,
1220 MPI_Status *status)
1221 AMPI_API_DEF(int, MPI_Send_init, const void *buf, int count, MPI_Datatype type, int dest, int tag,
1222 MPI_Comm comm, MPI_Request *req)
1223 AMPI_API_DEF(int, MPI_Ssend_init, const void *buf, int count, MPI_Datatype type, int dest, int tag,
1224 MPI_Comm comm, MPI_Request *req)
1225 AMPI_API_DEF(int, MPI_Rsend_init, const void *buf, int count, MPI_Datatype type, int dest, int tag,
1226 MPI_Comm comm, MPI_Request *req)
1227 AMPI_API_DEF(int, MPI_Bsend_init, const void *buf, int count, MPI_Datatype type, int dest, int tag,
1228 MPI_Comm comm, MPI_Request *req)
1229 AMPI_API_DEF(int, MPI_Recv_init, void *buf, int count, MPI_Datatype type, int src, int tag,
1230 MPI_Comm comm, MPI_Request *req)
1231 AMPI_API_DEF(int, MPI_Start, MPI_Request *reqnum)
1232 AMPI_API_DEF(int, MPI_Startall, int count, MPI_Request *array_of_requests)
1233 AMPI_API_DEF(int, MPI_Sendrecv, const void *sbuf, int scount, MPI_Datatype stype, int dest,
1234 int stag, void *rbuf, int rcount, MPI_Datatype rtype,
1235 int src, int rtag, MPI_Comm comm, MPI_Status *sts)
1236 AMPI_API_DEF(int, MPI_Sendrecv_replace, void* buf, int count, MPI_Datatype datatype,
1237 int dest, int sendtag, int source, int recvtag,
1238 MPI_Comm comm, MPI_Status *status)
1240 /***datatypes***/
1241 AMPI_API_DEF(int, MPI_Type_contiguous, int count, MPI_Datatype oldtype,
1242 MPI_Datatype *newtype)
1243 AMPI_API_DEF(int, MPI_Type_vector, int count, int blocklength, int stride,
1244 MPI_Datatype oldtype, MPI_Datatype *newtype)
1245 AMPI_API_DEF(int, MPI_Type_create_hvector, int count, int blocklength, MPI_Aint stride,
1246 MPI_Datatype oldtype, MPI_Datatype *newtype)
1247 AMPI_API_DEF(int, MPI_Type_hvector, int count, int blocklength, MPI_Aint stride,
1248 MPI_Datatype oldtype, MPI_Datatype *newtype)
1249 AMPI_API_DEF(int, MPI_Type_indexed, int count, const int* arrBlength, const int* arrDisp,
1250 MPI_Datatype oldtype, MPI_Datatype *newtype)
1251 AMPI_API_DEF(int, MPI_Type_create_hindexed, int count, const int* arrBlength, const MPI_Aint* arrDisp,
1252 MPI_Datatype oldtype, MPI_Datatype *newtype)
1253 AMPI_API_DEF(int, MPI_Type_create_indexed_block, int count, int Blength, const int *arrDisp,
1254 MPI_Datatype oldtype, MPI_Datatype *newtype)
1255 AMPI_API_DEF(int, MPI_Type_create_hindexed_block, int count, int Blength, const MPI_Aint *arrDisp,
1256 MPI_Datatype oldtype, MPI_Datatype *newtype)
1257 AMPI_API_DEF(int, MPI_Type_hindexed, int count, int* arrBlength, MPI_Aint* arrDisp,
1258 MPI_Datatype oldtype, MPI_Datatype *newtype)
1259 AMPI_API_DEF(int, MPI_Type_create_struct, int count, const int* arrBLength, const MPI_Aint* arrDisp,
1260 const MPI_Datatype *oldType, MPI_Datatype *newType)
1261 AMPI_API_DEF(int, MPI_Type_struct, int count, int* arrBLength, MPI_Aint* arrDisp,
1262 MPI_Datatype *oldType, MPI_Datatype *newType)
1263 AMPI_API_DEF(int, MPI_Type_get_envelope, MPI_Datatype datatype, int *num_integers, int *num_addresses,
1264 int *num_datatypes, int *combiner)
1265 AMPI_API_DEF(int, MPI_Type_get_contents, MPI_Datatype datatype, int max_integers, int max_addresses,
1266 int max_datatypes, int array_of_integers[], MPI_Aint array_of_addresses[],
1267 MPI_Datatype array_of_datatypes[])
1268 AMPI_API_DEF(int, MPI_Type_commit, MPI_Datatype *datatype)
1269 AMPI_API_DEF(int, MPI_Type_free, MPI_Datatype *datatype)
1270 AMPI_API_DEF(int, MPI_Type_get_extent, MPI_Datatype datatype, MPI_Aint *lb, MPI_Aint *extent)
1271 AMPI_API_DEF(int, MPI_Type_get_extent_x, MPI_Datatype datatype, MPI_Count *lb, MPI_Count *extent)
1272 AMPI_API_DEF(int, MPI_Type_extent, MPI_Datatype datatype, MPI_Aint *extent)
1273 AMPI_API_DEF(int, MPI_Type_get_true_extent, MPI_Datatype datatype, MPI_Aint *true_lb, MPI_Aint *true_extent)
1274 AMPI_API_DEF(int, MPI_Type_get_true_extent_x, MPI_Datatype datatype, MPI_Count *true_lb, MPI_Count *true_extent)
1275 AMPI_API_DEF(int, MPI_Type_size, MPI_Datatype datatype, int *size)
1276 AMPI_API_DEF(int, MPI_Type_size_x, MPI_Datatype datatype, MPI_Count *size)
1277 AMPI_API_DEF(int, MPI_Type_lb, MPI_Datatype datatype, MPI_Aint* displacement)
1278 AMPI_API_DEF(int, MPI_Type_ub, MPI_Datatype datatype, MPI_Aint* displacement)
1279 AMPI_API_DEF(int, MPI_Type_set_name, MPI_Datatype datatype, const char *name)
1280 AMPI_API_DEF(int, MPI_Type_get_name, MPI_Datatype datatype, char *name, int *resultlen)
1281 AMPI_API_DEF(int, MPI_Type_dup, MPI_Datatype oldtype, MPI_Datatype *newtype)
1282 AMPI_API_DEF(int, MPI_Type_create_resized, MPI_Datatype oldtype, MPI_Aint lb, MPI_Aint extent, MPI_Datatype *newtype)
1283 AMPI_API_DEF(int, MPI_Type_set_attr, MPI_Datatype datatype, int type_keyval, void *attribute_val)
1284 AMPI_API_DEF(int, MPI_Type_get_attr, MPI_Datatype datatype, int type_keyval, void *attribute_val, int *flag)
1285 AMPI_API_DEF(int, MPI_Type_delete_attr, MPI_Datatype datatype, int type_keyval)
1286 AMPI_API_DEF(int, MPI_Type_create_keyval, MPI_Type_copy_attr_function *type_copy_attr_fn,
1287 MPI_Type_delete_attr_function *type_delete_attr_fn,
1288 int *type_keyval, void *extra_state)
1289 AMPI_API_DEF(int, MPI_Type_free_keyval, int *type_keyval)
1290 AMPI_API_DEF(int, MPI_Get_address, const void* location, MPI_Aint *address)
1291 AMPI_API_DEF(int, MPI_Address, void* location, MPI_Aint *address)
1292 AMPI_API_DEF(int, MPI_Status_set_elements, MPI_Status *status, MPI_Datatype datatype, int count)
1293 AMPI_API_DEF(int, MPI_Status_set_elements_x, MPI_Status *status, MPI_Datatype datatype, MPI_Count count)
1294 AMPI_API_DEF(int, MPI_Get_elements, const MPI_Status *status, MPI_Datatype datatype, int *count)
1295 AMPI_API_DEF(int, MPI_Get_elements_x, const MPI_Status *status, MPI_Datatype datatype, MPI_Count *count)
1296 AMPI_API_DEF(int, MPI_Pack, const void *inbuf, int incount, MPI_Datatype dtype, void *outbuf,
1297 int outsize, int *position, MPI_Comm comm)
1298 AMPI_API_DEF(int, MPI_Unpack, const void *inbuf, int insize, int *position, void *outbuf,
1299 int outcount, MPI_Datatype dtype, MPI_Comm comm)
1300 AMPI_API_DEF(int, MPI_Pack_size, int incount,MPI_Datatype datatype,MPI_Comm comm,int *sz)
1301 #define MPI_Aint_add(addr, disp) ((MPI_Aint)((char*)(addr) + (disp)))
1302 #define MPI_Aint_diff(addr1, addr2) ((MPI_Aint)((char*)(addr1) - (char*)(addr2)))
1304 /***collectives***/
1305 AMPI_API_DEF(int, MPI_Barrier, MPI_Comm comm)
1306 AMPI_API_DEF(int, MPI_Ibarrier, MPI_Comm comm, MPI_Request *request)
1307 AMPI_API_DEF(int, MPI_Bcast, void *buf, int count, MPI_Datatype type, int root, MPI_Comm comm)
1308 AMPI_API_DEF(int, MPI_Ibcast, void *buf, int count, MPI_Datatype type, int root, MPI_Comm comm,
1309 MPI_Request *request)
1310 AMPI_API_DEF(int, MPI_Gather, const void *sendbuf, int sendcount, MPI_Datatype sendtype,
1311 void *recvbuf, int recvcount, MPI_Datatype recvtype,
1312 int root, MPI_Comm comm)
1313 AMPI_API_DEF(int, MPI_Igather, const void *sendbuf, int sendcount, MPI_Datatype sendtype,
1314 void *recvbuf, int recvcount, MPI_Datatype recvtype,
1315 int root, MPI_Comm comm, MPI_Request *request)
1316 AMPI_API_DEF(int, MPI_Gatherv, const void *sendbuf, int sendcount, MPI_Datatype sendtype,
1317 void *recvbuf, const int *recvcounts, const int *displs,
1318 MPI_Datatype recvtype, int root, MPI_Comm comm)
1319 AMPI_API_DEF(int, MPI_Igatherv, const void *sendbuf, int sendcount, MPI_Datatype sendtype,
1320 void *recvbuf, const int *recvcounts, const int *displs,
1321 MPI_Datatype recvtype, int root, MPI_Comm comm,
1322 MPI_Request *request)
1323 AMPI_API_DEF(int, MPI_Scatter, const void *sendbuf, int sendcount, MPI_Datatype sendtype,
1324 void *recvbuf, int recvcount, MPI_Datatype recvtype,
1325 int root, MPI_Comm comm)
1326 AMPI_API_DEF(int, MPI_Iscatter, const void *sendbuf, int sendcount, MPI_Datatype sendtype,
1327 void *recvbuf, int recvcount, MPI_Datatype recvtype,
1328 int root, MPI_Comm comm, MPI_Request *request)
1329 AMPI_API_DEF(int, MPI_Scatterv, const void *sendbuf, const int *sendcounts, const int *displs, MPI_Datatype sendtype,
1330 void *recvbuf, int recvcount, MPI_Datatype recvtype,
1331 int root, MPI_Comm comm)
1332 AMPI_API_DEF(int, MPI_Iscatterv, const void *sendbuf, const int *sendcounts, const int *displs, MPI_Datatype sendtype,
1333 void *recvbuf, int recvcount, MPI_Datatype recvtype,
1334 int root, MPI_Comm comm, MPI_Request *request)
1335 AMPI_API_DEF(int, MPI_Allgather, const void *sendbuf, int sendcount, MPI_Datatype sendtype,
1336 void *recvbuf, int recvcount, MPI_Datatype recvtype,
1337 MPI_Comm comm)
1338 AMPI_API_DEF(int, MPI_Iallgather, const void *sendbuf, int sendcount, MPI_Datatype sendtype,
1339 void *recvbuf, int recvcount, MPI_Datatype recvtype,
1340 MPI_Comm comm, MPI_Request* request)
1341 AMPI_API_DEF(int, MPI_Allgatherv, const void *sendbuf, int sendcount, MPI_Datatype sendtype,
1342 void *recvbuf, const int *recvcounts, const int *displs,
1343 MPI_Datatype recvtype, MPI_Comm comm)
1344 AMPI_API_DEF(int, MPI_Iallgatherv, const void *sendbuf, int sendcount, MPI_Datatype sendtype,
1345 void *recvbuf, const int *recvcounts, const int *displs,
1346 MPI_Datatype recvtype, MPI_Comm comm, MPI_Request *request)
1347 AMPI_API_DEF(int, MPI_Alltoall, const void *sendbuf, int sendcount, MPI_Datatype sendtype,
1348 void *recvbuf, int recvcount, MPI_Datatype recvtype,
1349 MPI_Comm comm)
1350 AMPI_API_DEF(int, MPI_Ialltoall, const void *sendbuf, int sendcount, MPI_Datatype sendtype,
1351 void *recvbuf, int recvcount, MPI_Datatype recvtype,
1352 MPI_Comm comm, MPI_Request *request)
1353 AMPI_API_DEF(int, MPI_Alltoallv, const void *sendbuf, const int *sendcounts, const int *sdispls,
1354 MPI_Datatype sendtype, void *recvbuf, const int *recvcounts,
1355 const int *rdispls, MPI_Datatype recvtype, MPI_Comm comm)
1356 AMPI_API_DEF(int, MPI_Ialltoallv, void *sendbuf, int *sendcounts, int *sdispls,
1357 MPI_Datatype sendtype, void *recvbuf, int *recvcounts,
1358 int *rdispls, MPI_Datatype recvtype, MPI_Comm comm,
1359 MPI_Request *request)
1360 AMPI_API_DEF(int, MPI_Alltoallw, const void *sendbuf, const int *sendcounts, const int *sdispls,
1361 const MPI_Datatype *sendtypes, void *recvbuf, const int *recvcounts,
1362 const int *rdispls, const MPI_Datatype *recvtypes, MPI_Comm comm)
1363 AMPI_API_DEF(int, MPI_Ialltoallw, const void *sendbuf, const int *sendcounts, const int *sdispls,
1364 const MPI_Datatype *sendtypes, void *recvbuf, const int *recvcounts,
1365 const int *rdispls, const MPI_Datatype *recvtypes, MPI_Comm comm,
1366 MPI_Request *request)
1367 AMPI_API_DEF(int, MPI_Reduce, const void *inbuf, void *outbuf, int count, MPI_Datatype type,
1368 MPI_Op op, int root, MPI_Comm comm)
1369 AMPI_API_DEF(int, MPI_Ireduce, const void *sendbuf, void *recvbuf, int count, MPI_Datatype type,
1370 MPI_Op op, int root, MPI_Comm comm, MPI_Request *request)
1371 AMPI_API_DEF(int, MPI_Allreduce, const void *inbuf, void *outbuf, int count, MPI_Datatype type,
1372 MPI_Op op, MPI_Comm comm)
1373 AMPI_API_DEF(int, MPI_Iallreduce, const void *inbuf, void *outbuf, int count, MPI_Datatype type,
1374 MPI_Op op, MPI_Comm comm, MPI_Request *request)
1375 AMPI_API_DEF(int, MPI_Reduce_local, const void *inbuf, void *outbuf, int count,
1376 MPI_Datatype datatype, MPI_Op op)
1377 AMPI_API_DEF(int, MPI_Reduce_scatter_block, const void* sendbuf, void* recvbuf, int count,
1378 MPI_Datatype datatype, MPI_Op op, MPI_Comm comm)
1379 AMPI_API_DEF(int, MPI_Ireduce_scatter_block, const void* sendbuf, void* recvbuf, int count,
1380 MPI_Datatype datatype, MPI_Op op, MPI_Comm comm, MPI_Request *request)
1381 AMPI_API_DEF(int, MPI_Reduce_scatter, const void* sendbuf, void* recvbuf, const int *recvcounts,
1382 MPI_Datatype datatype, MPI_Op op, MPI_Comm comm)
1383 AMPI_API_DEF(int, MPI_Ireduce_scatter, const void* sendbuf, void* recvbuf, const int *recvcounts,
1384 MPI_Datatype datatype, MPI_Op op, MPI_Comm comm, MPI_Request *request)
1385 AMPI_API_DEF(int, MPI_Scan, const void* sendbuf, void* recvbuf, int count, MPI_Datatype datatype,
1386 MPI_Op op, MPI_Comm comm )
1387 AMPI_API_DEF(int, MPI_Iscan, const void* sendbuf, void* recvbuf, int count, MPI_Datatype datatype,
1388 MPI_Op op, MPI_Comm comm, MPI_Request *request)
1389 AMPI_API_DEF(int, MPI_Exscan, const void* sendbuf, void* recvbuf, int count, MPI_Datatype datatype,
1390 MPI_Op op, MPI_Comm comm)
1391 AMPI_API_DEF(int, MPI_Iexscan, const void* sendbuf, void* recvbuf, int count, MPI_Datatype datatype,
1392 MPI_Op op, MPI_Comm comm, MPI_Request *request)
1394 /***neighborhood collectives***/
1395 AMPI_API_DEF(int, MPI_Neighbor_alltoall, const void* sendbuf, int sendcount, MPI_Datatype sendtype,
1396 void* recvbuf, int recvcount, MPI_Datatype recvtype, MPI_Comm comm)
1397 AMPI_API_DEF(int, MPI_Ineighbor_alltoall, const void* sendbuf, int sendcount, MPI_Datatype sendtype,
1398 void* recvbuf, int recvcount, MPI_Datatype recvtype, MPI_Comm comm,
1399 MPI_Request* request)
1400 AMPI_API_DEF(int, MPI_Neighbor_alltoallv, const void* sendbuf, const int* sendcounts, const int* sdispls,
1401 MPI_Datatype sendtype, void* recvbuf, const int* recvcounts, const int* rdispls,
1402 MPI_Datatype recvtype, MPI_Comm comm)
1403 AMPI_API_DEF(int, MPI_Ineighbor_alltoallv, const void* sendbuf, const int* sendcounts, const int* sdispls,
1404 MPI_Datatype sendtype, void* recvbuf, const int* recvcounts, const int* rdispls,
1405 MPI_Datatype recvtype, MPI_Comm comm, MPI_Request* request)
1406 AMPI_API_DEF(int, MPI_Neighbor_alltoallw, const void* sendbuf, const int* sendcounts, const MPI_Aint* sdipls,
1407 const MPI_Datatype* sendtypes, void* recvbuf, const int* recvcounts, const MPI_Aint* rdispls,
1408 const MPI_Datatype* recvtypes, MPI_Comm comm)
1409 AMPI_API_DEF(int, MPI_Ineighbor_alltoallw, const void* sendbuf, const int* sendcounts, const MPI_Aint* sdispls,
1410 const MPI_Datatype* sendtypes, void* recvbuf, const int* recvcounts, const MPI_Aint* rdispls,
1411 const MPI_Datatype* recvtypes, MPI_Comm comm, MPI_Request* request)
1412 AMPI_API_DEF(int, MPI_Neighbor_allgather, const void* sendbuf, int sendcount, MPI_Datatype sendtype,
1413 void* recvbuf, int recvcount, MPI_Datatype recvtype, MPI_Comm comm)
1414 AMPI_API_DEF(int, MPI_Ineighbor_allgather, const void* sendbuf, int sendcount, MPI_Datatype sendtype,
1415 void* recvbuf, int recvcount, MPI_Datatype recvtype, MPI_Comm comm,
1416 MPI_Request *request)
1417 AMPI_API_DEF(int, MPI_Neighbor_allgatherv, const void* sendbuf, int sendcount, MPI_Datatype sendtype,
1418 void* recvbuf, const int* recvcounts, const int* displs, MPI_Datatype recvtype,
1419 MPI_Comm comm)
1420 AMPI_API_DEF(int, MPI_Ineighbor_allgatherv, const void* sendbuf, int sendcount, MPI_Datatype sendtype,
1421 void* recvbuf, const int* recvcounts, const int* displs, MPI_Datatype recvtype,
1422 MPI_Comm comm, MPI_Request *request)
1424 /***ops***/
1425 AMPI_API_DEF(int, MPI_Op_create, MPI_User_function *function, int commute, MPI_Op *op)
1426 AMPI_API_DEF(int, MPI_Op_free, MPI_Op *op)
1427 AMPI_API_DEF(int, MPI_Op_commutative, MPI_Op op, int* commute)
1429 /***groups***/
1430 AMPI_API_DEF(int, MPI_Group_size, MPI_Group group, int *size)
1431 AMPI_API_DEF(int, MPI_Group_rank, MPI_Group group, int *rank)
1432 AMPI_API_DEF(int, MPI_Group_translate_ranks, MPI_Group group1, int n, const int *ranks1, MPI_Group group2, int *ranks2)
1433 AMPI_API_DEF(int, MPI_Group_compare, MPI_Group group1,MPI_Group group2, int *result)
1434 AMPI_API_DEF(int, MPI_Comm_group, MPI_Comm comm, MPI_Group *group)
1435 AMPI_API_DEF(int, MPI_Group_union, MPI_Group group1, MPI_Group group2, MPI_Group *newgroup)
1436 AMPI_API_DEF(int, MPI_Group_intersection, MPI_Group group1, MPI_Group group2, MPI_Group *newgroup)
1437 AMPI_API_DEF(int, MPI_Group_difference, MPI_Group group1, MPI_Group group2, MPI_Group *newgroup)
1438 AMPI_API_DEF(int, MPI_Group_incl, MPI_Group group, int n, const int *ranks, MPI_Group *newgroup)
1439 AMPI_API_DEF(int, MPI_Group_excl, MPI_Group group, int n, const int *ranks, MPI_Group *newgroup)
1440 AMPI_API_DEF(int, MPI_Group_range_incl, MPI_Group group, int n, int ranges[][3], MPI_Group *newgroup)
1441 AMPI_API_DEF(int, MPI_Group_range_excl, MPI_Group group, int n, int ranges[][3], MPI_Group *newgroup)
1442 AMPI_API_DEF(int, MPI_Group_free, MPI_Group *group)
1444 /***communicators***/
1445 AMPI_API_DEF(int, MPI_Intercomm_create, MPI_Comm local_comm, int local_leader, MPI_Comm peer_comm,
1446 int remote_leader, int tag, MPI_Comm *newintercomm)
1447 AMPI_API_DEF(int, MPI_Intercomm_merge, MPI_Comm intercomm, int high, MPI_Comm *newintracomm)
1448 AMPI_API_DEF(int, MPI_Comm_create, MPI_Comm comm, MPI_Group group, MPI_Comm* newcomm)
1449 AMPI_API_DEF(int, MPI_Comm_create_group, MPI_Comm comm, MPI_Group group, int tag, MPI_Comm *newcomm)
1450 AMPI_API_DEF(int, MPI_Comm_size, MPI_Comm comm, int *size)
1451 AMPI_API_DEF(int, MPI_Comm_rank, MPI_Comm comm, int *rank)
1452 AMPI_API_DEF(int, MPI_Comm_compare, MPI_Comm comm1,MPI_Comm comm2, int *result)
1453 AMPI_API_DEF(int, MPI_Comm_split, MPI_Comm src, int color, int key, MPI_Comm *dest)
1454 AMPI_API_DEF(int, MPI_Comm_split_type, MPI_Comm src, int split_type, int key, MPI_Info info, MPI_Comm *dest)
1455 AMPI_API_DEF(int, MPI_Comm_dup, MPI_Comm src, MPI_Comm *dest)
1456 AMPI_API_DEF(int, MPI_Comm_idup, MPI_Comm comm, MPI_Comm *newcomm, MPI_Request *request)
1457 AMPI_API_DEF(int, MPI_Comm_dup_with_info, MPI_Comm src, MPI_Info info, MPI_Comm *dest)
1458 AMPI_API_DEF(int, MPI_Comm_idup_with_info, MPI_Comm src, MPI_Info info, MPI_Comm *dest, MPI_Request *request)
1459 AMPI_API_DEF(int, MPI_Comm_free, MPI_Comm *comm)
1460 AMPI_API_DEF(int, MPI_Comm_test_inter, MPI_Comm comm, int *flag)
1461 AMPI_API_DEF(int, MPI_Comm_remote_size, MPI_Comm comm, int *size)
1462 AMPI_API_DEF(int, MPI_Comm_remote_group, MPI_Comm comm, MPI_Group *group)
1463 AMPI_API_DEF(int, MPI_Comm_set_name, MPI_Comm comm, const char *name)
1464 AMPI_API_DEF(int, MPI_Comm_get_name, MPI_Comm comm, char *comm_name, int *resultlen)
1465 AMPI_API_DEF(int, MPI_Comm_set_info, MPI_Comm comm, MPI_Info info)
1466 AMPI_API_DEF(int, MPI_Comm_get_info, MPI_Comm comm, MPI_Info *info)
1467 AMPI_API_DEF(int, MPI_Comm_call_errhandler, MPI_Comm comm, int errorcode)
1468 AMPI_API_DEF(int, MPI_Comm_create_errhandler, MPI_Comm_errhandler_fn *function, MPI_Errhandler *errhandler)
1469 AMPI_API_DEF(int, MPI_Comm_set_errhandler, MPI_Comm comm, MPI_Errhandler errhandler)
1470 AMPI_API_DEF(int, MPI_Comm_get_errhandler, MPI_Comm comm, MPI_Errhandler *errhandler)
1471 AMPI_API_DEF(int, MPI_Comm_free_errhandler, MPI_Errhandler *errhandler)
1472 AMPI_API_DEF(int, MPI_Comm_create_keyval, MPI_Comm_copy_attr_function *copy_fn, MPI_Comm_delete_attr_function *delete_fn,
1473 int *keyval, void* extra_state)
1474 AMPI_API_DEF(int, MPI_Comm_free_keyval, int *keyval)
1475 AMPI_API_DEF(int, MPI_Comm_set_attr, MPI_Comm comm, int keyval, void* attribute_val)
1476 AMPI_API_DEF(int, MPI_Comm_get_attr, MPI_Comm comm, int keyval, void *attribute_val, int *flag)
1477 AMPI_API_DEF(int, MPI_Comm_delete_attr, MPI_Comm comm, int keyval)
1479 /***keyvals/attributes***/
1480 AMPI_API_DEF(int, MPI_Keyval_create, MPI_Copy_function *copy_fn, MPI_Delete_function *delete_fn,
1481 int *keyval, void* extra_state)
1482 AMPI_API_DEF(int, MPI_Keyval_free, int *keyval)
1483 AMPI_API_DEF(int, MPI_Attr_put, MPI_Comm comm, int keyval, void* attribute_val)
1484 AMPI_API_DEF(int, MPI_Attr_get, MPI_Comm comm, int keyval, void *attribute_val, int *flag)
1485 AMPI_API_DEF(int, MPI_Attr_delete, MPI_Comm comm, int keyval)
1487 /***topologies***/
1488 AMPI_API_DEF(int, MPI_Cart_create, MPI_Comm comm_old, int ndims, const int *dims,
1489 const int *periods, int reorder, MPI_Comm *comm_cart)
1490 AMPI_API_DEF(int, MPI_Graph_create, MPI_Comm comm_old, int nnodes, const int *index,
1491 const int *edges, int reorder, MPI_Comm *comm_graph)
1492 AMPI_API_DEF(int, MPI_Dist_graph_create_adjacent, MPI_Comm comm_old, int indegree, const int sources[],
1493 const int sourceweights[], int outdegree,
1494 const int destinations[], const int destweights[],
1495 MPI_Info info, int reorder, MPI_Comm *comm_dist_graph)
1496 AMPI_API_DEF(int, MPI_Dist_graph_create, MPI_Comm comm_old, int n, const int sources[], const int degrees[],
1497 const int destintations[], const int weights[], MPI_Info info,
1498 int reorder, MPI_Comm *comm_dist_graph)
1499 AMPI_API_DEF(int, MPI_Topo_test, MPI_Comm comm, int *status)
1500 AMPI_API_DEF(int, MPI_Cart_map, MPI_Comm comm, int ndims, const int *dims, const int *periods,
1501 int *newrank)
1502 AMPI_API_DEF(int, MPI_Graph_map, MPI_Comm comm, int nnodes, const int *index, const int *edges,
1503 int *newrank)
1504 AMPI_API_DEF(int, MPI_Cartdim_get, MPI_Comm comm, int *ndims)
1505 AMPI_API_DEF(int, MPI_Cart_get, MPI_Comm comm, int maxdims, int *dims, int *periods, int *coords)
1506 AMPI_API_DEF(int, MPI_Cart_rank, MPI_Comm comm, const int *coords, int *rank)
1507 AMPI_API_DEF(int, MPI_Cart_coords, MPI_Comm comm, int rank, int maxdims, int *coords)
1508 AMPI_API_DEF(int, MPI_Cart_shift, MPI_Comm comm, int direction, int disp, int *rank_source, int *rank_dest)
1509 AMPI_API_DEF(int, MPI_Graphdims_get, MPI_Comm comm, int *nnodes, int *nedges)
1510 AMPI_API_DEF(int, MPI_Graph_get, MPI_Comm comm, int maxindex, int maxedges, int *index, int *edges)
1511 AMPI_API_DEF(int, MPI_Graph_neighbors_count, MPI_Comm comm, int rank, int *nneighbors)
1512 AMPI_API_DEF(int, MPI_Graph_neighbors, MPI_Comm comm, int rank, int maxneighbors, int *neighbors)
1513 AMPI_API_DEF(int, MPI_Dims_create, int nnodes, int ndims, int *dims)
1514 AMPI_API_DEF(int, MPI_Cart_sub, MPI_Comm comm, const int *remain_dims, MPI_Comm *newcomm)
1515 AMPI_API_DEF(int, MPI_Dist_graph_neighbors, MPI_Comm comm, int maxindegree, int sources[], int sourceweights[],
1516 int maxoutdegree, int destinations[], int destweights[])
1517 AMPI_API_DEF(int, MPI_Dist_graph_neighbors_count, MPI_Comm comm, int *indegree, int *outdegree, int *weighted)
1519 /***environment management***/
1520 AMPI_API_DEF(int, MPI_Errhandler_create, MPI_Handler_function *function, MPI_Errhandler *errhandler)
1521 AMPI_API_DEF(int, MPI_Errhandler_set, MPI_Comm comm, MPI_Errhandler errhandler)
1522 AMPI_API_DEF(int, MPI_Errhandler_get, MPI_Comm comm, MPI_Errhandler *errhandler)
1523 AMPI_API_DEF(int, MPI_Errhandler_free, MPI_Errhandler *errhandler)
1524 AMPI_API_DEF(int, MPI_Add_error_code, int errorclass, int *errorcode)
1525 AMPI_API_DEF(int, MPI_Add_error_class, int *errorclass)
1526 AMPI_API_DEF(int, MPI_Add_error_string, int errorcode, const char *errorstring)
1527 AMPI_API_DEF(int, MPI_Error_class, int errorcode, int *errorclass)
1528 AMPI_API_DEF(int, MPI_Error_string, int errorcode, char *string, int *resultlen)
1529 AMPI_API_DEF(int, MPI_Get_version, int *version, int *subversion)
1530 AMPI_API_DEF(int, MPI_Get_library_version, char *version, int *resultlen)
1531 AMPI_API_DEF(int, MPI_Get_processor_name, char *name, int *resultlen)
1532 AMPI_API_DEF(double, MPI_Wtime, void)
1533 AMPI_API_DEF(double, MPI_Wtick, void)
1534 AMPI_API_DEF(int, MPI_Is_thread_main, int *flag)
1535 AMPI_API_DEF(int, MPI_Query_thread, int *provided)
1536 AMPI_API_DEF(int, MPI_Init_thread, int *argc, char*** argv, int required, int *provided)
1537 AMPI_API_DEF(int, MPI_Init, int *argc, char*** argv)
1538 AMPI_API_DEF(int, MPI_Initialized, int *isInit)
1539 AMPI_API_DEF(int, MPI_Finalize, void)
1540 AMPI_API_DEF(int, MPI_Finalized, int *finalized)
1541 AMPI_API_DEF(int, MPI_Abort, MPI_Comm comm, int errorcode)
1542 AMPI_API_DEF(int, MPI_Pcontrol, const int level, ...)
1544 /*********************One sided communication routines *****************/
1545 /* MPI_Win : an index into a list in ampiParent (just like MPI_Group) */
1546 /* name length for COMM, TYPE and WIN */
1547 #define MPI_MAX_OBJECT_NAME 255
1548 #define MPI_MAX_INFO_KEY 255
1549 #define MPI_MAX_INFO_VAL 1024
1550 #define MPI_LOCK_SHARED 54
1551 #define MPI_LOCK_EXCLUSIVE 55
1552 #define MPI_WIN_NULL -1
1554 #define MPI_WIN_FLAVOR_CREATE 1
1555 #define MPI_WIN_FLAVOR_ALLOCATE 2
1556 #define MPI_WIN_FLAVOR_DYNAMIC 3
1557 #define MPI_WIN_FLAVOR_SHARED 4
1559 #define MPI_WIN_UNIFIED 0
1560 #define MPI_WIN_SEPARATE 1
1562 #define MPI_MODE_NOCHECK 1
1563 #define MPI_MODE_NOPRECEDE 2
1564 #define MPI_MODE_NOPUT 4
1565 #define MPI_MODE_NOSTORE 8
1566 #define MPI_MODE_NOSUCCEED 16
1568 typedef int MPI_Win;
1570 typedef void (MPI_Win_errhandler_fn)(MPI_Win *, int *, ...);
1571 typedef void (MPI_Win_errhandler_function)(MPI_Win *, int *, ...);
1573 typedef int (MPI_Win_copy_attr_function)(MPI_Win oldwin, int keyval,
1574 void *extra_state, void *attribute_val_in,
1575 void *attribute_val_out, int *flag);
1576 typedef int (MPI_Win_delete_attr_function)(MPI_Win win, int keyval,
1577 void *attribute_val, void *extra_state);
1579 #define MPI_WIN_NULL_DELETE_FN MPI_win_null_delete_fn
1580 #define MPI_WIN_NULL_COPY_FN MPI_win_null_copy_fn
1581 #define MPI_WIN_DUP_FN MPI_win_dup_fn
1583 int MPI_WIN_NULL_COPY_FN ( MPI_Win, int, void *, void *, void *, int * );
1584 int MPI_WIN_NULL_DELETE_FN ( MPI_Win, int, void *, void * );
1585 int MPI_WIN_DUP_FN ( MPI_Win, int, void *, void *, void *, int * );
1587 /***windows/rma***/
1588 AMPI_API_DEF(int, MPI_Win_create, void *base, MPI_Aint size, int disp_unit,
1589 MPI_Info info, MPI_Comm comm, MPI_Win *newwin)
1590 AMPI_API_DEF(int, MPI_Win_free, MPI_Win *win)
1591 AMPI_API_DEF(int, MPI_Win_create_errhandler, MPI_Win_errhandler_function *win_errhandler_fn,
1592 MPI_Errhandler *errhandler)
1593 AMPI_API_DEF(int, MPI_Win_call_errhandler, MPI_Win win, int errorcode)
1594 AMPI_API_DEF(int, MPI_Win_get_errhandler, MPI_Win win, MPI_Errhandler *errhandler)
1595 AMPI_API_DEF(int, MPI_Win_set_errhandler, MPI_Win win, MPI_Errhandler errhandler)
1596 AMPI_API_DEF(int, MPI_Win_create_keyval, MPI_Win_copy_attr_function *copy_fn,
1597 MPI_Win_delete_attr_function *delete_fn,
1598 int *keyval, void *extra_state)
1599 AMPI_API_DEF(int, MPI_Win_free_keyval, int *keyval)
1600 AMPI_API_DEF(int, MPI_Win_delete_attr, MPI_Win win, int key)
1601 AMPI_API_DEF(int, MPI_Win_get_attr, MPI_Win win, int win_keyval, void *attribute_val, int *flag)
1602 AMPI_API_DEF(int, MPI_Win_set_attr, MPI_Win win, int win_keyval, void *attribute_val)
1603 AMPI_API_DEF(int, MPI_Win_get_group, MPI_Win win, MPI_Group *group)
1604 AMPI_API_DEF(int, MPI_Win_set_name, MPI_Win win, const char *name)
1605 AMPI_API_DEF(int, MPI_Win_get_name, MPI_Win win, char *name, int *length)
1606 AMPI_API_DEF(int, MPI_Win_set_info, MPI_Win win, MPI_Info info)
1607 AMPI_API_DEF(int, MPI_Win_get_info, MPI_Win win, MPI_Info *info)
1608 AMPI_API_DEF(int, MPI_Win_fence, int assertion, MPI_Win win)
1609 AMPI_API_DEF(int, MPI_Win_lock, int lock_type, int rank, int assert, MPI_Win win)
1610 AMPI_API_DEF(int, MPI_Win_unlock, int rank, MPI_Win win)
1611 AMPI_API_DEF(int, MPI_Win_post, MPI_Group group, int assertion, MPI_Win win)
1612 AMPI_API_DEF(int, MPI_Win_wait, MPI_Win win)
1613 AMPI_API_DEF(int, MPI_Win_start, MPI_Group group, int assertion, MPI_Win win)
1614 AMPI_API_DEF(int, MPI_Win_complete, MPI_Win win)
1615 AMPI_API_DEF(int, MPI_Win_test, MPI_Win win, int *flag)
1616 AMPI_API_DEF(int, MPI_Alloc_mem, MPI_Aint size, MPI_Info info, void *baseptr)
1617 AMPI_API_DEF(int, MPI_Free_mem, void *base)
1618 AMPI_API_DEF(int, MPI_Put, const void *orgaddr, int orgcnt, MPI_Datatype orgtype, int rank,
1619 MPI_Aint targdisp, int targcnt, MPI_Datatype targtype, MPI_Win win)
1620 AMPI_API_DEF(int, MPI_Get, void *orgaddr, int orgcnt, MPI_Datatype orgtype, int rank,
1621 MPI_Aint targdisp, int targcnt, MPI_Datatype targtype, MPI_Win win)
1622 AMPI_API_DEF(int, MPI_Accumulate, const void *orgaddr, int orgcnt, MPI_Datatype orgtype, int rank,
1623 MPI_Aint targdisp, int targcnt, MPI_Datatype targtype,
1624 MPI_Op op, MPI_Win win)
1625 AMPI_API_DEF(int, MPI_Get_accumulate, const void *orgaddr, int orgcnt, MPI_Datatype orgtype,
1626 void *resaddr, int rescnt, MPI_Datatype restype,
1627 int rank, MPI_Aint targdisp, int targcnt,
1628 MPI_Datatype targtype, MPI_Op op, MPI_Win win)
1629 AMPI_API_DEF(int, MPI_Rput, const void *orgaddr, int orgcnt, MPI_Datatype orgtype, int targrank,
1630 MPI_Aint targdisp, int targcnt, MPI_Datatype targtype, MPI_Win win,
1631 MPI_Request *request)
1632 AMPI_API_DEF(int, MPI_Rget, void *orgaddr, int orgcnt, MPI_Datatype orgtype, int rank,
1633 MPI_Aint targdisp, int targcnt, MPI_Datatype targtype, MPI_Win win,
1634 MPI_Request *request)
1635 AMPI_API_DEF(int, MPI_Raccumulate, const void *orgaddr, int orgcnt, MPI_Datatype orgtype, int rank,
1636 MPI_Aint targdisp, int targcnt, MPI_Datatype targtype,
1637 MPI_Op op, MPI_Win win, MPI_Request *request)
1638 AMPI_API_DEF(int, MPI_Rget_accumulate, const void *orgaddr, int orgcnt, MPI_Datatype orgtype,
1639 void *resaddr, int rescnt, MPI_Datatype restype,
1640 int rank, MPI_Aint targdisp, int targcnt,
1641 MPI_Datatype targtype, MPI_Op op, MPI_Win win,
1642 MPI_Request *request)
1643 AMPI_API_DEF(int, MPI_Fetch_and_op, const void *orgaddr, void *resaddr, MPI_Datatype type,
1644 int rank, MPI_Aint targdisp, MPI_Op op, MPI_Win win)
1645 AMPI_API_DEF(int, MPI_Compare_and_swap, const void *orgaddr, const void *compaddr, void *resaddr,
1646 MPI_Datatype type, int rank, MPI_Aint targdisp,
1647 MPI_Win win)
1649 /***infos***/
1650 AMPI_API_DEF(int, MPI_Info_create, MPI_Info *info)
1651 AMPI_API_DEF(int, MPI_Info_set, MPI_Info info, const char *key, const char *value)
1652 AMPI_API_DEF(int, MPI_Info_delete, MPI_Info info, const char *key)
1653 AMPI_API_DEF(int, MPI_Info_get, MPI_Info info, const char *key, int valuelen, char *value, int *flag)
1654 AMPI_API_DEF(int, MPI_Info_get_valuelen, MPI_Info info, const char *key, int *valuelen, int *flag)
1655 AMPI_API_DEF(int, MPI_Info_get_nkeys, MPI_Info info, int *nkeys)
1656 AMPI_API_DEF(int, MPI_Info_get_nthkey, MPI_Info info, int n, char *key)
1657 AMPI_API_DEF(int, MPI_Info_dup, MPI_Info info, MPI_Info *newinfo)
1658 AMPI_API_DEF(int, MPI_Info_free, MPI_Info *info)
1661 /***MPIX***/
1662 typedef int MPIX_Grequest_class;
1663 typedef int MPIX_Grequest_poll_function(void *extra_state, MPI_Status *status);
1664 typedef int MPIX_Grequest_wait_function(int count, void **array_of_states,
1665 double timeout, MPI_Status *status);
1667 AMPI_API_DEF(int, MPIX_Grequest_start, MPI_Grequest_query_function *query_fn,
1668 MPI_Grequest_free_function *free_fn, MPI_Grequest_cancel_function *cancel_fn,
1669 MPIX_Grequest_poll_function *poll_fn, void *extra_state, MPI_Request *request)
1670 AMPI_API_DEF(int, MPIX_Grequest_class_create, MPI_Grequest_query_function *query_fn,
1671 MPI_Grequest_free_function *free_fn, MPI_Grequest_cancel_function *cancel_fn,
1672 MPIX_Grequest_poll_function *poll_fn, MPIX_Grequest_wait_function *wait_fn,
1673 MPIX_Grequest_class *greq_class)
1674 AMPI_API_DEF(int, MPIX_Grequest_class_allocate, MPIX_Grequest_class greq_class,
1675 void *extra_state, MPI_Request *request)
1678 /***Fortran-C bindings***/
1679 #define MPI_Comm_c2f(comm) (MPI_Fint)(comm)
1680 #define MPI_Comm_f2c(comm) (MPI_Comm)(comm)
1681 #define MPI_Type_c2f(datatype) (MPI_Fint)(datatype)
1682 #define MPI_Type_f2c(datatype) (MPI_Datatype)(datatype)
1683 #define MPI_Group_c2f(group) (MPI_Fint)(group)
1684 #define MPI_Group_f2c(group) (MPI_Group)(group)
1685 #define MPI_Info_c2f(info) (MPI_Fint)(info)
1686 #define MPI_Info_f2c(info) (MPI_Info)(info)
1687 #define MPI_Request_f2c(request) (MPI_Request)(request)
1688 #define MPI_Request_c2f(request) (MPI_Fint)(request)
1689 #define MPI_Op_c2f(op) (MPI_Fint)(op)
1690 #define MPI_Op_f2c(op) (MPI_Op)(op)
1691 #define MPI_Errhandler_c2f(errhandler) (MPI_Fint)(errhandler)
1692 #define MPI_Errhandler_f2c(errhandler) (MPI_Errhandler)(errhandler)
1693 #define MPI_Win_c2f(win) (MPI_Fint)(win)
1694 #define MPI_Win_f2c(win) (MPI_Win)(win)
1696 #include "mpio.h"
1698 /*** AMPI Extensions ***/
1699 int AMPI_Migrate(MPI_Info hints);
1700 int AMPI_Load_start_measure(void);
1701 int AMPI_Load_stop_measure(void);
1702 int AMPI_Load_reset_measure(void);
1703 int AMPI_Load_set_value(double value);
1704 int AMPI_Migrate_to_pe(int dest);
1705 int AMPI_Set_migratable(int mig);
1706 int AMPI_Register_pup(MPI_PupFn fn, void *data, int *idx);
1707 int AMPI_Get_pup_data(int idx, void *data);
1708 int AMPI_Register_main(MPI_MainFn mainFn, const char *name);
1709 int AMPI_Register_about_to_migrate(MPI_MigrateFn fn);
1710 int AMPI_Register_just_migrated(MPI_MigrateFn fn);
1711 int AMPI_Iget(MPI_Aint orgdisp, int orgcnt, MPI_Datatype orgtype, int rank,
1712 MPI_Aint targdisp, int targcnt, MPI_Datatype targtype,
1713 MPI_Win win, MPI_Request *request);
1714 int AMPI_Iget_wait(MPI_Request *request, MPI_Status *status, MPI_Win win);
1715 int AMPI_Iget_free(MPI_Request *request, MPI_Status *status, MPI_Win win);
1716 int AMPI_Iget_data(void *data, MPI_Status status);
1717 int AMPI_Type_is_contiguous(MPI_Datatype datatype, int *flag);
1718 #if CMK_FAULT_EVAC
1719 int AMPI_Evacuate(void);
1720 #endif
1721 int AMPI_Yield(void);
1722 int AMPI_Suspend(void);
1723 int AMPI_Resume(int dest, MPI_Comm comm);
1724 int AMPI_Print(const char *str);
1725 int AMPI_Trace_begin(void);
1726 int AMPI_Trace_end(void);
1727 int AMPI_Alltoall_medium(void *sendbuf, int sendcount, MPI_Datatype sendtype,
1728 void *recvbuf, int recvcount, MPI_Datatype recvtype,
1729 MPI_Comm comm);
1730 int AMPI_Alltoall_long(void *sendbuf, int sendcount, MPI_Datatype sendtype,
1731 void *recvbuf, int recvcount, MPI_Datatype recvtype,
1732 MPI_Comm comm);
1734 #if CMK_BIGSIM_CHARM
1735 int AMPI_Set_start_event(MPI_Comm comm);
1736 int AMPI_Set_end_event(void);
1737 void beginTraceBigSim(char* msg);
1738 void endTraceBigSim(char* msg, char* param);
1739 #endif
1741 #ifdef __cplusplus
1742 #if CMK_CUDA
1743 int AMPI_GPU_Iinvoke_wr(hapiWorkRequest *to_call, MPI_Request *request);
1744 int AMPI_GPU_Iinvoke(cudaStream_t stream, MPI_Request *request);
1745 int AMPI_GPU_Invoke_wr(hapiWorkRequest *to_call);
1746 int AMPI_GPU_Invoke(cudaStream_t stream);
1747 #endif
1748 #endif
1750 /* Execute this shell command (just like "system()") */
1751 int AMPI_System(const char *cmd);
1753 /* Determine approximate depth of stack at the point of this call */
1754 extern long ampiCurrentStackUsage(void);
1756 // Functions and constants unsupported in AMPI
1758 #if defined __cplusplus && __cplusplus >= 201402L
1759 # define AMPI_UNIMPLEMENTED [[deprecated("currently unimplemented in AMPI")]]
1760 #elif defined __GNUC__ || defined __clang__
1761 # define AMPI_UNIMPLEMENTED __attribute__((deprecated("currently unimplemented in AMPI")))
1762 #elif defined _MSC_VER
1763 # define AMPI_UNIMPLEMENTED __declspec(deprecated("currently unimplemented in AMPI"))
1764 #else
1765 # define AMPI_UNIMPLEMENTED
1766 #endif
1768 #define AMPI_API_DEF_NOIMPL(return_type, function_name, ...) \
1769 AMPI_UNIMPLEMENTED AMPI_API_DEF(return_type, function_name, __VA_ARGS__)
1771 // MPI-2 Constants
1772 #define MPI_ARGV_NULL (char **)0
1773 #define MPI_ARGVS_NULL (char ***)0
1774 #define MPI_MAX_PORT_NAME 256
1775 #define MPI_ORDER_C 56 /* defined in ROMIO */
1776 #define MPI_ORDER_FORTRAN 57 /* defined in ROMIO */
1777 #define MPI_TYPECLASS_INTEGER -1
1778 #define MPI_TYPECLASS_REAL -2
1779 #define MPI_TYPECLASS_COMPLEX -3
1780 #define MPI_DISTRIBUTE_BLOCK 121 /* defined in ROMIO */
1781 #define MPI_DISTRIBUTE_CYCLIC 122 /* defined in ROMIO */
1782 #define MPI_DISTRIBUTE_NONE 123 /* defined in ROMIO */
1783 #define MPI_DISTRIBUTE_DFLT_DARG -49767 /* defined in ROMIO */
1784 #define MPI_INTEGER1 MPI_CHAR
1785 #define MPI_INTEGER2 MPI_SHORT
1786 #define MPI_INTEGER4 MPI_INT
1787 #define MPI_INTEGER8 MPI_LONG_LONG_INT
1788 #define MPI_REAL4 MPI_FLOAT
1789 #define MPI_REAL8 MPI_DOUBLE
1790 #define MPI_REAL16 MPI_LONG_DOUBLE
1791 #define MPI_COMPLEX8 MPI_FLOAT_COMPLEX
1792 #define MPI_COMPLEX16 MPI_DOUBLE_COMPLEX
1793 #define MPI_COMPLEX32 MPI_LONG_DOUBLE_COMPLEX
1794 #define MPI_C_FLOAT_COMPLEX MPI_FLOAT_COMPLEX
1795 #define MPI_C_DOUBLE_COMPLEX MPI_DOUBLE_COMPLEX
1796 #define MPI_C_LONG_DOUBLE_COMPLEX MPI_LONG_DOUBLE_COMPLEX
1797 #define MPI_CXX_BOOL MPI_C_BOOL
1798 #define MPI_CXX_FLOAT_COMPLEX MPI_C_FLOAT_COMPLEX
1799 #define MPI_CXX_DOUBLE_COMPLEX MPI_C_DOUBLE_COMPLEX
1800 #define MPI_CXX_LONG_DOUBLE_COMPLEX MPI_C_LONG_DOUBLE_COMPLEX
1802 // MPI-2 Routines
1803 #define MPI_Win_free_errhandler (void*)
1805 // MPI-3 Constants
1806 #define MPI_ERR_RMA_RANGE 54
1807 #define MPI_ERR_RMA_ATTACH 55
1808 #define MPI_ERR_RMA_SHARED 56
1809 #define MPI_ERR_RMA_FLAVOR 57
1811 // MPI_T interface
1812 typedef int MPI_T_enum;
1813 typedef int MPI_T_cvar_handle;
1814 typedef int MPI_T_pvar_handle;
1815 typedef int MPI_T_pvar_session;
1816 #define MPI_T_ENUM_NULL (-1)
1817 #define MPI_T_CVAR_HANDLE_NULL (-1)
1818 #define MPI_T_PVAR_HANDLE_NULL (-1)
1819 #define MPI_T_PVAR_SESSION_NULL (-1)
1820 #define MPI_T_VERBOSITY_USER_BASIC 1
1821 #define MPI_T_VERBOSITY_USER_DETAIL 2
1822 #define MPI_T_VERBOSITY_USER_ALL 3
1823 #define MPI_T_VERBOSITY_TUNER_BASIC 4
1824 #define MPI_T_VERBOSITY_TUNER_DETAIL 5
1825 #define MPI_T_VERBOSITY_TUNER_ALL 6
1826 #define MPI_T_VERBOSITY_MPIDEV_BASIC 7
1827 #define MPI_T_VERBOSITY_MPIDEV_DETAIL 8
1828 #define MPI_T_VERBOSITY_MPIDEV_ALL 9
1829 #define MPI_T_BIND_NO_OBJECT 1
1830 #define MPI_T_BIND_MPI_COMM 2
1831 #define MPI_T_BIND_MPI_DATATYPE 3
1832 #define MPI_T_BIND_MPI_ERRHANDLER 4
1833 #define MPI_T_BIND_MPI_FILE 5
1834 #define MPI_T_BIND_MPI_GROUP 6
1835 #define MPI_T_BIND_MPI_OP 7
1836 #define MPI_T_BIND_MPI_REQUEST 8
1837 #define MPI_T_BIND_MPI_WIN 9
1838 #define MPI_T_BIND_MPI_MESSAGE 10
1839 #define MPI_T_BIND_MPI_INFO 11
1840 #define MPI_T_SCOPE_CONSTANT 1
1841 #define MPI_T_SCOPE_READONLY 2
1842 #define MPI_T_SCOPE_LOCAL 3
1843 #define MPI_T_SCOPE_GROUP 4
1844 #define MPI_T_SCOPE_GROUP_EQ 5
1845 #define MPI_T_SCOPE_ALL 6
1846 #define MPI_T_SCOPE_ALL_EQ 7
1847 #define MPI_T_PVAR_ALL_HANDLES (-1)
1848 #define MPI_T_PVAR_CLASS_STATE 1
1849 #define MPI_T_PVAR_CLASS_LEVEL 2
1850 #define MPI_T_PVAR_CLASS_SIZE 3
1851 #define MPI_T_PVAR_CLASS_PERCENTAGE 4
1852 #define MPI_T_PVAR_CLASS_HIGHWATERMARK 5
1853 #define MPI_T_PVAR_CLASS_LOWWATERMARK 6
1854 #define MPI_T_PVAR_CLASS_COUNTER 7
1855 #define MPI_T_PVAR_CLASS_AGGREGATE 8
1856 #define MPI_T_PVAR_CLASS_TIMER 9
1857 #define MPI_T_PVAR_CLASS_GENERIC 10
1858 #define MPI_T_ERR_MEMORY 58
1859 #define MPI_T_ERR_NOT_INITIALIZED 59
1860 #define MPI_T_ERR_CANNOT_INIT 60
1861 #define MPI_T_ERR_INVALID_INDEX 61
1862 #define MPI_T_ERR_INVALID_ITEM 62
1863 #define MPI_T_ERR_INVALID_NAME 63
1864 #define MPI_T_ERR_INVALID_HANDLE 64
1865 #define MPI_T_ERR_OUT_OF_HANDLES 65
1866 #define MPI_T_ERR_OUT_OF_SESSIONS 66
1867 #define MPI_T_ERR_INVALID_SESSION 67
1868 #define MPI_T_ERR_CVAR_SET_NOT_NOW 68
1869 #define MPI_T_ERR_CVAR_SET_NEVER 69
1870 #define MPI_T_ERR_CVAR_READ 70
1871 #define MPI_T_ERR_CVAR_WRITE 71
1872 #define MPI_T_ERR_PVAR_START 72
1873 #define MPI_T_ERR_PVAR_STOP 73
1874 #define MPI_T_ERR_PVAR_READ 74
1875 #define MPI_T_ERR_PVAR_WRITE 75
1876 #define MPI_T_ERR_PVAR_RESET 76
1877 #define MPI_T_ERR_PVAR_READRESET 77
1878 #define MPI_T_ERR_PVAR_NO_STARTSTOP 78
1879 #define MPI_T_ERR_PVAR_NO_WRITE 79
1880 #define MPI_T_ERR_PVAR_NO_ATOMIC 80
1882 // MPIX FT interface (MPICH extensions needed to compile tests/ampi/mpich-test/)
1883 #define MPIX_ERR_PROC_FAILED 77
1884 #define MPIX_ERR_PROC_FAILED_PENDING 78
1885 #define MPIX_ERR_REVOKED 79
1886 #define MPIX_Comm_agree (void*)
1887 #define MPIX_Comm_failure_ack (void*)
1888 #define MPIX_Comm_shrink (void*)
1889 #define MPIX_Comm_failure_get_acked (void*)
1890 #define MPIX_Comm_revoke (void*)
1893 /* MPI 3.1 standards compliance overview.
1894 * This list contains all MPI functions not supported in AMPI currently.
1897 /* A.2.1 Point-to-Point Communication C Bindings */
1899 /* A.2.2 Datatypes C Bindings */
1901 AMPI_API_DEF_NOIMPL(int, MPI_Pack_external, const char datarep[], const void *inbuf, int incount, MPI_Datatype datatype, void *outbuf, MPI_Aint outsize, MPI_Aint *position)
1902 AMPI_API_DEF_NOIMPL(int, MPI_Pack_external_size, const char datarep[], int incount, MPI_Datatype datatype, MPI_Aint *size)
1903 // AMPI_API_DEF_NOIMPL(int, MPI_Type_create_darray, int size, int rank, int ndims, const int array_of_gsizes[], const int array_of_distribs[], const int array_of_dargs[], const int array_of_psizes[], int order, MPI_Datatype oldtype, MPI_Datatype *newtype) //provided by ROMIO
1904 // AMPI_API_DEF_NOIMPL(int, MPI_Type_create_subarray, int ndims, const int array_of_sizes[], const int array_of_subsizes[], const int array_of_starts[], int order, MPI_Datatype oldtype, MPI_Datatype *newtype) //provided by ROMIO
1905 AMPI_API_DEF_NOIMPL(int, MPI_Unpack_external, const char datarep[], const void *inbuf, MPI_Aint insize, MPI_Aint *position, void *outbuf, int outcount, MPI_Datatype datatype)
1907 /* A.2.3 Collective Communication C Bindings */
1909 /* A.2.4 Groups, Contexts, Communicators, and Caching C Bindings */
1911 /* A.2.6 MPI Environmental Management C Bindings */
1913 typedef void (MPI_File_errhandler_function)(MPI_File *file, int *err, ...);
1915 AMPI_API_DEF_NOIMPL(int, MPI_File_call_errhandler, MPI_File fh, int errorcode)
1916 AMPI_API_DEF_NOIMPL(int, MPI_File_create_errhandler, MPI_File_errhandler_function *file_errhandler_fn, MPI_Errhandler *errhandler)
1917 AMPI_API_DEF_NOIMPL(int, MPI_File_get_errhandler, MPI_File file, MPI_Errhandler *errhandler)
1918 AMPI_API_DEF_NOIMPL(int, MPI_File_set_errhandler, MPI_File file, MPI_Errhandler errhandler)
1921 /* A.2.7 The Info Object C Bindings */
1923 /* A.2.8 Process Creation and Management C Bindings */
1925 AMPI_API_DEF_NOIMPL(int, MPI_Close_port, const char *port_name)
1926 AMPI_API_DEF_NOIMPL(int, MPI_Comm_accept, const char *port_name, MPI_Info info, int root, MPI_Comm comm, MPI_Comm *newcomm)
1927 AMPI_API_DEF_NOIMPL(int, MPI_Comm_connect, const char *port_name, MPI_Info info, int root, MPI_Comm comm, MPI_Comm *newcomm)
1928 AMPI_API_DEF_NOIMPL(int, MPI_Comm_disconnect, MPI_Comm *comm)
1929 AMPI_API_DEF_NOIMPL(int, MPI_Comm_get_parent, MPI_Comm *parent)
1930 AMPI_API_DEF_NOIMPL(int, MPI_Comm_join, int fd, MPI_Comm *intercomm)
1931 AMPI_API_DEF_NOIMPL(int, MPI_Comm_spawn, const char *command, char *argv[], int maxprocs, MPI_Info info, int root, MPI_Comm comm, MPI_Comm *intercomm, int array_of_errcodes[])
1932 AMPI_API_DEF_NOIMPL(int, MPI_Comm_spawn_multiple, int count, char *array_of_commands[], char **array_of_argv[], const int array_of_maxprocs[], const MPI_Info array_of_info[], int root, MPI_Comm comm, MPI_Comm *intercomm, int array_of_errcodes[])
1933 AMPI_API_DEF_NOIMPL(int, MPI_Lookup_name, const char *service_name, MPI_Info info, char *port_name)
1934 AMPI_API_DEF_NOIMPL(int, MPI_Open_port, MPI_Info info, char *port_name)
1935 AMPI_API_DEF_NOIMPL(int, MPI_Publish_name, const char *service_name, MPI_Info info, const char *port_name)
1936 AMPI_API_DEF_NOIMPL(int, MPI_Unpublish_name, const char *service_name, MPI_Info info, const char *port_name)
1939 /* A.2.9 One-Sided Communications C Bindings */
1941 AMPI_API_DEF_NOIMPL(int, MPI_Win_allocate, MPI_Aint size, int disp_unit, MPI_Info info, MPI_Comm comm, void *baseptr, MPI_Win *win)
1942 AMPI_API_DEF_NOIMPL(int, MPI_Win_allocate_shared, MPI_Aint size, int disp_unit, MPI_Info info, MPI_Comm comm, void *baseptr, MPI_Win *win)
1943 AMPI_API_DEF_NOIMPL(int, MPI_Win_attach, MPI_Win win, void *base, MPI_Aint size)
1944 AMPI_API_DEF_NOIMPL(int, MPI_Win_create_dynamic, MPI_Info info, MPI_Comm comm, MPI_Win *win)
1945 AMPI_API_DEF_NOIMPL(int, MPI_Win_detach, MPI_Win win, const void *base)
1946 AMPI_API_DEF_NOIMPL(int, MPI_Win_flush, int rank, MPI_Win win)
1947 AMPI_API_DEF_NOIMPL(int, MPI_Win_flush_all, MPI_Win win)
1948 AMPI_API_DEF_NOIMPL(int, MPI_Win_flush_local, int rank, MPI_Win win)
1949 AMPI_API_DEF_NOIMPL(int, MPI_Win_flush_local_all, MPI_Win win)
1950 AMPI_API_DEF_NOIMPL(int, MPI_Win_lock_all, int assert, MPI_Win win)
1951 AMPI_API_DEF_NOIMPL(int, MPI_Win_shared_query, MPI_Win win, int rank, MPI_Aint *size, int *disp_unit, void *baseptr)
1952 AMPI_API_DEF_NOIMPL(int, MPI_Win_sync, MPI_Win win)
1953 AMPI_API_DEF_NOIMPL(int, MPI_Win_unlock_all, MPI_Win win)
1956 /* A.2.10 External Interfaces C Bindings */
1958 /* A.2.11 I/O C Bindings */
1960 AMPI_API_DEF_NOIMPL(int, MPI_CONVERSION_FN_NULL, void *userbuf, MPI_Datatype datatype, int count, void *filebuf, MPI_Offset position, void *extra_state)
1961 AMPI_API_DEF_NOIMPL(int, MPI_File_iread_all, MPI_File fh, void *buf, int count, MPI_Datatype datatype, MPI_Request *request)
1962 AMPI_API_DEF_NOIMPL(int, MPI_File_iread_at_all, MPI_File fh, MPI_Offset offset, void *buf, int count, MPI_Datatype datatype, MPI_Request *request)
1963 AMPI_API_DEF_NOIMPL(int, MPI_File_iwrite_all, MPI_File fh, const void *buf, int count, MPI_Datatype datatype, MPI_Request *request)
1964 AMPI_API_DEF_NOIMPL(int, MPI_File_iwrite_at_all, MPI_File fh, MPI_Offset offset, const void *buf, int count, MPI_Datatype datatype, MPI_Request *request)
1965 // AMPI_API_DEF_NOIMPL(int, MPI_Register_datarep, const char *datarep, MPI_Datarep_conversion_function *read_conversion_fn, MPI_Datarep_conversion_function *write_conversion_fn, MPI_Datarep_extent_function *dtype_file_extent_fn, void *extra_state) //Provided by ROMIO
1968 /* A.2.12 Language Bindings C Bindings */
1970 typedef struct {
1971 MPI_Fint count_lo, count_hi_and_cancelled, MPI_SOURCE, MPI_TAG, MPI_ERROR;
1972 } MPI_F08_status;
1974 AMPI_API_DEF_NOIMPL(int, MPI_Status_f082f, MPI_F08_status *f08_status, MPI_Fint *f_status)
1975 AMPI_API_DEF_NOIMPL(int, MPI_Status_f2f08, MPI_Fint *f_status, MPI_F08_status *f08_status)
1976 AMPI_API_DEF_NOIMPL(int, MPI_Type_create_f90_complex, int p, int r, MPI_Datatype *newtype)
1977 AMPI_API_DEF_NOIMPL(int, MPI_Type_create_f90_integer, int r, MPI_Datatype *newtype)
1978 AMPI_API_DEF_NOIMPL(int, MPI_Type_create_f90_real, int p, int r, MPI_Datatype *newtype)
1979 AMPI_API_DEF_NOIMPL(int, MPI_Type_match_size, int typeclass, int size, MPI_Datatype *datatype)
1980 AMPI_API_DEF_NOIMPL(MPI_Fint, MPI_Message_c2f, MPI_Message message)
1981 AMPI_API_DEF_NOIMPL(MPI_Message, MPI_Message_f2c, MPI_Fint message)
1982 AMPI_API_DEF_NOIMPL(int, MPI_Status_c2f, const MPI_Status *c_status, MPI_Fint *f_status)
1983 AMPI_API_DEF_NOIMPL(int, MPI_Status_c2f08, const MPI_Status *c_status, MPI_F08_status *f08_status)
1984 AMPI_API_DEF_NOIMPL(int, MPI_Status_f082c, const MPI_F08_status *f08_status, MPI_Status *c_status)
1985 AMPI_API_DEF_NOIMPL(int, MPI_Status_f2c, const MPI_Fint *f_status, MPI_Status *c_status)
1988 /* A.2.13 Tools / Profiling Interface C Bindings */
1990 /* A.2.14 Tools / MPI Tool Information Interface C Bindings */
1992 AMPI_API_DEF_NOIMPL(int, MPI_T_category_changed, int *stamp)
1993 AMPI_API_DEF_NOIMPL(int, MPI_T_category_get_categories, int cat_index, int len, int indices[])
1994 AMPI_API_DEF_NOIMPL(int, MPI_T_category_get_cvars, int cat_index, int len, int indices[])
1995 AMPI_API_DEF_NOIMPL(int, MPI_T_category_get_index, const char *name, int *cat_index)
1996 AMPI_API_DEF_NOIMPL(int, MPI_T_category_get_info, int cat_index, char *name, int *name_len, char *desc, int *desc_len, int *num_cvars, int *num_pvars, int *num_categories)
1997 AMPI_API_DEF_NOIMPL(int, MPI_T_category_get_num, int *num_cat)
1998 AMPI_API_DEF_NOIMPL(int, MPI_T_category_get_pvars, int cat_index, int len, int indices[])
1999 AMPI_API_DEF_NOIMPL(int, MPI_T_cvar_get_index, const char *name, int *cvar_index)
2000 AMPI_API_DEF_NOIMPL(int, MPI_T_cvar_get_info, int cvar_index, char *name, int *name_len, int *verbosity, MPI_Datatype *datatype, MPI_T_enum *enumtype, char *desc, int *desc_len, int *bind, int *scope)
2001 AMPI_API_DEF_NOIMPL(int, MPI_T_cvar_get_num, int *num_cvar)
2002 AMPI_API_DEF_NOIMPL(int, MPI_T_cvar_handle_alloc, int cvar_index, void *obj_handle, MPI_T_cvar_handle *handle, int *count)
2003 AMPI_API_DEF_NOIMPL(int, MPI_T_cvar_handle_free, MPI_T_cvar_handle *handle)
2004 AMPI_API_DEF_NOIMPL(int, MPI_T_cvar_read, MPI_T_cvar_handle handle, void* buf)
2005 AMPI_API_DEF_NOIMPL(int, MPI_T_cvar_write, MPI_T_cvar_handle handle, const void* buf)
2006 AMPI_API_DEF_NOIMPL(int, MPI_T_enum_get_info, MPI_T_enum enumtype, int *num, char *name, int *name_len)
2007 AMPI_API_DEF_NOIMPL(int, MPI_T_enum_get_item, MPI_T_enum enumtype, int index, int *value, char *name, int *name_len)
2008 AMPI_API_DEF_NOIMPL(int, MPI_T_finalize, void)
2009 AMPI_API_DEF_NOIMPL(int, MPI_T_init_thread, int required, int *provided)
2010 AMPI_API_DEF_NOIMPL(int, MPI_T_pvar_get_index, const char *name, int var_class, int *pvar_index)
2011 AMPI_API_DEF_NOIMPL(int, MPI_T_pvar_get_info, int pvar_index, char *name, int *name_len, int *verbosity, int *var_class, MPI_Datatype *datatype, MPI_T_enum *enumtype, char *desc, int *desc_len, int *bind, int *readonly, int *continuous, int *atomic)
2012 AMPI_API_DEF_NOIMPL(int, MPI_T_pvar_get_num, int *num_pvar)
2013 AMPI_API_DEF_NOIMPL(int, MPI_T_pvar_handle_alloc, MPI_T_pvar_session session, int pvar_index, void *obj_handle, MPI_T_pvar_handle *handle, int *count)
2014 AMPI_API_DEF_NOIMPL(int, MPI_T_pvar_handle_free, MPI_T_pvar_session session,MPI_T_pvar_handle *handle)
2015 AMPI_API_DEF_NOIMPL(int, MPI_T_pvar_read, MPI_T_pvar_session session, MPI_T_pvar_handle handle,void* buf)
2016 AMPI_API_DEF_NOIMPL(int, MPI_T_pvar_readreset, MPI_T_pvar_session session,MPI_T_pvar_handle handle, void* buf)
2017 AMPI_API_DEF_NOIMPL(int, MPI_T_pvar_reset, MPI_T_pvar_session session, MPI_T_pvar_handle handle)
2018 AMPI_API_DEF_NOIMPL(int, MPI_T_pvar_session_create, MPI_T_pvar_session *session)
2019 AMPI_API_DEF_NOIMPL(int, MPI_T_pvar_session_free, MPI_T_pvar_session *session)
2020 AMPI_API_DEF_NOIMPL(int, MPI_T_pvar_start, MPI_T_pvar_session session, MPI_T_pvar_handle handle)
2021 AMPI_API_DEF_NOIMPL(int, MPI_T_pvar_stop, MPI_T_pvar_session session, MPI_T_pvar_handle handle)
2022 AMPI_API_DEF_NOIMPL(int, MPI_T_pvar_write, MPI_T_pvar_session session, MPI_T_pvar_handle handle, const void* buf)
2025 /* A.2.15 Deprecated C Bindings */
2027 #ifdef __cplusplus
2029 #endif
2031 #endif