AMPI: Add fsglobals (filesystem) and pipglobals (Process-in-Process) privatization...
[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 "charm-api.h"
7
8 #define AMPI_INTERNAL_SKIP_FUNCTIONS
9
10 #if CMK_CUDA
11 #include "hapi.h"
12 #endif
13
14 /* NON-standard define: this lets people #ifdef on
15    AMPI, e.g. to portably use AMPI extensions to the MPI standard. */
16 #define AMPI
17
18 /* Declare the conditions under which AMPI supports PMPI. */
19 #if defined(__linux__)
20 # define AMPI_HAVE_PMPI 1
21 #else
22 # define AMPI_HAVE_PMPI 0
23 #endif
24
25 /* Macros to define the AMPI'fied name of an MPI function, plus the AMPI'fied
26  * PMPI name. */
27 #ifdef AMPI_USE_FUNCPTR
28   #define AMPI_FUNCPTR(x) (* x)
29 #else
30   #define AMPI_FUNCPTR(x) x
31 #endif
32
33 #define AMPI_CUSTOM_API_DEF(return_type, function_name, ...) \
34   extern return_type AMPI_FUNCPTR(function_name)(__VA_ARGS__);
35 #if AMPI_HAVE_PMPI
36   #define AMPI_API_DEF(return_type, function_name, ...) \
37     extern return_type AMPI_FUNCPTR(function_name)(__VA_ARGS__);             \
38     extern return_type AMPI_FUNCPTR(P##function_name)(__VA_ARGS__);
39 #else
40   #define AMPI_API_DEF AMPI_CUSTOM_API_DEF
41 #endif
42
43 #ifdef __cplusplus
44 # define AMPI_API_STATIC_CAST(type, obj)      (static_cast<type>(obj))
45 # define AMPI_API_REINTERPRET_CAST(type, obj) (reinterpret_cast<type>(obj))
46 #else
47 # define AMPI_API_STATIC_CAST(type, obj)      ((type)(obj))
48 # define AMPI_API_REINTERPRET_CAST(type, obj) ((type)(obj))
49 #endif
50
51 /* Allow applications to terminate cleanly with exit():
52  * In C++ applications, this can conflict with user-defined
53  * exit routines inside namespaces, such as Foo::exit(), so
54  * we allow turning off AMPI's renaming of exit() with
55  * -DAMPI_RENAME_EXIT=0. Same for 'atexit' below... */
56 #ifndef AMPI_RENAME_EXIT
57 #define AMPI_RENAME_EXIT 1
58 #endif
59 #if AMPI_RENAME_EXIT
60 #define exit(status) AMPI_Exit(status)
61 #endif
62
63 /* Notify AMPI when atexit() is used in order to prevent running MPI_Finalize()
64    in a function registered with atexit. Only applies when including mpi.h. */
65 #ifndef AMPI_RENAME_ATEXIT
66 #define AMPI_RENAME_ATEXIT 1
67 #endif
68 #if AMPI_RENAME_ATEXIT
69 #define atexit(...) do {atexit(__VA_ARGS__); atexit(ampiMarkAtexit);} while(0)
70 #endif
71
72 /*
73 Silently rename the user's main routine.
74 This is needed so we can call the routine as a new thread,
75 instead of as an actual "main".
76 */
77 #ifdef __cplusplus /* C++ version-- rename "main" as "AMPI_Main_cpp" */
78 #  define main AMPI_Main_cpp
79 CLINKAGE int AMPI_Main_cpp(int argc,char **argv); /* prototype for C++ main routine */
80 int AMPI_Main_cpp(void); /* prototype for C++ main routines without args, as in autoconf tests */
81
82 extern "C" {
83 #else /* C version-- rename "main" as "AMPI_Main" */
84 #  define main AMPI_Main
85 #endif
86
87 int AMPI_Main(); /* declaration for C main routine (not a strict prototype!) */
88 void AMPI_Main_c(int argc,char **argv); /* C wrapper for calling AMPI_Main() from C++ */
89
90 typedef void (*MPI_MainFn) (int,char**);
91
92 typedef int MPI_Datatype;
93 typedef intptr_t MPI_Aint;
94 typedef int MPI_Fint;
95 typedef MPI_Aint MPI_Count;
96 typedef long long int MPI_Offset;
97
98 /********************** MPI-1.1 prototypes and defines ***************************/
99 /* MPI-1 Errors */
100 #define MPI_SUCCESS                     0
101 #define MPI_ERR_BUFFER                  1
102 #define MPI_ERR_COUNT                   2
103 #define MPI_ERR_TYPE                    3
104 #define MPI_ERR_TAG                     4
105 #define MPI_ERR_COMM                    5
106 #define MPI_ERR_RANK                    6
107 #define MPI_ERR_REQUEST                 7
108 #define MPI_ERR_ROOT                    8
109 #define MPI_ERR_GROUP                   9
110 #define MPI_ERR_OP                     10
111 #define MPI_ERR_TOPOLOGY               11
112 #define MPI_ERR_DIMS                   12
113 #define MPI_ERR_ARG                    13
114 #define MPI_ERR_UNKNOWN                14
115 #define MPI_ERR_TRUNCATE               15
116 #define MPI_ERR_OTHER                  16
117 #define MPI_ERR_INTERN                 17
118 #define MPI_ERR_IN_STATUS              18
119 #define MPI_ERR_PENDING                19
120 /* MPI-2 Errors */
121 #define MPI_ERR_ACCESS                 20
122 #define MPI_ERR_AMODE                  21
123 #define MPI_ERR_ASSERT                 22
124 #define MPI_ERR_BAD_FILE               23
125 #define MPI_ERR_BASE                   24
126 #define MPI_ERR_CONVERSION             25
127 #define MPI_ERR_DISP                   26
128 #define MPI_ERR_DUP_DATAREP            27
129 #define MPI_ERR_FILE_EXISTS            28
130 #define MPI_ERR_FILE_IN_USE            29
131 #define MPI_ERR_FILE                   30
132 #define MPI_ERR_INFO_KEY               31
133 #define MPI_ERR_INFO_NOKEY             32
134 #define MPI_ERR_INFO_VALUE             33
135 #define MPI_ERR_INFO                   34
136 #define MPI_ERR_IO                     35
137 #define MPI_ERR_KEYVAL                 36
138 #define MPI_ERR_LOCKTYPE               37
139 #define MPI_ERR_NAME                   38
140 #define MPI_ERR_NO_MEM                 39
141 #define MPI_ERR_NOT_SAME               40
142 #define MPI_ERR_NO_SPACE               41
143 #define MPI_ERR_NO_SUCH_FILE           42
144 #define MPI_ERR_PORT                   43
145 #define MPI_ERR_QUOTA                  44
146 #define MPI_ERR_READ_ONLY              45
147 #define MPI_ERR_RMA_CONFLICT           46
148 #define MPI_ERR_RMA_SYNC               47
149 #define MPI_ERR_SERVICE                48
150 #define MPI_ERR_SIZE                   49
151 #define MPI_ERR_SPAWN                  50
152 #define MPI_ERR_UNSUPPORTED_DATAREP    51
153 #define MPI_ERR_UNSUPPORTED_OPERATION  52
154 #define MPI_ERR_WIN                    53
155 #define MPI_ERR_LASTCODE               53
156 #define MPI_LASTUSEDCODE               53
157 /* 0=MPI_SUCCESS<MPI_ERRs(...)<MPI_ERR<=MPI_ERR_LASTCODE<=MPI_LASTUSEDCODE */
158
159 #define MPI_MAX_PROCESSOR_NAME         256
160 #define MPI_MAX_ERROR_STRING           256
161 #define MPI_MAX_LIBRARY_VERSION_STRING 256
162
163 #define MPI_VERSION    2
164 #define MPI_SUBVERSION 2
165
166 #define MPI_THREAD_SINGLE     1
167 #define MPI_THREAD_FUNNELED   2
168 #define MPI_THREAD_SERIALIZED 3
169 #define MPI_THREAD_MULTIPLE   4
170
171 /* these values have to match values in ampif.h */
172 /* base types */
173 #define MPI_DATATYPE_NULL       -1
174 #define MPI_DOUBLE               0
175 #define MPI_INT                  1
176 #define MPI_INTEGER              MPI_INT
177 #define MPI_FLOAT                2
178 #define MPI_LOGICAL              3
179 #define MPI_C_BOOL               4
180 #define MPI_CHAR                 5
181 #define MPI_BYTE                 6
182 #define MPI_PACKED               7
183 #define MPI_SHORT                8
184 #define MPI_LONG                 9
185 #define MPI_UNSIGNED_CHAR       10
186 #define MPI_UNSIGNED_SHORT      11
187 #define MPI_UNSIGNED            12
188 #define MPI_UNSIGNED_LONG       13
189 #define MPI_LONG_DOUBLE         14
190 /* mpi-2+ types */
191 #define MPI_LONG_LONG_INT       15
192 #define MPI_LONG_LONG           MPI_LONG_LONG_INT
193 #define MPI_OFFSET              MPI_LONG_LONG
194 #define MPI_SIGNED_CHAR         16
195 #define MPI_UNSIGNED_LONG_LONG  17
196 #define MPI_WCHAR               18
197 #define MPI_INT8_T              19
198 #define MPI_INT16_T             20
199 #define MPI_INT32_T             21
200 #define MPI_INT64_T             22
201 #define MPI_UINT8_T             23
202 #define MPI_UINT16_T            24
203 #define MPI_UINT32_T            25
204 #define MPI_UINT64_T            26
205 #define MPI_AINT                27
206 #define MPI_COUNT               MPI_AINT
207 #define MPI_LB                  28
208 #define MPI_UB                  29
209 /*
210  * AMPI_MAX_BASIC_TYPE is defined in ddt.h
211  * and is tied to the above values, if the above
212  * indexes change or values are added/deleted
213  * you may need to change AMPI_MAX_BASIC_TYPE
214  */
215 /* tuple types */
216 #define MPI_FLOAT_INT           30
217 #define MPI_DOUBLE_INT          31
218 #define MPI_LONG_INT            32
219 #define MPI_2INT                33
220 #define MPI_SHORT_INT           34
221 #define MPI_LONG_DOUBLE_INT     35
222 #define MPI_2FLOAT              36
223 #define MPI_2DOUBLE             37
224 /* mpi-2+ types */
225 #define MPI_COMPLEX             38
226 #define MPI_FLOAT_COMPLEX       39
227 #define MPI_DOUBLE_COMPLEX      40
228 #define MPI_LONG_DOUBLE_COMPLEX 41
229 /*
230  * AMPI_MAX_PREDEFINED_TYPE is defined in ddt.h
231  * and is tied to the above values, if the above
232  * indexes change or values are added/deleted
233  * you may need to change AMPI_MAX_PREDEFINED_TYPE
234  */
235
236 #define MPI_ANY_TAG        MPI_TAG_UB_VALUE+1
237 #define MPI_REQUEST_NULL   (-1)
238 #define MPI_GROUP_NULL     (-1)
239 #define MPI_GROUP_EMPTY       0
240 #define MPI_COMM_NULL      (-1)
241 #define MPI_PROC_NULL      (-2)
242 #define MPI_ROOT           (-3)
243 #define MPI_ANY_SOURCE     (-1)
244 #define MPI_KEYVAL_INVALID (-1)
245 #define MPI_INFO_NULL      (-1)
246
247 #define MPI_IN_PLACE    AMPI_API_REINTERPRET_CAST(void *, -1L)
248
249 #define MPI_BOTTOM      AMPI_API_REINTERPRET_CAST(void *, -2L)
250 #define MPI_UNDEFINED   (-32766)
251
252 #define MPI_IDENT       0
253 #define MPI_SIMILAR     1
254 #define MPI_CONGRUENT   2
255 #define MPI_UNEQUAL     3
256
257 #define MPI_COMM_TYPE_SHARED   1
258 #define AMPI_COMM_TYPE_HOST    2
259 #define AMPI_COMM_TYPE_PROCESS 3
260 #define AMPI_COMM_TYPE_WTH     4
261
262 typedef int MPI_Op;
263
264 typedef void (MPI_User_function)(void *invec, void *inoutvec,
265                                  int *len, MPI_Datatype *datatype);
266
267 #define MPI_OP_NULL -1
268 #define MPI_MAX      0
269 #define MPI_MIN      1
270 #define MPI_SUM      2
271 #define MPI_PROD     3
272 #define MPI_LAND     4
273 #define MPI_BAND     5
274 #define MPI_LOR      6
275 #define MPI_BOR      7
276 #define MPI_LXOR     8
277 #define MPI_BXOR     9
278 #define MPI_MAXLOC  10
279 #define MPI_MINLOC  11
280 #define MPI_REPLACE 12
281 #define MPI_NO_OP   13
282 /*
283  * AMPI_MAX_PREDEFINED_OP is defined in ampiimpl.h
284  * and is tied to the above values, if the above
285  * indexes change or values are added/deleted
286  * you may need to change AMPI_MAX_PREDEFINED_TYPE
287  */
288
289 #define MPI_UNWEIGHTED 0
290 #define MPI_CART       1
291 #define MPI_GRAPH      2
292 #define MPI_DIST_GRAPH 3
293
294 /* This is one less than the system-tags defined in ampiimpl.h.
295  * This is so that the tags used by the system don't clash with user-tags.
296  * The MPI 3.1 standard requires this to be at least 32767 (2^15 -1).
297  */
298 #define MPI_TAG_UB_VALUE  1073741824
299
300 /* These are the builtin MPI keyvals, plus some AMPI specific ones. */
301 #define MPI_TAG_UB             -2
302 #define MPI_HOST               -3
303 #define MPI_IO                 -4
304 #define MPI_WTIME_IS_GLOBAL    -5
305 #define MPI_APPNUM             -6
306 #define MPI_UNIVERSE_SIZE      -7
307 #define MPI_WIN_BASE           -8
308 #define MPI_WIN_SIZE           -9
309 #define MPI_WIN_DISP_UNIT     -10
310 #define MPI_WIN_MODEL         -11
311 #define MPI_WIN_CREATE_FLAVOR -12
312 #define AMPI_MY_WTH           -13
313 #define AMPI_NUM_WTHS         -14
314 #define AMPI_MY_PROCESS       -15
315 #define AMPI_NUM_PROCESSES    -16
316
317 /** Communicators give a communication context to a set of processors.
318     An intercommunicator can be used for point to point messaging between two groups.
319     An intracommunicator can be used to send messages within a single group. */
320 typedef int MPI_Comm;
321
322 /** Groups represent an set of processors 0...n-1. They can be created locally */
323 typedef int MPI_Group;
324
325 typedef int MPI_Info;
326
327 #define MPI_COMM_SELF               AMPI_API_STATIC_CAST(MPI_Comm, 1000000) /*MPI_COMM_SELF is the first split comm */
328 #define MPI_COMM_FIRST_SPLIT        AMPI_API_STATIC_CAST(MPI_Comm, 1000000) /*Communicator from MPI_Comm_split */
329 #define MPI_COMM_FIRST_GROUP        AMPI_API_STATIC_CAST(MPI_Comm, 2000000) /*Communicator from MPI_Comm_group */
330 #define MPI_COMM_FIRST_CART         AMPI_API_STATIC_CAST(MPI_Comm, 3000000) /*Communicator from MPI_Cart_create */
331 #define MPI_COMM_FIRST_GRAPH        AMPI_API_STATIC_CAST(MPI_Comm, 4000000) /*Communicator from MPI_Graph_create */
332 #define MPI_COMM_FIRST_DIST_GRAPH   AMPI_API_STATIC_CAST(MPI_Comm, 5000000) /*Communicator from MPI_Dist_Graph_create */
333 #define MPI_COMM_FIRST_INTER        AMPI_API_STATIC_CAST(MPI_Comm, 6000000) /*Communicator from MPI_Intercomm_create*/
334 #define MPI_COMM_FIRST_INTRA        AMPI_API_STATIC_CAST(MPI_Comm, 7000000) /*Communicator from MPI_Intercomm_merge*/
335 #define MPI_COMM_FIRST_RESVD        AMPI_API_STATIC_CAST(MPI_Comm, 8000000) /*Communicator reserved for now*/
336 #define MPI_COMM_WORLD              AMPI_API_STATIC_CAST(MPI_Comm, 9000000) /*Start of universe*/
337 #define MPI_MAX_COMM_WORLDS  8
338 extern MPI_Comm MPI_COMM_UNIVERSE[MPI_MAX_COMM_WORLDS];
339
340 #define MPI_INFO_ENV                AMPI_API_STATIC_CAST(MPI_Info, 0)
341 #define AMPI_INFO_LB_SYNC           AMPI_API_STATIC_CAST(MPI_Info, 1)
342 #define AMPI_INFO_LB_ASYNC          AMPI_API_STATIC_CAST(MPI_Info, 2)
343 #define AMPI_INFO_CHKPT_IN_MEMORY   AMPI_API_STATIC_CAST(MPI_Info, 3)
344
345 /* the size of MPI_Status must conform to MPI_STATUS_SIZE in ampif.h */
346 struct AmpiMsg;
347 typedef int MPI_Request;
348 typedef struct {
349   int MPI_TAG, MPI_SOURCE, MPI_COMM, MPI_LENGTH, MPI_ERROR, MPI_CANCEL; /* FIXME: MPI_ERROR is never used */
350   struct AmpiMsg *msg;
351 } MPI_Status;
352
353 #define MPI_STATUS_IGNORE   AMPI_API_REINTERPRET_CAST(MPI_Status *, 0)
354 #define MPI_STATUSES_IGNORE AMPI_API_REINTERPRET_CAST(MPI_Status *, 0)
355
356 /* type for MPI messages used in MPI_Mprobe, MPI_Mrecv, MPI_Improbe, MPI_Imrecv */
357 typedef int MPI_Message;
358 #define MPI_MESSAGE_NULL    -1
359 #define MPI_MESSAGE_NO_PROC -2
360
361 typedef int MPI_Errhandler;
362 #define MPI_ERRHANDLER_NULL  0
363 #define MPI_ERRORS_RETURN    1
364 #define MPI_ERRORS_ARE_FATAL 2
365
366 typedef void (MPI_Comm_errhandler_fn)(MPI_Comm *, int *, ...);
367 typedef void (MPI_Comm_errhandler_function)(MPI_Comm *, int *, ...);
368 typedef int  (MPI_Comm_copy_attr_function)(MPI_Comm oldcomm, int keyval,
369                                            void *extra_state, void *attribute_val_in,
370                                            void *attribute_val_out, int *flag);
371 typedef int  (MPI_Comm_delete_attr_function)(MPI_Comm comm, int keyval,
372                                              void *attribute_val, void *extra_state);
373
374 typedef void (MPI_Handler_function)(MPI_Comm *, int *, ...);
375 typedef int  (MPI_Copy_function)(MPI_Comm oldcomm, int keyval,
376                                  void *extra_state, void *attribute_val_in,
377                                  void *attribute_val_out, int *flag);
378 typedef int  (MPI_Delete_function)(MPI_Comm comm, int keyval,
379                                    void *attribute_val, void *extra_state);
380
381 typedef int MPI_Type_copy_attr_function(MPI_Datatype oldtype, int type_keyval, void *extra_state,
382                                         void *attribute_val_in, void *attribute_val_out, int *flag);
383 typedef int MPI_Type_delete_attr_function(MPI_Datatype datatype, int type_keyval,
384                                           void *attribute_val, void *extra_state);
385
386 typedef int MPI_Grequest_query_function(void *extra_state, MPI_Status *status);
387 typedef int MPI_Grequest_free_function(void *extra_state);
388 typedef int MPI_Grequest_cancel_function(void *extra_state, int complete);
389
390 #include "pup_c.h"
391
392 typedef void (*MPI_PupFn)(pup_er, void*);
393 typedef void (*MPI_MigrateFn)(void);
394
395 /* for the datatype decoders */
396 #define MPI_COMBINER_NAMED            1
397 #define MPI_COMBINER_CONTIGUOUS       2
398 #define MPI_COMBINER_VECTOR           3
399 #define MPI_COMBINER_HVECTOR          4
400 #define MPI_COMBINER_HVECTOR_INTEGER  5
401 #define MPI_COMBINER_INDEXED          6
402 #define MPI_COMBINER_HINDEXED         7
403 #define MPI_COMBINER_HINDEXED_INTEGER 8
404 #define MPI_COMBINER_STRUCT           9
405 #define MPI_COMBINER_STRUCT_INTEGER   10
406 #define MPI_COMBINER_DARRAY           11
407 #define MPI_COMBINER_RESIZED          12
408 #define MPI_COMBINER_SUBARRAY         13
409 #define MPI_COMBINER_INDEXED_BLOCK    14
410 #define MPI_COMBINER_HINDEXED_BLOCK   15
411
412 #define MPI_BSEND_OVERHEAD 0
413
414 /* When AMPI is built on top of MPI, rename user's MPI_* calls to AMPI_* */
415 #if CMK_CONVERSE_MPI
416 /***pt2pt***/
417 #define  MPI_Send  AMPI_Send
418 #define PMPI_Send APMPI_Send
419 #define  MPI_Ssend  AMPI_Ssend
420 #define PMPI_Ssend APMPI_Ssend
421 #define  MPI_Recv  AMPI_Recv
422 #define PMPI_Recv APMPI_Recv
423 #define  MPI_Mrecv  AMPI_Mrecv
424 #define PMPI_Mrecv APMPI_Mrecv
425 #define  MPI_Get_count  AMPI_Get_count
426 #define PMPI_Get_count APMPI_Get_count
427 #define  MPI_Bsend  AMPI_Bsend
428 #define PMPI_Bsend APMPI_Bsend
429 #define  MPI_Rsend  AMPI_Rsend
430 #define PMPI_Rsend APMPI_Rsend
431 #define  MPI_Buffer_attach  AMPI_Buffer_attach
432 #define PMPI_Buffer_attach APMPI_Buffer_attach
433 #define  MPI_Buffer_detach  AMPI_Buffer_detach
434 #define PMPI_Buffer_detach APMPI_Buffer_detach
435 #define  MPI_Isend  AMPI_Isend
436 #define PMPI_Isend APMPI_Isend
437 #define  MPI_Ibsend  AMPI_Ibsend
438 #define PMPI_Ibsend APMPI_Ibsend
439 #define  MPI_Issend  AMPI_Issend
440 #define PMPI_Issend APMPI_Issend
441 #define  MPI_Irsend  AMPI_Irsend
442 #define PMPI_Irsend APMPI_Irsend
443 #define  MPI_Irecv  AMPI_Irecv
444 #define PMPI_Irecv APMPI_Irecv
445 #define  MPI_Imrecv  AMPI_Imrecv
446 #define PMPI_Imrecv APMPI_Imrecv
447 #define  MPI_Waitany  AMPI_Waitany
448 #define PMPI_Waitany APMPI_Waitany
449 #define  MPI_Test  AMPI_Test
450 #define PMPI_Test APMPI_Test
451 #define  MPI_Wait  AMPI_Wait
452 #define PMPI_Wait APMPI_Wait
453 #define  MPI_Testany  AMPI_Testany
454 #define PMPI_Testany APMPI_Testany
455 #define  MPI_Waitall  AMPI_Waitall
456 #define PMPI_Waitall APMPI_Waitall
457 #define  MPI_Testall  AMPI_Testall
458 #define PMPI_Testall APMPI_Testall
459 #define  MPI_Waitsome  AMPI_Waitsome
460 #define PMPI_Waitsome APMPI_Waitsome
461 #define  MPI_Testsome  AMPI_Testsome
462 #define PMPI_Testsome APMPI_Testsome
463 #define  MPI_Request_get_status  AMPI_Request_get_status
464 #define PMPI_Request_get_status APMPI_Request_get_status
465 #define  MPI_Request_free  AMPI_Request_free
466 #define PMPI_Request_free APMPI_Request_free
467 #define  MPI_Grequest_start  AMPI_Grequest_start
468 #define PMPI_Grequest_start APMPI_Grequest_start
469 #define  MPI_Grequest_complete  AMPI_Grequest_complete
470 #define PMPI_Grequest_complete APMPI_Grequest_complete
471 #define  MPI_Cancel  AMPI_Cancel
472 #define PMPI_Cancel APMPI_Cancel
473 #define  MPI_Test_cancelled  AMPI_Test_cancelled
474 #define PMPI_Test_cancelled APMPI_Test_cancelled
475 #define  MPI_Status_set_cancelled  AMPI_Status_set_cancelled
476 #define PMPI_Status_set_cancelled APMPI_Status_set_cancelled
477 #define  MPI_Iprobe AMPI_Iprobe
478 #define PMPI_Iprobe APMPI_Iprobe
479 #define  MPI_Probe AMPI_Probe
480 #define PMPI_Probe APMPI_Probe
481 #define  MPI_Improbe AMPI_Improbe
482 #define PMPI_Improbe APMPI_Improbe
483 #define  MPI_Mprobe AMPI_Mprobe
484 #define PMPI_Mprobe APMPI_Mprobe
485 #define  MPI_Send_init  AMPI_Send_init
486 #define PMPI_Send_init APMPI_Send_init
487 #define  MPI_Ssend_init  AMPI_Ssend_init
488 #define PMPI_Ssend_init APMPI_Ssend_init
489 #define  MPI_Rsend_init  AMPI_Rsend_init
490 #define PMPI_Rsend_init APMPI_Rsend_init
491 #define  MPI_Bsend_init  AMPI_Bsend_init
492 #define PMPI_Bsend_init APMPI_Bsend_init
493 #define  MPI_Recv_init  AMPI_Recv_init
494 #define PMPI_Recv_init APMPI_Recv_init
495 #define  MPI_Start  AMPI_Start
496 #define PMPI_Start APMPI_Start
497 #define  MPI_Startall  AMPI_Startall
498 #define PMPI_Startall APMPI_Startall
499 #define  MPI_Sendrecv  AMPI_Sendrecv
500 #define PMPI_Sendrecv APMPI_Sendrecv
501 #define  MPI_Sendrecv_replace  AMPI_Sendrecv_replace
502 #define PMPI_Sendrecv_replace APMPI_Sendrecv_replace
503
504 /***datatypes***/
505 #define  MPI_Type_contiguous  AMPI_Type_contiguous
506 #define PMPI_Type_contiguous APMPI_Type_contiguous
507 #define  MPI_Type_vector  AMPI_Type_vector
508 #define PMPI_Type_vector APMPI_Type_vector
509 #define  MPI_Type_create_hvector  AMPI_Type_create_hvector
510 #define PMPI_Type_create_hvector APMPI_Type_create_hvector
511 #define  MPI_Type_hvector  AMPI_Type_hvector
512 #define PMPI_Type_hvector APMPI_Type_hvector
513 #define  MPI_Type_indexed  AMPI_Type_indexed
514 #define PMPI_Type_indexed APMPI_Type_indexed
515 #define  MPI_Type_create_hindexed  AMPI_Type_create_hindexed
516 #define PMPI_Type_create_hindexed APMPI_Type_create_hindexed
517 #define  MPI_Type_create_indexed_block  AMPI_Type_create_indexed_block
518 #define PMPI_Type_create_indexed_block APMPI_Type_create_indexed_block
519 #define  MPI_Type_create_hindexed_block  AMPI_Type_create_hindexed_block
520 #define PMPI_Type_create_hindexed_block APMPI_Type_create_hindexed_block
521 #define  MPI_Type_hindexed  AMPI_Type_hindexed
522 #define PMPI_Type_hindexed APMPI_Type_hindexed
523 #define  MPI_Type_create_struct  AMPI_Type_create_struct
524 #define PMPI_Type_create_struct APMPI_Type_create_struct
525 #define  MPI_Type_struct  AMPI_Type_struct
526 #define PMPI_Type_struct APMPI_Type_struct
527 #define  MPI_Type_get_envelope  AMPI_Type_get_envelope
528 #define PMPI_Type_get_envelope APMPI_Type_get_envelope
529 #define  MPI_Type_get_contents  AMPI_Type_get_contents
530 #define PMPI_Type_get_contents APMPI_Type_get_contents
531 #define  MPI_Type_commit  AMPI_Type_commit
532 #define PMPI_Type_commit APMPI_Type_commit
533 #define  MPI_Type_free  AMPI_Type_free
534 #define PMPI_Type_free APMPI_Type_free
535 #define  MPI_Type_get_extent  AMPI_Type_get_extent
536 #define PMPI_Type_get_extent APMPI_Type_get_extent
537 #define  MPI_Type_get_extent_x  AMPI_Type_get_extent_x
538 #define PMPI_Type_get_extent_x APMPI_Type_get_extent_x
539 #define  MPI_Type_extent  AMPI_Type_extent
540 #define PMPI_Type_extent APMPI_Type_extent
541 #define  MPI_Type_get_true_extent  AMPI_Type_get_true_extent
542 #define PMPI_Type_get_true_extent APMPI_Type_get_true_extent
543 #define  MPI_Type_get_true_extent_x  AMPI_Type_get_true_extent_x
544 #define PMPI_Type_get_true_extent_X APMPI_Type_get_true_extent_x
545 #define  MPI_Type_size  AMPI_Type_size
546 #define PMPI_Type_size APMPI_Type_size
547 #define  MPI_Type_size_x  AMPI_Type_size_x
548 #define PMPI_Type_size_x APMPI_Type_size_x
549 #define  MPI_Type_lb  AMPI_Type_lb
550 #define PMPI_Type_lb APMPI_Type_lb
551 #define  MPI_Type_ub  AMPI_Type_ub
552 #define PMPI_Type_ub APMPI_Type_ub
553 #define  MPI_Type_set_name  AMPI_Type_set_name
554 #define PMPI_Type_set_name APMPI_Type_set_name
555 #define  MPI_Type_get_name  AMPI_Type_get_name
556 #define PMPI_Type_get_name APMPI_Type_get_name
557 #define  MPI_Type_dup  AMPI_Type_dup
558 #define PMPI_Type_dup APMPI_Type_dup
559 #define  MPI_Type_create_resized  AMPI_Type_create_resized
560 #define PMPI_Type_create_resized APMPI_Type_create_resized
561 #define  MPI_Type_set_attr  AMPI_Type_set_attr
562 #define PMPI_Type_set_attr APMPI_Type_set_attr
563 #define  MPI_Type_get_attr  AMPI_Type_get_attr
564 #define PMPI_Type_get_attr APMPI_Type_get_attr
565 #define  MPI_Type_delete_attr  AMPI_Type_delete_attr
566 #define PMPI_Type_delete_attr APMPI_Type_delete_attr
567 #define  MPI_Type_create_keyval  AMPI_Type_create_keyval
568 #define PMPI_Type_create_keyval APMPI_Type_create_keyval
569 #define  MPI_Type_free_keyval  AMPI_Type_free_keyval
570 #define PMPI_Type_free_keyval APMPI_Type_free_keyval
571 #define  MPI_Type_create_darray  AMPI_Type_create_darray
572 #define PMPI_Type_create_darray APMPI_Type_create_darray
573 #define  MPI_Type_create_subarray  AMPI_Type_create_subarray
574 #define PMPI_Type_create_subarray APMPI_Type_create_subarray
575 #define  MPI_Get_address  AMPI_Get_address
576 #define PMPI_Get_address APMPI_Get_address
577 #define  MPI_Address  AMPI_Address
578 #define PMPI_Address APMPI_Address
579 #define  MPI_Status_set_elements  AMPI_Status_set_elements
580 #define PMPI_Status_set_elements APMPI_Status_set_elements
581 #define  MPI_Status_set_elements_x  AMPI_Status_set_elements_x
582 #define PMPI_Status_set_elements_x APMPI_Status_set_elements_x
583 #define  MPI_Get_elements  AMPI_Get_elements
584 #define PMPI_Get_elements APMPI_Get_elements
585 #define  MPI_Get_elements_x  AMPI_Get_elements_x
586 #define PMPI_Get_elements_x APMPI_Get_elements_x
587 #define  MPI_Pack  AMPI_Pack
588 #define PMPI_Pack APMPI_Pack
589 #define  MPI_Unpack  AMPI_Unpack
590 #define PMPI_Unpack APMPI_Unpack
591 #define  MPI_Pack_size  AMPI_Pack_size
592 #define PMPI_Pack_size APMPI_Pack_size
593
594 /***collectives***/
595 #define  MPI_Barrier  AMPI_Barrier
596 #define PMPI_Barrier APMPI_Barrier
597 #define  MPI_Ibarrier  AMPI_Ibarrier
598 #define PMPI_Ibarrier APMPI_Ibarrier
599 #define  MPI_Bcast  AMPI_Bcast
600 #define PMPI_Bcast APMPI_Bcast
601 #define  MPI_Ibcast  AMPI_Ibcast
602 #define PMPI_Ibcast APMPI_Ibcast
603 #define  MPI_Gather  AMPI_Gather
604 #define PMPI_Gather APMPI_Gather
605 #define  MPI_Igather  AMPI_Igather
606 #define PMPI_Igather APMPI_Igather
607 #define  MPI_Gatherv  AMPI_Gatherv
608 #define PMPI_Gatherv APMPI_Gatherv
609 #define  MPI_Igatherv  AMPI_Igatherv
610 #define PMPI_Igatherv APMPI_Igatherv
611 #define  MPI_Scatter  AMPI_Scatter
612 #define PMPI_Scatter APMPI_Scatter
613 #define  MPI_Iscatter  AMPI_Iscatter
614 #define PMPI_Iscatter APMPI_Iscatter
615 #define  MPI_Scatterv  AMPI_Scatterv
616 #define PMPI_Scatterv APMPI_Scatterv
617 #define  MPI_Iscatterv  AMPI_Iscatterv
618 #define PMPI_Iscatterv APMPI_Iscatterv
619 #define  MPI_Allgather  AMPI_Allgather
620 #define PMPI_Allgather APMPI_Allgather
621 #define  MPI_Iallgather  AMPI_Iallgather
622 #define PMPI_Iallgather APMPI_Iallgather
623 #define  MPI_Allgatherv  AMPI_Allgatherv
624 #define PMPI_Allgatherv APMPI_Allgatherv
625 #define  MPI_Iallgatherv  AMPI_Iallgatherv
626 #define PMPI_Iallgatherv APMPI_Iallgatherv
627 #define  MPI_Alltoall  AMPI_Alltoall
628 #define PMPI_Alltoall APMPI_Alltoall
629 #define  MPI_Ialltoall  AMPI_Ialltoall
630 #define PMPI_Ialltoall APMPI_Ialltoall
631 #define  MPI_Alltoallv  AMPI_Alltoallv
632 #define PMPI_Alltoallv APMPI_Alltoallv
633 #define  MPI_Ialltoallv  AMPI_Ialltoallv
634 #define PMPI_Ialltoallv APMPI_Ialltoallv
635 #define  MPI_Alltoallw  AMPI_Alltoallw
636 #define PMPI_Alltoallw APMPI_Alltoallw
637 #define  MPI_Ialltoallw  AMPI_Ialltoallw
638 #define PMPI_Ialltoallw APMPI_Ialltoallw
639 #define  MPI_Reduce  AMPI_Reduce
640 #define PMPI_Reduce APMPI_Reduce
641 #define  MPI_Ireduce  AMPI_Ireduce
642 #define PMPI_Ireduce APMPI_Ireduce
643 #define  MPI_Allreduce  AMPI_Allreduce
644 #define PMPI_Allreduce APMPI_Allreduce
645 #define  MPI_Iallreduce  AMPI_Iallreduce
646 #define PMPI_Iallreduce APMPI_Iallreduce
647 #define  MPI_Reduce_local  AMPI_Reduce_local
648 #define PMPI_Reduce_local APMPI_Reduce_local
649 #define  MPI_Reduce_scatter_block  AMPI_Reduce_scatter_block
650 #define PMPI_Reduce_scatter_block APMPI_Reduce_scatter_block
651 #define  MPI_Ireduce_scatter_block  AMPI_Ireduce_scatter_block
652 #define PMPI_Ireduce_scatter_block APMPI_Ireduce_scatter_block
653 #define  MPI_Reduce_scatter  AMPI_Reduce_scatter
654 #define PMPI_Reduce_scatter APMPI_Reduce_scatter
655 #define  MPI_Ireduce_scatter  AMPI_Ireduce_scatter
656 #define PMPI_Ireduce_scatter APMPI_Ireduce_scatter
657 #define  MPI_Scan  AMPI_Scan
658 #define PMPI_Scan APMPI_Scan
659 #define  MPI_Iscan  AMPI_Iscan
660 #define PMPI_Iscan APMPI_Iscan
661 #define  MPI_Exscan  AMPI_Exscan
662 #define PMPI_Exscan APMPI_Exscan
663 #define  MPI_Iexscan  AMPI_Iexscan
664 #define PMPI_Iexscan APMPI_Iexscan
665
666 /***neighborhood collectives***/
667 #define  MPI_Neighbor_alltoall  AMPI_Neighbor_alltoall
668 #define PMPI_Neighbor_alltoall APMPI_Neighbor_alltoall
669 #define  MPI_Ineighbor_alltoall  AMPI_Ineighbor_alltoall
670 #define PMPI_Ineighbor_alltoall APMPI_Ineighbor_alltoall
671 #define  MPI_Neighbor_alltoallv  AMPI_Neighbor_alltoallv
672 #define PMPI_Neighbor_alltoallv APMPI_Neighbor_alltoallv
673 #define  MPI_Ineighbor_alltoallv  AMPI_Ineighbor_alltoallv
674 #define PMPI_Ineighbor_alltoallv APMPI_Ineighbor_alltoallv
675 #define  MPI_Neighbor_alltoallw  AMPI_Neighbor_alltoallw
676 #define PMPI_Neighbor_alltoallw APMPI_Neighbor_alltoallw
677 #define  MPI_Ineighbor_alltoallw  AMPI_Ineighbor_alltoallw
678 #define PMPI_Ineighbor_alltoallw APMPI_Ineighbor_alltoallw
679 #define  MPI_Neighbor_allgather  AMPI_Neighbor_allgather
680 #define PMPI_Neighbor_allgather APMPI_Neighbor_allgather
681 #define  MPI_Ineighbor_allgather  AMPI_Ineighbor_allgather
682 #define PMPI_Ineighbor_allgather APMPI_Ineighbor_allgather
683 #define  MPI_Neighbor_allgatherv  AMPI_Neighbor_allgatherv
684 #define PMPI_Neighbor_allgatherv APMPI_Neighbor_allgatherv
685 #define  MPI_Ineighbor_allgatherv  AMPI_Ineighbor_allgatherv
686 #define PMPI_Ineighbor_allgatherv APMPI_Ineighbor_allgatherv
687
688 /***ops***/
689 #define  MPI_Op_create  AMPI_Op_create
690 #define PMPI_Op_create APMPI_Op_create
691 #define  MPI_Op_free  AMPI_Op_free
692 #define PMPI_Op_free APMPI_Op_free
693 #define  MPI_Op_commutative  AMPI_Op_commutative
694 #define PMPI_Op_commutative APMPI_Op_commutative
695
696 /***groups***/
697 #define  MPI_Group_size  AMPI_Group_size
698 #define PMPI_Group_size APMPI_Group_size
699 #define  MPI_Group_rank  AMPI_Group_rank
700 #define PMPI_Group_rank APMPI_Group_rank
701 #define  MPI_Group_translate_ranks  AMPI_Group_translate_ranks
702 #define PMPI_Group_translate_ranks APMPI_Group_translate_ranks
703 #define  MPI_Group_compare  AMPI_Group_compare
704 #define PMPI_Group_compare APMPI_Group_compare
705 #define  MPI_Comm_group  AMPI_Comm_group
706 #define PMPI_Comm_group APMPI_Comm_group
707 #define  MPI_Group_union  AMPI_Group_union
708 #define PMPI_Group_union APMPI_Group_union
709 #define  MPI_Group_intersection  AMPI_Group_intersection
710 #define PMPI_Group_intersection APMPI_Group_intersection
711 #define  MPI_Group_difference  AMPI_Group_difference
712 #define PMPI_Group_difference APMPI_Group_difference
713 #define  MPI_Group_incl  AMPI_Group_incl
714 #define PMPI_Group_incl APMPI_Group_incl
715 #define  MPI_Group_excl  AMPI_Group_excl
716 #define PMPI_Group_excl APMPI_Group_excl
717 #define  MPI_Group_range_incl  AMPI_Group_range_incl
718 #define PMPI_Group_range_incl APMPI_Group_range_incl
719 #define  MPI_Group_range_excl  AMPI_Group_range_excl
720 #define PMPI_Group_range_excl APMPI_Group_range_excl
721 #define  MPI_Group_free  AMPI_Group_free
722 #define PMPI_Group_free APMPI_Group_free
723
724 /***communicators***/
725 #define  MPI_Intercomm_create  AMPI_Intercomm_create
726 #define PMPI_Intercomm_create APMPI_Intercomm_create
727 #define  MPI_Intercomm_merge  AMPI_Intercomm_merge
728 #define PMPI_Intercomm_merge APMPI_Intercomm_merge
729 #define  MPI_Comm_create  AMPI_Comm_create
730 #define PMPI_Comm_create APMPI_Comm_create
731 #define  MPI_Comm_create_group AMPI_Comm_create_group
732 #define PMPI_Comm_create_group APMPI_Comm_create_group
733 #define  MPI_Comm_size  AMPI_Comm_size
734 #define PMPI_Comm_size APMPI_Comm_size
735 #define  MPI_Comm_rank  AMPI_Comm_rank
736 #define PMPI_Comm_rank APMPI_Comm_rank
737 #define  MPI_Comm_compare  AMPI_Comm_compare
738 #define PMPI_Comm_compare APMPI_Comm_compare
739 #define  MPI_Comm_split  AMPI_Comm_split
740 #define PMPI_Comm_split APMPI_Comm_split
741 #define  MPI_Comm_split_type  AMPI_Comm_split_type
742 #define PMPI_Comm_split_type APMPI_Comm_split_type
743 #define  MPI_Comm_dup  AMPI_Comm_dup
744 #define PMPI_Comm_dup APMPI_Comm_dup
745 #define  MPI_Comm_idup  AMPI_Comm_idup
746 #define PMPI_Comm_idup APMPI_Comm_idup
747 #define  MPI_Comm_dup_with_info  AMPI_Comm_dup_with_info
748 #define PMPI_Comm_dup_with_info APMPI_Comm_dup_with_info
749 #define  MPI_Comm_idup_with_info  AMPI_Comm_idup_with_info
750 #define PMPI_Comm_idup_with_info APMPI_Comm_idup_with_info
751 #define  MPI_Comm_free  AMPI_Comm_free
752 #define PMPI_Comm_free APMPI_Comm_free
753 #define  MPI_Comm_test_inter  AMPI_Comm_test_inter
754 #define PMPI_Comm_test_inter APMPI_Comm_test_inter
755 #define  MPI_Comm_remote_size  AMPI_Comm_remote_size
756 #define PMPI_Comm_remote_size APMPI_Comm_remote_size
757 #define  MPI_Comm_remote_group  AMPI_Comm_remote_group
758 #define PMPI_Comm_remote_group APMPI_Comm_remote_group
759 #define  MPI_Comm_set_name  AMPI_Comm_set_name
760 #define PMPI_Comm_set_name APMPI_Comm_set_name
761 #define  MPI_Comm_get_name  AMPI_Comm_get_name
762 #define PMPI_Comm_get_name APMPI_Comm_get_name
763 #define  MPI_Comm_set_info  AMPI_Comm_set_info
764 #define PMPI_Comm_set_info APMPI_Comm_set_info
765 #define  MPI_Comm_get_info  AMPI_Comm_get_info
766 #define PMPI_Comm_get_info APMPI_Comm_get_info
767 #define  MPI_Comm_call_errhandler  AMPI_Comm_call_errhandler
768 #define PMPI_Comm_call_errhandler APMPI_Comm_call_errhandler
769 #define  MPI_Comm_create_errhandler  AMPI_Comm_create_errhandler
770 #define PMPI_Comm_create_errhandler APMPI_Comm_create_errhandler
771 #define  MPI_Comm_set_errhandler  AMPI_Comm_set_errhandler
772 #define PMPI_Comm_set_errhandler APMPI_Comm_set_errhandler
773 #define  MPI_Comm_get_errhandler  AMPI_Comm_get_errhandler
774 #define PMPI_Comm_get_errhandler APMPI_Comm_get_errhandler
775 #define  MPI_Comm_free_errhandler  AMPI_Comm_free_errhandler
776 #define PMPI_Comm_free_errhandler APMPI_Comm_free_errhandler
777 #define  MPI_Comm_create_keyval  AMPI_Comm_create_keyval
778 #define PMPI_Comm_create_keyval APMPI_Comm_create_keyval
779 #define  MPI_Comm_free_keyval  AMPI_Comm_free_keyval
780 #define PMPI_Comm_free_keyval APMPI_Comm_free_keyval
781 #define  MPI_Comm_set_attr  AMPI_Comm_set_attr
782 #define PMPI_Comm_set_attr APMPI_Comm_set_attr
783 #define  MPI_Comm_get_attr  AMPI_Comm_get_attr
784 #define PMPI_Comm_get_attr APMPI_Comm_get_attr
785 #define  MPI_Comm_delete_attr AMPI_Comm_delete_attr
786 #define PMPI_Comm_delete_attr APMPI_Comm_delete_attr
787
788 /***keyvals/attributes***/
789 #define  MPI_Keyval_create  AMPI_Keyval_create
790 #define PMPI_Keyval_create APMPI_Keyval_create
791 #define  MPI_Keyval_free  AMPI_Keyval_free
792 #define PMPI_Keyval_free APMPI_Keyval_free
793 #define  MPI_Attr_put  AMPI_Attr_put
794 #define PMPI_Attr_put APMPI_Attr_put
795 #define  MPI_Attr_get  AMPI_Attr_get
796 #define PMPI_Attr_get APMPI_Attr_get
797 #define  MPI_Attr_delete  AMPI_Attr_delete
798 #define PMPI_Attr_delete APMPI_Attr_delete
799
800 /***topologies***/
801 #define  MPI_Cart_create  AMPI_Cart_create
802 #define PMPI_Cart_create APMPI_Cart_create
803 #define  MPI_Graph_create  AMPI_Graph_create
804 #define PMPI_Graph_create APMPI_Graph_create
805 #define  MPI_Dist_graph_create_adjacent AMPI_Dist_graph_create_adjacent
806 #define PMPI_Dist_graph_create_adjacent APMPI_Dist_graph_create_adjacent
807 #define  MPI_Dist_graph_create AMPI_Dist_graph_create
808 #define PMPI_Dist_graph_create APMPI_Dist_graph_create
809 #define  MPI_Topo_test  AMPI_Topo_test
810 #define PMPI_Topo_test APMPI_Topo_test
811 #define  MPI_Cart_map  AMPI_Cart_map
812 #define PMPI_Cart_map APMPI_Cart_map
813 #define  MPI_Graph_map  AMPI_Graph_map
814 #define PMPI_Graph_map APMPI_Graph_map
815 #define  MPI_Cartdim_get  AMPI_Cartdim_get
816 #define PMPI_Cartdim_get APMPI_Cartdim_get
817 #define  MPI_Cart_get  AMPI_Cart_get
818 #define PMPI_Cart_get APMPI_Cart_get
819 #define  MPI_Cart_rank  AMPI_Cart_rank
820 #define PMPI_Cart_rank APMPI_Cart_rank
821 #define  MPI_Cart_coords  AMPI_Cart_coords
822 #define PMPI_Cart_coords APMPI_Cart_coords
823 #define  MPI_Cart_shift  AMPI_Cart_shift
824 #define PMPI_Cart_shift APMPI_Cart_shift
825 #define  MPI_Graphdims_get  AMPI_Graphdims_get
826 #define PMPI_Graphdims_get APMPI_Graphdims_get
827 #define  MPI_Graph_get  AMPI_Graph_get
828 #define PMPI_Graph_get APMPI_Graph_get
829 #define  MPI_Graph_neighbors_count  AMPI_Graph_neighbors_count
830 #define PMPI_Graph_neighbors_count APMPI_Graph_neighbors_count
831 #define  MPI_Graph_neighbors  AMPI_Graph_neighbors
832 #define PMPI_Graph_neighbors APMPI_Graph_neighbors
833 #define  MPI_Dist_graph_neighbors_count AMPI_Dist_graph_neighbors_count
834 #define PMPI_Dist_graph_neighbors_count APMPI_Dist_graph_neighbors_count
835 #define  MPI_Dist_graph_neighbors AMPI_Dist_graph_neighbors
836 #define PMPI_Dist_graph_neighbors APMPI_Dist_graph_neighbors
837 #define  MPI_Dims_create  AMPI_Dims_create
838 #define PMPI_Dims_create APMPI_Dims_create
839 #define  MPI_Cart_sub  AMPI_Cart_sub
840 #define PMPI_Cart_sub APMPI_Cart_sub
841
842 /***environment management***/
843 #define  MPI_Errhandler_create  AMPI_Errhandler_create
844 #define PMPI_Errhandler_create APMPI_Errhandler_create
845 #define  MPI_Errhandler_set  AMPI_Errhandler_set
846 #define PMPI_Errhandler_set APMPI_Errhandler_set
847 #define  MPI_Errhandler_get  AMPI_Errhandler_get
848 #define PMPI_Errhandler_get APMPI_Errhandler_get
849 #define  MPI_Errhandler_free  AMPI_Errhandler_free
850 #define PMPI_Errhandler_free APMPI_Errhandler_free
851 #define  MPI_Add_error_code  AMPI_Add_error_code
852 #define PMPI_Add_error_code APMPI_Add_error_code
853 #define  MPI_Add_error_class  AMPI_Add_error_class
854 #define PMPI_Add_error_class APMPI_Add_error_class
855 #define  MPI_Add_error_string  AMPI_Add_error_string
856 #define PMPI_Add_error_string APMPI_Add_error_string
857 #define  MPI_Error_class  AMPI_Error_class
858 #define PMPI_Error_class APMPI_Error_class
859 #define  MPI_Error_string  AMPI_Error_string
860 #define PMPI_Error_string APMPI_Error_string
861 #define  MPI_Get_version  AMPI_Get_version
862 #define PMPI_Get_version APMPI_Get_version
863 #define  MPI_Get_library_version  AMPI_Get_library_version
864 #define PMPI_Get_library_version APMPI_Get_library_version
865 #define  MPI_Get_processor_name  AMPI_Get_processor_name
866 #define PMPI_Get_processor_name APMPI_Get_processor_name
867 #define  MPI_Wtime  AMPI_Wtime
868 #define PMPI_Wtime APMPI_Wtime
869 #define  MPI_Wtick  AMPI_Wtick
870 #define PMPI_Wtick APMPI_Wtick
871 #define  MPI_Is_thread_main  AMPI_Is_thread_main
872 #define PMPI_Is_thread_main APMPI_Is_thread_main
873 #define  MPI_Query_thread  AMPI_Query_thread
874 #define PMPI_Query_thread APMPI_Query_thread
875 #define  MPI_Init_thread  AMPI_Init_thread
876 #define PMPI_Init_thread APMPI_Init_thread
877 #define  MPI_Init  AMPI_Init
878 #define PMPI_Init APMPI_Init
879 #define  MPI_Initialized  AMPI_Initialized
880 #define PMPI_Initialized APMPI_Initialized
881 #define  MPI_Finalize  AMPI_Finalize
882 #define PMPI_Finalize APMPI_Finalize
883 #define  MPI_Finalized  AMPI_Finalized
884 #define PMPI_Finalized APMPI_Finalized
885 #define  MPI_Abort  AMPI_Abort
886 #define PMPI_Abort APMPI_Abort
887 #define  MPI_Pcontrol  AMPI_Pcontrol
888 #define PMPI_Pcontrol APMPI_Pcontrol
889
890 /***windows/rma***/
891 #define  MPI_Win_create  AMPI_Win_create
892 #define PMPI_Win_create APMPI_Win_create
893 #define  MPI_Win_free  AMPI_Win_free
894 #define PMPI_Win_free APMPI_Win_free
895 #define  MPI_Win_create_errhandler  AMPI_Win_create_errhandler
896 #define PMPI_Win_create_errhandler APMPI_Win_create_errhandler
897 #define  MPI_Win_call_errhandler  AMPI_Win_call_errhandler
898 #define PMPI_Win_call_errhandler APMPI_Win_call_errhandler
899 #define  MPI_Win_get_errhandler  AMPI_Win_get_errhandler
900 #define PMPI_Win_get_errhandler APMPI_Win_get_errhandler
901 #define  MPI_Win_set_errhandler  AMPI_Win_set_errhandler
902 #define PMPI_Win_set_errhandler APMPI_Win_set_errhandler
903 #define  MPI_Win_create_keyval  AMPI_Win_create_keyval
904 #define PMPI_Win_create_keyval APMPI_Win_create_keyval
905 #define  MPI_Win_free_keyval  AMPI_Win_free_keyval
906 #define PMPI_Win_free_keyval APMPI_Win_free_keyval
907 #define  MPI_Win_delete_attr  AMPI_Win_delete_attr
908 #define PMPI_Win_delete_attr APMPI_Win_delete_attr
909 #define  MPI_Win_get_attr  AMPI_Win_get_attr
910 #define PMPI_Win_get_attr APMPI_Win_get_attr
911 #define  MPI_Win_set_attr  AMPI_Win_set_attr
912 #define PMPI_Win_set_attr APMPI_Win_set_attr
913 #define  MPI_Win_get_group  AMPI_Win_get_group
914 #define PMPI_Win_get_group APMPI_Win_get_group
915 #define  MPI_Win_set_name  AMPI_Win_set_name
916 #define PMPI_Win_set_name APMPI_Win_set_name
917 #define  MPI_Win_get_name  AMPI_Win_get_name
918 #define PMPI_Win_get_name APMPI_Win_get_name
919 #define  MPI_Win_set_info  AMPI_Win_set_info
920 #define PMPI_Win_set_info APMPI_Win_set_info
921 #define  MPI_Win_get_info  AMPI_Win_get_info
922 #define PMPI_Win_get_info APMPI_Win_get_info
923 #define  MPI_Win_fence  AMPI_Win_fence
924 #define PMPI_Win_fence APMPI_Win_fence
925 #define  MPI_Win_lock  AMPI_Win_lock
926 #define PMPI_Win_lock APMPI_Win_lock
927 #define  MPI_Win_unlock  AMPI_Win_unlock
928 #define PMPI_Win_unlock APMPI_Win_unlock
929 #define  MPI_Win_post  AMPI_Win_post
930 #define PMPI_Win_post APMPI_Win_post
931 #define  MPI_Win_wait  AMPI_Win_wait
932 #define PMPI_Win_wait APMPI_Win_wait
933 #define  MPI_Win_start  AMPI_Win_start
934 #define PMPI_Win_start APMPI_Win_start
935 #define  MPI_Win_complete  AMPI_Win_complete
936 #define PMPI_Win_complete APMPI_Win_complete
937 #define  MPI_Win_test  AMPI_Win_test
938 #define PMPI_Win_test APMPI_Win_test
939 #define  MPI_Alloc_mem  AMPI_Alloc_mem
940 #define PMPI_Alloc_mem APMPI_Alloc_mem
941 #define  MPI_Free_mem  AMPI_Free_mem
942 #define PMPI_Free_mem APMPI_Free_mem
943 #define  MPI_Put  AMPI_Put
944 #define PMPI_Put APMPI_Put
945 #define  MPI_Get  AMPI_Get
946 #define PMPI_Get APMPI_Get
947 #define  MPI_Accumulate  AMPI_Accumulate
948 #define PMPI_Accumulate APMPI_Accumulate
949 #define  MPI_Get_accumulate  AMPI_Get_accumulate
950 #define PMPI_Get_accumulate APMPI_Get_accumulate
951 #define  MPI_Rput  AMPI_Rput
952 #define PMPI_Rput APMPI_Rput
953 #define  MPI_Rget  AMPI_Rget
954 #define PMPI_Rget APMPI_Rget
955 #define  MPI_Raccumulate  AMPI_Raccumulate
956 #define PMPI_Raccumulate APMPI_Raccumulate
957 #define  MPI_Rget_accumulate  AMPI_Rget_accumulate
958 #define PMPI_Rget_accumulate APMPI_Rget_accumulate
959 #define  MPI_Fetch_and_op  AMPI_Fetch_and_op
960 #define PMPI_Fetch_and_op APMPI_Fetch_and_op
961 #define  MPI_Compare_and_swap  AMPI_Compare_and_swap
962 #define PMPI_Compare_and_swap APMPI_Compare_and_swap
963
964 /***infos***/
965 #define  MPI_Info_create  AMPI_Info_create
966 #define PMPI_Info_create APMPI_Info_create
967 #define  MPI_Info_set  AMPI_Info_set
968 #define PMPI_Info_set APMPI_Info_set
969 #define  MPI_Info_delete  AMPI_Info_delete
970 #define PMPI_Info_delete APMPI_Info_delete
971 #define  MPI_Info_get  AMPI_Info_get
972 #define PMPI_Info_get APMPI_Info_get
973 #define  MPI_Info_get_valuelen  AMPI_Info_get_valuelen
974 #define PMPI_Info_get_valuelen APMPI_Info_get_valuelen
975 #define  MPI_Info_get_nkeys  AMPI_Info_get_nkeys
976 #define PMPI_Info_get_nkeys APMPI_Info_get_nkeys
977 #define  MPI_Info_get_nthkey  AMPI_Info_get_nthkey
978 #define PMPI_Info_get_nthkey APMPI_Info_get_nthkey
979 #define  MPI_Info_dup  AMPI_Info_dup
980 #define PMPI_Info_dup APMPI_Info_dup
981 #define  MPI_Info_free  AMPI_Info_free
982 #define PMPI_Info_free APMPI_Info_free
983
984 /***MPIX***/
985 #define  MPIX_Grequest_start  AMPIX_Grequest_start
986 #define PMPIX_Grequest_start APMPIX_Grequest_start
987 #define  MPIX_Grequest_class_create  AMPIX_Grequest_class_create
988 #define PMPIX_Grequest_class_create APMPIX_Grequest_class_create
989 #define  MPIX_Grequest_class_allocate  AMPIX_Grequest_class_allocate
990 #define PMPIX_Grequest_class_allocate APMPIX_Grequest_class_allocate
991
992 #define  MPI_Pack_external  AMPI_Pack_external
993 #define PMPI_Pack_external APMPI_Pack_external
994 #define  MPI_Pack_external_size  AMPI_Pack_external_size
995 #define PMPI_Pack_external_size APMPI_Pack_external_size
996 #define  MPI_Unpack_external  AMPI_Unpack_external
997 #define PMPI_Unpack_external APMPI_Unpack_external
998
999 #define  MPI_File_call_errhandler  AMPI_File_call_errhandler
1000 #define PMPI_File_call_errhandler APMPI_File_call_errhandler
1001 #define  MPI_File_create_errhandler  AMPI_File_create_errhandler
1002 #define PMPI_File_create_errhandler APMPI_File_create_errhandler
1003 #define  MPI_File_get_errhandler  AMPI_File_get_errhandler
1004 #define PMPI_File_get_errhandler APMPI_File_get_errhandler
1005 #define  MPI_File_set_errhandler  AMPI_File_set_errhandler
1006 #define PMPI_File_set_errhandler APMPI_File_set_errhandler
1007
1008 #define  MPI_Close_port  AMPI_Close_port
1009 #define PMPI_Close_port APMPI_Close_port
1010 #define  MPI_Comm_accept  AMPI_Comm_accept
1011 #define PMPI_Comm_accept APMPI_Comm_accept
1012 #define  MPI_Comm_connect  AMPI_Comm_connect
1013 #define PMPI_Comm_connect APMPI_Comm_connect
1014 #define  MPI_Comm_disconnect  AMPI_Comm_disconnect
1015 #define PMPI_Comm_disconnect APMPI_Comm_disconnect
1016 #define  MPI_Comm_get_parent  AMPI_Comm_get_parent
1017 #define PMPI_Comm_get_parent APMPI_Comm_get_parent
1018 #define  MPI_Comm_join  AMPI_Comm_join
1019 #define PMPI_Comm_join APMPI_Comm_join
1020 #define  MPI_Comm_spawn_multiple  AMPI_Comm_spawn_multiple
1021 #define PMPI_Comm_spawn_multiple APMPI_Comm_spawn_multiple
1022 #define  MPI_Lookup_name  AMPI_Lookup_name
1023 #define PMPI_Lookup_name APMPI_Lookup_name
1024 #define  MPI_Open_port  AMPI_Open_port
1025 #define PMPI_Open_port APMPI_Open_port
1026 #define  MPI_Publish_name  AMPI_Publish_name
1027 #define PMPI_Publish_name APMPI_Publish_name
1028 #define  MPI_Unpublish_name  AMPI_Unpublish_name
1029 #define PMPI_Unpublish_name APMPI_Unpublish_name
1030 #define  MPI_Comm_spawn  AMPI_Comm_spawn
1031 #define PMPI_Comm_spawn APMPI_Comm_spawn
1032
1033 #define  MPI_Win_allocate  AMPI_Win_allocate
1034 #define PMPI_Win_allocate APMPI_Win_allocate
1035 #define  MPI_Win_allocate_shared  AMPI_Win_allocate_shared
1036 #define PMPI_Win_allocate_shared APMPI_Win_allocate_shared
1037 #define  MPI_Win_attach  AMPI_Win_attach
1038 #define PMPI_Win_attach APMPI_Win_attach
1039 #define  MPI_Win_create_dynamic  AMPI_Win_create_dynamic
1040 #define PMPI_Win_create_dynamic APMPI_Win_create_dynamic
1041 #define  MPI_Win_detach  AMPI_Win_detach
1042 #define PMPI_Win_detach APMPI_Win_detach
1043 #define  MPI_Win_flush  AMPI_Win_flush
1044 #define PMPI_Win_flush APMPI_Win_flush
1045 #define  MPI_Win_flush_all  AMPI_Win_flush_all
1046 #define PMPI_Win_flush_all APMPI_Win_flush_all
1047 #define  MPI_Win_flush_local  AMPI_Win_flush_local
1048 #define PMPI_Win_flush_local APMPI_Win_flush_local
1049 #define  MPI_Win_flush_local_all  AMPI_Win_flush_local_all
1050 #define PMPI_Win_flush_local_all APMPI_Win_flush_local_all
1051 #define  MPI_Win_lock_all  AMPI_Win_lock_all
1052 #define PMPI_Win_lock_all APMPI_Win_lock_all
1053 #define  MPI_Win_shared_query  AMPI_Win_shared_query
1054 #define PMPI_Win_shared_query APMPI_Win_shared_query
1055 #define  MPI_Win_sync  AMPI_Win_sync
1056 #define PMPI_Win_sync APMPI_Win_sync
1057 #define  MPI_Win_unlock_all  AMPI_Win_unlock_all
1058 #define PMPI_Win_unlock_all APMPI_Win_unlock_all
1059
1060 #define  MPI_CONVERSION_FN_NULL  AMPI_CONVERSION_FN_NULL
1061 #define PMPI_CONVERSION_FN_NULL APMPI_CONVERSION_FN_NULL
1062 #define  MPI_File_iread_all  AMPI_File_iread_all
1063 #define PMPI_File_iread_all APMPI_File_iread_all
1064 #define  MPI_File_iread_at_all  AMPI_File_iread_at_all
1065 #define PMPI_File_iread_at_all APMPI_File_iread_at_all
1066 #define  MPI_File_iwrite_all  AMPI_File_iwrite_all
1067 #define PMPI_File_iwrite_all APMPI_File_iwrite_all
1068 #define  MPI_File_iwrite_at_all  AMPI_File_iwrite_at_all
1069 #define PMPI_File_iwrite_at_all APMPI_File_iwrite_at_all
1070
1071 #define  MPI_Status_f082f  AMPI_Status_f082f
1072 #define PMPI_Status_f082f APMPI_Status_f082f
1073 #define  MPI_Status_f2f08  AMPI_Status_f2f08
1074 #define PMPI_Status_f2f08 APMPI_Status_f2f08
1075 #define  MPI_Type_create_f90_complex  AMPI_Type_create_f90_complex
1076 #define PMPI_Type_create_f90_complex APMPI_Type_create_f90_complex
1077 #define  MPI_Type_create_f90_integer  AMPI_Type_create_f90_integer
1078 #define PMPI_Type_create_f90_integer APMPI_Type_create_f90_integer
1079 #define  MPI_Type_create_f90_real  AMPI_Type_create_f90_real
1080 #define PMPI_Type_create_f90_real APMPI_Type_create_f90_real
1081 #define  MPI_Type_match_size  AMPI_Type_match_size
1082 #define PMPI_Type_match_size APMPI_Type_match_size
1083 #define  MPI_Message_c2f  AMPI_Message_c2f
1084 #define PMPI_Message_c2f APMPI_Message_c2f
1085 #define  MPI_Message_f2c  AMPI_Message_f2c
1086 #define PMPI_Message_f2c APMPI_Message_f2c
1087 #define  MPI_Status_c2f  AMPI_Status_c2f
1088 #define PMPI_Status_c2f APMPI_Status_c2f
1089 #define  MPI_Status_c2f08  AMPI_Status_c2f08
1090 #define PMPI_Status_c2f08 APMPI_Status_c2f08
1091 #define  MPI_Status_f082c  AMPI_Status_f082c
1092 #define PMPI_Status_f082c APMPI_Status_f082c
1093 #define  MPI_Status_f2c  AMPI_Status_f2c
1094 #define PMPI_Status_f2c APMPI_Status_f2c
1095
1096 #define  MPI_T_category_changed  AMPI_T_category_changed
1097 #define PMPI_T_category_changed APMPI_T_category_changed
1098 #define  MPI_T_category_get_categories  AMPI_T_category_get_categories
1099 #define PMPI_T_category_get_categories APMPI_T_category_get_categories
1100 #define  MPI_T_category_get_cvars  AMPI_T_category_get_cvars
1101 #define PMPI_T_category_get_cvars APMPI_T_category_get_cvars
1102 #define  MPI_T_category_get_index  AMPI_T_category_get_index
1103 #define PMPI_T_category_get_index APMPI_T_category_get_index
1104 #define  MPI_T_category_get_info  AMPI_T_category_get_info
1105 #define PMPI_T_category_get_info APMPI_T_category_get_info
1106 #define  MPI_T_category_get_num  AMPI_T_category_get_num
1107 #define PMPI_T_category_get_num APMPI_T_category_get_num
1108 #define  MPI_T_category_get_pvars  AMPI_T_category_get_pvars
1109 #define PMPI_T_category_get_pvars APMPI_T_category_get_pvars
1110 #define  MPI_T_cvar_get_index  AMPI_T_cvar_get_index
1111 #define PMPI_T_cvar_get_index APMPI_T_cvar_get_index
1112 #define  MPI_T_cvar_get_info  AMPI_T_cvar_get_info
1113 #define PMPI_T_cvar_get_info APMPI_T_cvar_get_info
1114 #define  MPI_T_cvar_get_num  AMPI_T_cvar_get_num
1115 #define PMPI_T_cvar_get_num APMPI_T_cvar_get_num
1116 #define  MPI_T_cvar_handle_alloc  AMPI_T_cvar_handle_alloc
1117 #define PMPI_T_cvar_handle_alloc APMPI_T_cvar_handle_alloc
1118 #define  MPI_T_cvar_handle_free  AMPI_T_cvar_handle_free
1119 #define PMPI_T_cvar_handle_free APMPI_T_cvar_handle_free
1120 #define  MPI_T_cvar_read  AMPI_T_cvar_read
1121 #define PMPI_T_cvar_read APMPI_T_cvar_read
1122 #define  MPI_T_cvar_write  AMPI_T_cvar_write
1123 #define PMPI_T_cvar_write APMPI_T_cvar_write
1124 #define  MPI_T_enum_get_info  AMPI_T_enum_get_info
1125 #define PMPI_T_enum_get_info APMPI_T_enum_get_info
1126 #define  MPI_T_enum_get_item  AMPI_T_enum_get_item
1127 #define PMPI_T_enum_get_item APMPI_T_enum_get_item
1128 #define  MPI_T_finalize  AMPI_T_finalize
1129 #define PMPI_T_finalize APMPI_T_finalize
1130 #define  MPI_T_init_thread  AMPI_T_init_thread
1131 #define PMPI_T_init_thread APMPI_T_init_thread
1132 #define  MPI_T_pvar_get_index  AMPI_T_pvar_get_index
1133 #define PMPI_T_pvar_get_index APMPI_T_pvar_get_index
1134 #define  MPI_T_pvar_get_info  AMPI_T_pvar_get_info
1135 #define PMPI_T_pvar_get_info APMPI_T_pvar_get_info
1136 #define  MPI_T_pvar_get_num  AMPI_T_pvar_get_num
1137 #define PMPI_T_pvar_get_num APMPI_T_pvar_get_num
1138 #define  MPI_T_pvar_handle_alloc  AMPI_T_pvar_handle_alloc
1139 #define PMPI_T_pvar_handle_alloc APMPI_T_pvar_handle_alloc
1140 #define  MPI_T_pvar_handle_free  AMPI_T_pvar_handle_free
1141 #define PMPI_T_pvar_handle_free APMPI_T_pvar_handle_free
1142 #define  MPI_T_pvar_read  AMPI_T_pvar_read
1143 #define PMPI_T_pvar_read APMPI_T_pvar_read
1144 #define  MPI_T_pvar_readreset  AMPI_T_pvar_readreset
1145 #define PMPI_T_pvar_readreset APMPI_T_pvar_readreset
1146 #define  MPI_T_pvar_reset  AMPI_T_pvar_reset
1147 #define PMPI_T_pvar_reset APMPI_T_pvar_reset
1148 #define  MPI_T_pvar_session_create  AMPI_T_pvar_session_create
1149 #define PMPI_T_pvar_session_create APMPI_T_pvar_session_create
1150 #define  MPI_T_pvar_session_free  AMPI_T_pvar_session_free
1151 #define PMPI_T_pvar_session_free APMPI_T_pvar_session_free
1152 #define  MPI_T_pvar_start  AMPI_T_pvar_start
1153 #define PMPI_T_pvar_start APMPI_T_pvar_start
1154 #define  MPI_T_pvar_stop  AMPI_T_pvar_stop
1155 #define PMPI_T_pvar_stop APMPI_T_pvar_stop
1156 #define  MPI_T_pvar_write  AMPI_T_pvar_write
1157 #define PMPI_T_pvar_write APMPI_T_pvar_write
1158
1159 #endif //CMK_CONVERSE_MPI
1160
1161
1162 /***datatypes***/
1163 #define MPI_Aint_add(addr, disp) ((MPI_Aint)((char*)(addr) + (disp)))
1164 #define MPI_Aint_diff(addr1, addr2) ((MPI_Aint)((char*)(addr1) - (char*)(addr2)))
1165
1166
1167 /*********************One sided communication routines *****************/
1168 /*  MPI_Win : an index into a list in ampiParent (just like MPI_Group) */
1169 /* name length for COMM, TYPE and WIN */
1170 #define MPI_MAX_OBJECT_NAME  255
1171 #define MPI_MAX_INFO_KEY     255
1172 #define MPI_MAX_INFO_VAL    1024
1173 #define MPI_LOCK_SHARED       54
1174 #define MPI_LOCK_EXCLUSIVE    55
1175 #define MPI_WIN_NULL          -1
1176
1177 #define MPI_WIN_FLAVOR_CREATE   1
1178 #define MPI_WIN_FLAVOR_ALLOCATE 2
1179 #define MPI_WIN_FLAVOR_DYNAMIC  3
1180 #define MPI_WIN_FLAVOR_SHARED   4
1181
1182 #define MPI_WIN_UNIFIED  0
1183 #define MPI_WIN_SEPARATE 1
1184
1185 #define MPI_MODE_NOCHECK    1
1186 #define MPI_MODE_NOPRECEDE  2
1187 #define MPI_MODE_NOPUT      4
1188 #define MPI_MODE_NOSTORE    8
1189 #define MPI_MODE_NOSUCCEED 16
1190
1191 typedef int MPI_Win;
1192
1193 typedef void (MPI_Win_errhandler_fn)(MPI_Win *, int *, ...);
1194 typedef void (MPI_Win_errhandler_function)(MPI_Win *, int *, ...);
1195
1196 typedef int  (MPI_Win_copy_attr_function)(MPI_Win oldwin, int keyval,
1197                                           void *extra_state, void *attribute_val_in,
1198                                           void *attribute_val_out, int *flag);
1199 typedef int  (MPI_Win_delete_attr_function)(MPI_Win win, int keyval,
1200                                             void *attribute_val, void *extra_state);
1201
1202
1203 /***MPIX***/
1204 typedef int MPIX_Grequest_class;
1205 typedef int MPIX_Grequest_poll_function(void *extra_state, MPI_Status *status);
1206 typedef int MPIX_Grequest_wait_function(int count, void **array_of_states,
1207   double timeout, MPI_Status *status);
1208
1209
1210 /***Fortran-C bindings***/
1211 #define MPI_Comm_c2f(comm) (MPI_Fint)(comm)
1212 #define MPI_Comm_f2c(comm) (MPI_Comm)(comm)
1213 #define MPI_Type_c2f(datatype) (MPI_Fint)(datatype)
1214 #define MPI_Type_f2c(datatype) (MPI_Datatype)(datatype)
1215 #define MPI_Group_c2f(group) (MPI_Fint)(group)
1216 #define MPI_Group_f2c(group) (MPI_Group)(group)
1217 #define MPI_Info_c2f(info) (MPI_Fint)(info)
1218 #define MPI_Info_f2c(info) (MPI_Info)(info)
1219 #define MPI_Request_f2c(request) (MPI_Request)(request)
1220 #define MPI_Request_c2f(request) (MPI_Fint)(request)
1221 #define MPI_Op_c2f(op) (MPI_Fint)(op)
1222 #define MPI_Op_f2c(op) (MPI_Op)(op)
1223 #define MPI_Errhandler_c2f(errhandler) (MPI_Fint)(errhandler)
1224 #define MPI_Errhandler_f2c(errhandler) (MPI_Errhandler)(errhandler)
1225 #define MPI_Win_c2f(win) (MPI_Fint)(win)
1226 #define MPI_Win_f2c(win) (MPI_Win)(win)
1227
1228
1229 /* From ROMIO's mpio.h */
1230 /* If we needed to define MPI_Offset, then we also need to make
1231    this definition. */
1232 #ifndef HAVE_MPI_DATAREP_FUNCTIONS
1233 #define HAVE_MPI_DATAREP_FUNCTIONS
1234 typedef int (MPI_Datarep_conversion_function)(void *, MPI_Datatype, int, 
1235              void *, MPI_Offset, void *);
1236 typedef int (MPI_Datarep_extent_function)(MPI_Datatype datatype, MPI_Aint *,
1237                                           void *);
1238 #endif
1239
1240 #include "mpio.h"
1241
1242
1243 // Typedefs and constants unsupported in AMPI
1244
1245 // MPI-2 Constants
1246 #define MPI_ARGV_NULL (char **)0
1247 #define MPI_ARGVS_NULL (char ***)0
1248 #define MPI_MAX_PORT_NAME 256
1249 #define MPI_ORDER_C 56 /* same as in ROMIO */
1250 #define MPI_ORDER_FORTRAN 57 /* same as in ROMIO */
1251 #define MPI_TYPECLASS_INTEGER -1
1252 #define MPI_TYPECLASS_REAL -2
1253 #define MPI_TYPECLASS_COMPLEX -3
1254 #define MPI_DISTRIBUTE_BLOCK 121  /* same as in ROMIO */
1255 #define MPI_DISTRIBUTE_CYCLIC 122  /* same as in ROMIO */
1256 #define MPI_DISTRIBUTE_NONE 123 /* same as in ROMIO */
1257 #define MPI_DISTRIBUTE_DFLT_DARG -49767 /* same as in ROMIO */
1258 #define MPI_INTEGER1 MPI_CHAR
1259 #define MPI_INTEGER2 MPI_SHORT
1260 #define MPI_INTEGER4 MPI_INT
1261 #define MPI_INTEGER8 MPI_LONG_LONG_INT
1262 #define MPI_REAL4 MPI_FLOAT
1263 #define MPI_REAL8 MPI_DOUBLE
1264 #define MPI_REAL16 MPI_LONG_DOUBLE
1265 #define MPI_COMPLEX8 MPI_FLOAT_COMPLEX
1266 #define MPI_COMPLEX16 MPI_DOUBLE_COMPLEX
1267 #define MPI_COMPLEX32 MPI_LONG_DOUBLE_COMPLEX
1268 #define MPI_C_FLOAT_COMPLEX MPI_FLOAT_COMPLEX
1269 #define MPI_C_DOUBLE_COMPLEX MPI_DOUBLE_COMPLEX
1270 #define MPI_C_LONG_DOUBLE_COMPLEX MPI_LONG_DOUBLE_COMPLEX
1271 #define MPI_CXX_BOOL MPI_C_BOOL
1272 #define MPI_CXX_FLOAT_COMPLEX MPI_C_FLOAT_COMPLEX
1273 #define MPI_CXX_DOUBLE_COMPLEX MPI_C_DOUBLE_COMPLEX
1274 #define MPI_CXX_LONG_DOUBLE_COMPLEX MPI_C_LONG_DOUBLE_COMPLEX
1275
1276 // MPI-2 Routines
1277 #define MPI_Win_free_errhandler (void*)
1278
1279 // MPI-3 Constants
1280 #define MPI_ERR_RMA_RANGE 54
1281 #define MPI_ERR_RMA_ATTACH 55
1282 #define MPI_ERR_RMA_SHARED 56
1283 #define MPI_ERR_RMA_FLAVOR 57
1284
1285 // MPI_T interface
1286 typedef int MPI_T_enum;
1287 typedef int MPI_T_cvar_handle;
1288 typedef int MPI_T_pvar_handle;
1289 typedef int MPI_T_pvar_session;
1290 #define MPI_T_ENUM_NULL (-1)
1291 #define MPI_T_CVAR_HANDLE_NULL (-1)
1292 #define MPI_T_PVAR_HANDLE_NULL (-1)
1293 #define MPI_T_PVAR_SESSION_NULL (-1)
1294 #define MPI_T_VERBOSITY_USER_BASIC 1
1295 #define MPI_T_VERBOSITY_USER_DETAIL 2
1296 #define MPI_T_VERBOSITY_USER_ALL 3
1297 #define MPI_T_VERBOSITY_TUNER_BASIC 4
1298 #define MPI_T_VERBOSITY_TUNER_DETAIL 5
1299 #define MPI_T_VERBOSITY_TUNER_ALL 6
1300 #define MPI_T_VERBOSITY_MPIDEV_BASIC 7
1301 #define MPI_T_VERBOSITY_MPIDEV_DETAIL 8
1302 #define MPI_T_VERBOSITY_MPIDEV_ALL 9
1303 #define MPI_T_BIND_NO_OBJECT 1
1304 #define MPI_T_BIND_MPI_COMM 2
1305 #define MPI_T_BIND_MPI_DATATYPE 3
1306 #define MPI_T_BIND_MPI_ERRHANDLER 4
1307 #define MPI_T_BIND_MPI_FILE 5
1308 #define MPI_T_BIND_MPI_GROUP 6
1309 #define MPI_T_BIND_MPI_OP 7
1310 #define MPI_T_BIND_MPI_REQUEST 8
1311 #define MPI_T_BIND_MPI_WIN 9
1312 #define MPI_T_BIND_MPI_MESSAGE 10
1313 #define MPI_T_BIND_MPI_INFO 11
1314 #define MPI_T_SCOPE_CONSTANT 1
1315 #define MPI_T_SCOPE_READONLY 2
1316 #define MPI_T_SCOPE_LOCAL 3
1317 #define MPI_T_SCOPE_GROUP 4
1318 #define MPI_T_SCOPE_GROUP_EQ 5
1319 #define MPI_T_SCOPE_ALL 6
1320 #define MPI_T_SCOPE_ALL_EQ 7
1321 #define MPI_T_PVAR_ALL_HANDLES (-1)
1322 #define MPI_T_PVAR_CLASS_STATE 1
1323 #define MPI_T_PVAR_CLASS_LEVEL 2
1324 #define MPI_T_PVAR_CLASS_SIZE 3
1325 #define MPI_T_PVAR_CLASS_PERCENTAGE 4
1326 #define MPI_T_PVAR_CLASS_HIGHWATERMARK 5
1327 #define MPI_T_PVAR_CLASS_LOWWATERMARK 6
1328 #define MPI_T_PVAR_CLASS_COUNTER 7
1329 #define MPI_T_PVAR_CLASS_AGGREGATE 8
1330 #define MPI_T_PVAR_CLASS_TIMER 9
1331 #define MPI_T_PVAR_CLASS_GENERIC 10
1332 #define MPI_T_ERR_MEMORY 58
1333 #define MPI_T_ERR_NOT_INITIALIZED 59
1334 #define MPI_T_ERR_CANNOT_INIT 60
1335 #define MPI_T_ERR_INVALID_INDEX 61
1336 #define MPI_T_ERR_INVALID_ITEM 62
1337 #define MPI_T_ERR_INVALID_NAME 63
1338 #define MPI_T_ERR_INVALID_HANDLE 64
1339 #define MPI_T_ERR_OUT_OF_HANDLES 65
1340 #define MPI_T_ERR_OUT_OF_SESSIONS 66
1341 #define MPI_T_ERR_INVALID_SESSION 67
1342 #define MPI_T_ERR_CVAR_SET_NOT_NOW 68
1343 #define MPI_T_ERR_CVAR_SET_NEVER 69
1344 #define MPI_T_ERR_CVAR_READ 70
1345 #define MPI_T_ERR_CVAR_WRITE 71
1346 #define MPI_T_ERR_PVAR_START 72
1347 #define MPI_T_ERR_PVAR_STOP 73
1348 #define MPI_T_ERR_PVAR_READ 74
1349 #define MPI_T_ERR_PVAR_WRITE 75
1350 #define MPI_T_ERR_PVAR_RESET 76
1351 #define MPI_T_ERR_PVAR_READRESET 77
1352 #define MPI_T_ERR_PVAR_NO_STARTSTOP 78
1353 #define MPI_T_ERR_PVAR_NO_WRITE 79
1354 #define MPI_T_ERR_PVAR_NO_ATOMIC 80
1355
1356 // MPIX FT interface (MPICH extensions needed to compile tests/ampi/mpich-test/)
1357 #define MPIX_ERR_PROC_FAILED 77
1358 #define MPIX_ERR_PROC_FAILED_PENDING 78
1359 #define MPIX_ERR_REVOKED 79
1360 #define MPIX_Comm_agree (void*)
1361 #define MPIX_Comm_failure_ack (void*)
1362 #define MPIX_Comm_shrink (void*)
1363 #define MPIX_Comm_failure_get_acked (void*)
1364 #define MPIX_Comm_revoke (void*)
1365
1366 typedef void (MPI_File_errhandler_function)(MPI_File *file, int *err, ...);
1367
1368 typedef struct {
1369   MPI_Fint count_lo, count_hi_and_cancelled, MPI_SOURCE, MPI_TAG, MPI_ERROR;
1370 } MPI_F08_status;
1371
1372
1373 /* Declare functions */
1374
1375 #if defined __cplusplus && __cplusplus >= 201402L
1376 # define AMPI_UNIMPLEMENTED [[deprecated("currently unimplemented in AMPI")]]
1377 #elif defined __GNUC__ || defined __clang__
1378 # define AMPI_UNIMPLEMENTED __attribute__((deprecated("currently unimplemented in AMPI")))
1379 #elif defined _MSC_VER
1380 # define AMPI_UNIMPLEMENTED __declspec(deprecated("currently unimplemented in AMPI"))
1381 #else
1382 # define AMPI_UNIMPLEMENTED
1383 #endif
1384
1385 #undef AMPI_INTERNAL_SKIP_FUNCTIONS
1386
1387 #define AMPI_FUNC AMPI_API_DEF
1388 #define AMPI_FUNC_NOIMPL AMPI_UNIMPLEMENTED AMPI_FUNC
1389 #define AMPI_CUSTOM_FUNC AMPI_CUSTOM_API_DEF
1390
1391 #include "ampi_functions.h"
1392
1393 #undef AMPI_FUNC
1394 #undef AMPI_FUNC_NOIMPL
1395 #undef AMPI_CUSTOM_FUNC
1396
1397
1398 #ifdef __cplusplus
1399 }
1400 #endif
1401
1402
1403 #undef AMPI_API_DEF
1404 #undef AMPI_CUSTOM_API_DEF
1405
1406 #endif