41#ifndef SC3_MPI_TYPES_H
42#define SC3_MPI_TYPES_H
55#define SC3_MPI_UNDEFINED MPI_UNDEFINED
57#define SC3_MPI_DATATYPE_NULL MPI_DATATYPE_NULL
58#define SC3_MPI_BYTE MPI_BYTE
59#define SC3_MPI_INT MPI_INT
60#define SC3_MPI_2INT MPI_2INT
61#define SC3_MPI_UNSIGNED MPI_UNSIGNED
62#define SC3_MPI_LONG MPI_LONG
63#define SC3_MPI_LONG_LONG MPI_LONG_LONG_INT
64#define SC3_MPI_FLOAT MPI_FLOAT
65#define SC3_MPI_DOUBLE MPI_DOUBLE
66#define SC3_MPI_DOUBLE_INT MPI_DOUBLE_INT
68#define SC3_MPI_OP_NULL MPI_OP_NULL
69#define SC3_MPI_MIN MPI_MIN
70#define SC3_MPI_MAX MPI_MAX
71#define SC3_MPI_MINLOC MPI_MINLOC
72#define SC3_MPI_MAXLOC MPI_MAXLOC
73#define SC3_MPI_LOR MPI_LOR
74#define SC3_MPI_LAND MPI_LAND
75#define SC3_MPI_LXOR MPI_LXOR
76#define SC3_MPI_BOR MPI_BOR
77#define SC3_MPI_BAND MPI_BAND
78#define SC3_MPI_BXOR MPI_BXOR
79#define SC3_MPI_REPLACE MPI_REPLACE
80#define SC3_MPI_SUM MPI_SUM
81#define SC3_MPI_PROD MPI_PROD
83#define SC3_MPI_ERRORS_RETURN MPI_ERRORS_RETURN
84#define SC3_MPI_COMM_WORLD MPI_COMM_WORLD
85#define SC3_MPI_COMM_SELF MPI_COMM_SELF
86#define SC3_MPI_COMM_NULL MPI_COMM_NULL
87#define SC3_MPI_INFO_NULL MPI_INFO_NULL
89#define SC3_MPI_MAX_ERROR_STRING MPI_MAX_ERROR_STRING
90#define SC3_MPI_SUCCESS MPI_SUCCESS
91#define SC3_MPI_ERR_ARG MPI_ERR_ARG
92#define SC3_MPI_ERR_UNKNOWN MPI_ERR_UNKNOWN
93#define SC3_MPI_ERR_OTHER MPI_ERR_OTHER
94#define SC3_MPI_ERR_NO_MEM MPI_ERR_NO_MEM
98#define SC_MPI_ERR_FILE MPI_ERR_FILE
99#define SC_MPI_ERR_NOT_SAME MPI_ERR_NOT_SAME
100#define SC_MPI_ERR_AMODE MPI_ERR_AMODE
101#define SC_MPI_ERR_UNSUPPORTED_DATAREP MPI_ERR_UNSUPPORTED_DATAREP
102#define SC_MPI_ERR_UNSUPPORTED_OPERATION MPI_ERR_UNSUPPORTED_OPERATION
103#define SC_MPI_ERR_NO_SUCH_FILE MPI_ERR_NO_SUCH_FILE
104#define SC_MPI_ERR_FILE_EXISTS MPI_ERR_FILE_EXISTS
105#define SC_MPI_ERR_BAD_FILE MPI_ERR_BAD_FILE
106#define SC_MPI_ERR_ACCESS MPI_ERR_ACCESS
107#define SC_MPI_ERR_NO_SPACE MPI_ERR_NO_SPACE
108#define SC_MPI_ERR_QUOTA MPI_ERR_QUOTA
109#define SC_MPI_ERR_READ_ONLY MPI_ERR_READ_ONLY
110#define SC_MPI_ERR_FILE_IN_USE MPI_ERR_FILE_IN_USE
111#define SC_MPI_ERR_DUP_DATAREP MPI_ERR_DUP_DATAREP
112#define SC_MPI_ERR_CONVERSION MPI_ERR_CONVERSION
113#define SC_MPI_ERR_IO MPI_ERR_IO
115#define SC3_MPI_ERR_LASTCODE MPI_ERR_LASTCODE
119typedef enum sc3_MPI_IO_Errorcode
122 SC3_MPI_ERR_FILE = MPI_ERR_LASTCODE,
123 SC3_MPI_ERR_NOT_SAME,
125 SC3_MPI_ERR_UNSUPPORTED_DATAREP,
126 SC3_MPI_ERR_UNSUPPORTED_OPERATION,
127 SC3_MPI_ERR_NO_SUCH_FILE,
128 SC3_MPI_ERR_FILE_EXISTS,
129 SC3_MPI_ERR_BAD_FILE,
131 SC3_MPI_ERR_NO_SPACE,
133 SC3_MPI_ERR_READ_ONLY,
134 SC3_MPI_ERR_FILE_IN_USE,
135 SC3_MPI_ERR_DUP_DATAREP,
136 SC3_MPI_ERR_CONVERSION,
140sc3_MPI_IO_Errorcode_t;
207 SC3_MPI_ERR_NOT_SAME,
209 SC3_MPI_ERR_UNSUPPORTED_DATAREP,
210 SC3_MPI_ERR_UNSUPPORTED_OPERATION,
211 SC3_MPI_ERR_NO_SUCH_FILE,
212 SC3_MPI_ERR_FILE_EXISTS,
213 SC3_MPI_ERR_BAD_FILE,
215 SC3_MPI_ERR_NO_SPACE,
217 SC3_MPI_ERR_READ_ONLY,
218 SC3_MPI_ERR_FILE_IN_USE,
219 SC3_MPI_ERR_DUP_DATAREP,
220 SC3_MPI_ERR_CONVERSION,
234#define SC3_MPI_ERRORS_RETURN NULL
237#define SC3_MPI_MAX_ERROR_STRING BUFSIZ
240#define SC3_MPI_COMM_NULL ((sc3_MPI_Comm_t) NULL)
243#define SC3_MPI_COMM_WORLD ((sc3_MPI_Comm_t) 0x40)
246#define SC3_MPI_COMM_SELF ((sc3_MPI_Comm_t) 0x80)
249#define SC3_MPI_INFO_NULL ((sc3_MPI_Info_t) NULL)
253#ifndef SC_ENABLE_MPICOMMSHARED
267#define SC3_MPI_COMM_TYPE_SHARED MPI_COMM_TYPE_SHARED
284#define SC3_MPI_WIN_NULL ((sc3_MPI_Win_t) NULL)
286#ifndef SC_ENABLE_MPIWINSHARED
306#define SC3_MPI_LOCK_SHARED MPI_LOCK_SHARED
307#define SC3_MPI_LOCK_EXCLUSIVE MPI_LOCK_EXCLUSIVE
308#define SC3_MPI_MODE_NOCHECK MPI_MODE_NOCHECK
sc3_MPI_Op
We wrap the MPI operation types we use.
Definition: sc3_mpi_types.h:177
@ SC3_MPI_LXOR
Logical XOR.
Definition: sc3_mpi_types.h:185
@ SC3_MPI_MAX
The usual maximum reduction operation.
Definition: sc3_mpi_types.h:180
@ SC3_MPI_MAXLOC
Find maximum value and its rank.
Definition: sc3_mpi_types.h:182
@ SC3_MPI_PROD
The usual product reduction operation.
Definition: sc3_mpi_types.h:191
@ SC3_MPI_LAND
Logical AND.
Definition: sc3_mpi_types.h:184
@ SC3_MPI_OP_NULL
The invalid operation.
Definition: sc3_mpi_types.h:178
@ SC3_MPI_REPLACE
The MPI replace operation.
Definition: sc3_mpi_types.h:189
@ SC3_MPI_BOR
Bitwise OR.
Definition: sc3_mpi_types.h:186
@ SC3_MPI_LOR
Logical OR.
Definition: sc3_mpi_types.h:183
@ SC3_MPI_BXOR
Bitwise XOR.
Definition: sc3_mpi_types.h:188
@ SC3_MPI_SUM
The usual sum reduction operation.
Definition: sc3_mpi_types.h:190
@ SC3_MPI_BAND
Bitwise AND.
Definition: sc3_mpi_types.h:187
@ SC3_MPI_MINLOC
Find minimum value and its rank.
Definition: sc3_mpi_types.h:181
@ SC3_MPI_MIN
The usual minimum reduction operation.
Definition: sc3_mpi_types.h:179
enum sc3_MPI_Errorcode sc3_MPI_Errorcode_t
We wrap some MPI error codes and the I/O error classes.
struct sc3_MPI_Win * sc3_MPI_Win_t
We wrap the MPI 3 window object.
Definition: sc3_mpi_types.h:281
enum sc3_MPI_Op sc3_MPI_Op_t
We wrap the MPI operation types we use.
enum sc3_MPI_Comm_type sc3_MPI_Comm_type_t
We wrap MPI 3 shared memory communicators.
struct sc3_MPI_Info * sc3_MPI_Info_t
Wrapped MPI info object.
Definition: sc3_mpi_types.h:155
sc3_MPI_Win_mode
Wrap MPI 3 window lock modes.
Definition: sc3_mpi_types.h:294
@ SC3_MPI_LOCK_EXCLUSIVE
Exclusive (usually reader) lock.
Definition: sc3_mpi_types.h:296
@ SC3_MPI_MODE_NOCHECK
Option to MPI_Win_lock.
Definition: sc3_mpi_types.h:297
@ SC3_MPI_LOCK_SHARED
Shared (multiple readers) lock.
Definition: sc3_mpi_types.h:295
enum sc3_MPI_Enum sc3_MPI_Enum_t
We need several parameters to MPI functions.
sc3_MPI_Comm_type
We wrap MPI 3 shared memory communicators.
Definition: sc3_mpi_types.h:259
@ SC3_MPI_COMM_TYPE_SHARED
MPI 3 shared window communicator.
Definition: sc3_mpi_types.h:260
sc3_MPI_Datatype
We wrap the MPI datatypes we use.
Definition: sc3_mpi_types.h:159
@ SC3_MPI_DOUBLE
Same as in original MPI.
Definition: sc3_mpi_types.h:170
@ SC3_MPI_2INT
Same as in original MPI.
Definition: sc3_mpi_types.h:165
@ SC3_MPI_FLOAT
Same as in original MPI.
Definition: sc3_mpi_types.h:169
@ SC3_MPI_LONG
Same as in original MPI.
Definition: sc3_mpi_types.h:167
@ SC3_MPI_LONG_LONG
Same as in original MPI.
Definition: sc3_mpi_types.h:168
@ SC3_MPI_DATATYPE_NULL
The invalid data type.
Definition: sc3_mpi_types.h:160
@ SC3_MPI_BYTE
Same as in original MPI.
Definition: sc3_mpi_types.h:161
@ SC3_MPI_UNSIGNED
Same as in original MPI.
Definition: sc3_mpi_types.h:166
@ SC3_MPI_INT
Same as in original MPI.
Definition: sc3_mpi_types.h:164
@ SC3_MPI_DOUBLE_INT
Same as in original MPI.
Definition: sc3_mpi_types.h:171
sc3_MPI_Enum
We need several parameters to MPI functions.
Definition: sc3_mpi_types.h:228
@ SC3_MPI_UNDEFINED
An input parameter with undefined value.
Definition: sc3_mpi_types.h:229
struct sc3_MPI_Errhandler * sc3_MPI_Errhandler_t
Wrapped MPI error handler object.
Definition: sc3_mpi_types.h:147
enum sc3_MPI_Win_mode sc3_MPI_Win_mode_t
Wrap MPI 3 window lock modes.
sc3_MPI_Errorcode
We wrap some MPI error codes and the I/O error classes.
Definition: sc3_mpi_types.h:197
@ SC3_MPI_ERR_OTHER
An MPI function has produced some known error.
Definition: sc3_mpi_types.h:202
@ SC3_MPI_ERR_UNKNOWN
An MPI function has produced an unknown error.
Definition: sc3_mpi_types.h:201
@ SC3_MPI_ERR_NO_MEM
An MPI function ran out of memory.
Definition: sc3_mpi_types.h:203
@ SC3_MPI_SUCCESS
An MPI function has exited successfully.
Definition: sc3_mpi_types.h:199
@ SC3_MPI_ERR_ARG
An MPI function encountered invalid arguments.
Definition: sc3_mpi_types.h:200
long sc3_MPI_Aint_t
We wrap the MPI address integer type.
Definition: sc3_mpi_types.h:290
enum sc3_MPI_Datatype sc3_MPI_Datatype_t
We wrap the MPI datatypes we use.
struct sc3_MPI_Comm * sc3_MPI_Comm_t
Wrapped MPI communicator.
Definition: sc3_mpi_types.h:151