OpenMPI 0.1.1

- Main Page
- Related Pages
- Modules
- Data Structures
- Files

- File List
- Globals

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 */
337 struct ompi_status_public_t {
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 };
350 typedef struct ompi_status_public_t ompi_status_public_t;
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 */
ompi_predefined_win_t
Definition: win.h:102
ompi_win_t
Definition: win.h:53
ompi_mpi_errhandler_null
OMPI_DECLSPEC ompi_predefined_errhandler_t ompi_mpi_errhandler_null
Global variable for MPI_ERRHANDLER_NULL.
Definition: errhandler.c:57
ompi_mpi_op_null
OMPI_DECLSPEC ompi_predefined_op_t ompi_mpi_op_null
Global variable for MPI_OP_NULL.
Definition: op.c:61
ompi_predefined_errhandler_t
Definition: errhandler.h:148
ompi_datatype_t
Definition: ompi_datatype.h:68
ompi_errhandler_t
Back-end type for MPI_Errorhandler.
Definition: errhandler.h:108
ompi_mpi_errors_are_fatal
OMPI_DECLSPEC ompi_predefined_errhandler_t ompi_mpi_errors_are_fatal
Global variable for MPI_ERRORS_ARE_FATAL.
Definition: errhandler.c:58
ompi_mpi_op_sum
OMPI_DECLSPEC ompi_predefined_op_t ompi_mpi_op_sum
Global variable for MPI_SUM.
Definition: op.c:64
ompi_mpi_op_prod
OMPI_DECLSPEC ompi_predefined_op_t ompi_mpi_op_prod
Global variable for MPI_PROD.
Definition: op.c:65
ompi_predefined_group_t
Definition: group.h:108
MPI
Definition: mpicxx.cc:33
ompi_mpi_op_min
OMPI_DECLSPEC ompi_predefined_op_t ompi_mpi_op_min
Global variable for MPI_MIN.
Definition: op.c:63
ompi_predefined_message_t
Definition: message.h:40
ompi_predefined_communicator_t
Definition: communicator.h:266
ompi_mpi_op_maxloc
OMPI_DECLSPEC ompi_predefined_op_t ompi_mpi_op_maxloc
Global variable for MPI_MAXLOC.
Definition: op.c:72
ompi_info_t
Definition: info.h:38
ompi_predefined_request_t
Definition: request.h:134
ompi_file_t
Back-end structure for MPI_File.
Definition: file.h:42
ompi_mpi_op_lor
OMPI_DECLSPEC ompi_predefined_op_t ompi_mpi_op_lor
Global variable for MPI_LOR.
Definition: op.c:68
ompi_mpi_op_land
OMPI_DECLSPEC ompi_predefined_op_t ompi_mpi_op_land
Global variable for MPI_LAND.
Definition: op.c:66
ompi_mpi_op_minloc
OMPI_DECLSPEC ompi_predefined_op_t ompi_mpi_op_minloc
Global variable for MPI_MINLOC.
Definition: op.c:73
ompi_mpi_op_max
OMPI_DECLSPEC ompi_predefined_op_t ompi_mpi_op_max
Global variable for MPI_MAX.
Definition: op.c:62
ompi_predefined_op_t
Definition: op.h:156
ompi_mpi_op_lxor
OMPI_DECLSPEC ompi_predefined_op_t ompi_mpi_op_lxor
Global variable for MPI_LXOR.
Definition: op.c:70
ompi_group_t
Group structure Currently we have four formats for storing the process pointers that are members of t...
Definition: group.h:79
ompi_mpi_op_replace
OMPI_DECLSPEC ompi_predefined_op_t ompi_mpi_op_replace
Global variable for MPI_REPLACE.
Definition: op.c:74
ompi_mpi_op_band
OMPI_DECLSPEC ompi_predefined_op_t ompi_mpi_op_band
Global variable for MPI_BAND.
Definition: op.c:67
ompi_status_public_t
Definition: mpi.h:337
ompi_predefined_datatype_t
Definition: ompi_datatype.h:100
request
Definition: evdns.c:158
ompi_mpi_op_bor
OMPI_DECLSPEC ompi_predefined_op_t ompi_mpi_op_bor
Global variable for MPI_BOR.
Definition: op.c:69
ompi_mpi_op_bxor
OMPI_DECLSPEC ompi_predefined_op_t ompi_mpi_op_bxor
Global variable for MPI_BXOR.
Definition: op.c:71
ompi_mpi_errors_return
OMPI_DECLSPEC ompi_predefined_errhandler_t ompi_mpi_errors_return
Global variable for MPI_ERRORS_RETURN.
Definition: errhandler.c:59
ompi_predefined_file_t
Definition: file.h:102
ompi_communicator_t
Definition: communicator.h:118
ompi_predefined_info_t
Definition: info.h:63
ompi_request_t
Main top-level request struct definition.
Definition: request.h:100
ompi_op_t
Back-end type of MPI_Op.
Definition: op.h:100
ompi_message_t
Definition: message.h:22