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