AMPI: Cleanup of unimplemented functions
[charm.git] / src / libs / ck-libs / ampi / ampi.h
1 #ifndef _MPI_H
2 #define _MPI_H
3
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 */
8
9 #ifdef __cplusplus
10 #if CMK_CUDA
11 #include "hapi.h"
12 #endif
13 #endif
14
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
18
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
31
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
39
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
52
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
62
63 /*
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".
67 */
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 */
72
73 extern "C" {
74 #else /* C version-- rename "main" as "AMPI_Main" */
75 #  define main AMPI_Main
76 #endif
77
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++ */
80
81 typedef void (*MPI_MainFn) (int,char**);
82
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 */
89
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 */
150
151 #define MPI_MAX_PROCESSOR_NAME         256
152 #define MPI_MAX_ERROR_STRING           256
153 #define MPI_MAX_LIBRARY_VERSION_STRING 256
154
155 #define MPI_VERSION    2
156 #define MPI_SUBVERSION 2
157
158 #define MPI_THREAD_SINGLE     1
159 #define MPI_THREAD_FUNNELED   2
160 #define MPI_THREAD_SERIALIZED 3
161 #define MPI_THREAD_MULTIPLE   4
162
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
201 /*
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
206  */
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
221 /*
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
226  */
227
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)
238
239 #define MPI_IN_PLACE    AMPI_API_REINTERPRET_CAST(void *, -1L)
240
241 #define MPI_BOTTOM      AMPI_API_REINTERPRET_CAST(void *, -2L)
242 #define MPI_UNDEFINED   (-32766)
243
244 #define MPI_IDENT       0
245 #define MPI_SIMILAR     1
246 #define MPI_CONGRUENT   2
247 #define MPI_UNEQUAL     3
248
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
253
254 typedef int MPI_Op;
255
256 typedef void (MPI_User_function)(void *invec, void *inoutvec,
257                                  int *len, MPI_Datatype *datatype);
258
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
274 /*
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
279  */
280
281 #define MPI_UNWEIGHTED 0
282 #define MPI_CART       1
283 #define MPI_GRAPH      2
284 #define MPI_DIST_GRAPH 3
285
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).
289  */
290 #define MPI_TAG_UB_VALUE  1073741824
291
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
308
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;
313
314 /** Groups represent an set of processors 0...n-1. They can be created locally */
315 typedef int MPI_Group;
316
317 typedef int MPI_Info;
318
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];
331
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)
336
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;
344
345 #define MPI_STATUS_IGNORE   AMPI_API_REINTERPRET_CAST(MPI_Status *, 0)
346 #define MPI_STATUSES_IGNORE AMPI_API_REINTERPRET_CAST(MPI_Status *, 0)
347
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
352
353 typedef int MPI_Errhandler;
354 #define MPI_ERRHANDLER_NULL  0
355 #define MPI_ERRORS_RETURN    1
356 #define MPI_ERRORS_ARE_FATAL 2
357
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);
365
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);
372
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
376
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
380
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 * );
384
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);
389
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
393
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 * );
397
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);
401
402 #include "pup_c.h"
403
404 typedef void (*MPI_PupFn)(pup_er, void*);
405 typedef void (*MPI_MigrateFn)(void);
406
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
423
424 #define MPI_BSEND_OVERHEAD 0
425
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
515
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
601
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
673
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
695
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
703
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
731
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
795
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
807
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
849
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
897
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
971
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
991
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
999
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
1006
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
1015
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
1040
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
1067
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
1078
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
1103
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
1166
1167 #endif //CMK_CONVERSE_MPI
1168
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)
1239
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)))
1303
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)
1393
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)
1423
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)
1428
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)
1443
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)
1478
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)
1486
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)
1518
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, ...)
1543
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
1553
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
1558
1559 #define MPI_WIN_UNIFIED  0
1560 #define MPI_WIN_SEPARATE 1
1561
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
1567
1568 typedef int MPI_Win;
1569
1570 typedef void (MPI_Win_errhandler_fn)(MPI_Win *, int *, ...);
1571 typedef void (MPI_Win_errhandler_function)(MPI_Win *, int *, ...);
1572
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);
1578
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
1582
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 * );
1586
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)
1648
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)
1659
1660
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);
1666
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)
1676
1677
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)
1695
1696 #include "mpio.h"
1697
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);
1733
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
1740
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
1749
1750 /* Execute this shell command (just like "system()") */
1751 int AMPI_System(const char *cmd);
1752
1753 /* Determine approximate depth of stack at the point of this call */
1754 extern long ampiCurrentStackUsage(void);
1755
1756 // Functions and constants unsupported in AMPI
1757
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
1767
1768 #define AMPI_API_DEF_NOIMPL(return_type, function_name, ...) \
1769   AMPI_UNIMPLEMENTED AMPI_API_DEF(return_type, function_name, __VA_ARGS__)
1770
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
1801
1802 // MPI-2 Routines
1803 #define MPI_Win_free_errhandler (void*)
1804
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
1810
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
1881
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*)
1891
1892
1893 /* MPI 3.1 standards compliance overview.
1894  * This list contains all MPI functions not supported in AMPI currently.
1895 */
1896
1897 /* A.2.1 Point-to-Point Communication C Bindings */
1898
1899 /* A.2.2 Datatypes C Bindings */
1900
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)
1906
1907 /* A.2.3 Collective Communication C Bindings */
1908
1909 /* A.2.4 Groups, Contexts, Communicators, and Caching C Bindings */
1910
1911 /* A.2.6 MPI Environmental Management C Bindings */
1912
1913 typedef void (MPI_File_errhandler_function)(MPI_File *file, int *err, ...);
1914
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)
1919
1920
1921 /* A.2.7 The Info Object C Bindings */
1922
1923 /* A.2.8 Process Creation and Management C Bindings */
1924
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)
1937
1938
1939 /* A.2.9 One-Sided Communications C Bindings */
1940
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)
1954
1955
1956 /* A.2.10 External Interfaces C Bindings */
1957
1958 /* A.2.11 I/O C Bindings */
1959
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
1966
1967
1968 /* A.2.12 Language Bindings C Bindings */
1969
1970 typedef struct {
1971   MPI_Fint count_lo, count_hi_and_cancelled, MPI_SOURCE, MPI_TAG, MPI_ERROR;
1972 } MPI_F08_status;
1973
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)
1986
1987
1988 /* A.2.13 Tools / Profiling Interface C Bindings */
1989
1990 /* A.2.14 Tools / MPI Tool Information Interface C Bindings */
1991
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)
2023
2024
2025 /* A.2.15 Deprecated C Bindings */
2026
2027 #ifdef __cplusplus
2028 }
2029 #endif
2030
2031 #endif