source: proiecte/hpl/openmpi_compiled/include/mpi.h @ 97

Last change on this file since 97 was 97, checked in by (none), 14 years ago

Adding compiled files

File size: 108.0 KB
Line 
1/* ompi/include/mpi.h.  Generated from mpi.h.in by configure.  */
2/*
3 * Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana
4 *                         University Research and Technology
5 *                         Corporation.  All rights reserved.
6 * Copyright (c) 2004-2006 The University of Tennessee and The University
7 *                         of Tennessee Research Foundation.  All rights
8 *                         reserved.
9 * Copyright (c) 2004-2007 High Performance Computing Center Stuttgart,
10 *                         University of Stuttgart.  All rights reserved.
11 * Copyright (c) 2004-2005 The Regents of the University of California.
12 *                         All rights reserved.
13 * Copyright (c) 2007-2009 Cisco Systems, Inc.  All rights reserved.
14 * Copyright (c) 2008-2009 Sun Microsystems, Inc.  All rights reserved.
15 * $COPYRIGHT$
16 *
17 * Additional copyrights may follow
18 *
19 * $HEADER$
20 */
21
22#ifndef OMPI_MPI_H
23#define OMPI_MPI_H
24
25/* The comment below (and the ending partner) are for building fat
26   distributions on platforms that support it.  Please do not remove */
27
28/* @OMPI_BEGIN_CONFIGURE_SECTION@ */
29
30#ifndef OMPI_CONFIG_H
31
32/* Only include these if OMPI_CONFIG_H isn't defined (meaning if
33   ompi_config.h hasn't already been included).  Otherwise, we'll
34   duplicate all those symbols.  OMPI coding standards say that
35   ompi_config.h must be included before all other files, so this
36   should be good enough */
37
38/* Define to 1 if you have the ANSI C header files. */
39#define OMPI_STDC_HEADERS 1
40
41/* Define to 1 if you have the <sys/time.h> header file. */
42#define OMPI_HAVE_SYS_TIME_H 1
43
44/* Define to 1 if you have the <sys/synch.h> header file. */
45/* #undef OMPI_HAVE_SYS_SYNCH_H */
46
47/* Define to 1 if the system has the type `long long'. */
48#define OMPI_HAVE_LONG_LONG 1
49
50/* The size of a `bool', as computed by sizeof. */
51#define OMPI_SIZEOF_BOOL 1
52
53/* The size of a `int', as computed by sizeof. */
54#define OMPI_SIZEOF_INT 4
55
56/* Whether we have FORTRAN LOGICAL*1 or not */
57#define OMPI_HAVE_FORTRAN_LOGICAL1 0
58
59/* Whether we have FORTRAN LOGICAL*2 or not */
60#define OMPI_HAVE_FORTRAN_LOGICAL2 0
61
62/* Whether we have FORTRAN LOGICAL*4 or not */
63#define OMPI_HAVE_FORTRAN_LOGICAL4 0
64
65/* Whether we have FORTRAN LOGICAL*8 or not */
66#define OMPI_HAVE_FORTRAN_LOGICAL8 0
67
68/* Whether we have FORTRAN INTEGER*1 or not */
69#define OMPI_HAVE_FORTRAN_INTEGER1 0
70
71/* Whether we have FORTRAN INTEGER*16 or not */
72#define OMPI_HAVE_FORTRAN_INTEGER16 0
73
74/* Whether we have FORTRAN INTEGER*2 or not */
75#define OMPI_HAVE_FORTRAN_INTEGER2 0
76
77/* Whether we have FORTRAN INTEGER*4 or not */
78#define OMPI_HAVE_FORTRAN_INTEGER4 0
79
80/* Whether we have FORTRAN INTEGER*8 or not */
81#define OMPI_HAVE_FORTRAN_INTEGER8 0
82
83/* Whether we have FORTRAN REAL*16 or not */
84#define OMPI_HAVE_FORTRAN_REAL16 0
85
86/* Whether we have FORTRAN REAL*2 or not */
87#define OMPI_HAVE_FORTRAN_REAL2 0
88
89/* Whether we have FORTRAN REAL*4 or not */
90#define OMPI_HAVE_FORTRAN_REAL4 0
91
92/* Whether we have FORTRAN REAL*8 or not */
93#define OMPI_HAVE_FORTRAN_REAL8 0
94
95/* Type of MPI_Offset -- has to be defined here and typedef'ed later because mpi.h does not get AC SUBST's */
96#define OMPI_MPI_OFFSET_TYPE long long
97
98/* type to use for ptrdiff_t, if it does not exist, set to ptrdiff_t if it does exist */
99#define OMPI_PTRDIFF_TYPE ptrdiff_t
100
101/* Whether we want MPI cxx support or not */
102#define OMPI_WANT_CXX_BINDINGS 1
103
104/* do we want to try to work around C++ bindings SEEK_* issue? */
105#define OMPI_WANT_MPI_CXX_SEEK 1
106
107/* Whether a const_cast on a 2-d array will work with the C++ compiler */
108#define OMPI_CXX_SUPPORTS_2D_CONST_CAST 1
109
110/* Whether we want the MPI f77 bindings or not */
111#define OMPI_WANT_F77_BINDINGS 0
112
113/* Whether we want the MPI f90 bindings or not */
114#define OMPI_WANT_F90_BINDINGS 0
115
116/* Whether or not we have compiled with C++ exceptions support */
117#define OMPI_HAVE_CXX_EXCEPTION_SUPPORT 0
118
119/* MPI datatype corresponding to MPI_Offset */
120#define OMPI_OFFSET_DATATYPE MPI_LONG_LONG
121
122/* Major, minor, and release version of Open MPI */
123#define OMPI_MAJOR_VERSION 1
124#define OMPI_MINOR_VERSION 4
125#define OMPI_RELEASE_VERSION 0
126
127/* A  type that allows us to have sentinel type values that are still
128   valid */
129#define ompi_fortran_bogus_type_t int
130
131/* C type corresponding to FORTRAN INTEGER */
132#define ompi_fortran_integer_t ompi_fortran_bogus_type_t
133
134/* Whether C compiler supports -fvisibility */
135#define OMPI_C_HAVE_VISIBILITY 1
136
137/* Whether OMPI should provide MPI File interface */
138#define OMPI_PROVIDE_MPI_FILE_INTERFACE 1
139
140#ifndef OMPI_DECLSPEC
141#  if defined(WIN32) || defined(_WIN32)
142#    if defined(OMPI_IMPORTS)
143#      define OMPI_DECLSPEC        __declspec(dllimport)
144#    else
145#      define OMPI_DECLSPEC
146#    endif  /* defined(OMPI_IMPORTS) */
147#  else
148#    if OMPI_C_HAVE_VISIBILITY == 1
149#       define OMPI_DECLSPEC __attribute__((visibility("default")))
150#    else
151#       define OMPI_DECLSPEC
152#    endif     
153#  endif
154#endif
155
156#ifndef MPI_Fint
157/* MPI_Fint is the same as ompi_fortran_INTEGER_t */
158#define MPI_Fint ompi_fortran_integer_t
159#endif
160
161#endif /* #ifndef OMPI_CONFIG_H */
162
163/* @OMPI_END_CONFIGURE_SECTION@ */
164
165/* include for ptrdiff_t */
166#ifdef OMPI_STDC_HEADERS
167#include <stddef.h>
168#endif
169
170#ifndef OMPI_BUILDING
171#define OMPI_BUILDING 0
172#endif
173
174
175/*
176 * Just in case you need it.  :-)
177 */
178#define OPEN_MPI 1
179
180/*
181 * MPI version
182 */
183#define MPI_VERSION 2
184#define MPI_SUBVERSION 1
185
186/*
187 * To accomodate programs written for MPI implementations that use a
188 * straight ROMIO import
189 */
190#if !OMPI_BUILDING && OMPI_PROVIDE_MPI_FILE_INTERFACE
191#define MPIO_Request MPI_Request
192#define MPIO_Test MPI_Test
193#define MPIO_Wait MPI_Wait
194#endif
195
196/*
197 * When initializing global pointers to Open MPI internally-defined
198 * structs, some compilers warn about type-punning to incomplete
199 * types.  Therefore, when full struct definitions are unavailable
200 * (when not building Open MPI), cast to an opaque (void *) pointer to
201 * disable any strict-aliasing optimizations.  Don't cast to (void *)
202 * when building Open MPI so that we actually get the benefit of type
203 * checking (because we *do* have the full type definitions available
204 * when building OMPI).
205 */
206#if !OMPI_BUILDING
207#define OMPI_PREDEFINED_GLOBAL(type, global) ((type) ((void *) &(global)))
208#else
209#define OMPI_PREDEFINED_GLOBAL(type, global) ((type) &(global))
210#endif
211
212#if defined(c_plusplus) || defined(__cplusplus)
213extern "C" {
214#endif
215/*
216 * Typedefs
217 */
218
219typedef OMPI_PTRDIFF_TYPE MPI_Aint;
220typedef OMPI_MPI_OFFSET_TYPE MPI_Offset;
221typedef struct ompi_communicator_t *MPI_Comm;
222typedef struct ompi_datatype_t *MPI_Datatype;
223typedef struct ompi_errhandler_t *MPI_Errhandler;
224#if OMPI_PROVIDE_MPI_FILE_INTERFACE
225typedef struct ompi_file_t *MPI_File;
226#endif
227typedef struct ompi_group_t *MPI_Group;
228typedef struct ompi_info_t *MPI_Info;
229typedef struct ompi_op_t *MPI_Op;
230typedef struct ompi_request_t *MPI_Request;
231typedef struct ompi_status_public_t MPI_Status;
232typedef struct ompi_win_t *MPI_Win;
233
234/*
235 * MPI_Status
236 */
237struct ompi_status_public_t { 
238  int MPI_SOURCE;
239  int MPI_TAG;
240  int MPI_ERROR;
241  int _count;
242  int _cancelled;
243};
244typedef struct ompi_status_public_t ompi_status_public_t;
245
246/*
247 * User typedefs
248 */
249typedef int (MPI_Copy_function)(MPI_Comm, int, void *,
250                                void *, void *, int *);
251typedef int (MPI_Delete_function)(MPI_Comm, int, void *, void *);
252typedef int (MPI_Datarep_extent_function)(MPI_Datatype, MPI_Aint *, void *);
253typedef int (MPI_Datarep_conversion_function)(void *, MPI_Datatype, 
254                                              int, void *, MPI_Offset, void *);
255typedef void (MPI_Comm_errhandler_fn)(MPI_Comm *, int *, ...);
256#if OMPI_PROVIDE_MPI_FILE_INTERFACE
257    /* This is a little hackish, but errhandler.h needs space for a
258       MPI_File_errhandler_fn.  While it could just be removed, this
259       allows us to maintain a stable ABI within OMPI, at least for
260       apps that don't use MPI I/O. */
261typedef void (ompi_file_errhandler_fn)(MPI_File *, int *, ...);
262typedef ompi_file_errhandler_fn MPI_File_errhandler_fn;
263#else
264struct ompi_file_t;
265typedef void (ompi_file_errhandler_fn)(struct ompi_file_t**, int *, ...);
266#endif
267typedef void (MPI_Win_errhandler_fn)(MPI_Win *, int *, ...);
268typedef void (MPI_Handler_function)(MPI_Comm *, int *, ...);
269typedef void (MPI_User_function)(void *, void *, int *, MPI_Datatype *);
270typedef int (MPI_Comm_copy_attr_function)(MPI_Comm, int, void *,
271                                            void *, void *, int *);
272typedef int (MPI_Comm_delete_attr_function)(MPI_Comm, int, void *, void *);
273typedef int (MPI_Type_copy_attr_function)(MPI_Datatype, int, void *,
274                                            void *, void *, int *);
275typedef int (MPI_Type_delete_attr_function)(MPI_Datatype, int,
276                                              void *, void *);
277typedef int (MPI_Win_copy_attr_function)(MPI_Win, int, void *,
278                                           void *, void *, int *);
279typedef int (MPI_Win_delete_attr_function)(MPI_Win, int, void *, void *);
280typedef int (MPI_Grequest_query_function)(void *, MPI_Status *);
281typedef int (MPI_Grequest_free_function)(void *);
282typedef int (MPI_Grequest_cancel_function)(void *, int); 
283
284/*
285 * Miscellaneous constants
286 */
287#define MPI_ANY_SOURCE         -1      /* match any source rank */
288#define MPI_PROC_NULL          -2      /* rank of null process */
289#define MPI_ROOT               -4
290#define MPI_ANY_TAG            -1      /* match any message tag */
291#define MPI_MAX_PROCESSOR_NAME 256     /* max proc. name length */
292#define MPI_MAX_ERROR_STRING   256     /* max error message length */
293#define MPI_MAX_OBJECT_NAME    64      /* max object name length */
294#define MPI_UNDEFINED          -32766  /* undefined stuff */
295#define MPI_CART               1       /* cartesian topology */
296#define MPI_GRAPH              2       /* graph topology */
297#define MPI_KEYVAL_INVALID     -1      /* invalid key value */
298
299/*
300 * More constants
301 */
302#define MPI_BOTTOM               ((void *) 0)    /* base reference address */
303#define MPI_IN_PLACE             ((void *) 1)    /* in place buffer */
304#define MPI_BSEND_OVERHEAD       128     /* size of bsend header + ptr */
305#define MPI_MAX_INFO_KEY         36      /* max info key length */
306#define MPI_MAX_INFO_VAL         256     /* max info value length */
307#define MPI_ARGV_NULL            ((char **) 0)   /* NULL argument vector */
308#define MPI_ARGVS_NULL           ((char ***) 0)  /* NULL argument vectors */
309#define MPI_ERRCODES_IGNORE      ((int *) 0)    /* don't return error codes */
310#define MPI_MAX_PORT_NAME        1024    /* max port name length */
311#define MPI_MAX_NAME_LEN         MPI_MAX_PORT_NAME /* max port name length */
312#define MPI_ORDER_C              0       /* C row major order */
313#define MPI_ORDER_FORTRAN        1       /* Fortran column major order */
314#define MPI_DISTRIBUTE_BLOCK     0       /* block distribution */
315#define MPI_DISTRIBUTE_CYCLIC    1       /* cyclic distribution */
316#define MPI_DISTRIBUTE_NONE      2       /* not distributed */
317#define MPI_DISTRIBUTE_DFLT_DARG (-1)    /* default distribution arg */
318
319#if OMPI_PROVIDE_MPI_FILE_INTERFACE
320/*
321 * Since these values are arbitrary to Open MPI, we might as well make
322 * them the same as ROMIO for ease of mapping.  These values taken
323 * from ROMIO's mpio.h file.
324 */
325#define MPI_MODE_CREATE              1  /* ADIO_CREATE */ 
326#define MPI_MODE_RDONLY              2  /* ADIO_RDONLY */
327#define MPI_MODE_WRONLY              4  /* ADIO_WRONLY  */
328#define MPI_MODE_RDWR                8  /* ADIO_RDWR  */
329#define MPI_MODE_DELETE_ON_CLOSE    16  /* ADIO_DELETE_ON_CLOSE */
330#define MPI_MODE_UNIQUE_OPEN        32  /* ADIO_UNIQUE_OPEN */
331#define MPI_MODE_EXCL               64  /* ADIO_EXCL */
332#define MPI_MODE_APPEND            128  /* ADIO_APPEND */
333#define MPI_MODE_SEQUENTIAL        256  /* ADIO_SEQUENTIAL */
334
335#define MPI_DISPLACEMENT_CURRENT   -54278278
336
337#define MPI_SEEK_SET            600
338#define MPI_SEEK_CUR            602
339#define MPI_SEEK_END            604
340
341#define MPI_MAX_DATAREP_STRING  128
342#endif /* #if OMPI_PROVIDE_MPI_FILE_INTERFACE */
343
344/*
345 * MPI-2 One-Sided Communications asserts
346 */
347#define MPI_MODE_NOCHECK             1
348#define MPI_MODE_NOPRECEDE           2
349#define MPI_MODE_NOPUT               4
350#define MPI_MODE_NOSTORE             8
351#define MPI_MODE_NOSUCCEED          16
352
353#define MPI_LOCK_EXCLUSIVE           1
354#define MPI_LOCK_SHARED              2
355
356
357/*
358 * Predefined attribute keyvals
359 *
360 * DO NOT CHANGE THE ORDER WITHOUT ALSO CHANGING THE ORDER IN
361 * src/attribute/attribute_predefined.c and mpif.h.in.
362 */
363enum {
364    /* MPI-1 */
365    MPI_TAG_UB,
366    MPI_HOST,
367    MPI_IO,
368    MPI_WTIME_IS_GLOBAL,
369
370    /* MPI-2 */
371    MPI_APPNUM,
372    MPI_LASTUSEDCODE,
373    MPI_UNIVERSE_SIZE,
374    MPI_WIN_BASE,
375    MPI_WIN_SIZE,
376    MPI_WIN_DISP_UNIT,
377
378    /* Even though these four are IMPI attributes, they need to be there
379       for all MPI jobs */
380    IMPI_CLIENT_SIZE,
381    IMPI_CLIENT_COLOR,
382    IMPI_HOST_SIZE,
383    IMPI_HOST_COLOR
384};
385
386/*
387 * Error classes and codes
388 * Do not change the values of these without also modifying mpif.h.in.
389 */
390#define MPI_SUCCESS                   0 
391#define MPI_ERR_BUFFER                1
392#define MPI_ERR_COUNT                 2
393#define MPI_ERR_TYPE                  3
394#define MPI_ERR_TAG                   4
395#define MPI_ERR_COMM                  5
396#define MPI_ERR_RANK                  6
397#define MPI_ERR_REQUEST               7
398#define MPI_ERR_ROOT                  8
399#define MPI_ERR_GROUP                 9
400#define MPI_ERR_OP                    10
401#define MPI_ERR_TOPOLOGY              11
402#define MPI_ERR_DIMS                  12
403#define MPI_ERR_ARG                   13
404#define MPI_ERR_UNKNOWN               14
405#define MPI_ERR_TRUNCATE              15
406#define MPI_ERR_OTHER                 16
407#define MPI_ERR_INTERN                17
408#define MPI_ERR_IN_STATUS             18
409#define MPI_ERR_PENDING               19
410#define MPI_ERR_ACCESS                20
411#define MPI_ERR_AMODE                 21
412#define MPI_ERR_ASSERT                22
413#define MPI_ERR_BAD_FILE              23
414#define MPI_ERR_BASE                  24
415#define MPI_ERR_CONVERSION            25
416#define MPI_ERR_DISP                  26
417#define MPI_ERR_DUP_DATAREP           27
418#define MPI_ERR_FILE_EXISTS           28
419#define MPI_ERR_FILE_IN_USE           29
420#define MPI_ERR_FILE                  30
421#define MPI_ERR_INFO_KEY              31
422#define MPI_ERR_INFO_NOKEY            32
423#define MPI_ERR_INFO_VALUE            33
424#define MPI_ERR_INFO                  34
425#define MPI_ERR_IO                    35
426#define MPI_ERR_KEYVAL                36
427#define MPI_ERR_LOCKTYPE              37
428#define MPI_ERR_NAME                  38
429#define MPI_ERR_NO_MEM                39
430#define MPI_ERR_NOT_SAME              40
431#define MPI_ERR_NO_SPACE              41
432#define MPI_ERR_NO_SUCH_FILE          42
433#define MPI_ERR_PORT                  43
434#define MPI_ERR_QUOTA                 44
435#define MPI_ERR_READ_ONLY             45
436#define MPI_ERR_RMA_CONFLICT          46
437#define MPI_ERR_RMA_SYNC              47
438#define MPI_ERR_SERVICE               48
439#define MPI_ERR_SIZE                  49
440#define MPI_ERR_SPAWN                 50
441#define MPI_ERR_UNSUPPORTED_DATAREP   51
442#define MPI_ERR_UNSUPPORTED_OPERATION 52
443#define MPI_ERR_WIN                   53
444#define MPI_ERR_LASTCODE              54
445
446#define MPI_ERR_SYSRESOURCE          -2
447
448
449/*
450 * Comparison results.  Don't change the order of these, the group
451 * comparison functions rely on it.
452 * Do not change the order of these without also modifying mpif.h.in.
453 */
454enum {
455  MPI_IDENT,
456  MPI_CONGRUENT,
457  MPI_SIMILAR,
458  MPI_UNEQUAL
459};
460
461/*
462 * MPI_Init_thread constants
463 * Do not change the order of these without also modifying mpif.h.in.
464 */
465enum {
466  MPI_THREAD_SINGLE,
467  MPI_THREAD_FUNNELED,
468  MPI_THREAD_SERIALIZED,
469  MPI_THREAD_MULTIPLE
470};
471
472/*
473 * Datatype combiners.
474 * Do not change the order of these without also modifying mpif.h.in.
475 */
476enum {
477  MPI_COMBINER_NAMED,
478  MPI_COMBINER_DUP,
479  MPI_COMBINER_CONTIGUOUS,
480  MPI_COMBINER_VECTOR,
481  MPI_COMBINER_HVECTOR_INTEGER,
482  MPI_COMBINER_HVECTOR,
483  MPI_COMBINER_INDEXED,
484  MPI_COMBINER_HINDEXED_INTEGER,
485  MPI_COMBINER_HINDEXED,
486  MPI_COMBINER_INDEXED_BLOCK,
487  MPI_COMBINER_STRUCT_INTEGER,
488  MPI_COMBINER_STRUCT,
489  MPI_COMBINER_SUBARRAY,
490  MPI_COMBINER_DARRAY,
491  MPI_COMBINER_F90_REAL,
492  MPI_COMBINER_F90_COMPLEX,
493  MPI_COMBINER_F90_INTEGER,
494  MPI_COMBINER_RESIZED
495};
496
497/*
498 * NULL handles
499 */
500#define MPI_GROUP_NULL OMPI_PREDEFINED_GLOBAL(MPI_Group, ompi_mpi_group_null)
501#define MPI_COMM_NULL OMPI_PREDEFINED_GLOBAL(MPI_Comm, ompi_mpi_comm_null)
502#define MPI_REQUEST_NULL OMPI_PREDEFINED_GLOBAL(MPI_Request, ompi_request_null)
503#define MPI_OP_NULL OMPI_PREDEFINED_GLOBAL(MPI_Op, ompi_mpi_op_null)
504#define MPI_ERRHANDLER_NULL OMPI_PREDEFINED_GLOBAL(MPI_Errhandler, ompi_mpi_errhandler_null)
505#define MPI_INFO_NULL OMPI_PREDEFINED_GLOBAL(MPI_Info, ompi_mpi_info_null)
506#define MPI_WIN_NULL OMPI_PREDEFINED_GLOBAL(MPI_Win, ompi_mpi_win_null)
507#if OMPI_PROVIDE_MPI_FILE_INTERFACE
508#define MPI_FILE_NULL OMPI_PREDEFINED_GLOBAL(MPI_File, ompi_mpi_file_null)
509#endif
510
511#define MPI_STATUS_IGNORE ((MPI_Status *) 0)
512#define MPI_STATUSES_IGNORE ((MPI_Status *) 0)
513
514/* MPI-2 specifies that the name "MPI_TYPE_NULL_DELETE_FN" (and all
515   related friends) must be accessible in C, C++, and Fortran. This is
516   unworkable if the back-end Fortran compiler uses all caps for its
517   linker symbol convention -- it results in two functions with
518   different signatures that have the same name (i.e., both C and
519   Fortran use the symbol MPI_TYPE_NULL_DELETE_FN).  So we have to
520   #define the C names to be something else, so that they names are
521   *accessed* through MPI_TYPE_NULL_DELETE_FN, but their actual symbol
522   name is different.
523
524   However, this file is included when the fortran wrapper functions
525   are compiled in Open MPI, so we do *not* want these #defines in
526   this case (i.e., we need the Fortran wrapper function to be
527   compiled as MPI_TYPE_NULL_DELETE_FN).  So add some #if kinds of
528   protection for this case. */
529
530#if !defined(OMPI_COMPILING_F77_WRAPPERS)
531#define MPI_NULL_DELETE_FN OMPI_C_MPI_NULL_DELETE_FN
532#define MPI_NULL_COPY_FN OMPI_C_MPI_NULL_COPY_FN
533#define MPI_DUP_FN OMPI_C_MPI_DUP_FN
534
535#define MPI_TYPE_NULL_DELETE_FN OMPI_C_MPI_TYPE_NULL_DELETE_FN
536#define MPI_TYPE_NULL_COPY_FN OMPI_C_MPI_TYPE_NULL_COPY_FN
537#define MPI_TYPE_DUP_FN OMPI_C_MPI_TYPE_DUP_FN
538
539#define MPI_COMM_NULL_DELETE_FN OMPI_C_MPI_COMM_NULL_DELETE_FN
540#define MPI_COMM_NULL_COPY_FN OMPI_C_MPI_COMM_NULL_COPY_FN
541#define MPI_COMM_DUP_FN OMPI_C_MPI_COMM_DUP_FN
542
543#define MPI_WIN_NULL_DELETE_FN OMPI_C_MPI_WIN_NULL_DELETE_FN
544#define MPI_WIN_NULL_COPY_FN OMPI_C_MPI_WIN_NULL_COPY_FN
545#define MPI_WIN_DUP_FN OMPI_C_MPI_WIN_DUP_FN
546
547/* MPI_CONVERSION_FN_NULL is a sentinel value, but it has to be large
548   enough to be the same size as a valid function pointer.  It
549   therefore shares many characteristics between Fortran constants and
550   Fortran sentinel functions.  For example, it shares the problem of
551   having Fortran compilers have all-caps versions of the symbols that
552   must be able to be present, and therefore has to be in this
553   conditional block in mpi.h. */
554#define MPI_CONVERSION_FN_NULL ((MPI_Datarep_conversion_function*) 0)
555#endif
556
557OMPI_DECLSPEC int OMPI_C_MPI_TYPE_NULL_DELETE_FN( MPI_Datatype datatype, 
558                                                  int type_keyval,
559                                                  void* attribute_val_out, 
560                                                  void* extra_state );
561OMPI_DECLSPEC int OMPI_C_MPI_TYPE_NULL_COPY_FN( MPI_Datatype datatype, 
562                                                int type_keyval, 
563                                                void* extra_state,
564                                                void* attribute_val_in, 
565                                                void* attribute_val_out, 
566                                                int* flag );
567OMPI_DECLSPEC int OMPI_C_MPI_TYPE_DUP_FN( MPI_Datatype datatype, 
568                                          int type_keyval, 
569                                          void* extra_state, 
570                                          void* attribute_val_in, 
571                                          void* attribute_val_out, 
572                                          int* flag );
573OMPI_DECLSPEC int OMPI_C_MPI_COMM_NULL_DELETE_FN( MPI_Comm comm, 
574                                                  int comm_keyval,
575                                                  void* attribute_val_out, 
576                                                  void* extra_state );
577OMPI_DECLSPEC int OMPI_C_MPI_COMM_NULL_COPY_FN( MPI_Comm comm, 
578                                                int comm_keyval, 
579                                                void* extra_state, 
580                                                void* attribute_val_in,
581                                                void* attribute_val_out, 
582                                                int* flag );
583OMPI_DECLSPEC int OMPI_C_MPI_COMM_DUP_FN( MPI_Comm comm, int comm_keyval, 
584                                          void* extra_state,
585                                          void* attribute_val_in, 
586                                          void* attribute_val_out,
587                                          int* flag );
588OMPI_DECLSPEC int OMPI_C_MPI_NULL_DELETE_FN( MPI_Comm comm, int comm_keyval,
589                                             void* attribute_val_out, 
590                                             void* extra_state );
591OMPI_DECLSPEC int OMPI_C_MPI_NULL_COPY_FN( MPI_Comm comm, int comm_keyval, 
592                                           void* extra_state,
593                                           void* attribute_val_in, 
594                                           void* attribute_val_out,
595                                           int* flag );
596OMPI_DECLSPEC int OMPI_C_MPI_DUP_FN( MPI_Comm comm, int comm_keyval, 
597                                     void* extra_state,
598                                     void* attribute_val_in, 
599                                     void* attribute_val_out,
600                                     int* flag );
601OMPI_DECLSPEC int OMPI_C_MPI_WIN_NULL_DELETE_FN( MPI_Win window, 
602                                                 int win_keyval,
603                                                 void* attribute_val_out, 
604                                                 void* extra_state );
605OMPI_DECLSPEC int OMPI_C_MPI_WIN_NULL_COPY_FN( MPI_Win window, int win_keyval, 
606                                               void* extra_state, 
607                                               void* attribute_val_in,
608                                               void* attribute_val_out, 
609                                               int* flag );
610OMPI_DECLSPEC int OMPI_C_MPI_WIN_DUP_FN( MPI_Win window, int win_keyval, 
611                                         void* extra_state,
612                                         void* attribute_val_in, 
613                                         void* attribute_val_out,
614                                         int* flag );
615
616/*
617 * External variables
618 *
619 * The below externs use the ompi_predefined_xxx_t structures to maintain
620 * back compatibility between MPI library versions.
621 * See ompi/communicator/communicator.h comments with struct ompi_communicator_t
622 * for full explanation why we chose to use the ompi_predefined_xxx_t structure.
623 */
624OMPI_DECLSPEC extern struct ompi_predefined_communicator_t ompi_mpi_comm_world;
625OMPI_DECLSPEC extern struct ompi_predefined_communicator_t ompi_mpi_comm_self;
626OMPI_DECLSPEC extern struct ompi_predefined_communicator_t ompi_mpi_comm_null;
627
628OMPI_DECLSPEC extern struct ompi_predefined_group_t ompi_mpi_group_empty;
629OMPI_DECLSPEC extern struct ompi_predefined_group_t ompi_mpi_group_null;
630
631OMPI_DECLSPEC extern struct ompi_predefined_request_t ompi_request_null;
632
633OMPI_DECLSPEC extern struct ompi_predefined_op_t ompi_mpi_op_null;
634OMPI_DECLSPEC extern struct ompi_predefined_op_t ompi_mpi_op_max, ompi_mpi_op_min;
635OMPI_DECLSPEC extern struct ompi_predefined_op_t ompi_mpi_op_sum;
636OMPI_DECLSPEC extern struct ompi_predefined_op_t ompi_mpi_op_prod;
637OMPI_DECLSPEC extern struct ompi_predefined_op_t ompi_mpi_op_land;
638OMPI_DECLSPEC extern struct ompi_predefined_op_t ompi_mpi_op_band;
639OMPI_DECLSPEC extern struct ompi_predefined_op_t ompi_mpi_op_lor, ompi_mpi_op_bor;
640OMPI_DECLSPEC extern struct ompi_predefined_op_t ompi_mpi_op_lxor;
641OMPI_DECLSPEC extern struct ompi_predefined_op_t ompi_mpi_op_bxor;
642OMPI_DECLSPEC extern struct ompi_predefined_op_t ompi_mpi_op_maxloc;
643OMPI_DECLSPEC extern struct ompi_predefined_op_t ompi_mpi_op_minloc;
644OMPI_DECLSPEC extern struct ompi_predefined_op_t ompi_mpi_op_replace;
645
646OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_char, ompi_mpi_byte;
647OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_int, ompi_mpi_logic;
648OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_short, ompi_mpi_long;
649OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_float, ompi_mpi_double;
650OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_long_double;
651OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_cplex, ompi_mpi_packed;
652OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_signed_char;
653OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_unsigned_char;
654OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_unsigned_short;
655OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_unsigned, ompi_mpi_datatype_null;
656OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_unsigned_long, ompi_mpi_ldblcplex;
657OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_ub, ompi_mpi_lb;
658OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_float_int, ompi_mpi_double_int;
659OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_long_int, ompi_mpi_2int;
660OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_short_int, ompi_mpi_dblcplex;
661OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_integer, ompi_mpi_real;
662OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_dblprec, ompi_mpi_character;
663OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_2real, ompi_mpi_2dblprec;
664OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_2integer, ompi_mpi_longdbl_int;
665OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_wchar, ompi_mpi_long_long_int;
666OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_unsigned_long_long;
667OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_cxx_cplex, ompi_mpi_cxx_dblcplex;
668OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_cxx_ldblcplex;
669OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_cxx_bool;
670OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_2cplex, ompi_mpi_2dblcplex;
671/* other MPI2 datatypes */
672#if OMPI_HAVE_FORTRAN_LOGICAL1
673OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_logical1;
674#endif
675#if OMPI_HAVE_FORTRAN_LOGICAL2
676OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_logical2;
677#endif
678#if OMPI_HAVE_FORTRAN_LOGICAL4
679OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_logical4;
680#endif
681#if OMPI_HAVE_FORTRAN_LOGICAL8
682OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_logical8;
683#endif
684#if OMPI_HAVE_FORTRAN_INTEGER1
685OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_integer1;
686#endif
687#if OMPI_HAVE_FORTRAN_INTEGER2
688OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_integer2;
689#endif
690#if OMPI_HAVE_FORTRAN_INTEGER4
691OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_integer4;
692#endif
693#if OMPI_HAVE_FORTRAN_INTEGER8
694OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_integer8;
695#endif
696#if OMPI_HAVE_FORTRAN_INTEGER16
697OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_integer16;
698#endif
699#if OMPI_HAVE_FORTRAN_REAL2
700OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_real2;
701#endif
702#if OMPI_HAVE_FORTRAN_REAL4
703OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_real4; 
704#endif
705#if OMPI_HAVE_FORTRAN_REAL8
706OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_real8;
707#endif
708#if OMPI_HAVE_FORTRAN_REAL16
709OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_real16;
710#endif
711#if OMPI_HAVE_FORTRAN_REAL4
712OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_complex8;
713#endif
714#if OMPI_HAVE_FORTRAN_REAL8
715OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_complex16;
716#endif
717#if OMPI_HAVE_FORTRAN_REAL16
718OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_complex32;
719#endif
720
721OMPI_DECLSPEC extern struct ompi_predefined_errhandler_t ompi_mpi_errhandler_null;
722OMPI_DECLSPEC extern struct ompi_predefined_errhandler_t ompi_mpi_errors_are_fatal;
723OMPI_DECLSPEC extern struct ompi_predefined_errhandler_t ompi_mpi_errors_return;
724
725OMPI_DECLSPEC extern struct ompi_predefined_win_t ompi_mpi_win_null;
726OMPI_DECLSPEC extern struct ompi_predefined_file_t ompi_mpi_file_null;
727
728OMPI_DECLSPEC extern struct ompi_predefined_info_t ompi_mpi_info_null;
729
730OMPI_DECLSPEC extern MPI_Fint *MPI_F_STATUS_IGNORE;
731OMPI_DECLSPEC extern MPI_Fint *MPI_F_STATUSES_IGNORE;
732
733/*
734 * MPI predefined handles
735 */
736#define MPI_COMM_WORLD OMPI_PREDEFINED_GLOBAL( MPI_Comm, ompi_mpi_comm_world)
737#define MPI_COMM_SELF OMPI_PREDEFINED_GLOBAL(MPI_Comm, ompi_mpi_comm_self)
738
739#define MPI_GROUP_EMPTY OMPI_PREDEFINED_GLOBAL(MPI_Group, ompi_mpi_group_empty)
740
741#define MPI_MAX OMPI_PREDEFINED_GLOBAL(MPI_Op, ompi_mpi_op_max)
742#define MPI_MIN OMPI_PREDEFINED_GLOBAL(MPI_Op, ompi_mpi_op_min)
743#define MPI_SUM OMPI_PREDEFINED_GLOBAL(MPI_Op, ompi_mpi_op_sum)
744#define MPI_PROD OMPI_PREDEFINED_GLOBAL(MPI_Op, ompi_mpi_op_prod)
745#define MPI_LAND OMPI_PREDEFINED_GLOBAL(MPI_Op, ompi_mpi_op_land)
746#define MPI_BAND OMPI_PREDEFINED_GLOBAL(MPI_Op, ompi_mpi_op_band)
747#define MPI_LOR OMPI_PREDEFINED_GLOBAL(MPI_Op, ompi_mpi_op_lor)
748#define MPI_BOR OMPI_PREDEFINED_GLOBAL(MPI_Op, ompi_mpi_op_bor)
749#define MPI_LXOR OMPI_PREDEFINED_GLOBAL(MPI_Op, ompi_mpi_op_lxor)
750#define MPI_BXOR OMPI_PREDEFINED_GLOBAL(MPI_Op, ompi_mpi_op_bxor)
751#define MPI_MAXLOC OMPI_PREDEFINED_GLOBAL(MPI_Op, ompi_mpi_op_maxloc)
752#define MPI_MINLOC OMPI_PREDEFINED_GLOBAL(MPI_Op, ompi_mpi_op_minloc)
753#define MPI_REPLACE OMPI_PREDEFINED_GLOBAL(MPI_Op, ompi_mpi_op_replace)
754
755/* C datatypes */
756#define MPI_DATATYPE_NULL OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_datatype_null)
757#define MPI_BYTE OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_byte)
758#define MPI_PACKED OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_packed)
759#define MPI_CHAR OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_char)
760#define MPI_SHORT OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_short)
761#define MPI_INT OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_int)
762#define MPI_LONG OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_long)
763#define MPI_FLOAT OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_float)
764#define MPI_DOUBLE OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_double)
765#define MPI_LONG_DOUBLE OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_long_double)
766#define MPI_UNSIGNED_CHAR OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_unsigned_char)
767#define MPI_SIGNED_CHAR OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_signed_char)
768#define MPI_UNSIGNED_SHORT OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_unsigned_short)
769#define MPI_UNSIGNED_LONG OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_unsigned_long)
770#define MPI_UNSIGNED OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_unsigned)
771#define MPI_FLOAT_INT OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_float_int)
772#define MPI_DOUBLE_INT OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_double_int)
773#define MPI_LONG_DOUBLE_INT OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_longdbl_int)
774#define MPI_LONG_INT OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_long_int)
775#define MPI_SHORT_INT OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_short_int)
776#define MPI_2INT OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_2int)
777#define MPI_UB OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_ub)
778#define MPI_LB OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_lb)
779#define MPI_WCHAR OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_wchar)
780#if OMPI_HAVE_LONG_LONG
781#define MPI_LONG_LONG_INT OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_long_long_int)
782#define MPI_LONG_LONG OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_long_long_int)
783#define MPI_UNSIGNED_LONG_LONG OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_unsigned_long_long)
784#endif  /* OMPI_HAVE_LONG_LONG */
785#define MPI_2COMPLEX OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_2cplex)
786#define MPI_2DOUBLE_COMPLEX OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_2dblcplex)
787
788/* Fortran datatype bindings */
789#define MPI_CHARACTER OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_character)
790#define MPI_LOGICAL OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_logic)
791#if OMPI_HAVE_FORTRAN_LOGICAL1
792#define MPI_LOGICAL1 OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_logical1)
793#endif
794#if OMPI_HAVE_FORTRAN_LOGICAL2
795#define MPI_LOGICAL2 OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_logical2)
796#endif
797#if OMPI_HAVE_FORTRAN_LOGICAL4
798#define MPI_LOGICAL4 OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_logical4)
799#endif
800#if OMPI_HAVE_FORTRAN_LOGICAL8
801#define MPI_LOGICAL8 OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_logical8)
802#endif
803#define MPI_INTEGER OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_integer)
804#if OMPI_HAVE_FORTRAN_INTEGER1
805#define MPI_INTEGER1 OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_integer1)
806#endif
807#if OMPI_HAVE_FORTRAN_INTEGER2
808#define MPI_INTEGER2 OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_integer2)
809#endif
810#if OMPI_HAVE_FORTRAN_INTEGER4
811#define MPI_INTEGER4 OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_integer4)
812#endif
813#if OMPI_HAVE_FORTRAN_INTEGER8
814#define MPI_INTEGER8 OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_integer8)
815#endif
816#if OMPI_HAVE_FORTRAN_INTEGER16
817#define MPI_INTEGER16 OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_integer16)
818#endif
819#define MPI_REAL OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_real)
820#if OMPI_HAVE_FORTRAN_REAL4
821#define MPI_REAL4 OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_real4)
822#endif
823#if OMPI_HAVE_FORTRAN_REAL8
824#define MPI_REAL8 OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_real8)
825#endif
826#if OMPI_HAVE_FORTRAN_REAL16
827#define MPI_REAL16 OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_real16)
828#endif
829#define MPI_DOUBLE_PRECISION OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_dblprec)
830#define MPI_COMPLEX OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_cplex)
831#if OMPI_HAVE_FORTRAN_REAL4
832#define MPI_COMPLEX8 OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_complex8)
833#endif
834#if OMPI_HAVE_FORTRAN_REAL8
835#define MPI_COMPLEX16 OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_complex16)
836#endif
837#if OMPI_HAVE_FORTRAN_REAL16
838#define MPI_COMPLEX32 OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_complex32)
839#endif
840#define MPI_DOUBLE_COMPLEX OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_dblcplex)
841#define MPI_2REAL OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_2real)
842#define MPI_2DOUBLE_PRECISION OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_2dblprec)
843#define MPI_2INTEGER OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_2integer)
844
845#define MPI_ERRORS_ARE_FATAL OMPI_PREDEFINED_GLOBAL(MPI_Errhandler, ompi_mpi_errors_are_fatal)
846#define MPI_ERRORS_RETURN OMPI_PREDEFINED_GLOBAL(MPI_Errhandler, ompi_mpi_errors_return)
847
848/* Typeclass definition for MPI_Type_match_size */
849#define MPI_TYPECLASS_INTEGER    1
850#define MPI_TYPECLASS_REAL       2
851#define MPI_TYPECLASS_COMPLEX    3
852
853
854/*
855 * MPI API
856 */
857
858OMPI_DECLSPEC  int MPI_Abort(MPI_Comm comm, int errorcode);
859OMPI_DECLSPEC  int MPI_Accumulate(void *origin_addr, int origin_count, MPI_Datatype origin_datatype,
860                                  int target_rank, MPI_Aint target_disp, int target_count,
861                                  MPI_Datatype target_datatype, MPI_Op op, MPI_Win win); 
862OMPI_DECLSPEC  int MPI_Add_error_class(int *errorclass);
863OMPI_DECLSPEC  int MPI_Add_error_code(int errorclass, int *errorcode);
864OMPI_DECLSPEC  int MPI_Add_error_string(int errorcode, char *string);
865OMPI_DECLSPEC  int MPI_Address(void *location, MPI_Aint *address);
866OMPI_DECLSPEC  int MPI_Allgather(void *sendbuf, int sendcount, MPI_Datatype sendtype, 
867                                 void *recvbuf, int recvcount, 
868                                 MPI_Datatype recvtype, MPI_Comm comm);
869OMPI_DECLSPEC  int MPI_Allgatherv(void *sendbuf, int sendcount, MPI_Datatype sendtype, 
870                                  void *recvbuf, int *recvcounts, 
871                                  int *displs, MPI_Datatype recvtype, MPI_Comm comm);
872OMPI_DECLSPEC  int MPI_Alloc_mem(MPI_Aint size, MPI_Info info, 
873                                 void *baseptr);
874OMPI_DECLSPEC  int MPI_Allreduce(void *sendbuf, void *recvbuf, int count, 
875                                 MPI_Datatype datatype, MPI_Op op, MPI_Comm comm); 
876OMPI_DECLSPEC  int MPI_Alltoall(void *sendbuf, int sendcount, MPI_Datatype sendtype, 
877                                void *recvbuf, int recvcount, 
878                                MPI_Datatype recvtype, MPI_Comm comm);
879OMPI_DECLSPEC  int MPI_Alltoallv(void *sendbuf, int *sendcounts, int *sdispls, 
880                                 MPI_Datatype sendtype, void *recvbuf, int *recvcounts,
881                                 int *rdispls, MPI_Datatype recvtype, MPI_Comm comm);
882OMPI_DECLSPEC  int MPI_Alltoallw(void *sendbuf, int *sendcounts, int *sdispls, MPI_Datatype *sendtypes, 
883                                 void *recvbuf, int *recvcounts, int *rdispls, MPI_Datatype *recvtypes,
884                                 MPI_Comm comm);
885OMPI_DECLSPEC  int MPI_Attr_delete(MPI_Comm comm, int keyval);
886OMPI_DECLSPEC  int MPI_Attr_get(MPI_Comm comm, int keyval, void *attribute_val, int *flag);
887OMPI_DECLSPEC  int MPI_Attr_put(MPI_Comm comm, int keyval, void *attribute_val);
888OMPI_DECLSPEC  int MPI_Barrier(MPI_Comm comm);
889OMPI_DECLSPEC  int MPI_Bcast(void *buffer, int count, MPI_Datatype datatype, 
890                             int root, MPI_Comm comm);
891OMPI_DECLSPEC  int MPI_Bsend(void *buf, int count, MPI_Datatype datatype, 
892                             int dest, int tag, MPI_Comm comm);
893OMPI_DECLSPEC  int MPI_Bsend_init(void *buf, int count, MPI_Datatype datatype, 
894                                  int dest, int tag, MPI_Comm comm, MPI_Request *request); 
895OMPI_DECLSPEC  int MPI_Buffer_attach(void *buffer, int size);
896OMPI_DECLSPEC  int MPI_Buffer_detach(void *buffer, int *size);
897OMPI_DECLSPEC  int MPI_Cancel(MPI_Request *request);
898OMPI_DECLSPEC  int MPI_Cart_coords(MPI_Comm comm, int rank, int maxdims, int *coords);
899OMPI_DECLSPEC  int MPI_Cart_create(MPI_Comm old_comm, int ndims, int *dims, 
900                                   int *periods, int reorder, MPI_Comm *comm_cart);
901OMPI_DECLSPEC  int MPI_Cart_get(MPI_Comm comm, int maxdims, int *dims, 
902                                int *periods, int *coords);
903OMPI_DECLSPEC  int MPI_Cart_map(MPI_Comm comm, int ndims, int *dims, 
904                                int *periods, int *newrank);
905OMPI_DECLSPEC  int MPI_Cart_rank(MPI_Comm comm, int *coords, int *rank);
906OMPI_DECLSPEC  int MPI_Cart_shift(MPI_Comm comm, int direction, int disp, 
907                                  int *rank_source, int *rank_dest);
908OMPI_DECLSPEC  int MPI_Cart_sub(MPI_Comm comm, int *remain_dims, MPI_Comm *new_comm);
909OMPI_DECLSPEC  int MPI_Cartdim_get(MPI_Comm comm, int *ndims);
910OMPI_DECLSPEC  int MPI_Close_port(char *port_name);
911OMPI_DECLSPEC  int MPI_Comm_accept(char *port_name, MPI_Info info, int root, 
912                                   MPI_Comm comm, MPI_Comm *newcomm);
913OMPI_DECLSPEC  MPI_Fint MPI_Comm_c2f(MPI_Comm comm);
914OMPI_DECLSPEC  int MPI_Comm_call_errhandler(MPI_Comm comm, int errorcode);
915OMPI_DECLSPEC  int MPI_Comm_compare(MPI_Comm comm1, MPI_Comm comm2, int *result);
916OMPI_DECLSPEC  int MPI_Comm_connect(char *port_name, MPI_Info info, int root, 
917                                    MPI_Comm comm, MPI_Comm *newcomm);
918OMPI_DECLSPEC  int MPI_Comm_create_errhandler(MPI_Comm_errhandler_fn *function, 
919                                              MPI_Errhandler *errhandler);
920OMPI_DECLSPEC  int MPI_Comm_create_keyval(MPI_Comm_copy_attr_function *comm_copy_attr_fn, 
921                                          MPI_Comm_delete_attr_function *comm_delete_attr_fn, 
922                                          int *comm_keyval, void *extra_state);
923OMPI_DECLSPEC  int MPI_Comm_create(MPI_Comm comm, MPI_Group group, MPI_Comm *newcomm);
924OMPI_DECLSPEC  int MPI_Comm_delete_attr(MPI_Comm comm, int comm_keyval);
925OMPI_DECLSPEC  int MPI_Comm_disconnect(MPI_Comm *comm);
926OMPI_DECLSPEC  int MPI_Comm_dup(MPI_Comm comm, MPI_Comm *newcomm);
927OMPI_DECLSPEC  MPI_Comm MPI_Comm_f2c(MPI_Fint comm);
928OMPI_DECLSPEC  int MPI_Comm_free_keyval(int *comm_keyval);
929OMPI_DECLSPEC  int MPI_Comm_free(MPI_Comm *comm);
930OMPI_DECLSPEC  int MPI_Comm_get_attr(MPI_Comm comm, int comm_keyval, 
931                                     void *attribute_val, int *flag);
932OMPI_DECLSPEC  int MPI_Comm_get_errhandler(MPI_Comm comm, MPI_Errhandler *erhandler);
933OMPI_DECLSPEC  int MPI_Comm_get_name(MPI_Comm comm, char *comm_name, int *resultlen);
934OMPI_DECLSPEC  int MPI_Comm_get_parent(MPI_Comm *parent);
935OMPI_DECLSPEC  int MPI_Comm_group(MPI_Comm comm, MPI_Group *group);
936OMPI_DECLSPEC  int MPI_Comm_join(int fd, MPI_Comm *intercomm);
937OMPI_DECLSPEC  int MPI_Comm_rank(MPI_Comm comm, int *rank);
938OMPI_DECLSPEC  int MPI_Comm_remote_group(MPI_Comm comm, MPI_Group *group);
939OMPI_DECLSPEC  int MPI_Comm_remote_size(MPI_Comm comm, int *size);
940OMPI_DECLSPEC  int MPI_Comm_set_attr(MPI_Comm comm, int comm_keyval, void *attribute_val);
941OMPI_DECLSPEC  int MPI_Comm_set_errhandler(MPI_Comm comm, MPI_Errhandler errhandler);
942OMPI_DECLSPEC  int MPI_Comm_set_name(MPI_Comm comm, char *comm_name);
943OMPI_DECLSPEC  int MPI_Comm_size(MPI_Comm comm, int *size);
944OMPI_DECLSPEC  int MPI_Comm_spawn(char *command, char **argv, int maxprocs, MPI_Info info, 
945                                  int root, MPI_Comm comm, MPI_Comm *intercomm, 
946                                  int *array_of_errcodes);
947OMPI_DECLSPEC  int MPI_Comm_spawn_multiple(int count, char **array_of_commands, char ***array_of_argv, 
948                                           int *array_of_maxprocs, MPI_Info *array_of_info, 
949                                           int root, MPI_Comm comm, MPI_Comm *intercomm, 
950                                           int *array_of_errcodes);
951OMPI_DECLSPEC  int MPI_Comm_split(MPI_Comm comm, int color, int key, MPI_Comm *newcomm);
952OMPI_DECLSPEC  int MPI_Comm_test_inter(MPI_Comm comm, int *flag);
953OMPI_DECLSPEC  int MPI_Dims_create(int nnodes, int ndims, int *dims);
954OMPI_DECLSPEC  MPI_Fint MPI_Errhandler_c2f(MPI_Errhandler errhandler);
955OMPI_DECLSPEC  int MPI_Errhandler_create(MPI_Handler_function *function, 
956                                         MPI_Errhandler *errhandler);
957OMPI_DECLSPEC  MPI_Errhandler MPI_Errhandler_f2c(MPI_Fint errhandler);
958OMPI_DECLSPEC  int MPI_Errhandler_free(MPI_Errhandler *errhandler);
959OMPI_DECLSPEC  int MPI_Errhandler_get(MPI_Comm comm, MPI_Errhandler *errhandler);
960OMPI_DECLSPEC  int MPI_Errhandler_set(MPI_Comm comm, MPI_Errhandler errhandler);
961OMPI_DECLSPEC  int MPI_Error_class(int errorcode, int *errorclass);
962OMPI_DECLSPEC  int MPI_Error_string(int errorcode, char *string, int *resultlen);
963OMPI_DECLSPEC  int MPI_Exscan(void *sendbuf, void *recvbuf, int count, 
964                              MPI_Datatype datatype, MPI_Op op, MPI_Comm comm);
965#if OMPI_PROVIDE_MPI_FILE_INTERFACE
966OMPI_DECLSPEC  MPI_Fint MPI_File_c2f(MPI_File file);
967OMPI_DECLSPEC  MPI_File MPI_File_f2c(MPI_Fint file);
968OMPI_DECLSPEC  int MPI_File_call_errhandler(MPI_File fh, int errorcode);
969OMPI_DECLSPEC  int MPI_File_create_errhandler(MPI_File_errhandler_fn *function,
970                                              MPI_Errhandler *errhandler);
971OMPI_DECLSPEC  int MPI_File_set_errhandler( MPI_File file, MPI_Errhandler errhandler);
972OMPI_DECLSPEC  int MPI_File_get_errhandler( MPI_File file, MPI_Errhandler *errhandler);
973OMPI_DECLSPEC  int MPI_File_open(MPI_Comm comm, char *filename, int amode,
974                                 MPI_Info info, MPI_File *fh);
975OMPI_DECLSPEC  int MPI_File_close(MPI_File *fh);
976OMPI_DECLSPEC  int MPI_File_delete(char *filename, MPI_Info info);
977OMPI_DECLSPEC  int MPI_File_set_size(MPI_File fh, MPI_Offset size);
978OMPI_DECLSPEC  int MPI_File_preallocate(MPI_File fh, MPI_Offset size);
979OMPI_DECLSPEC  int MPI_File_get_size(MPI_File fh, MPI_Offset *size);
980OMPI_DECLSPEC  int MPI_File_get_group(MPI_File fh, MPI_Group *group);
981OMPI_DECLSPEC  int MPI_File_get_amode(MPI_File fh, int *amode);
982OMPI_DECLSPEC  int MPI_File_set_info(MPI_File fh, MPI_Info info);
983OMPI_DECLSPEC  int MPI_File_get_info(MPI_File fh, MPI_Info *info_used);
984OMPI_DECLSPEC  int MPI_File_set_view(MPI_File fh, MPI_Offset disp, MPI_Datatype etype,
985                                     MPI_Datatype filetype, char *datarep, MPI_Info info);
986OMPI_DECLSPEC  int MPI_File_get_view(MPI_File fh, MPI_Offset *disp,
987                                     MPI_Datatype *etype, 
988                                     MPI_Datatype *filetype, char *datarep);
989OMPI_DECLSPEC  int MPI_File_read_at(MPI_File fh, MPI_Offset offset, void *buf,
990                                    int count, MPI_Datatype datatype, MPI_Status *status);
991OMPI_DECLSPEC  int MPI_File_read_at_all(MPI_File fh, MPI_Offset offset, void *buf,
992                                        int count, MPI_Datatype datatype, MPI_Status *status);
993OMPI_DECLSPEC  int MPI_File_write_at(MPI_File fh, MPI_Offset offset, void *buf,
994                                     int count, MPI_Datatype datatype, MPI_Status *status);
995OMPI_DECLSPEC  int MPI_File_write_at_all(MPI_File fh, MPI_Offset offset, void *buf,
996                                         int count, MPI_Datatype datatype, MPI_Status *status);
997OMPI_DECLSPEC  int MPI_File_iread_at(MPI_File fh, MPI_Offset offset, void *buf,
998                                     int count, MPI_Datatype datatype, MPI_Request *request);
999OMPI_DECLSPEC  int MPI_File_iwrite_at(MPI_File fh, MPI_Offset offset, void *buf,
1000                                      int count, MPI_Datatype datatype, MPI_Request *request);
1001OMPI_DECLSPEC  int MPI_File_read(MPI_File fh, void *buf, int count,
1002                                 MPI_Datatype datatype, MPI_Status *status);
1003OMPI_DECLSPEC  int MPI_File_read_all(MPI_File fh, void *buf, int count,
1004                                     MPI_Datatype datatype, MPI_Status *status);
1005OMPI_DECLSPEC  int MPI_File_write(MPI_File fh, void *buf, int count,
1006                                  MPI_Datatype datatype, MPI_Status *status);
1007OMPI_DECLSPEC  int MPI_File_write_all(MPI_File fh, void *buf, int count,
1008                                      MPI_Datatype datatype, MPI_Status *status);
1009OMPI_DECLSPEC  int MPI_File_iread(MPI_File fh, void *buf, int count,
1010                                  MPI_Datatype datatype, MPI_Request *request);
1011OMPI_DECLSPEC  int MPI_File_iwrite(MPI_File fh, void *buf, int count,
1012                                   MPI_Datatype datatype, MPI_Request *request);
1013OMPI_DECLSPEC  int MPI_File_seek(MPI_File fh, MPI_Offset offset, int whence);
1014OMPI_DECLSPEC  int MPI_File_get_position(MPI_File fh, MPI_Offset *offset);
1015OMPI_DECLSPEC  int MPI_File_get_byte_offset(MPI_File fh, MPI_Offset offset,
1016                                            MPI_Offset *disp);
1017OMPI_DECLSPEC  int MPI_File_read_shared(MPI_File fh, void *buf, int count,
1018                                        MPI_Datatype datatype, MPI_Status *status);
1019OMPI_DECLSPEC  int MPI_File_write_shared(MPI_File fh, void *buf, int count,
1020                                         MPI_Datatype datatype, MPI_Status *status);
1021OMPI_DECLSPEC  int MPI_File_iread_shared(MPI_File fh, void *buf, int count,
1022                                         MPI_Datatype datatype, MPI_Request *request);
1023OMPI_DECLSPEC  int MPI_File_iwrite_shared(MPI_File fh, void *buf, int count,
1024                                          MPI_Datatype datatype, MPI_Request *request);
1025OMPI_DECLSPEC  int MPI_File_read_ordered(MPI_File fh, void *buf, int count,
1026                                         MPI_Datatype datatype, MPI_Status *status);
1027OMPI_DECLSPEC  int MPI_File_write_ordered(MPI_File fh, void *buf, int count,
1028                                          MPI_Datatype datatype, MPI_Status *status);
1029OMPI_DECLSPEC  int MPI_File_seek_shared(MPI_File fh, MPI_Offset offset, int whence);
1030OMPI_DECLSPEC  int MPI_File_get_position_shared(MPI_File fh, MPI_Offset *offset);
1031OMPI_DECLSPEC  int MPI_File_read_at_all_begin(MPI_File fh, MPI_Offset offset, void *buf,
1032                                              int count, MPI_Datatype datatype);
1033OMPI_DECLSPEC  int MPI_File_read_at_all_end(MPI_File fh, void *buf, MPI_Status *status);
1034OMPI_DECLSPEC  int MPI_File_write_at_all_begin(MPI_File fh, MPI_Offset offset, void *buf,
1035                                               int count, MPI_Datatype datatype);
1036OMPI_DECLSPEC  int MPI_File_write_at_all_end(MPI_File fh, void *buf, MPI_Status *status);
1037OMPI_DECLSPEC  int MPI_File_read_all_begin(MPI_File fh, void *buf, int count,
1038                                           MPI_Datatype datatype);
1039OMPI_DECLSPEC  int MPI_File_read_all_end(MPI_File fh, void *buf, MPI_Status *status);
1040OMPI_DECLSPEC  int MPI_File_write_all_begin(MPI_File fh, void *buf, int count,
1041                                            MPI_Datatype datatype);
1042OMPI_DECLSPEC  int MPI_File_write_all_end(MPI_File fh, void *buf, MPI_Status *status);
1043OMPI_DECLSPEC  int MPI_File_read_ordered_begin(MPI_File fh, void *buf, int count,
1044                                               MPI_Datatype datatype);
1045OMPI_DECLSPEC  int MPI_File_read_ordered_end(MPI_File fh, void *buf, MPI_Status *status);
1046OMPI_DECLSPEC  int MPI_File_write_ordered_begin(MPI_File fh, void *buf, int count,
1047                                                MPI_Datatype datatype);
1048OMPI_DECLSPEC  int MPI_File_write_ordered_end(MPI_File fh, void *buf, MPI_Status *status);
1049OMPI_DECLSPEC  int MPI_File_get_type_extent(MPI_File fh, MPI_Datatype datatype,
1050                                            MPI_Aint *extent);
1051OMPI_DECLSPEC  int MPI_File_set_atomicity(MPI_File fh, int flag);
1052OMPI_DECLSPEC  int MPI_File_get_atomicity(MPI_File fh, int *flag);
1053OMPI_DECLSPEC  int MPI_File_sync(MPI_File fh);
1054#endif /* #if OMPI_PROVIDE_MPI_FILE_INTERFACE */
1055OMPI_DECLSPEC  int MPI_Finalize(void);
1056OMPI_DECLSPEC  int MPI_Finalized(int *flag);
1057OMPI_DECLSPEC  int MPI_Free_mem(void *base);
1058OMPI_DECLSPEC  int MPI_Gather(void *sendbuf, int sendcount, MPI_Datatype sendtype, 
1059                              void *recvbuf, int recvcount, MPI_Datatype recvtype, 
1060                              int root, MPI_Comm comm);
1061OMPI_DECLSPEC  int MPI_Gatherv(void *sendbuf, int sendcount, MPI_Datatype sendtype, 
1062                               void *recvbuf, int *recvcounts, int *displs, 
1063                               MPI_Datatype recvtype, int root, MPI_Comm comm);
1064OMPI_DECLSPEC  int MPI_Get_address(void *location, MPI_Aint *address);
1065OMPI_DECLSPEC  int MPI_Get_count(MPI_Status *status, MPI_Datatype datatype, int *count);
1066OMPI_DECLSPEC  int MPI_Get_elements(MPI_Status *status, MPI_Datatype datatype, int *count);
1067OMPI_DECLSPEC  int MPI_Get(void *origin_addr, int origin_count, 
1068                           MPI_Datatype origin_datatype, int target_rank, 
1069                           MPI_Aint target_disp, int target_count, 
1070                           MPI_Datatype target_datatype, MPI_Win win);
1071OMPI_DECLSPEC  int MPI_Get_processor_name(char *name, int *resultlen);
1072OMPI_DECLSPEC  int MPI_Get_version(int *version, int *subversion);
1073OMPI_DECLSPEC  int MPI_Graph_create(MPI_Comm comm_old, int nnodes, int *index, 
1074                                    int *edges, int reorder, MPI_Comm *comm_graph);
1075OMPI_DECLSPEC  int MPI_Graph_get(MPI_Comm comm, int maxindex, int maxedges, 
1076                                 int *index, int *edges);
1077OMPI_DECLSPEC  int MPI_Graph_map(MPI_Comm comm, int nnodes, int *index, int *edges, 
1078                                 int *newrank);
1079OMPI_DECLSPEC  int MPI_Graph_neighbors_count(MPI_Comm comm, int rank, int *nneighbors);
1080OMPI_DECLSPEC  int MPI_Graph_neighbors(MPI_Comm comm, int rank, int maxneighbors, 
1081                                       int *neighbors);
1082OMPI_DECLSPEC  int MPI_Graphdims_get(MPI_Comm comm, int *nnodes, int *nedges);
1083OMPI_DECLSPEC  int MPI_Grequest_complete(MPI_Request request);
1084OMPI_DECLSPEC  int MPI_Grequest_start(MPI_Grequest_query_function *query_fn,
1085                                      MPI_Grequest_free_function *free_fn,
1086                                      MPI_Grequest_cancel_function *cancel_fn,
1087                                      void *extra_state, MPI_Request *request);
1088OMPI_DECLSPEC  MPI_Fint MPI_Group_c2f(MPI_Group group);
1089OMPI_DECLSPEC  int MPI_Group_compare(MPI_Group group1, MPI_Group group2, int *result);
1090OMPI_DECLSPEC  int MPI_Group_difference(MPI_Group group1, MPI_Group group2, 
1091                                        MPI_Group *newgroup);
1092OMPI_DECLSPEC  int MPI_Group_excl(MPI_Group group, int n, int *ranks, 
1093                                  MPI_Group *newgroup);
1094OMPI_DECLSPEC  MPI_Group MPI_Group_f2c(MPI_Fint group);
1095OMPI_DECLSPEC  int MPI_Group_free(MPI_Group *group);
1096OMPI_DECLSPEC  int MPI_Group_incl(MPI_Group group, int n, int *ranks, 
1097                                  MPI_Group *newgroup);
1098OMPI_DECLSPEC  int MPI_Group_intersection(MPI_Group group1, MPI_Group group2, 
1099                                          MPI_Group *newgroup);
1100OMPI_DECLSPEC  int MPI_Group_range_excl(MPI_Group group, int n, int ranges[][3], 
1101                                        MPI_Group *newgroup);
1102OMPI_DECLSPEC  int MPI_Group_range_incl(MPI_Group group, int n, int ranges[][3], 
1103                                        MPI_Group *newgroup);
1104OMPI_DECLSPEC  int MPI_Group_rank(MPI_Group group, int *rank);
1105OMPI_DECLSPEC  int MPI_Group_size(MPI_Group group, int *size);
1106OMPI_DECLSPEC  int MPI_Group_translate_ranks(MPI_Group group1, int n, int *ranks1, 
1107                                             MPI_Group group2, int *ranks2);
1108OMPI_DECLSPEC  int MPI_Group_union(MPI_Group group1, MPI_Group group2, 
1109                                   MPI_Group *newgroup);
1110OMPI_DECLSPEC  int MPI_Ibsend(void *buf, int count, MPI_Datatype datatype, int dest, 
1111                              int tag, MPI_Comm comm, MPI_Request *request);
1112OMPI_DECLSPEC  MPI_Fint MPI_Info_c2f(MPI_Info info);
1113OMPI_DECLSPEC  int MPI_Info_create(MPI_Info *info);
1114OMPI_DECLSPEC  int MPI_Info_delete(MPI_Info info, char *key);
1115OMPI_DECLSPEC  int MPI_Info_dup(MPI_Info info, MPI_Info *newinfo);
1116OMPI_DECLSPEC  MPI_Info MPI_Info_f2c(MPI_Fint info);
1117OMPI_DECLSPEC  int MPI_Info_free(MPI_Info *info);
1118OMPI_DECLSPEC  int MPI_Info_get(MPI_Info info, char *key, int valuelen, 
1119                                char *value, int *flag);
1120OMPI_DECLSPEC  int MPI_Info_get_nkeys(MPI_Info info, int *nkeys);
1121OMPI_DECLSPEC  int MPI_Info_get_nthkey(MPI_Info info, int n, char *key);
1122OMPI_DECLSPEC  int MPI_Info_get_valuelen(MPI_Info info, char *key, int *valuelen, 
1123                                         int *flag);
1124OMPI_DECLSPEC  int MPI_Info_set(MPI_Info info, char *key, char *value);
1125OMPI_DECLSPEC  int MPI_Init(int *argc, char ***argv);
1126OMPI_DECLSPEC  int MPI_Initialized(int *flag);
1127OMPI_DECLSPEC  int MPI_Init_thread(int *argc, char ***argv, int required, 
1128                                   int *provided);
1129OMPI_DECLSPEC  int MPI_Intercomm_create(MPI_Comm local_comm, int local_leader, 
1130                                        MPI_Comm bridge_comm, int remote_leader, 
1131                                        int tag, MPI_Comm *newintercomm);
1132OMPI_DECLSPEC  int MPI_Intercomm_merge(MPI_Comm intercomm, int high, 
1133                                       MPI_Comm *newintercomm);
1134OMPI_DECLSPEC  int MPI_Iprobe(int source, int tag, MPI_Comm comm, int *flag, 
1135                              MPI_Status *status);
1136OMPI_DECLSPEC  int MPI_Irecv(void *buf, int count, MPI_Datatype datatype, int source, 
1137                             int tag, MPI_Comm comm, MPI_Request *request);
1138OMPI_DECLSPEC  int MPI_Irsend(void *buf, int count, MPI_Datatype datatype, int dest, 
1139                              int tag, MPI_Comm comm, MPI_Request *request);
1140OMPI_DECLSPEC  int MPI_Isend(void *buf, int count, MPI_Datatype datatype, int dest, 
1141                             int tag, MPI_Comm comm, MPI_Request *request);
1142OMPI_DECLSPEC  int MPI_Issend(void *buf, int count, MPI_Datatype datatype, int dest, 
1143                              int tag, MPI_Comm comm, MPI_Request *request);
1144OMPI_DECLSPEC  int MPI_Is_thread_main(int *flag);
1145OMPI_DECLSPEC  int MPI_Keyval_create(MPI_Copy_function *copy_fn, 
1146                                     MPI_Delete_function *delete_fn, 
1147                                     int *keyval, void *extra_state);
1148OMPI_DECLSPEC  int MPI_Keyval_free(int *keyval);
1149OMPI_DECLSPEC  int MPI_Lookup_name(char *service_name, MPI_Info info, char *port_name);
1150OMPI_DECLSPEC  MPI_Fint MPI_Op_c2f(MPI_Op op); 
1151OMPI_DECLSPEC  int MPI_Op_create(MPI_User_function *function, int commute, MPI_Op *op);
1152OMPI_DECLSPEC  int MPI_Open_port(MPI_Info info, char *port_name);
1153OMPI_DECLSPEC  MPI_Op MPI_Op_f2c(MPI_Fint op);
1154OMPI_DECLSPEC  int MPI_Op_free(MPI_Op *op);
1155OMPI_DECLSPEC  int MPI_Pack_external(char *datarep, void *inbuf, int incount,
1156                                     MPI_Datatype datatype, void *outbuf,
1157                                     MPI_Aint outsize, MPI_Aint *position);
1158OMPI_DECLSPEC  int MPI_Pack_external_size(char *datarep, int incount, 
1159                                          MPI_Datatype datatype, MPI_Aint *size);
1160OMPI_DECLSPEC  int MPI_Pack(void *inbuf, int incount, MPI_Datatype datatype, 
1161                            void *outbuf, int outsize, int *position, MPI_Comm comm);
1162OMPI_DECLSPEC  int MPI_Pack_size(int incount, MPI_Datatype datatype, MPI_Comm comm, 
1163                                 int *size);
1164OMPI_DECLSPEC  int MPI_Pcontrol(const int level, ...);
1165OMPI_DECLSPEC  int MPI_Probe(int source, int tag, MPI_Comm comm, MPI_Status *status);
1166OMPI_DECLSPEC  int MPI_Publish_name(char *service_name, MPI_Info info, 
1167                                    char *port_name);
1168OMPI_DECLSPEC  int MPI_Put(void *origin_addr, int origin_count, MPI_Datatype origin_datatype, 
1169                           int target_rank, MPI_Aint target_disp, int target_count, 
1170                           MPI_Datatype target_datatype, MPI_Win win);
1171OMPI_DECLSPEC  int MPI_Query_thread(int *provided);
1172OMPI_DECLSPEC  int MPI_Recv_init(void *buf, int count, MPI_Datatype datatype, int source,
1173                                 int tag, MPI_Comm comm, MPI_Request *request);
1174OMPI_DECLSPEC  int MPI_Recv(void *buf, int count, MPI_Datatype datatype, int source, 
1175                            int tag, MPI_Comm comm, MPI_Status *status);
1176OMPI_DECLSPEC  int MPI_Reduce(void *sendbuf, void *recvbuf, int count, 
1177                              MPI_Datatype datatype, MPI_Op op, int root, MPI_Comm comm);
1178OMPI_DECLSPEC  int MPI_Reduce_scatter(void *sendbuf, void *recvbuf, int *recvcounts, 
1179                                      MPI_Datatype datatype, MPI_Op op, MPI_Comm comm);
1180OMPI_DECLSPEC  int MPI_Register_datarep(char *datarep, 
1181                                        MPI_Datarep_conversion_function *read_conversion_fn,
1182                                        MPI_Datarep_conversion_function *write_conversion_fn,
1183                                        MPI_Datarep_extent_function *dtype_file_extent_fn,
1184                                        void *extra_state);
1185OMPI_DECLSPEC  MPI_Fint MPI_Request_c2f(MPI_Request request);
1186OMPI_DECLSPEC  MPI_Request MPI_Request_f2c(MPI_Fint request);
1187OMPI_DECLSPEC  int MPI_Request_free(MPI_Request *request);
1188OMPI_DECLSPEC  int MPI_Request_get_status(MPI_Request request, int *flag, 
1189                                          MPI_Status *status);
1190OMPI_DECLSPEC  int MPI_Rsend(void *ibuf, int count, MPI_Datatype datatype, int dest, 
1191                             int tag, MPI_Comm comm);
1192OMPI_DECLSPEC  int MPI_Rsend_init(void *buf, int count, MPI_Datatype datatype, 
1193                                  int dest, int tag, MPI_Comm comm, 
1194                                  MPI_Request *request);
1195OMPI_DECLSPEC  int MPI_Scan(void *sendbuf, void *recvbuf, int count, 
1196                            MPI_Datatype datatype, MPI_Op op, MPI_Comm comm);
1197OMPI_DECLSPEC  int MPI_Scatter(void *sendbuf, int sendcount, MPI_Datatype sendtype, 
1198                               void *recvbuf, int recvcount, MPI_Datatype recvtype, 
1199                               int root, MPI_Comm comm);
1200OMPI_DECLSPEC  int MPI_Scatterv(void *sendbuf, int *sendcounts, int *displs, 
1201                                MPI_Datatype sendtype, void *recvbuf, int recvcount, 
1202                                MPI_Datatype recvtype, int root, MPI_Comm comm);
1203OMPI_DECLSPEC  int MPI_Send_init(void *buf, int count, MPI_Datatype datatype, 
1204                                 int dest, int tag, MPI_Comm comm, 
1205                                 MPI_Request *request);
1206OMPI_DECLSPEC  int MPI_Send(void *buf, int count, MPI_Datatype datatype, int dest, 
1207                            int tag, MPI_Comm comm);
1208OMPI_DECLSPEC  int MPI_Sendrecv(void *sendbuf, int sendcount, MPI_Datatype sendtype, 
1209                                int dest, int sendtag, void *recvbuf, int recvcount,
1210                                MPI_Datatype recvtype, int source, int recvtag, 
1211                                MPI_Comm comm,  MPI_Status *status);
1212OMPI_DECLSPEC  int MPI_Sendrecv_replace(void * buf, int count, MPI_Datatype datatype, 
1213                                        int dest, int sendtag, int source, int recvtag,
1214                                        MPI_Comm comm, MPI_Status *status);
1215OMPI_DECLSPEC  int MPI_Ssend_init(void *buf, int count, MPI_Datatype datatype, 
1216                                  int dest, int tag, MPI_Comm comm, 
1217                                  MPI_Request *request);
1218OMPI_DECLSPEC  int MPI_Ssend(void *buf, int count, MPI_Datatype datatype, int dest, 
1219                             int tag, MPI_Comm comm);
1220OMPI_DECLSPEC  int MPI_Start(MPI_Request *request);
1221OMPI_DECLSPEC  int MPI_Startall(int count, MPI_Request *array_of_requests);
1222OMPI_DECLSPEC  int MPI_Status_c2f(MPI_Status *c_status, MPI_Fint *f_status);
1223OMPI_DECLSPEC  int MPI_Status_f2c(MPI_Fint *f_status, MPI_Status *c_status);
1224OMPI_DECLSPEC  int MPI_Status_set_cancelled(MPI_Status *status, int flag);
1225OMPI_DECLSPEC  int MPI_Status_set_elements(MPI_Status *status, MPI_Datatype datatype,
1226                                           int count);
1227OMPI_DECLSPEC  int MPI_Testall(int count, MPI_Request array_of_requests[], int *flag, 
1228                               MPI_Status array_of_statuses[]);
1229OMPI_DECLSPEC  int MPI_Testany(int count, MPI_Request array_of_requests[], int *index, 
1230                               int *flag, MPI_Status *status);
1231OMPI_DECLSPEC  int MPI_Test(MPI_Request *request, int *flag, MPI_Status *status);
1232OMPI_DECLSPEC  int MPI_Test_cancelled(MPI_Status *status, int *flag);
1233OMPI_DECLSPEC  int MPI_Testsome(int incount, MPI_Request array_of_requests[], 
1234                                int *outcount, int array_of_indices[], 
1235                                MPI_Status array_of_statuses[]);
1236OMPI_DECLSPEC  int MPI_Topo_test(MPI_Comm comm, int *status);
1237OMPI_DECLSPEC  MPI_Fint MPI_Type_c2f(MPI_Datatype datatype);
1238OMPI_DECLSPEC  int MPI_Type_commit(MPI_Datatype *type);
1239OMPI_DECLSPEC  int MPI_Type_contiguous(int count, MPI_Datatype oldtype, 
1240                                       MPI_Datatype *newtype);
1241OMPI_DECLSPEC  int MPI_Type_create_darray(int size, int rank, int ndims, 
1242                                          int gsize_array[], int distrib_array[], 
1243                                          int darg_array[], int psize_array[],
1244                                          int order, MPI_Datatype oldtype, 
1245                                          MPI_Datatype *newtype);
1246OMPI_DECLSPEC  int MPI_Type_create_f90_complex(int p, int r, MPI_Datatype *newtype);
1247OMPI_DECLSPEC  int MPI_Type_create_f90_integer(int r, MPI_Datatype *newtype);
1248OMPI_DECLSPEC  int MPI_Type_create_f90_real(int p, int r, MPI_Datatype *newtype);
1249OMPI_DECLSPEC  int MPI_Type_create_hindexed(int count, int array_of_blocklengths[], 
1250                                            MPI_Aint array_of_displacements[], 
1251                                            MPI_Datatype oldtype, 
1252                                            MPI_Datatype *newtype);
1253OMPI_DECLSPEC  int MPI_Type_create_hvector(int count, int blocklength, MPI_Aint stride, 
1254                                           MPI_Datatype oldtype, 
1255                                           MPI_Datatype *newtype);
1256OMPI_DECLSPEC  int MPI_Type_create_keyval(MPI_Type_copy_attr_function *type_copy_attr_fn, 
1257                                          MPI_Type_delete_attr_function *type_delete_attr_fn, 
1258                                          int *type_keyval, void *extra_state);
1259OMPI_DECLSPEC  int MPI_Type_create_indexed_block(int count, int blocklength,
1260                                                 int array_of_displacements[],
1261                                                 MPI_Datatype oldtype,
1262                                                 MPI_Datatype *newtype);
1263OMPI_DECLSPEC  int MPI_Type_create_struct(int count, int array_of_block_lengths[], 
1264                                          MPI_Aint array_of_displacements[], 
1265                                          MPI_Datatype array_of_types[], 
1266                                          MPI_Datatype *newtype);
1267OMPI_DECLSPEC  int MPI_Type_create_subarray(int ndims, int size_array[], int subsize_array[], 
1268                                            int start_array[], int order, 
1269                                            MPI_Datatype oldtype, MPI_Datatype *newtype);
1270OMPI_DECLSPEC  int MPI_Type_create_resized(MPI_Datatype oldtype, MPI_Aint lb, 
1271                                           MPI_Aint extent, MPI_Datatype *newtype); 
1272OMPI_DECLSPEC  int MPI_Type_delete_attr(MPI_Datatype type, int type_keyval);
1273OMPI_DECLSPEC  int MPI_Type_dup(MPI_Datatype type, MPI_Datatype *newtype);
1274OMPI_DECLSPEC  int MPI_Type_extent(MPI_Datatype type, MPI_Aint *extent);
1275OMPI_DECLSPEC  int MPI_Type_free(MPI_Datatype *type);
1276OMPI_DECLSPEC  int MPI_Type_free_keyval(int *type_keyval);
1277OMPI_DECLSPEC  MPI_Datatype MPI_Type_f2c(MPI_Fint datatype);
1278OMPI_DECLSPEC  int MPI_Type_get_attr(MPI_Datatype type, int type_keyval, 
1279                                     void *attribute_val, int *flag);
1280OMPI_DECLSPEC  int MPI_Type_get_contents(MPI_Datatype mtype, int max_integers, 
1281                                         int max_addresses, int max_datatypes, 
1282                                         int array_of_integers[], 
1283                                         MPI_Aint array_of_addresses[], 
1284                                         MPI_Datatype array_of_datatypes[]);
1285OMPI_DECLSPEC  int MPI_Type_get_envelope(MPI_Datatype type, int *num_integers, 
1286                                         int *num_addresses, int *num_datatypes, 
1287                                         int *combiner);
1288OMPI_DECLSPEC  int MPI_Type_get_extent(MPI_Datatype type, MPI_Aint *lb, 
1289                                       MPI_Aint *extent);
1290OMPI_DECLSPEC  int MPI_Type_get_name(MPI_Datatype type, char *type_name, 
1291                                     int *resultlen);
1292OMPI_DECLSPEC  int MPI_Type_get_true_extent(MPI_Datatype datatype, MPI_Aint *true_lb, 
1293                                            MPI_Aint *true_extent);
1294OMPI_DECLSPEC  int MPI_Type_hindexed(int count, int array_of_blocklengths[], 
1295                                     MPI_Aint array_of_displacements[], 
1296                                     MPI_Datatype oldtype, MPI_Datatype *newtype);
1297OMPI_DECLSPEC  int MPI_Type_hvector(int count, int blocklength, MPI_Aint stride, 
1298                                    MPI_Datatype oldtype, MPI_Datatype *newtype);
1299OMPI_DECLSPEC  int MPI_Type_indexed(int count, int array_of_blocklengths[], 
1300                                    int array_of_displacements[], 
1301                                    MPI_Datatype oldtype, MPI_Datatype *newtype);
1302OMPI_DECLSPEC  int MPI_Type_lb(MPI_Datatype type, MPI_Aint *lb);
1303OMPI_DECLSPEC  int MPI_Type_match_size(int typeclass, int size, MPI_Datatype *type);
1304OMPI_DECLSPEC  int MPI_Type_set_attr(MPI_Datatype type, int type_keyval, 
1305                                     void *attr_val);
1306OMPI_DECLSPEC  int MPI_Type_set_name(MPI_Datatype type, char *type_name);
1307OMPI_DECLSPEC  int MPI_Type_size(MPI_Datatype type, int *size);
1308OMPI_DECLSPEC  int MPI_Type_struct(int count, int array_of_blocklengths[], 
1309                                   MPI_Aint array_of_displacements[], 
1310                                   MPI_Datatype array_of_types[], 
1311                                   MPI_Datatype *newtype);
1312OMPI_DECLSPEC  int MPI_Type_ub(MPI_Datatype mtype, MPI_Aint *ub);
1313OMPI_DECLSPEC  int MPI_Type_vector(int count, int blocklength, int stride, 
1314                                   MPI_Datatype oldtype, MPI_Datatype *newtype);
1315OMPI_DECLSPEC  int MPI_Unpack(void *inbuf, int insize, int *position, 
1316                              void *outbuf, int outcount, MPI_Datatype datatype, 
1317                              MPI_Comm comm);
1318OMPI_DECLSPEC  int MPI_Unpublish_name(char *service_name, MPI_Info info, char *port_name);
1319OMPI_DECLSPEC  int MPI_Unpack_external (char *datarep, void *inbuf, MPI_Aint insize,
1320                                        MPI_Aint *position, void *outbuf, int outcount,
1321                                        MPI_Datatype datatype);
1322OMPI_DECLSPEC  int MPI_Waitall(int count, MPI_Request *array_of_requests, 
1323                               MPI_Status *array_of_statuses);
1324OMPI_DECLSPEC  int MPI_Waitany(int count, MPI_Request *array_of_requests, 
1325                               int *index, MPI_Status *status);
1326OMPI_DECLSPEC  int MPI_Wait(MPI_Request *request, MPI_Status *status);
1327OMPI_DECLSPEC  int MPI_Waitsome(int incount, MPI_Request *array_of_requests, 
1328                                int *outcount, int *array_of_indices, 
1329                                MPI_Status *array_of_statuses);
1330OMPI_DECLSPEC  MPI_Fint MPI_Win_c2f(MPI_Win win);
1331OMPI_DECLSPEC  int MPI_Win_call_errhandler(MPI_Win win, int errorcode);
1332OMPI_DECLSPEC  int MPI_Win_complete(MPI_Win win);
1333OMPI_DECLSPEC  int MPI_Win_create(void *base, MPI_Aint size, int disp_unit, 
1334                                  MPI_Info info, MPI_Comm comm, MPI_Win *win);
1335OMPI_DECLSPEC  int MPI_Win_create_errhandler(MPI_Win_errhandler_fn *function, 
1336                                             MPI_Errhandler *errhandler);
1337OMPI_DECLSPEC  int MPI_Win_create_keyval(MPI_Win_copy_attr_function *win_copy_attr_fn, 
1338                                         MPI_Win_delete_attr_function *win_delete_attr_fn, 
1339                                         int *win_keyval, void *extra_state);
1340OMPI_DECLSPEC  int MPI_Win_delete_attr(MPI_Win win, int win_keyval);
1341OMPI_DECLSPEC  MPI_Win MPI_Win_f2c(MPI_Fint win);
1342OMPI_DECLSPEC  int MPI_Win_fence(int assert, MPI_Win win);
1343OMPI_DECLSPEC  int MPI_Win_free(MPI_Win *win);
1344OMPI_DECLSPEC  int MPI_Win_free_keyval(int *win_keyval);
1345OMPI_DECLSPEC  int MPI_Win_get_attr(MPI_Win win, int win_keyval, 
1346                                    void *attribute_val, int *flag);
1347OMPI_DECLSPEC  int MPI_Win_get_errhandler(MPI_Win win, MPI_Errhandler *errhandler);
1348OMPI_DECLSPEC  int MPI_Win_get_group(MPI_Win win, MPI_Group *group);
1349OMPI_DECLSPEC  int MPI_Win_get_name(MPI_Win win, char *win_name, int *resultlen);
1350OMPI_DECLSPEC  int MPI_Win_lock(int lock_type, int rank, int assert, MPI_Win win);
1351OMPI_DECLSPEC  int MPI_Win_post(MPI_Group group, int assert, MPI_Win win);
1352OMPI_DECLSPEC  int MPI_Win_set_attr(MPI_Win win, int win_keyval, void *attribute_val);
1353OMPI_DECLSPEC  int MPI_Win_set_errhandler(MPI_Win win, MPI_Errhandler errhandler);
1354OMPI_DECLSPEC  int MPI_Win_set_name(MPI_Win win, char *win_name);
1355OMPI_DECLSPEC  int MPI_Win_start(MPI_Group group, int assert, MPI_Win win);
1356OMPI_DECLSPEC  int MPI_Win_test(MPI_Win win, int *flag);
1357OMPI_DECLSPEC  int MPI_Win_unlock(int rank, MPI_Win win);
1358OMPI_DECLSPEC  int MPI_Win_wait(MPI_Win win);
1359OMPI_DECLSPEC  double MPI_Wtick(void);
1360OMPI_DECLSPEC  double MPI_Wtime(void);
1361
1362
1363  /*
1364   * Profiling MPI API
1365   */
1366OMPI_DECLSPEC  int PMPI_Abort(MPI_Comm comm, int errorcode);
1367OMPI_DECLSPEC  int PMPI_Accumulate(void *origin_addr, int origin_count, MPI_Datatype origin_datatype,
1368                                   int target_rank, MPI_Aint target_disp, int target_count,
1369                                   MPI_Datatype target_datatype, MPI_Op op, MPI_Win win); 
1370OMPI_DECLSPEC  int PMPI_Add_error_class(int *errorclass);
1371OMPI_DECLSPEC  int PMPI_Add_error_code(int errorclass, int *errorcode);
1372OMPI_DECLSPEC  int PMPI_Add_error_string(int errorcode, char *string);
1373OMPI_DECLSPEC  int PMPI_Address(void *location, MPI_Aint *address);
1374OMPI_DECLSPEC  int PMPI_Allgather(void *sendbuf, int sendcount, MPI_Datatype sendtype, 
1375                                  void *recvbuf, int recvcount, 
1376                                  MPI_Datatype recvtype, MPI_Comm comm);
1377OMPI_DECLSPEC  int PMPI_Allgatherv(void *sendbuf, int sendcount, MPI_Datatype sendtype, 
1378                                   void *recvbuf, int *recvcounts, 
1379                                   int *displs, MPI_Datatype recvtype, MPI_Comm comm);
1380OMPI_DECLSPEC  int PMPI_Alloc_mem(MPI_Aint size, MPI_Info info, 
1381                                  void *baseptr);
1382OMPI_DECLSPEC  int PMPI_Allreduce(void *sendbuf, void *recvbuf, int count, 
1383                                  MPI_Datatype datatype, MPI_Op op, MPI_Comm comm); 
1384OMPI_DECLSPEC  int PMPI_Alltoall(void *sendbuf, int sendcount, MPI_Datatype sendtype, 
1385                                 void *recvbuf, int recvcount, 
1386                                 MPI_Datatype recvtype, MPI_Comm comm);
1387OMPI_DECLSPEC  int PMPI_Alltoallv(void *sendbuf, int *sendcounts, int *sdispls, 
1388                                  MPI_Datatype sendtype, void *recvbuf, int *recvcounts,
1389                                  int *rdispls, MPI_Datatype recvtype, MPI_Comm comm);
1390OMPI_DECLSPEC  int PMPI_Alltoallw(void *sendbuf, int *sendcounts, int *sdispls, MPI_Datatype *sendtypes, 
1391                    void *recvbuf, int *recvcounts, int *rdispls, MPI_Datatype *recvtypes,
1392                    MPI_Comm comm);
1393OMPI_DECLSPEC  int PMPI_Attr_delete(MPI_Comm comm, int keyval);
1394OMPI_DECLSPEC  int PMPI_Attr_get(MPI_Comm comm, int keyval, void *attribute_val, int *flag);
1395OMPI_DECLSPEC  int PMPI_Attr_put(MPI_Comm comm, int keyval, void *attribute_val);
1396OMPI_DECLSPEC  int PMPI_Barrier(MPI_Comm comm);
1397OMPI_DECLSPEC  int PMPI_Bcast(void *buffer, int count, MPI_Datatype datatype, 
1398                              int root, MPI_Comm comm);
1399OMPI_DECLSPEC  int PMPI_Bsend(void *buf, int count, MPI_Datatype datatype, 
1400                              int dest, int tag, MPI_Comm comm);
1401OMPI_DECLSPEC  int PMPI_Bsend_init(void *buf, int count, MPI_Datatype datatype, 
1402                                   int dest, int tag, MPI_Comm comm, MPI_Request *request); 
1403OMPI_DECLSPEC  int PMPI_Buffer_attach(void *buffer, int size);
1404OMPI_DECLSPEC  int PMPI_Buffer_detach(void *buffer, int *size);
1405OMPI_DECLSPEC  int PMPI_Cancel(MPI_Request *request);
1406OMPI_DECLSPEC  int PMPI_Cart_coords(MPI_Comm comm, int rank, int maxdims, int *coords);
1407OMPI_DECLSPEC  int PMPI_Cart_create(MPI_Comm old_comm, int ndims, int *dims, 
1408                                    int *periods, int reorder, MPI_Comm *comm_cart);
1409OMPI_DECLSPEC  int PMPI_Cart_get(MPI_Comm comm, int maxdims, int *dims, 
1410                                 int *periods, int *coords);
1411OMPI_DECLSPEC  int PMPI_Cart_map(MPI_Comm comm, int ndims, int *dims, 
1412                                 int *periods, int *newrank);
1413OMPI_DECLSPEC  int PMPI_Cart_rank(MPI_Comm comm, int *coords, int *rank);
1414OMPI_DECLSPEC  int PMPI_Cart_shift(MPI_Comm comm, int direction, int disp, 
1415                                   int *rank_source, int *rank_dest);
1416OMPI_DECLSPEC  int PMPI_Cart_sub(MPI_Comm comm, int *remain_dims, MPI_Comm *new_comm);
1417OMPI_DECLSPEC  int PMPI_Cartdim_get(MPI_Comm comm, int *ndims);
1418OMPI_DECLSPEC  int PMPI_Close_port(char *port_name);
1419OMPI_DECLSPEC  int PMPI_Comm_accept(char *port_name, MPI_Info info, int root, 
1420                                    MPI_Comm comm, MPI_Comm *newcomm);
1421OMPI_DECLSPEC  MPI_Fint PMPI_Comm_c2f(MPI_Comm comm);
1422OMPI_DECLSPEC  int PMPI_Comm_call_errhandler(MPI_Comm comm, int errorcode);
1423OMPI_DECLSPEC  int PMPI_Comm_compare(MPI_Comm comm1, MPI_Comm comm2, int *result);
1424OMPI_DECLSPEC  int PMPI_Comm_connect(char *port_name, MPI_Info info, int root, 
1425                                     MPI_Comm comm, MPI_Comm *newcomm);
1426OMPI_DECLSPEC  int PMPI_Comm_create_errhandler(MPI_Comm_errhandler_fn *function, 
1427                                               MPI_Errhandler *errhandler);
1428OMPI_DECLSPEC  int PMPI_Comm_create_keyval(MPI_Comm_copy_attr_function *comm_copy_attr_fn, 
1429                                           MPI_Comm_delete_attr_function *comm_delete_attr_fn, 
1430                                           int *comm_keyval, void *extra_state);
1431OMPI_DECLSPEC  int PMPI_Comm_create(MPI_Comm comm, MPI_Group group, MPI_Comm *newcomm);
1432OMPI_DECLSPEC  int PMPI_Comm_delete_attr(MPI_Comm comm, int comm_keyval);
1433OMPI_DECLSPEC  int PMPI_Comm_disconnect(MPI_Comm *comm);
1434OMPI_DECLSPEC  int PMPI_Comm_dup(MPI_Comm comm, MPI_Comm *newcomm);
1435OMPI_DECLSPEC  MPI_Comm PMPI_Comm_f2c(MPI_Fint comm);
1436OMPI_DECLSPEC  int PMPI_Comm_free_keyval(int *comm_keyval);
1437OMPI_DECLSPEC  int PMPI_Comm_free(MPI_Comm *comm);
1438OMPI_DECLSPEC  int PMPI_Comm_get_attr(MPI_Comm comm, int comm_keyval, 
1439                                      void *attribute_val, int *flag);
1440OMPI_DECLSPEC  int PMPI_Comm_get_errhandler(MPI_Comm comm, MPI_Errhandler *erhandler);
1441OMPI_DECLSPEC  int PMPI_Comm_get_name(MPI_Comm comm, char *comm_name, int *resultlen);
1442OMPI_DECLSPEC  int PMPI_Comm_get_parent(MPI_Comm *parent);
1443OMPI_DECLSPEC  int PMPI_Comm_group(MPI_Comm comm, MPI_Group *group);
1444OMPI_DECLSPEC  int PMPI_Comm_join(int fd, MPI_Comm *intercomm);
1445OMPI_DECLSPEC  int PMPI_Comm_rank(MPI_Comm comm, int *rank);
1446OMPI_DECLSPEC  int PMPI_Comm_remote_group(MPI_Comm comm, MPI_Group *group);
1447OMPI_DECLSPEC  int PMPI_Comm_remote_size(MPI_Comm comm, int *size);
1448OMPI_DECLSPEC  int PMPI_Comm_set_attr(MPI_Comm comm, int comm_keyval, void *attribute_val);
1449OMPI_DECLSPEC  int PMPI_Comm_set_errhandler(MPI_Comm comm, MPI_Errhandler errhandler);
1450OMPI_DECLSPEC  int PMPI_Comm_set_name(MPI_Comm comm, char *comm_name);
1451OMPI_DECLSPEC  int PMPI_Comm_size(MPI_Comm comm, int *size);
1452OMPI_DECLSPEC  int PMPI_Comm_spawn(char *command, char **argv, int maxprocs, MPI_Info info, 
1453                                   int root, MPI_Comm comm, MPI_Comm *intercomm, 
1454                                   int *array_of_errcodes);
1455OMPI_DECLSPEC  int PMPI_Comm_spawn_multiple(int count, char **array_of_commands, char ***array_of_argv, 
1456                                            int *array_of_maxprocs, MPI_Info *array_of_info, 
1457                                            int root, MPI_Comm comm, MPI_Comm *intercomm, 
1458                                            int *array_of_errcodes);
1459OMPI_DECLSPEC  int PMPI_Comm_split(MPI_Comm comm, int color, int key, MPI_Comm *newcomm);
1460OMPI_DECLSPEC  int PMPI_Comm_test_inter(MPI_Comm comm, int *flag);
1461OMPI_DECLSPEC  int PMPI_Dims_create(int nnodes, int ndims, int *dims);
1462OMPI_DECLSPEC  MPI_Fint PMPI_Errhandler_c2f(MPI_Errhandler errhandler);
1463OMPI_DECLSPEC  int PMPI_Errhandler_create(MPI_Handler_function *function,
1464                                          MPI_Errhandler *errhandler);
1465OMPI_DECLSPEC  MPI_Errhandler PMPI_Errhandler_f2c(MPI_Fint errhandler);
1466OMPI_DECLSPEC  int PMPI_Errhandler_free(MPI_Errhandler *errhandler);
1467OMPI_DECLSPEC  int PMPI_Errhandler_get(MPI_Comm comm, MPI_Errhandler *errhandler);
1468OMPI_DECLSPEC  int PMPI_Errhandler_set(MPI_Comm comm, MPI_Errhandler errhandler);
1469OMPI_DECLSPEC  int PMPI_Error_class(int errorcode, int *errorclass);
1470OMPI_DECLSPEC  int PMPI_Error_string(int errorcode, char *string, int *resultlen);
1471OMPI_DECLSPEC  int PMPI_Exscan(void *sendbuf, void *recvbuf, int count,
1472                               MPI_Datatype datatype, MPI_Op op, MPI_Comm comm);
1473#if OMPI_PROVIDE_MPI_FILE_INTERFACE
1474OMPI_DECLSPEC  MPI_Fint PMPI_File_c2f(MPI_File file);
1475OMPI_DECLSPEC  MPI_File PMPI_File_f2c(MPI_Fint file);
1476OMPI_DECLSPEC  int PMPI_File_call_errhandler(MPI_File fh, int errorcode);
1477OMPI_DECLSPEC  int PMPI_File_create_errhandler(MPI_File_errhandler_fn *function,
1478                                               MPI_Errhandler *errhandler);
1479OMPI_DECLSPEC  int PMPI_File_set_errhandler( MPI_File file, MPI_Errhandler errhandler);
1480OMPI_DECLSPEC  int PMPI_File_get_errhandler( MPI_File file, MPI_Errhandler *errhandler);
1481OMPI_DECLSPEC  int PMPI_File_open(MPI_Comm comm, char *filename, int amode,
1482                                  MPI_Info info, MPI_File *fh);
1483OMPI_DECLSPEC  int PMPI_File_close(MPI_File *fh);
1484OMPI_DECLSPEC  int PMPI_File_delete(char *filename, MPI_Info info);
1485OMPI_DECLSPEC  int PMPI_File_set_size(MPI_File fh, MPI_Offset size);
1486OMPI_DECLSPEC  int PMPI_File_preallocate(MPI_File fh, MPI_Offset size);
1487OMPI_DECLSPEC  int PMPI_File_get_size(MPI_File fh, MPI_Offset *size);
1488OMPI_DECLSPEC  int PMPI_File_get_group(MPI_File fh, MPI_Group *group);
1489OMPI_DECLSPEC  int PMPI_File_get_amode(MPI_File fh, int *amode);
1490OMPI_DECLSPEC  int PMPI_File_set_info(MPI_File fh, MPI_Info info);
1491OMPI_DECLSPEC  int PMPI_File_get_info(MPI_File fh, MPI_Info *info_used);
1492OMPI_DECLSPEC  int PMPI_File_set_view(MPI_File fh, MPI_Offset disp, MPI_Datatype etype,
1493                                      MPI_Datatype filetype, char *datarep, MPI_Info info);
1494OMPI_DECLSPEC  int PMPI_File_get_view(MPI_File fh, MPI_Offset *disp,
1495                                      MPI_Datatype *etype, 
1496                                      MPI_Datatype *filetype, char *datarep);
1497OMPI_DECLSPEC  int PMPI_File_read_at(MPI_File fh, MPI_Offset offset, void *buf,
1498                                     int count, MPI_Datatype datatype, MPI_Status *status);
1499OMPI_DECLSPEC  int PMPI_File_read_at_all(MPI_File fh, MPI_Offset offset, void *buf,
1500                                         int count, MPI_Datatype datatype, MPI_Status *status);
1501OMPI_DECLSPEC  int PMPI_File_write_at(MPI_File fh, MPI_Offset offset, void *buf,
1502                                      int count, MPI_Datatype datatype, MPI_Status *status);
1503OMPI_DECLSPEC  int PMPI_File_write_at_all(MPI_File fh, MPI_Offset offset, void *buf,
1504                                          int count, MPI_Datatype datatype, MPI_Status *status);
1505OMPI_DECLSPEC  int PMPI_File_iread_at(MPI_File fh, MPI_Offset offset, void *buf,
1506                                      int count, MPI_Datatype datatype, MPI_Request *request);
1507OMPI_DECLSPEC  int PMPI_File_iwrite_at(MPI_File fh, MPI_Offset offset, void *buf,
1508                                       int count, MPI_Datatype datatype, MPI_Request *request);
1509OMPI_DECLSPEC  int PMPI_File_read(MPI_File fh, void *buf, int count,
1510                                  MPI_Datatype datatype, MPI_Status *status);
1511OMPI_DECLSPEC  int PMPI_File_read_all(MPI_File fh, void *buf, int count,
1512                                      MPI_Datatype datatype, MPI_Status *status);
1513OMPI_DECLSPEC  int PMPI_File_write(MPI_File fh, void *buf, int count,
1514                                   MPI_Datatype datatype, MPI_Status *status);
1515OMPI_DECLSPEC  int PMPI_File_write_all(MPI_File fh, void *buf, int count,
1516                                       MPI_Datatype datatype, MPI_Status *status);
1517OMPI_DECLSPEC  int PMPI_File_iread(MPI_File fh, void *buf, int count,
1518                                   MPI_Datatype datatype, MPI_Request *request);
1519OMPI_DECLSPEC  int PMPI_File_iwrite(MPI_File fh, void *buf, int count,
1520                                    MPI_Datatype datatype, MPI_Request *request);
1521OMPI_DECLSPEC  int PMPI_File_seek(MPI_File fh, MPI_Offset offset, int whence);
1522OMPI_DECLSPEC  int PMPI_File_get_position(MPI_File fh, MPI_Offset *offset);
1523OMPI_DECLSPEC  int PMPI_File_get_byte_offset(MPI_File fh, MPI_Offset offset,
1524                                             MPI_Offset *disp);
1525OMPI_DECLSPEC  int PMPI_File_read_shared(MPI_File fh, void *buf, int count,
1526                                         MPI_Datatype datatype, MPI_Status *status);
1527OMPI_DECLSPEC  int PMPI_File_write_shared(MPI_File fh, void *buf, int count,
1528                                          MPI_Datatype datatype, MPI_Status *status);
1529OMPI_DECLSPEC  int PMPI_File_iread_shared(MPI_File fh, void *buf, int count,
1530                                          MPI_Datatype datatype, MPI_Request *request);
1531OMPI_DECLSPEC  int PMPI_File_iwrite_shared(MPI_File fh, void *buf, int count,
1532                                           MPI_Datatype datatype, MPI_Request *request);
1533OMPI_DECLSPEC  int PMPI_File_read_ordered(MPI_File fh, void *buf, int count,
1534                                          MPI_Datatype datatype, MPI_Status *status);
1535OMPI_DECLSPEC  int PMPI_File_write_ordered(MPI_File fh, void *buf, int count,
1536                                           MPI_Datatype datatype, MPI_Status *status);
1537OMPI_DECLSPEC  int PMPI_File_seek_shared(MPI_File fh, MPI_Offset offset, int whence);
1538OMPI_DECLSPEC  int PMPI_File_get_position_shared(MPI_File fh, MPI_Offset *offset);
1539OMPI_DECLSPEC  int PMPI_File_read_at_all_begin(MPI_File fh, MPI_Offset offset, void *buf,
1540                                               int count, MPI_Datatype datatype);
1541OMPI_DECLSPEC  int PMPI_File_read_at_all_end(MPI_File fh, void *buf, MPI_Status *status);
1542OMPI_DECLSPEC  int PMPI_File_write_at_all_begin(MPI_File fh, MPI_Offset offset, void *buf,
1543                                                int count, MPI_Datatype datatype);
1544OMPI_DECLSPEC  int PMPI_File_write_at_all_end(MPI_File fh, void *buf, MPI_Status *status);
1545OMPI_DECLSPEC  int PMPI_File_read_all_begin(MPI_File fh, void *buf, int count,
1546                                            MPI_Datatype datatype);
1547OMPI_DECLSPEC  int PMPI_File_read_all_end(MPI_File fh, void *buf, MPI_Status *status);
1548OMPI_DECLSPEC  int PMPI_File_write_all_begin(MPI_File fh, void *buf, int count,
1549                                             MPI_Datatype datatype);
1550OMPI_DECLSPEC  int PMPI_File_write_all_end(MPI_File fh, void *buf, MPI_Status *status);
1551OMPI_DECLSPEC  int PMPI_File_read_ordered_begin(MPI_File fh, void *buf, int count,
1552                                                MPI_Datatype datatype);
1553OMPI_DECLSPEC  int PMPI_File_read_ordered_end(MPI_File fh, void *buf, MPI_Status *status);
1554OMPI_DECLSPEC  int PMPI_File_write_ordered_begin(MPI_File fh, void *buf, int count,
1555                                                 MPI_Datatype datatype);
1556OMPI_DECLSPEC  int PMPI_File_write_ordered_end(MPI_File fh, void *buf, MPI_Status *status);
1557OMPI_DECLSPEC  int PMPI_File_get_type_extent(MPI_File fh, MPI_Datatype datatype,
1558                                             MPI_Aint *extent);
1559OMPI_DECLSPEC  int PMPI_File_set_atomicity(MPI_File fh, int flag);
1560OMPI_DECLSPEC  int PMPI_File_get_atomicity(MPI_File fh, int *flag);
1561OMPI_DECLSPEC  int PMPI_File_sync(MPI_File fh);
1562#endif /* #if OMPI_PROVIDE_MPI_FILE_INTERFACE */
1563OMPI_DECLSPEC  int PMPI_Finalize(void);
1564OMPI_DECLSPEC  int PMPI_Finalized(int *flag);
1565OMPI_DECLSPEC  int PMPI_Free_mem(void *base);
1566OMPI_DECLSPEC  int PMPI_Gather(void *sendbuf, int sendcount, MPI_Datatype sendtype, 
1567                               void *recvbuf, int recvcount, MPI_Datatype recvtype, 
1568                               int root, MPI_Comm comm);
1569OMPI_DECLSPEC  int PMPI_Gatherv(void *sendbuf, int sendcount, MPI_Datatype sendtype, 
1570                                void *recvbuf, int *recvcounts, int *displs, 
1571                                MPI_Datatype recvtype, int root, MPI_Comm comm);
1572OMPI_DECLSPEC  int PMPI_Get_address(void *location, MPI_Aint *address);
1573OMPI_DECLSPEC  int PMPI_Get_count(MPI_Status *status, MPI_Datatype datatype, int *count);
1574OMPI_DECLSPEC  int PMPI_Get_elements(MPI_Status *status, MPI_Datatype datatype, 
1575                                     int *count);
1576OMPI_DECLSPEC  int PMPI_Get(void *origin_addr, int origin_count, 
1577                            MPI_Datatype origin_datatype, int target_rank, 
1578                            MPI_Aint target_disp, int target_count, 
1579                            MPI_Datatype target_datatype, MPI_Win win);
1580OMPI_DECLSPEC  int PMPI_Get_processor_name(char *name, int *resultlen);
1581OMPI_DECLSPEC  int PMPI_Get_version(int *version, int *subversion);
1582OMPI_DECLSPEC  int PMPI_Graph_create(MPI_Comm comm_old, int nnodes, int *index, 
1583                                     int *edges, int reorder, MPI_Comm *comm_graph);
1584OMPI_DECLSPEC  int PMPI_Graph_get(MPI_Comm comm, int maxindex, int maxedges, 
1585                                  int *index, int *edges);
1586OMPI_DECLSPEC  int PMPI_Graph_map(MPI_Comm comm, int nnodes, int *index, int *edges, 
1587                                  int *newrank);
1588OMPI_DECLSPEC  int PMPI_Graph_neighbors_count(MPI_Comm comm, int rank, int *nneighbors);
1589OMPI_DECLSPEC  int PMPI_Graph_neighbors(MPI_Comm comm, int rank, int maxneighbors, 
1590                                        int *neighbors);
1591OMPI_DECLSPEC  int PMPI_Graphdims_get(MPI_Comm comm, int *nnodes, int *nedges);
1592OMPI_DECLSPEC  int PMPI_Grequest_complete(MPI_Request request);
1593OMPI_DECLSPEC  int PMPI_Grequest_start(MPI_Grequest_query_function *query_fn,
1594                                       MPI_Grequest_free_function *free_fn,
1595                                       MPI_Grequest_cancel_function *cancel_fn,
1596                                       void *extra_state, MPI_Request *request);
1597OMPI_DECLSPEC  MPI_Fint PMPI_Group_c2f(MPI_Group group);
1598OMPI_DECLSPEC  int PMPI_Group_compare(MPI_Group group1, MPI_Group group2, int *result);
1599OMPI_DECLSPEC  int PMPI_Group_difference(MPI_Group group1, MPI_Group group2, 
1600                                         MPI_Group *newgroup);
1601OMPI_DECLSPEC  int PMPI_Group_excl(MPI_Group group, int n, int *ranks, 
1602                                   MPI_Group *newgroup);
1603OMPI_DECLSPEC  MPI_Group PMPI_Group_f2c(MPI_Fint group);
1604OMPI_DECLSPEC  int PMPI_Group_free(MPI_Group *group);
1605OMPI_DECLSPEC  int PMPI_Group_incl(MPI_Group group, int n, int *ranks, 
1606                                   MPI_Group *newgroup);
1607OMPI_DECLSPEC  int PMPI_Group_intersection(MPI_Group group1, MPI_Group group2, 
1608                                           MPI_Group *newgroup);
1609OMPI_DECLSPEC  int PMPI_Group_range_excl(MPI_Group group, int n, int ranges[][3], 
1610                                         MPI_Group *newgroup);
1611OMPI_DECLSPEC  int PMPI_Group_range_incl(MPI_Group group, int n, int ranges[][3], 
1612                                         MPI_Group *newgroup);
1613OMPI_DECLSPEC  int PMPI_Group_rank(MPI_Group group, int *rank);
1614OMPI_DECLSPEC  int PMPI_Group_size(MPI_Group group, int *size);
1615OMPI_DECLSPEC  int PMPI_Group_translate_ranks(MPI_Group group1, int n, int *ranks1, 
1616                                              MPI_Group group2, int *ranks2);
1617OMPI_DECLSPEC  int PMPI_Group_union(MPI_Group group1, MPI_Group group2, 
1618                                    MPI_Group *newgroup);
1619OMPI_DECLSPEC  int PMPI_Ibsend(void *buf, int count, MPI_Datatype datatype, int dest, 
1620                               int tag, MPI_Comm comm, MPI_Request *request);
1621OMPI_DECLSPEC  MPI_Fint PMPI_Info_c2f(MPI_Info info);
1622OMPI_DECLSPEC  int PMPI_Info_create(MPI_Info *info);
1623OMPI_DECLSPEC  int PMPI_Info_delete(MPI_Info info, char *key);
1624OMPI_DECLSPEC  int PMPI_Info_dup(MPI_Info info, MPI_Info *newinfo);
1625OMPI_DECLSPEC  MPI_Info PMPI_Info_f2c(MPI_Fint info);
1626OMPI_DECLSPEC  int PMPI_Info_free(MPI_Info *info);
1627OMPI_DECLSPEC  int PMPI_Info_get(MPI_Info info, char *key, int valuelen, 
1628                                 char *value, int *flag);
1629OMPI_DECLSPEC  int PMPI_Info_get_nkeys(MPI_Info info, int *nkeys);
1630OMPI_DECLSPEC  int PMPI_Info_get_nthkey(MPI_Info info, int n, char *key);
1631OMPI_DECLSPEC  int PMPI_Info_get_valuelen(MPI_Info info, char *key, int *valuelen, 
1632                                          int *flag);
1633OMPI_DECLSPEC  int PMPI_Info_set(MPI_Info info, char *key, char *value);
1634OMPI_DECLSPEC  int PMPI_Init(int *argc, char ***argv);
1635OMPI_DECLSPEC  int PMPI_Initialized(int *flag);
1636OMPI_DECLSPEC  int PMPI_Init_thread(int *argc, char ***argv, int required, 
1637                                    int *provided);
1638OMPI_DECLSPEC  int PMPI_Intercomm_create(MPI_Comm local_comm, int local_leader, 
1639                                         MPI_Comm bridge_comm, int remote_leader, 
1640                                         int tag, MPI_Comm *newintercomm);
1641OMPI_DECLSPEC  int PMPI_Intercomm_merge(MPI_Comm intercomm, int high, 
1642                                        MPI_Comm *newintercomm);
1643OMPI_DECLSPEC  int PMPI_Iprobe(int source, int tag, MPI_Comm comm, int *flag, 
1644                               MPI_Status *status);
1645OMPI_DECLSPEC  int PMPI_Irecv(void *buf, int count, MPI_Datatype datatype, int source, 
1646                              int tag, MPI_Comm comm, MPI_Request *request);
1647OMPI_DECLSPEC  int PMPI_Irsend(void *buf, int count, MPI_Datatype datatype, int dest, 
1648                               int tag, MPI_Comm comm, MPI_Request *request);
1649OMPI_DECLSPEC  int PMPI_Isend(void *buf, int count, MPI_Datatype datatype, int dest, 
1650                              int tag, MPI_Comm comm, MPI_Request *request);
1651OMPI_DECLSPEC  int PMPI_Issend(void *buf, int count, MPI_Datatype datatype, int dest, 
1652                               int tag, MPI_Comm comm, MPI_Request *request);
1653OMPI_DECLSPEC  int PMPI_Is_thread_main(int *flag);
1654OMPI_DECLSPEC  int PMPI_Keyval_create(MPI_Copy_function *copy_fn, 
1655                                      MPI_Delete_function *delete_fn, 
1656                                      int *keyval, void *extra_state);
1657OMPI_DECLSPEC  int PMPI_Keyval_free(int *keyval);
1658OMPI_DECLSPEC  int PMPI_Lookup_name(char *service_name, MPI_Info info, char *port_name);
1659OMPI_DECLSPEC  MPI_Fint PMPI_Op_c2f(MPI_Op op); 
1660OMPI_DECLSPEC  int PMPI_Op_create(MPI_User_function *function, int commute, 
1661                                  MPI_Op *op);
1662OMPI_DECLSPEC  int PMPI_Open_port(MPI_Info info, char *port_name);
1663OMPI_DECLSPEC  MPI_Op PMPI_Op_f2c(MPI_Fint op);
1664OMPI_DECLSPEC  int PMPI_Op_free(MPI_Op *op);
1665OMPI_DECLSPEC  int PMPI_Pack_external(char *datarep, void *inbuf, int incount,
1666                                      MPI_Datatype datatype, void *outbuf,
1667                                      MPI_Aint outsize, MPI_Aint *position);
1668OMPI_DECLSPEC  int PMPI_Pack_external_size(char *datarep, int incount, 
1669                                           MPI_Datatype datatype, MPI_Aint *size);
1670OMPI_DECLSPEC  int PMPI_Pack(void *inbuf, int incount, MPI_Datatype datatype, 
1671                             void *outbuf, int outsize, int *position, MPI_Comm comm);
1672OMPI_DECLSPEC  int PMPI_Pack_size(int incount, MPI_Datatype datatype, MPI_Comm comm, 
1673                                  int *size);
1674OMPI_DECLSPEC  int PMPI_Pcontrol(const int level, ...);
1675OMPI_DECLSPEC  int PMPI_Probe(int source, int tag, MPI_Comm comm, MPI_Status *status);
1676OMPI_DECLSPEC  int PMPI_Publish_name(char *service_name, MPI_Info info, 
1677                                     char *port_name);
1678OMPI_DECLSPEC  int PMPI_Put(void *origin_addr, int origin_count, MPI_Datatype origin_datatype, 
1679                            int target_rank, MPI_Aint target_disp, int target_count, 
1680                            MPI_Datatype target_datatype, MPI_Win win);
1681OMPI_DECLSPEC  int PMPI_Query_thread(int *provided);
1682OMPI_DECLSPEC  int PMPI_Recv_init(void *buf, int count, MPI_Datatype datatype, int source,
1683                                  int tag, MPI_Comm comm, MPI_Request *request);
1684OMPI_DECLSPEC  int PMPI_Recv(void *buf, int count, MPI_Datatype datatype, int source, 
1685                             int tag, MPI_Comm comm, MPI_Status *status);
1686OMPI_DECLSPEC  int PMPI_Reduce(void *sendbuf, void *recvbuf, int count, 
1687                               MPI_Datatype datatype, MPI_Op op, int root, MPI_Comm comm);
1688OMPI_DECLSPEC  int PMPI_Reduce_scatter(void *sendbuf, void *recvbuf, int *recvcounts, 
1689                                       MPI_Datatype datatype, MPI_Op op, MPI_Comm comm);
1690OMPI_DECLSPEC  int PMPI_Register_datarep(char *datarep, 
1691                                         MPI_Datarep_conversion_function *read_conversion_fn,
1692                                         MPI_Datarep_conversion_function *write_conversion_fn,
1693                                         MPI_Datarep_extent_function *dtype_file_extent_fn,
1694                                         void *extra_state);
1695OMPI_DECLSPEC  MPI_Fint PMPI_Request_c2f(MPI_Request request);
1696OMPI_DECLSPEC  MPI_Request PMPI_Request_f2c(MPI_Fint request);
1697OMPI_DECLSPEC  int PMPI_Request_free(MPI_Request *request);
1698OMPI_DECLSPEC  int PMPI_Request_get_status(MPI_Request request, int *flag, 
1699                                           MPI_Status *status);
1700OMPI_DECLSPEC  int PMPI_Rsend(void *ibuf, int count, MPI_Datatype datatype, int dest, 
1701                              int tag, MPI_Comm comm);
1702OMPI_DECLSPEC  int PMPI_Rsend_init(void *buf, int count, MPI_Datatype datatype, 
1703                                   int dest, int tag, MPI_Comm comm, 
1704                                   MPI_Request *request);
1705OMPI_DECLSPEC  int PMPI_Scan(void *sendbuf, void *recvbuf, int count, 
1706                             MPI_Datatype datatype, MPI_Op op, MPI_Comm comm);
1707OMPI_DECLSPEC  int PMPI_Scatter(void *sendbuf, int sendcount, MPI_Datatype sendtype, 
1708                                void *recvbuf, int recvcount, MPI_Datatype recvtype, 
1709                                int root, MPI_Comm comm);
1710OMPI_DECLSPEC  int PMPI_Scatterv(void *sendbuf, int *sendcounts, int *displs, 
1711                                 MPI_Datatype sendtype, void *recvbuf, int recvcount, 
1712                                 MPI_Datatype recvtype, int root, MPI_Comm comm);
1713OMPI_DECLSPEC  int PMPI_Send_init(void *buf, int count, MPI_Datatype datatype, 
1714                                  int dest, int tag, MPI_Comm comm, 
1715                                  MPI_Request *request);
1716OMPI_DECLSPEC  int PMPI_Send(void *buf, int count, MPI_Datatype datatype, int dest, 
1717                             int tag, MPI_Comm comm);
1718OMPI_DECLSPEC  int PMPI_Sendrecv(void *sendbuf, int sendcount, MPI_Datatype sendtype, 
1719                                 int dest, int sendtag, void *recvbuf, int recvcount,
1720                                 MPI_Datatype recvtype, int source, int recvtag, 
1721                                 MPI_Comm comm,  MPI_Status *status);
1722OMPI_DECLSPEC  int PMPI_Sendrecv_replace(void * buf, int count, MPI_Datatype datatype, 
1723                                         int dest, int sendtag, int source, int recvtag,
1724                                         MPI_Comm comm, MPI_Status *status);
1725OMPI_DECLSPEC  int PMPI_Ssend_init(void *buf, int count, MPI_Datatype datatype, 
1726                                   int dest, int tag, MPI_Comm comm, 
1727                                   MPI_Request *request);
1728OMPI_DECLSPEC  int PMPI_Ssend(void *buf, int count, MPI_Datatype datatype, int dest, 
1729                              int tag, MPI_Comm comm);
1730OMPI_DECLSPEC  int PMPI_Start(MPI_Request *request);
1731OMPI_DECLSPEC  int PMPI_Startall(int count, MPI_Request *array_of_requests);
1732OMPI_DECLSPEC  int PMPI_Status_c2f(MPI_Status *c_status, MPI_Fint *f_status);
1733OMPI_DECLSPEC  int PMPI_Status_f2c(MPI_Fint *f_status, MPI_Status *c_status);
1734OMPI_DECLSPEC  int PMPI_Status_set_cancelled(MPI_Status *status, int flag);
1735OMPI_DECLSPEC  int PMPI_Status_set_elements(MPI_Status *status, MPI_Datatype datatype,
1736                                            int count);
1737OMPI_DECLSPEC  int PMPI_Testall(int count, MPI_Request array_of_requests[], int *flag, 
1738                                MPI_Status array_of_statuses[]);
1739OMPI_DECLSPEC  int PMPI_Testany(int count, MPI_Request array_of_requests[], int *index, int *flag, MPI_Status *status);
1740OMPI_DECLSPEC  int PMPI_Test(MPI_Request *request, int *flag, MPI_Status *status);
1741OMPI_DECLSPEC  int PMPI_Test_cancelled(MPI_Status *status, int *flag);
1742OMPI_DECLSPEC  int PMPI_Testsome(int incount, MPI_Request array_of_requests[], 
1743                                 int *outcount, int array_of_indices[], 
1744                                 MPI_Status array_of_statuses[]);
1745OMPI_DECLSPEC  int PMPI_Topo_test(MPI_Comm comm, int *status);
1746OMPI_DECLSPEC  MPI_Fint PMPI_Type_c2f(MPI_Datatype datatype);
1747OMPI_DECLSPEC  int PMPI_Type_commit(MPI_Datatype *type);
1748OMPI_DECLSPEC  int PMPI_Type_contiguous(int count, MPI_Datatype oldtype, 
1749                                        MPI_Datatype *newtype);
1750OMPI_DECLSPEC  int PMPI_Type_create_darray(int size, int rank, int ndims, 
1751                                           int gsize_array[], int distrib_array[], 
1752                                           int darg_array[], int psize_array[],
1753                                           int order, MPI_Datatype oldtype, 
1754                                           MPI_Datatype *newtype);
1755OMPI_DECLSPEC  int PMPI_Type_create_f90_complex(int p, int r, MPI_Datatype *newtype);
1756OMPI_DECLSPEC  int PMPI_Type_create_f90_integer(int r, MPI_Datatype *newtype);
1757OMPI_DECLSPEC  int PMPI_Type_create_f90_real(int p, int r, MPI_Datatype *newtype);
1758OMPI_DECLSPEC  int PMPI_Type_create_hindexed(int count, int array_of_blocklengths[], 
1759                                             MPI_Aint array_of_displacements[], 
1760                                             MPI_Datatype oldtype, 
1761                                             MPI_Datatype *newtype);
1762OMPI_DECLSPEC  int PMPI_Type_create_hvector(int count, int blocklength, MPI_Aint stride, 
1763                                            MPI_Datatype oldtype, 
1764                                            MPI_Datatype *newtype);
1765OMPI_DECLSPEC  int PMPI_Type_create_keyval(MPI_Type_copy_attr_function *type_copy_attr_fn, 
1766                                           MPI_Type_delete_attr_function *type_delete_attr_fn, 
1767                                           int *type_keyval, void *extra_state);
1768OMPI_DECLSPEC  int PMPI_Type_create_indexed_block(int count, int blocklength,
1769                                                  int array_of_displacements[],
1770                                                  MPI_Datatype oldtype,
1771                                                  MPI_Datatype *newtype);
1772OMPI_DECLSPEC  int PMPI_Type_create_struct(int count, int array_of_block_lengths[], 
1773                                           MPI_Aint array_of_displacements[], 
1774                                           MPI_Datatype array_of_types[], 
1775                                           MPI_Datatype *newtype);
1776OMPI_DECLSPEC  int PMPI_Type_create_subarray(int ndims, int size_array[], int subsize_array[], 
1777                                             int start_array[], int order, 
1778                                             MPI_Datatype oldtype, MPI_Datatype *newtype);
1779OMPI_DECLSPEC  int PMPI_Type_create_resized(MPI_Datatype oldtype, MPI_Aint lb, 
1780                                            MPI_Aint extent, MPI_Datatype *newtype); 
1781OMPI_DECLSPEC  int PMPI_Type_delete_attr(MPI_Datatype type, int type_keyval);
1782OMPI_DECLSPEC  int PMPI_Type_dup(MPI_Datatype type, MPI_Datatype *newtype);
1783OMPI_DECLSPEC  int PMPI_Type_extent(MPI_Datatype type, MPI_Aint *extent);
1784OMPI_DECLSPEC  int PMPI_Type_free(MPI_Datatype *type);
1785OMPI_DECLSPEC  int PMPI_Type_free_keyval(int *type_keyval);
1786OMPI_DECLSPEC  MPI_Datatype PMPI_Type_f2c(MPI_Fint datatype);
1787OMPI_DECLSPEC  int PMPI_Type_get_attr(MPI_Datatype type, int type_keyval, 
1788                                      void *attribute_val, int *flag);
1789OMPI_DECLSPEC  int PMPI_Type_get_contents(MPI_Datatype mtype, int max_integers, 
1790                                          int max_addresses, int max_datatypes, 
1791                                          int array_of_integers[], 
1792                                          MPI_Aint array_of_addresses[], 
1793                                          MPI_Datatype array_of_datatypes[]);
1794OMPI_DECLSPEC  int PMPI_Type_get_envelope(MPI_Datatype type, int *num_integers, 
1795                                          int *num_addresses, int *num_datatypes, 
1796                                          int *combiner);
1797OMPI_DECLSPEC  int PMPI_Type_get_extent(MPI_Datatype type, MPI_Aint *lb, 
1798                                        MPI_Aint *extent);
1799OMPI_DECLSPEC  int PMPI_Type_get_name(MPI_Datatype type, char *type_name, 
1800                                      int *resultlen);
1801OMPI_DECLSPEC  int PMPI_Type_get_true_extent(MPI_Datatype datatype, MPI_Aint *true_lb, 
1802                                             MPI_Aint *true_extent);
1803OMPI_DECLSPEC  int PMPI_Type_hindexed(int count, int array_of_blocklengths[], 
1804                                      MPI_Aint array_of_displacements[], 
1805                                      MPI_Datatype oldtype, MPI_Datatype *newtype);
1806OMPI_DECLSPEC  int PMPI_Type_hvector(int count, int blocklength, MPI_Aint stride, 
1807                                     MPI_Datatype oldtype, MPI_Datatype *newtype);
1808OMPI_DECLSPEC  int PMPI_Type_indexed(int count, int array_of_blocklengths[], 
1809                                     int array_of_displacements[], 
1810                                     MPI_Datatype oldtype, MPI_Datatype *newtype);
1811OMPI_DECLSPEC  int PMPI_Type_lb(MPI_Datatype type, MPI_Aint *lb);
1812OMPI_DECLSPEC  int PMPI_Type_match_size(int typeclass, int size, MPI_Datatype *type);
1813OMPI_DECLSPEC  int PMPI_Type_set_attr(MPI_Datatype type, int type_keyval, 
1814                                      void *attr_val);
1815OMPI_DECLSPEC  int PMPI_Type_set_name(MPI_Datatype type, char *type_name);
1816OMPI_DECLSPEC  int PMPI_Type_size(MPI_Datatype type, int *size);
1817OMPI_DECLSPEC  int PMPI_Type_struct(int count, int array_of_blocklengths[], 
1818                                    MPI_Aint array_of_displacements[], 
1819                                    MPI_Datatype array_of_types[], 
1820                                    MPI_Datatype *newtype);
1821OMPI_DECLSPEC  int PMPI_Type_ub(MPI_Datatype mtype, MPI_Aint *ub);
1822OMPI_DECLSPEC  int PMPI_Type_vector(int count, int blocklength, int stride, 
1823                                    MPI_Datatype oldtype, MPI_Datatype *newtype);
1824OMPI_DECLSPEC  int PMPI_Unpack(void *inbuf, int insize, int *position, 
1825                               void *outbuf, int outcount, MPI_Datatype datatype, 
1826                               MPI_Comm comm);
1827OMPI_DECLSPEC  int PMPI_Unpublish_name(char *service_name, MPI_Info info, 
1828                                       char *port_name);
1829OMPI_DECLSPEC  int PMPI_Unpack_external (char *datarep, void *inbuf, MPI_Aint insize,
1830                                         MPI_Aint *position, void *outbuf, int outcount,
1831                                         MPI_Datatype datatype);
1832OMPI_DECLSPEC  int PMPI_Waitall(int count, MPI_Request *array_of_requests, 
1833                                MPI_Status *array_of_statuses);
1834OMPI_DECLSPEC  int PMPI_Waitany(int count, MPI_Request *array_of_requests, 
1835                                int *index, MPI_Status *status);
1836OMPI_DECLSPEC  int PMPI_Wait(MPI_Request *request, MPI_Status *status);
1837OMPI_DECLSPEC  int PMPI_Waitsome(int incount, MPI_Request *array_of_requests, 
1838                                 int *outcount, int *array_of_indices, 
1839                                 MPI_Status *array_of_statuses);
1840OMPI_DECLSPEC  MPI_Fint PMPI_Win_c2f(MPI_Win win);
1841OMPI_DECLSPEC  int PMPI_Win_call_errhandler(MPI_Win win, int errorcode);
1842OMPI_DECLSPEC  int PMPI_Win_complete(MPI_Win win);
1843OMPI_DECLSPEC  int PMPI_Win_create(void *base, MPI_Aint size, int disp_unit, 
1844                                   MPI_Info info, MPI_Comm comm, MPI_Win *win);
1845OMPI_DECLSPEC  int PMPI_Win_create_errhandler(MPI_Win_errhandler_fn *function, 
1846                                              MPI_Errhandler *errhandler);
1847OMPI_DECLSPEC  int PMPI_Win_create_keyval(MPI_Win_copy_attr_function *win_copy_attr_fn, 
1848                                          MPI_Win_delete_attr_function *win_delete_attr_fn, 
1849                                          int *win_keyval, void *extra_state);
1850OMPI_DECLSPEC  int PMPI_Win_delete_attr(MPI_Win win, int win_keyval);
1851OMPI_DECLSPEC  MPI_Win PMPI_Win_f2c(MPI_Fint win);
1852OMPI_DECLSPEC  int PMPI_Win_fence(int assert, MPI_Win win);
1853OMPI_DECLSPEC  int PMPI_Win_free(MPI_Win *win);
1854OMPI_DECLSPEC  int PMPI_Win_free_keyval(int *win_keyval);
1855OMPI_DECLSPEC  int PMPI_Win_get_attr(MPI_Win win, int win_keyval, 
1856                                     void *attribute_val, int *flag);
1857OMPI_DECLSPEC  int PMPI_Win_get_errhandler(MPI_Win win, MPI_Errhandler *errhandler);
1858OMPI_DECLSPEC  int PMPI_Win_get_group(MPI_Win win, MPI_Group *group);
1859OMPI_DECLSPEC  int PMPI_Win_get_name(MPI_Win win, char *win_name, int *resultlen);
1860OMPI_DECLSPEC  int PMPI_Win_lock(int lock_type, int rank, int assert, MPI_Win win);
1861OMPI_DECLSPEC  int PMPI_Win_post(MPI_Group group, int assert, MPI_Win win);
1862OMPI_DECLSPEC  int PMPI_Win_set_attr(MPI_Win win, int win_keyval, void *attribute_val);
1863OMPI_DECLSPEC  int PMPI_Win_set_errhandler(MPI_Win win, MPI_Errhandler errhandler);
1864OMPI_DECLSPEC  int PMPI_Win_set_name(MPI_Win win, char *win_name);
1865OMPI_DECLSPEC  int PMPI_Win_start(MPI_Group group, int assert, MPI_Win win);
1866OMPI_DECLSPEC  int PMPI_Win_test(MPI_Win win, int *flag);
1867OMPI_DECLSPEC  int PMPI_Win_unlock(int rank, MPI_Win win);
1868OMPI_DECLSPEC  int PMPI_Win_wait(MPI_Win win);
1869OMPI_DECLSPEC  double PMPI_Wtick(void);
1870OMPI_DECLSPEC  double PMPI_Wtime(void);
1871
1872#if defined(c_plusplus) || defined(__cplusplus)
1873}
1874#endif
1875
1876/*                                                                             
1877 * Conditional MPI 2 C++ bindings support.  Include if:
1878 *   - The user does not explicitly request us to skip it (when a C++ compiler
1879 *       is used to compile C code).
1880 *   - We want C++ bindings support
1881 *   - We are not building OMPI itself
1882 *   - We are using a C++ compiler
1883 */
1884#if !defined(OMPI_SKIP_MPICXX) && OMPI_WANT_CXX_BINDINGS && !OMPI_BUILDING
1885#if defined(__cplusplus) || defined(c_plusplus)
1886#include "openmpi/ompi/mpi/cxx/mpicxx.h"
1887#endif
1888#endif
1889
1890#if !OMPI_PROVIDE_MPI_FILE_INTERFACE && !OMPI_BUILDING
1891/* ROMIO requires MPI implementations to set this to 1 if they provide
1892   MPI_OFFSET.  We need to provide it because its used throughout the
1893   DDT engine */
1894#define HAVE_MPI_OFFSET 1
1895#endif
1896
1897#endif /* OMPI_MPI_H */
Note: See TracBrowser for help on using the repository browser.