MAIA bb96820c
Multiphysics at AIA
Loading...
Searching...
No Matches
mpioverride.h
Go to the documentation of this file.
1// Copyright (C) 2024 The m-AIA AUTHORS
2//
3// This file is part of m-AIA (https://git.rwth-aachen.de/aia/m-AIA/m-AIA)
4//
5// SPDX-License-Identifier: LGPL-3.0-only
6
7#ifndef MAIA_MPI_OVERRIDE_H
8#define MAIA_MPI_OVERRIDE_H
9
10#include "mpi.h"
11
12/* MPI-Wrapper manual:
13 *
14 * The following wrapper functions serve the purpose to allow easier debugging
15 * of MPI code. They "wrap" around existing MPI routines, and catch potential
16 * errors returned by them. Furthermore, using the MAIA_MPI_DEBUG-option in
17 * CONFIG.H, they give insight about some information (function-dependent),
18 * such as where in the code the function was called, which variables where
19 * handed over, which communicator was it on, ...
20 *
21 * The current implementation covers all functions currently existing in the
22 * MAIA code (as of September 2019). Additionally, deprecated-calls to several other
23 * MPI-routines are implemented, such that whenever someone uses a new MPI
24 * function (that returns an error value or requires communication, i.e.
25 * not MPI_Wtime), this enforces the programmer to write a new wrapper function.
26 *
27 * In general, if you use a MPI function that has not yet been used before in the
28 * code, please also write a corresponding wrapper function and add an deprecated
29 * call if not yet existing. Some deprecated calls are only implemented at a
30 * random basis to cover most function classes without writing a deprecated call
31 * for every single function. Thus, if you e.g. use one-sided communication,
32 * encounter a deprecated call for MPI_Get, and also use several other new methods
33 * that do not have a deprecated call and/or wrapper function yet, please create
34 * the corresponding call and wrapper function as well.
35 *
36 * Therefore, you can find brief instructions here on how to to this:
37 *
38 * >> If you use a yet existing MPI function:
39 * Call the wrapper function in the code instead of the original one.
40 *
41 * >> If you use a MPI function, that has not been used before in MAIA:
42 * Most conveniently, copy an existing (if possible, similar) wrapper function
43 * in MPIOVERRIDE.CPP(i.e. if you implement Allgatherw, use Allgatherv etc.).
44 * The function call corresponds exactly to the original call, with a few extra
45 * variables:
46 * - every wrapper should have "const MString& name", which is handed over
47 * the "AT_"-macro
48 * - if data is transferred, you can hand over the variable names
49 * (as in varname, sndvarname, rcvvarname)
50 * - feel free to hand over additional information if you find it approbiate
51 * Now inside, make sure that the m_log-calls are adjusted to the new wrapper,
52 * call the original MPI function using the arguments received by the wrapper,
53 * and handle "result" according to the error values that can arise for the new
54 * function (online).
55 * Apart from the error values, use ONLY the OpenMPI-documentation as a reference,
56 * as different MPI implementations might handle some variables differently,
57 * and your code might not compile.
58 *
59 * Furthermore, make sure, that your new wrapper is declared in the following
60 * here in MPIOVERRIDE.H.
61 *
62 * At last, ensure, that you call only wrapper function in the code.
63 */
64
65
66// Communicator-related
67int MPI_Comm_create(MPI_Comm comm, MPI_Group group, MPI_Comm* newcomm, const MString& name, const MString& varname);
68int MPI_Comm_split(MPI_Comm comm, int color, int key, MPI_Comm* newcomm, const MString& name, const MString& varname);
69int MPI_Comm_free(MPI_Comm* comm, const MString& name, const MString& varname);
70int MPI_Comm_group(MPI_Comm comm, MPI_Group* group, const MString& name, const MString& varname);
71
72// Point-to-point communication
73int MPI_Send(const void* buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm, const MString& name,
74 const MString& varname);
75int MPI_Isend(const void* buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm, MPI_Request* request,
76 const MString& name, const MString& varname);
77int MPI_Issend(const void* buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm,
78 MPI_Request* request, const MString& name, const MString& varname);
79int MPI_Recv(void* buf, int count, MPI_Datatype datatype, int source, int tag, MPI_Comm comm, MPI_Status* status,
80 const MString& name, const MString& varname);
81int MPI_Irecv(void* buf, int count, MPI_Datatype datatype, int source, int tag, MPI_Comm comm, MPI_Request* request,
82 const MString& name, const MString& varname);
83int MPI_Send_init(const void* buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm,
84 MPI_Request* request, const MString& name, const MString& varname);
85int MPI_Recv_init(void* buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm, MPI_Request* request,
86 const MString& name, const MString& varname);
87
88// Wait - Test
89int MPI_Wait(MPI_Request* request, MPI_Status* status, const MString& name);
90int MPI_Waitall(int count, MPI_Request* request, MPI_Status* status, const MString& name);
91int MPI_Waitsome(int incount, MPI_Request array_of_requests[], int* outcount, int array_of_indices[],
92 MPI_Status array_of_statuses[], const MString& name);
93int MPI_Test(MPI_Request* request, int* flag, MPI_Status* status, const MString& name);
94
95// Collectives
96int MPI_Barrier(MPI_Comm comm, const MString& name);
97int MPI_Reduce(const void* sendbuf, void* recvbuf, int count, MPI_Datatype datatype, MPI_Op op, int root, MPI_Comm comm,
98 const MString& name, const MString& sndvarname, const MString& rcvvarname);
99int MPI_Allreduce(const void* sendbuf, void* recvbuf, int count, MPI_Datatype datatype, MPI_Op op, MPI_Comm comm,
100 const MString& name, const MString& sndvarname, const MString& rcvvarname);
101int MPI_Iallreduce(const void* sendbuf, void* recvbuf, int count, MPI_Datatype datatype, MPI_Op op, MPI_Comm comm,
102 MPI_Request* request, const MString& name, const MString& sndvarname, const MString& rcvvarname);
103int MPI_Scatter(const void* sendbuf, int sendcount, MPI_Datatype sendtype, void* recvbuf, int recvcount,
104 MPI_Datatype recvtype, int root, MPI_Comm comm, const MString& name, const MString& sndvarname,
105 const MString& rcvvarname);
106int MPI_Scatterv(const void* sendbuf, const int sendcount[], const int displs[], MPI_Datatype sendtype, void* recvbuf,
107 int recvcount, MPI_Datatype recvtype, int root, MPI_Comm comm, const MString& name,
108 const MString& sndvarname, const MString& rcvvarname);
109int MPI_Bcast(void* buffer, int count, MPI_Datatype datatype, int root, MPI_Comm comm, const MString& name,
110 const MString& varname);
111int MPI_Ibcast(void* buffer, int count, MPI_Datatype datatype, int root, MPI_Comm comm, MPI_Request* request,
112 const MString& name, const MString& varname);
113int MPI_Gather(const void* sendbuf, int sendcount, MPI_Datatype sendtype, void* recvbuf, int recvcount,
114 MPI_Datatype recvtype, int root, MPI_Comm comm, const MString& name, const MString& sndvarname,
115 const MString& rcvvarname);
116int MPI_Gatherv(const void* sendbuf, int sendcount, MPI_Datatype sendtype, void* recvbuf, const int recvcounts[],
117 const int displs[], MPI_Datatype recvtype, int root, MPI_Comm comm, const MString& name,
118 const MString& sndvarname, const MString& rcvvarname);
119int MPI_Allgather(const void* sendbuf, int sendcount, MPI_Datatype sendtype, void* recvbuf, int recvcount,
120 MPI_Datatype recvtype, MPI_Comm comm, const MString& name, const MString& sndvarname,
121 const MString& rcvvarname);
122int MPI_Allgatherv(const void* sendbuf, int sendcount, MPI_Datatype sendtype, void* recvbuf, const int recvcounts[],
123 const int displs[], MPI_Datatype recvtype, MPI_Comm comm, const MString& name,
124 const MString& sndvarname, const MString& rcvvarname);
125int MPI_Alltoall(const void* sendbuf, int sendcount, MPI_Datatype sendtype, void* recvbuf, int recvcount,
126 MPI_Datatype recvtype, MPI_Comm comm, const MString& name, const MString& sndvarname,
127 const MString& rcvvarname);
128int MPI_Alltoallv(const void* sendbuf, const int sendcounts[], const int sdispls[], MPI_Datatype sendtype,
129 void* recvbuf, const int recvcounts[], const int rdispls[], MPI_Datatype recvtype, MPI_Comm comm,
130 const MString& name, const MString& sndvarname, const MString& rcvvarname);
131int MPI_Exscan(const void* sendbuf, void* recvbuf, int count, MPI_Datatype datatype, MPI_Op op, MPI_Comm comm,
132 const MString& name, const MString& sndvarname, const MString& rcvvarname);
133
134// MPI Datatypes
135int MPI_Type_commit(MPI_Datatype* datatype, const MString& name);
136int MPI_Type_free(MPI_Datatype* datatype, const MString& name);
137int MPI_Type_create_hindexed(int count, const int array_of_solverlengths[], const MPI_Aint array_of_displacements[],
138 MPI_Datatype oldtype, MPI_Datatype* newtype, const MString& name);
139int MPI_Type_contiguous(int count, MPI_Datatype old_type, MPI_Datatype* new_type_p, const MString& name);
140
141// MPI Group
142int MPI_Group_incl(MPI_Group group, int n, const int ranks[], MPI_Group* newgroup, const MString& name);
143int MPI_Group_free(MPI_Group* group, const MString& name);
144
145
146// MISC
147int MPI_Start(MPI_Request* request, const MString& name);
148int MPI_Startall(int count, MPI_Request array_of_requests[], const MString& name);
149int MPI_Get_count(const MPI_Status* status, MPI_Datatype datatype, int* count, const MString& name);
150int MPI_Get_address(const void* location, MPI_Aint* address, const MString& name);
151int MPI_Abort(MPI_Comm comm, int errorcode, const MString& name);
152int MPI_Request_free(MPI_Request* request, const MString& name);
153int MPI_Cancel(MPI_Request* request, const MString& name);
154int MPI_Probe(int source, int tag, MPI_Comm comm, MPI_Status* status, const MString& name);
155int MPI_Iprobe(int source, int tag, MPI_Comm comm, int* flag, MPI_Status* status, const MString& name);
156
157// MPI Info
158int MPI_Info_create(MPI_Info* info, const MString& name);
159int MPI_Info_free(MPI_Info* info, const MString& name);
160int MPI_Info_get(MPI_Info info, const char* key, int valuelen, char* value, int* flag, const MString& name);
161int MPI_Info_get_nthkey(MPI_Info info, int n, char* key, const MString& name);
162int MPI_Info_get_nkeys(MPI_Info info, int* nkeys, const MString& name);
163int MPI_Info_get_valuelen(MPI_Info info, const char* key, int* valuelen, int* flag, const MString& name);
164
165// MPI File
166int MPI_File_open(MPI_Comm comm, const char* filename, int amode, MPI_Info info, MPI_File* mpi_fh, const MString& name);
167int MPI_File_seek(MPI_File mpi_fh, MPI_Offset offset, int whence, const MString& name);
168int MPI_File_close(MPI_File* mpi_fh, const MString& name);
169int MPI_File_write_shared(MPI_File mpi_fh, const void* buf, int count, MPI_Datatype datatype, MPI_Status* status,
170 const MString& name);
171int MPI_File_iwrite_shared(MPI_File mpi_fh, const void* buf, int count, MPI_Datatype datatype, MPI_Request* request,
172 const MString& name);
173
174
175#if defined(MAIA_GCC_COMPILER)
176//-- GNU
177#pragma GCC diagnostic push
178#pragma GCC diagnostic ignored "-Wredundant-decls"
179//-- CLANG
180#elif defined(MAIA_CLANG_COMPILER)
181#pragma clang diagnostic push
182#pragma clang diagnostic ignored "-Wc++14-extensions"
183#endif
184
185// Do not mark MPI functions deprecated for paraview plugin
186#ifndef PVPLUGIN
187#if defined(MAIA_GCC_COMPILER) || defined(MAIA_CLANG_COMPILER)
188// Mark all native MPI function calls as deprecated to allow only the use of the MPI wrapper
189// functions taking additional arguments to allow easier debugging and error checking.
190// The deprecated keyword only works with the GCC and CLANG compiler
191
192// Communicators
193[[deprecated("Use the wrapper MPI_Comm_create(..., AT_, <communicatorName>) instead!")]] int
194MPI_Comm_create(MPI_Comm comm, MPI_Group group, MPI_Comm* newcomm);
195
196[[deprecated("Use the wrapper MPI_Comm_split(..., AT_, <communicatorName>) instead!")]] int
197MPI_Comm_split(MPI_Comm comm, int color, int key, MPI_Comm* newcomm);
198
199[[deprecated("Use the wrapper MPI_Comm_free(..., AT_, <communicatorName>) instead!")]] int
200MPI_Comm_free(MPI_Comm* comm);
201
202[[deprecated("Use the wrapper MPI_Comm_group(..., AT_, <communicatorName>) instead!")]] int
203MPI_Comm_group(MPI_Comm comm, MPI_Group* group);
204
205[[deprecated("Use the wrapper MPI_Comm_split_type(..., AT_, <...>) instead!")]] int
206MPI_Comm_split_type(MPI_Comm comm, int split_type, int key, MPI_Info info, MPI_Comm* newcomm);
207
208[[deprecated("Use the wrapper MPI_Comm_accept(..., AT_) instead!")]] int
209MPI_Comm_accept(const char* port_name, MPI_Info info, int root, MPI_Comm comm, MPI_Comm* newcomm);
210
211[[deprecated("Use the wrapper MPI_Comm_call_errhandler(..., AT_) instead!")]] int
212MPI_Comm_call_errhandler(MPI_Comm comm, int errorcode);
213
214[[deprecated("Use the wrapper MPI_Comm_compare(..., AT_) instead!")]] int MPI_Comm_compare(MPI_Comm comm1,
215 MPI_Comm comm2, int* result);
216
217[[deprecated("Use the wrapper MPI_Comm_connect(..., AT_) instead!")]] int
218MPI_Comm_connect(const char* port_name, MPI_Info info, int root, MPI_Comm comm, MPI_Comm* newcomm);
219
220[[deprecated("Use the wrapper MPI_Comm_create_errhandler(..., AT_) instead!")]] int
221MPI_Comm_create_errhandler(MPI_Comm_errhandler_function* function, MPI_Errhandler* errhandler);
222
223[[deprecated("Use the wrapper MPI_Comm_create_group(..., AT_) instead!")]] int
224MPI_Comm_create_group(MPI_Comm comm, MPI_Group group, int tag, MPI_Comm* newcomm);
225
226[[deprecated("Use the wrapper MPI_Comm_create_keyval(..., AT_) instead!")]] int
227MPI_Comm_create_keyval(MPI_Comm_copy_attr_function* comm_copy_attr_fn,
228 MPI_Comm_delete_attr_function* comm_delete_attr_fn, int* comm_keyval, void* extra_state);
229
230[[deprecated("Use the wrapper MPI_Comm_disconnect(..., AT_) instead!")]] int MPI_Comm_disconnect(MPI_Comm* comm);
231
232[[deprecated("Use the wrapper MPI_Comm_remote_group(..., AT_) instead!")]] int MPI_Comm_remote_group(MPI_Comm comm,
233 MPI_Group* group);
234
235[[deprecated("Use the wrapper MPI_Comm_remote_size(..., AT_) instead!")]] int MPI_Comm_remote_size(MPI_Comm comm,
236 int* size);
237
238// Point-to-point communication
239[[deprecated("Use the wrapper MPI_Send(..., AT_) instead!")]] int MPI_Send(void* buf, int count, MPI_Datatype datatype,
240 int dest, int tag, MPI_Comm comm);
241
242[[deprecated("Use the wrapper MPI_Ssend(..., AT_) instead!")]] int
243MPI_Ssend(const void* buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm);
244
245[[deprecated("Use the wrapper MPI_Ssend_init(..., AT_) instead!")]] int MPI_Ssend_init(const void* buf, int count,
246 MPI_Datatype datatype, int dest,
247 int tag, MPI_Comm comm,
248 MPI_Request* request);
249
250[[deprecated("Use the wrapper MPI_Isend(..., AT_) instead!")]] int
251MPI_Isend(const void* buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm, MPI_Request* request);
252
253[[deprecated("Use the wrapper MPI_Issend(..., AT_) instead!")]] int
254MPI_Issend(void* buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm, MPI_Request* request);
255
256[[deprecated("Use the wrapper MPI_Recv(..., AT_) instead!")]] int
257MPI_Recv(void* buf, int count, MPI_Datatype datatype, int source, int tag, MPI_Comm comm, MPI_Status* status);
258
259[[deprecated("Use the wrapper MPI_Irecv(..., AT_) instead!")]] int
260MPI_Irecv(void* buf, int count, MPI_Datatype datatype, int source, int tag, MPI_Comm comm, MPI_Request* request);
261
262[[deprecated("Use the wrapper MPI_Send_init(..., AT_) instead!")]] int
263MPI_Send_init(void* buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm, MPI_Request* request);
264
265[[deprecated("Use the wrapper MPI_Recv_init(..., AT_) instead!")]] int
266MPI_Recv_init(void* buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm, MPI_Request* request);
267
268[[deprecated("Use the wrapper MPI_Sendrecv(..., AT_) instead!")]] int
269MPI_Sendrecv(const void* sendbuf, int sendcount, MPI_Datatype sendtype, int dest, int sendtag, void* recvbuf,
270 int recvcount, MPI_Datatype recvtype, int source, int recvtag, MPI_Comm comm, MPI_Status* status);
271
272[[deprecated("Use the wrapper MPI_Sendrecv_replace(..., AT_) instead!")]] int
273MPI_Sendrecv_replace(void* buf, int count, MPI_Datatype datatype, int dest, int sendtag, int source, int recvtag,
274 MPI_Comm comm, MPI_Status* status);
275
276[[deprecated("Use the wrapper MPI_Bsend(..., AT_) instead!")]] int
277MPI_Bsend(const void* buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm);
278
279[[deprecated("Use the wrapper MPI_Ibsend(..., AT_) instead!")]] int
280MPI_Ibsend(const void* buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm, MPI_Request* request);
281
282[[deprecated("Use the wrapper MPI_Bsend_init(..., AT_) instead!")]] int MPI_Bsend_init(const void* buf, int count,
283 MPI_Datatype datatype, int dest,
284 int tag, MPI_Comm comm,
285 MPI_Request* request);
286
287[[deprecated("Use the wrapper MPI_Mrecv(..., AT_, <name of sendbuf>, <name of recvbuf>) instead!")]] int
288MPI_Mrecv(void* buf, int count, MPI_Datatype type, MPI_Message* message, MPI_Status* status);
289
290[[deprecated("Use the wrapper MPI_Imrecv(..., AT_, <name of sendbuf>, <name of recvbuf>) instead!")]] int
291MPI_Imrecv(void* buf, int count, MPI_Datatype type, MPI_Message* message, MPI_Request* request);
292
293[[deprecated("Use the wrapper MPI_Rsend(..., AT_) instead!")]] int
294MPI_Rsend(const void* buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm);
295
296
297// Wait - Test
298[[deprecated("Use the wrapper MPI_Wait(..., AT_) instead!")]] int MPI_Wait(MPI_Request* request, MPI_Status* status);
299
300[[deprecated("Use the wrapper MPI_Waitall(..., AT_) instead!")]] int MPI_Waitall(int count, MPI_Request* request,
301 MPI_Status* status);
302
303[[deprecated("Use the wrapper MPI_Waitsome(..., AT_) instead!")]] int
304MPI_Waitsome(int incount, MPI_Request array_of_requests[], int* outcount, int array_of_indices[],
305 MPI_Status array_of_statuses[]);
306
307[[deprecated("Use the wrapper MPI_Waitany(..., AT_) instead!")]] int
308MPI_Waitany(int count, MPI_Request array_of_requests[], int* index, MPI_Status* status);
309
310[[deprecated("Use the wrapper MPI_Test(..., AT_) instead!")]] int MPI_Test(MPI_Request* request, int* flag,
311 MPI_Status* status);
312
313[[deprecated("Use the wrapper MPI_Test_cancelled(..., AT_) instead!")]] int MPI_Test_cancelled(const MPI_Status* status,
314 int* flag);
315
316[[deprecated("Use the wrapper MPI_Testany(..., AT_) instead!")]] int
317MPI_Testany(int count, MPI_Request array_of_requests[], int* index, int* flag, MPI_Status* status);
318
319[[deprecated("Use the wrapper MPI_Testall(..., AT_) instead!")]] int
320MPI_Testall(int count, MPI_Request array_of_requests[], int* flag, MPI_Status array_of_statuses[]);
321
322[[deprecated("Use the wrapper MPI_Testsome(..., AT_) instead!")]] int
323MPI_Testsome(int incount, MPI_Request array_of_requests[], int* outcount, int array_of_indices[],
324 MPI_Status array_of_statuses[]);
325
326
327// Collectives
328[[deprecated("Use the wrapper MPI_Barrier(..., AT_) instead!")]] int MPI_Barrier(MPI_Comm comm);
329
330[[deprecated("Use the wrapper MPI_Ibarrier(..., AT_) instead!")]] int MPI_Ibarrier(MPI_Comm comm, MPI_Request* request);
331
332[[deprecated("Use the wrapper MPI_Reduce(..., AT_, <name off sendbuf>, <name of recvbuf>) instead!")]] int
333MPI_Reduce(const void* sendbuf, void* recvbuf, int count, MPI_Datatype datatype, MPI_Op op, int root, MPI_Comm comm);
334
335[[deprecated("Use the wrapper MPI_Reduce_local(..., AT_, <name of sendbuf>, <name of recvbuf>) instead!")]] int
336MPI_Reduce_local(const void* inbuf, void* inoutbuf, int count, MPI_Datatype datatype, MPI_Op op);
337
338[[deprecated("Use the wrapper MPI_Reduce_scatter(..., AT_, <name of sendbuf>, <name of recvbuf>) instead!")]] int
339MPI_Reduce_scatter(const void* sendbuf, void* recvbuf, const int recvcounts[], MPI_Datatype datatype, MPI_Op op,
340 MPI_Comm comm);
341
342[[deprecated("Use the wrapper MPI_Ireduce(..., AT_, <name of sendbuf>, <name of recvbuf>) instead!")]] int
343MPI_Ireduce(const void* sendbuf, void* recvbuf, int count, MPI_Datatype datatype, MPI_Op op, int root, MPI_Comm comm,
344 MPI_Request* request);
345
346[[deprecated("Use the wrapper MPI_Ireduce_scatter(..., AT_, <name of sendbuf>, <name of recvbuf>) instead!")]] int
347MPI_Ireduce_scatter(const void* sendbuf, void* recvbuf, const int recvcounts[], MPI_Datatype datatype, MPI_Op op,
348 MPI_Comm comm, MPI_Request* request);
349
350[[deprecated("Use the wrapper MPI_Allreduce(..., AT_, <name off sendbuf>, <name of recvbuf>) instead!")]] int
351MPI_Allreduce(const void* sendbuf, void* recvbuf, int count, MPI_Datatype datatype, MPI_Op op, MPI_Comm comm);
352
353[[deprecated("Use the wrapper MPI_Iallreduce(..., AT_, <name off sendbuf>, <name of recvbuf>) instead!")]] int
354MPI_Iallreduce(const void* sendbuf, void* recvbuf, int count, MPI_Datatype datatype, MPI_Op op, MPI_Comm comm,
355 MPI_Request* request);
356
357[[deprecated("Use the wrapper MPI_Scatter(..., AT_, <name off sendbuf>, <name of recvbuf>) instead!")]] int
358MPI_Scatter(const void* sendbuf, int sendcount, MPI_Datatype sendtype, void* recvbuf, int recvcount,
359 MPI_Datatype recvtype, int root, MPI_Comm comm);
360
361[[deprecated("Use the wrapper MPI_Scatterv(..., AT_, <name of sendbuf>, <name of recvbuf>) instead!")]] int
362MPI_Scatterv(const void* sendbuf, const int sendcounts[], const int displs[], MPI_Datatype sendtype, void* recvbuf,
363 int recvcount, MPI_Datatype recvtype, int root, MPI_Comm comm);
364
365[[deprecated("Use the wrapper MPI_Iscatter(..., AT_, <name of sendbuf>, <name of recvbuf>) instead!")]] int
366MPI_Iscatter(const void* sendbuf, int sendcount, MPI_Datatype sendtype, void* recvbuf, int recvcount,
367 MPI_Datatype recvtype, int root, MPI_Comm comm, MPI_Request* request);
368
369[[deprecated("Use the wrapper MPI_Iscatterv(..., AT_, <name of sendbuf>, <name of recvbuf>) instead!")]] int
370MPI_Iscatterv(const void* sendbuf, const int sendcounts[], const int displs[], MPI_Datatype sendtype, void* recvbuf,
371 int recvcount, MPI_Datatype recvtype, int root, MPI_Comm comm, MPI_Request* request);
372
373[[deprecated("Use the wrapper MPI_Reduce_scatter_solver(..., AT_, <name of sendbuf>, <name of recvbuf>) instead!")]] int
374MPI_Reduce_scatter_solver(const void* sendbuf, void* recvbuf, int recvcount, MPI_Datatype datatype, MPI_Op op,
375 MPI_Comm comm);
376
377[[deprecated(
378 "Use the wrapper MPI_Ireduce_scatter_solver(..., AT_, <name of sendbuf>, <name of recvbuf>) instead!")]] int
379MPI_Ireduce_scatter_solver(const void* sendbuf, void* recvbuf, int recvcount, MPI_Datatype datatype, MPI_Op op,
380 MPI_Comm comm, MPI_Request* request);
381
382[[deprecated("Use the wrapper MPI_Bcast(..., AT_, <name of buffer>) instead!")]] int
383MPI_Bcast(void* buffer, int count, MPI_Datatype datatype, int root, MPI_Comm comm);
384
385[[deprecated("Use the wrapper MPI_Ibcast(..., AT_, <name of buffer>) instead!")]] int
386MPI_Ibcast(void* buffer, int count, MPI_Datatype datatype, int root, MPI_Comm comm, MPI_Request* request);
387
388[[deprecated("Use the wrapper MPI_Gather(..., AT_, <name off sendbuf>, <name of recvbuf>) instead!")]] int
389MPI_Gather(const void* sendbuf, int sendcount, MPI_Datatype sendtype, void* recvbuf, int recvcount,
390 MPI_Datatype recvtype, int root, MPI_Comm comm);
391
392[[deprecated("Use the wrapper MPI_Igather(..., AT_, <name off sendbuf>, <name of recvbuf>) instead!")]] int
393MPI_Igather(const void* sendbuf, int sendcount, MPI_Datatype sendtype, void* recvbuf, int recvcount,
394 MPI_Datatype recvtype, int root, MPI_Comm comm, MPI_Request* request);
395
396[[deprecated("Use the wrapper MPI_Gatherv(..., AT_, <name off sendbuf>, <name of recvbuf>) instead!")]] int
397MPI_Gatherv(const void* sendbuf, int sendcount, MPI_Datatype sendtype, void* recvbuf, const int recvcounts[],
398 const int displs[], MPI_Datatype recvtype, int root, MPI_Comm comm);
399
400[[deprecated("Use the wrapper MPI_Gatherv(..., AT_, <name off sendbuf>, <name of recvbuf>) instead!")]] int
401MPI_Igatherv(const void* sendbuf, int sendcount, MPI_Datatype sendtype, void* recvbuf, const int recvcounts[],
402 const int displs[], MPI_Datatype recvtype, int root, MPI_Comm comm, MPI_Request* request);
403
404[[deprecated("Use the wrapper MPI_Allgather(..., AT_, <name off sendbuf>, <name of recvbuf>) instead!")]] int
405MPI_Allgather(const void* sendbuf, int sendcount, MPI_Datatype sendtype, void* recvbuf, int recvcount,
406 MPI_Datatype recvtype, MPI_Comm comm);
407
408[[deprecated("Use the wrapper MPI_Iallgather(..., AT_, <name of sendbuf>, <name of recvbuf>) instead!")]] int
409MPI_Iallgather(const void* sendbuf, int sendcount, MPI_Datatype sendtype, void* recvbuf, int recvcount,
410 MPI_Datatype recvtype, MPI_Comm comm, MPI_Request* request);
411
412[[deprecated("Use the wrapper MPI_Allgatherv(..., AT_, <name of sendbuf>, <name of recvbuf>) instead!")]] int
413MPI_Allgatherv(const void* sendbuf, int sendcount, MPI_Datatype sendtype, void* recvbuf, const int recvcounts[],
414 const int displs[], MPI_Datatype recvtype, MPI_Comm comm);
415
416[[deprecated("Use the wrapper MPI_Iallgatherv(..., AT_, <name of sendbuf>, <name of recvbuf>) instead!")]] int
417MPI_Iallgatherv(const void* sendbuf, int sendcount, MPI_Datatype sendtype, void* recvbuf, const int recvcounts[],
418 const int displs[], MPI_Datatype recvtype, MPI_Comm comm, MPI_Request* request);
419
420
421[[deprecated("Use the wrapper MPI_Alltoall(..., AT_, <name of sendbuf>, <name of recvbuf>) instead!")]] int
422MPI_Alltoall(const void* sendbuf, int sendcount, MPI_Datatype sendtype, void* recvbuf, int recvcount,
423 MPI_Datatype recvtype, MPI_Comm comm);
424
425[[deprecated("Use the wrapper MPI_Ialltoall(..., AT_, <name of sendbuf>, <name of recvbuf>) instead!")]] int
426MPI_Ialltoall(const void* sendbuf, int sendcount, MPI_Datatype sendtype, void* recvbuf, int recvcount,
427 MPI_Datatype recvtype, MPI_Comm comm, MPI_Request* request);
428
429[[deprecated("Use the wrapper MPI_Alltoallv(..., AT_, <name of sendbuf>, <name of recvbuf>) instead!")]] int
430MPI_Alltoallv(const void* sendbuf, const int sendcounts[], const int sdispls[], MPI_Datatype sendtype, void* recvbuf,
431 const int recvcounts[], const int rdispls[], MPI_Datatype recvtype, MPI_Comm comm);
432
433[[deprecated("Use the wrapper MPI_Ialltoallv(..., AT_, <name of sendbuf>, <name of recvbuf>) instead!")]] int
434MPI_Ialltoallv(const void* sendbuf, const int sendcounts[], const int sdispls[], MPI_Datatype sendtype, void* recvbuf,
435 const int recvcounts[], const int rdispls[], MPI_Datatype recvtype, MPI_Comm comm, MPI_Request* request);
436
437[[deprecated("Use the wrapper MPI_Alltoallw(..., AT_, <name of sendbuf>, <name of recvbuf>) instead!")]] int
438MPI_Alltoallw(const void* sendbuf, const int sendcounts[], const int sdispls[], const MPI_Datatype sendtypes[],
439 void* recvbuf, const int recvcounts[], const int rdispls[], const MPI_Datatype recvtypes[],
440 MPI_Comm comm);
441
442[[deprecated("Use the wrapper MPI_Ialltoallw(..., AT_, <name of sendbuf>, <name of recvbuf>) instead!")]] int
443MPI_Ialltoallw(const void* sendbuf, const int sendcounts[], const int sdispls[], const MPI_Datatype sendtypes[],
444 void* recvbuf, const int recvcounts[], const int rdispls[], const MPI_Datatype recvtypes[],
445 MPI_Comm comm, MPI_Request* request);
446
447[[deprecated("Use the wrapper MPI_Scan(..., AT_, <name of sendbuf>, <name of recvbuf>) instead!")]] int
448MPI_Scan(const void* sendbuf, void* recvbuf, int count, MPI_Datatype datatype, MPI_Op op, MPI_Comm comm);
449
450[[deprecated("Use the wrapper Iscan(..., AT_, <name of sendbuf>, <name of recvbuf>) instead!")]] int
451MPI_Iscan(const void* sendbuf, void* recvbuf, int count, MPI_Datatype datatype, MPI_Op op, MPI_Comm comm,
452 MPI_Request* request);
453
454[[deprecated("Use the wrapper MPI_Exscan(..., AT_, <name off sendbuf>, <name of recvbuf>) instead!")]] int
455MPI_Exscan(const void* sendbuf, void* recvbuf, int count, MPI_Datatype datatype, MPI_Op op, MPI_Comm comm);
456
457
458[[deprecated("Use the wrapper MPI_Neighbor_allgather(..., AT_, <name of sendbuf>, <name of recvbuf>) instead!")]] int
459MPI_Neighbor_allgather(const void* sendbuf, int sendcount, MPI_Datatype sendtype, void* recvbuf, int recvcount,
460 MPI_Datatype recvtype, MPI_Comm comm);
461
462[[deprecated("Use the wrapper MPIX_Allgather_init(..., AT_, <name of sendbuf>, <name of recvbuf>) instead!")]] int
463MPIX_Allgather_init(const void* sendbuf, int sendcount, MPI_Datatype sendtype, void* recvbuf, int recvcount,
464 MPI_Datatype recvtype, MPI_Comm comm, MPI_Info info, MPI_Request* request);
465
466
467// MPI Datatypes
468[[deprecated("Use the wrapper MPI_Type_commit(..., AT_) instead!")]] int MPI_Type_commit(MPI_Datatype* datatype);
469
470[[deprecated("Use the wrapper MPI_Type_free(..., AT_) instead!")]] int MPI_Type_free(MPI_Datatype* datatype);
471
472[[deprecated("Use the wrapper MPI_Type_create_hindexed(..., AT_) instead!")]] int
473MPI_Type_create_hindexed(int count, const int array_of_solverlengths[], const MPI_Aint array_of_displacements[],
474 MPI_Datatype oldtype, MPI_Datatype* newtype);
475
476[[deprecated("Use the wrapper MPI_Type_contiguous(..., AT_) instead!")]] int
477MPI_Type_contiguous(int count, MPI_Datatype old_type, MPI_Datatype* new_type_p);
478
479[[deprecated("Use the wrapper MPI_Type_commit(..., AT_) instead!")]] int MPI_Type_commit(MPI_Datatype* datatype);
480
481[[deprecated("Use the wrapper MPI_Type_vector(..., AT_) instead!")]] int
482MPI_Type_vector(int count, int solverlength, int stride, MPI_Datatype oldtype, MPI_Datatype* newtype);
483
484[[deprecated("Use the wrapper MPI_Type_struct(..., AT_) instead!")]] int
485MPI_Type_struct(int count, int* array_of_solverlengths, MPI_Aint* array_of_displacements, MPI_Datatype* array_of_types,
486 MPI_Datatype* newtype);
487
488[[deprecated("Use the wrapper MPI_Type_create_hvector(..., AT_) instead!")]] int
489MPI_Type_create_hvector(int count, int solverlength, MPI_Aint stride, MPI_Datatype oldtype, MPI_Datatype* newtype);
490
491[[deprecated("Use the wrapper MPI_Type_create_darray(..., AT_) instead!")]] int
492MPI_Type_create_darray(int size, int rank, int ndims, const int array_of_gsizes[], const int array_of_distribs[],
493 const int array_of_dargs[], const int array_of_psizes[], int order, MPI_Datatype oldtype,
494 MPI_Datatype* newtype);
495
496[[deprecated("Use the wrapper MPI_Type_create_hindexed(..., AT_) instead!")]] int
497MPI_Type_create_indexed_solver(int count, int solverlength, const int array_of_displacements[], MPI_Datatype oldtype,
498 MPI_Datatype* newtype);
499
500[[deprecated("Use the wrapper MPI_Type_set_name(..., AT_, <...>) instead!")]] int
501MPI_Type_set_name(MPI_Datatype type, const char* type_name);
502
503
504// MPI Group
505[[deprecated("Use the wrapper MPI_Group_incl(..., AT_) instead!")]] int
506MPI_Group_incl(MPI_Group group, int n, const int ranks[], MPI_Group* newgroup);
507
508[[deprecated("Use the wrapper MPI_Group_free(..., AT_) instead!")]] int MPI_Group_free(MPI_Group* group);
509
510[[deprecated("Use the wrapper MPI_Group_compare(..., AT_) instead!")]] int
511MPI_Group_compare(MPI_Group group1, MPI_Group group2, int* result);
512
513[[deprecated("Use the wrapper MPI_Group_excl(..., AT_) instead!")]] int
514MPI_Group_excl(MPI_Group group, int n, const int ranks[], MPI_Group* newgroup);
515
516[[deprecated("Use the wrapper MPI_Group_difference(..., AT_) instead!")]] int
517MPI_Group_difference(MPI_Group group1, MPI_Group group2, MPI_Group* newgroup);
518
519[[deprecated("Use the wrapper MPI_Group_intersection(..., AT_) instead!")]] int
520MPI_Group_intersection(MPI_Group group1, MPI_Group group2, MPI_Group* newgroup);
521
522[[deprecated("Use the wrapper MPI_Group_range_excl(..., AT_) instead!")]] int
523MPI_Group_range_excl(MPI_Group group, int n, int ranges[][3], MPI_Group* newgroup);
524
525[[deprecated("Use the wrapper MPI_Group_range_incl(..., AT_) instead!")]] int
526MPI_Group_range_incl(MPI_Group group, int n, int ranges[][3], MPI_Group* newgroup);
527
528[[deprecated("Use the wrapper MPI_Group_rank(..., AT_) instead!")]] int MPI_Group_rank(MPI_Group group, int* rank);
529
530[[deprecated("Use the wrapper MPI_Group_size(..., AT_) instead!")]] int MPI_Group_size(MPI_Group group, int* size);
531
532[[deprecated("Use the wrapper MPI_Group_union(..., AT_) instead!")]] int
533MPI_Group_union(MPI_Group group1, MPI_Group group2, MPI_Group* newgroup);
534
535// MISC
536[[deprecated("Use the wrapper MPI_Start(..., AT_) instead!")]] int MPI_Start(MPI_Request* request);
537
538[[deprecated("Use the wrapper MPI_Startall(..., AT_) instead!")]] int MPI_Startall(int count,
539 MPI_Request array_of_requests[]);
540
541[[deprecated("Use the wrapper MPI_Get_count(..., AT_) instead!")]] int MPI_Get_count(const MPI_Status* status,
542 MPI_Datatype datatype, int* count);
543
544[[deprecated("Use the wrapper MPI_Get_address(..., AT_) instead!")]] int MPI_Get_address(const void* location,
545 MPI_Aint* address);
546
547[[deprecated("Use the wrapper MPI_Abort(..., AT_) instead!")]] int MPI_Abort(MPI_Comm comm, int errorcode);
548
549[[deprecated("Use the wrapper MPI_Status_set_cancelled(..., AT_, <...>) instead!")]] int
550MPI_Status_set_cancelled(MPI_Status* status, int flag);
551
552[[deprecated("Use the wrapper MPI_Alloc_mem(..., AT_, <...>) instead!")]] int
553MPI_Alloc_mem(MPI_Aint size, MPI_Info info, void* baseptr);
554
555[[deprecated("Use the wrapper MPI_Op_create(..., AT_, <...>) instead!")]] int MPI_Op_create(MPI_User_function* function,
556 int commute, MPI_Op* op);
557
558[[deprecated("Use the wrapper MPI_Op_commutative(..., AT_, <...>) instead!")]] int MPI_Op_commutative(MPI_Op op,
559 int* commute);
560
561[[deprecated("Use the wrapper MPI_MPI_Op_free(..., AT_, <...>) instead!")]] int MPI_Op_free(MPI_Op* op);
562
563[[deprecated("Use the wrapper MPI_Compare_and_swap(..., AT_, <...>) instead!")]] int
564MPI_Compare_and_swap(const void* origin_addr, const void* compare_addr, void* result_addr, MPI_Datatype datatype,
565 int target_rank, MPI_Aint target_disp, MPI_Win win);
566
567[[deprecated("Use the wrapper MPI_Probe(..., AT_, <...>) instead!")]] int MPI_Probe(int source, int tag, MPI_Comm comm,
568 MPI_Status* status);
569
570[[deprecated("Use the wrapper MPI_Request_get_status(..., AT_, <name of sendbuf>, <name of recvbuf>) instead!")]] int
571MPI_Request_get_status(MPI_Request request, int* flag, MPI_Status* status);
572
573[[deprecated("Use the wrapper MPI_Request_free(..., AT_, <name of sendbuf>, <name of recvbuf>) instead!")]] int
574MPI_Request_free(MPI_Request* request);
575
576[[deprecated("Use the wrapper MPI_Cancel(..., AT_, <name of sendbuf>, <name of recvbuf>) instead!")]] int
577MPI_Cancel(MPI_Request* request);
578
579
580// MPI Info
581[[deprecated("Use the wrapper MPI_Info_create(..., AT_) instead!")]] int MPI_Info_create(MPI_Info* info);
582
583[[deprecated("Use the wrapper MPI_Info_free(..., AT_) instead!")]] int MPI_Info_free(MPI_Info* info);
584
585[[deprecated("Use the wrapper MPI_Info_get(..., AT_) instead!")]] int
586MPI_Info_get(MPI_Info info, char* key, int valuelen, char* value, int* flag);
587
588[[deprecated("Use the wrapper MPI_Info_nthkey(..., AT_) instead!")]] int MPI_Info_get_nthkey(MPI_Info info, int n,
589 char* key);
590
591[[deprecated("Use the wrapper MPI_Info_nkeys(..., AT_) instead!")]] int MPI_Info_get_nkeys(MPI_Info info, int* nkeys);
592
593[[deprecated("Use the wrapper MPI_Info_valuelen(..., AT_) instead!")]] int
594MPI_Info_get_valuelen(MPI_Info info, const char* key, int* valuelen, int* flag);
595
596// MPI File
597[[deprecated("Use the wrapper MPI_File_open(..., AT_) instead!")]] int
598MPI_File_open(MPI_Comm comm, char* filename, int amode, MPI_Info info, MPI_File* mpi_fh);
599
600
601[[deprecated("Use the wrapper MPI_File_seek(..., AT_) instead!")]] int MPI_File_seek(MPI_File mpi_fh, MPI_Offset offset,
602 int whence);
603
604[[deprecated("Use the wrapper MPI_File_close(..., AT_) instead!")]] int MPI_File_close(MPI_File* mpi_fh);
605
606[[deprecated("Use the wrapper MPI_File_write_shared(..., AT_) instead!")]] int
607MPI_File_write_shared(MPI_File mpi_fh, const void* buf, int count, MPI_Datatype datatype, MPI_Status* status);
608
609[[deprecated("Use the wrapper MPI_File_iwrite_shared(..., AT_) instead!")]] int
610MPI_File_iwrite_shared(MPI_File mpi_fh, const void* buf, int count, MPI_Datatype datatype, MPI_Request* request);
611
612// Topologies
613[[deprecated("Use the wrapper MPI_Cart_coords(..., AT_, <...>) instead!")]] int
614MPI_Cart_coords(MPI_Comm comm, int rank, int maxdims, int coords[]);
615
616[[deprecated("Use the wrapper MPI_Cart_create(..., AT_, <...>) instead!")]] int
617MPI_Cart_create(MPI_Comm comm_old, int ndims, const int dims[], const int periods[], int reorder, MPI_Comm* comm_cart);
618
619[[deprecated("Use the wrapper MPI_Graph_create(..., AT_, <...>) instead!")]] int
620MPI_Graph_create(MPI_Comm comm_old, int nnodes, const int index[], const int edges[], int reorder,
621 MPI_Comm* comm_graph);
622
623// One-sided communication
624[[deprecated("Use the wrapper MPI_Win_fence(..., AT_, <...>) instead!")]] int MPI_Win_fence(int assert, MPI_Win win);
625
626[[deprecated("Use the wrapper MPI_Put(..., AT_, <name of sendbuf>, <name of recvbuf>) instead!")]] int
627MPI_Put(const void* origin_addr, int origin_count, MPI_Datatype origin_datatype, int target_rank, MPI_Aint target_disp,
628 int target_count, MPI_Datatype target_datatype, MPI_Win win);
629
630[[deprecated("Use the wrapper MPI_Accumulate(..., AT_, <...>) instead!")]] int
631MPI_Accumulate(const void* origin_addr, int origin_count, MPI_Datatype origin_datatype, int target_rank,
632 MPI_Aint target_disp, int target_count, MPI_Datatype target_datatype, MPI_Op op, MPI_Win win);
633
634#endif
635#endif
636
637#if defined(MAIA_GCC_COMPILER)
638#pragma GCC diagnostic pop
639#elif defined(MAIA_CLANG_COMPILER)
640#pragma clang diagnostic pop
641#endif
642
643#endif
const MString const MString & message
Definition: functions.h:37
const MString & location
Definition: functions.h:37
std::basic_string< char > MString
Definition: maiatypes.h:55
int MPI_Op_free(MPI_Op *op)
int MPI_Rsend(const void *buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm)
int MPI_Recv(void *buf, int count, MPI_Datatype datatype, int source, int tag, MPI_Comm comm, MPI_Status *status, const MString &name, const MString &varname)
same as MPI_Recv
int MPI_Igather(const void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int recvcount, MPI_Datatype recvtype, int root, MPI_Comm comm, MPI_Request *request)
int MPI_Reduce_scatter_solver(const void *sendbuf, void *recvbuf, int recvcount, MPI_Datatype datatype, MPI_Op op, MPI_Comm comm)
int MPI_File_iwrite_shared(MPI_File mpi_fh, const void *buf, int count, MPI_Datatype datatype, MPI_Request *request, const MString &name)
same as MPI_File_iwrite_shared
int MPI_Reduce_scatter(const void *sendbuf, void *recvbuf, const int recvcounts[], MPI_Datatype datatype, MPI_Op op, MPI_Comm comm)
int MPI_Isend(const void *buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm, MPI_Request *request, const MString &name, const MString &varname)
same as MPI_Isend
int MPI_Group_rank(MPI_Group group, int *rank)
int MPI_Info_get(MPI_Info info, const char *key, int valuelen, char *value, int *flag, const MString &name)
same as MPI_Info_get
int MPI_Request_get_status(MPI_Request request, int *flag, MPI_Status *status)
int MPI_Type_vector(int count, int solverlength, int stride, MPI_Datatype oldtype, MPI_Datatype *newtype)
int MPI_Testany(int count, MPI_Request array_of_requests[], int *index, int *flag, MPI_Status *status)
int MPI_Comm_create_keyval(MPI_Comm_copy_attr_function *comm_copy_attr_fn, MPI_Comm_delete_attr_function *comm_delete_attr_fn, int *comm_keyval, void *extra_state)
int MPI_Alltoallw(const void *sendbuf, const int sendcounts[], const int sdispls[], const MPI_Datatype sendtypes[], void *recvbuf, const int recvcounts[], const int rdispls[], const MPI_Datatype recvtypes[], MPI_Comm comm)
int MPI_Send_init(const void *buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm, MPI_Request *request, const MString &name, const MString &varname)
same as MPI_Send_init
int MPI_Comm_call_errhandler(MPI_Comm comm, int errorcode)
int MPI_Barrier(MPI_Comm comm, const MString &name)
same as MPI_Barrier
int MPI_Ireduce(const void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype, MPI_Op op, int root, MPI_Comm comm, MPI_Request *request)
int MPI_Imrecv(void *buf, int count, MPI_Datatype type, MPI_Message *message, MPI_Request *request)
int MPI_Iallgather(const void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int recvcount, MPI_Datatype recvtype, MPI_Comm comm, MPI_Request *request)
int MPI_Status_set_cancelled(MPI_Status *status, int flag)
int MPI_Group_range_excl(MPI_Group group, int n, int ranges[][3], MPI_Group *newgroup)
int MPIX_Allgather_init(const void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int recvcount, MPI_Datatype recvtype, MPI_Comm comm, MPI_Info info, MPI_Request *request)
int MPI_Allgatherv(const void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, const int recvcounts[], const int displs[], MPI_Datatype recvtype, MPI_Comm comm, const MString &name, const MString &sndvarname, const MString &rcvvarname)
same as MPI_Allgatherv
int MPI_File_seek(MPI_File mpi_fh, MPI_Offset offset, int whence, const MString &name)
same as MPI_File_seek
int MPI_Op_create(MPI_User_function *function, int commute, MPI_Op *op)
int MPI_Bsend(const void *buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm)
int MPI_Testsome(int incount, MPI_Request array_of_requests[], int *outcount, int array_of_indices[], MPI_Status array_of_statuses[])
int MPI_Waitany(int count, MPI_Request array_of_requests[], int *index, MPI_Status *status)
int MPI_Scatterv(const void *sendbuf, const int sendcount[], const int displs[], MPI_Datatype sendtype, void *recvbuf, int recvcount, MPI_Datatype recvtype, int root, MPI_Comm comm, const MString &name, const MString &sndvarname, const MString &rcvvarname)
same as MPI_Scatterv
int MPI_Comm_remote_size(MPI_Comm comm, int *size)
int MPI_Ssend(const void *buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm)
int MPI_Comm_connect(const char *port_name, MPI_Info info, int root, MPI_Comm comm, MPI_Comm *newcomm)
int MPI_Waitsome(int incount, MPI_Request array_of_requests[], int *outcount, int array_of_indices[], MPI_Status array_of_statuses[], const MString &name)
same as MPI_Waitsome
int MPI_Comm_compare(MPI_Comm comm1, MPI_Comm comm2, int *result)
int MPI_Get_count(const MPI_Status *status, MPI_Datatype datatype, int *count, const MString &name)
same as MPI_Get_count
int MPI_Group_range_incl(MPI_Group group, int n, int ranges[][3], MPI_Group *newgroup)
int MPI_Info_free(MPI_Info *info, const MString &name)
same as MPI_Info_free
int MPI_Type_commit(MPI_Datatype *datatype, const MString &name)
same as MPI_Type_commit
int MPI_Bsend_init(const void *buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm, MPI_Request *request)
int MPI_Comm_free(MPI_Comm *comm, const MString &name, const MString &varname)
same as MPI_Comm_free, but updates the number of MPI communicators
int MPI_Iscan(const void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype, MPI_Op op, MPI_Comm comm, MPI_Request *request)
int MPI_Ibsend(const void *buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm, MPI_Request *request)
int MPI_Irecv(void *buf, int count, MPI_Datatype datatype, int source, int tag, MPI_Comm comm, MPI_Request *request, const MString &name, const MString &varname)
same as MPI_Irecv
int MPI_Recv_init(void *buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm, MPI_Request *request, const MString &name, const MString &varname)
same as MPI_Recv_init
int MPI_Comm_create(MPI_Comm comm, MPI_Group group, MPI_Comm *newcomm, const MString &name, const MString &varname)
same as MPI_Comm_create, but updates the number of MPI communicators
int MPI_Group_size(MPI_Group group, int *size)
int MPI_Ialltoallv(const void *sendbuf, const int sendcounts[], const int sdispls[], MPI_Datatype sendtype, void *recvbuf, const int recvcounts[], const int rdispls[], MPI_Datatype recvtype, MPI_Comm comm, MPI_Request *request)
int MPI_Abort(MPI_Comm comm, int errorcode, const MString &name)
same as MPI_Abort
int MPI_Ibarrier(MPI_Comm comm, MPI_Request *request)
int MPI_Group_compare(MPI_Group group1, MPI_Group group2, int *result)
int MPI_Issend(const void *buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm, MPI_Request *request, const MString &name, const MString &varname)
same as MPI_Issend
int MPI_Ireduce_scatter(const void *sendbuf, void *recvbuf, const int recvcounts[], MPI_Datatype datatype, MPI_Op op, MPI_Comm comm, MPI_Request *request)
int MPI_Testall(int count, MPI_Request array_of_requests[], int *flag, MPI_Status array_of_statuses[])
int MPI_Ssend_init(const void *buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm, MPI_Request *request)
int MPI_File_open(MPI_Comm comm, const char *filename, int amode, MPI_Info info, MPI_File *mpi_fh, const MString &name)
same as MPI_File_open
int MPI_Group_incl(MPI_Group group, int n, const int ranks[], MPI_Group *newgroup, const MString &name)
same as MPI_Group_incl
int MPI_Test_cancelled(const MPI_Status *status, int *flag)
int MPI_Comm_create_group(MPI_Comm comm, MPI_Group group, int tag, MPI_Comm *newcomm)
int MPI_Type_free(MPI_Datatype *datatype, const MString &name)
same as MPI_Type_free
int MPI_Type_create_hvector(int count, int solverlength, MPI_Aint stride, MPI_Datatype oldtype, MPI_Datatype *newtype)
int MPI_Comm_accept(const char *port_name, MPI_Info info, int root, MPI_Comm comm, MPI_Comm *newcomm)
int MPI_Comm_group(MPI_Comm comm, MPI_Group *group, const MString &name, const MString &varname)
same as MPI_Comm_group
int MPI_Info_get_valuelen(MPI_Info info, const char *key, int *valuelen, int *flag, const MString &name)
same as MPI_Info_get_valuelen
int MPI_Neighbor_allgather(const void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int recvcount, MPI_Datatype recvtype, MPI_Comm comm)
int MPI_Op_commutative(MPI_Op op, int *commute)
int MPI_Scan(const void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype, MPI_Op op, MPI_Comm comm)
int MPI_Reduce_local(const void *inbuf, void *inoutbuf, int count, MPI_Datatype datatype, MPI_Op op)
int MPI_Type_create_indexed_solver(int count, int solverlength, const int array_of_displacements[], MPI_Datatype oldtype, MPI_Datatype *newtype)
int MPI_Sendrecv(const void *sendbuf, int sendcount, MPI_Datatype sendtype, int dest, int sendtag, void *recvbuf, int recvcount, MPI_Datatype recvtype, int source, int recvtag, MPI_Comm comm, MPI_Status *status)
int MPI_Ibcast(void *buffer, int count, MPI_Datatype datatype, int root, MPI_Comm comm, MPI_Request *request, const MString &name, const MString &varname)
same as MPI_Ibcast
int MPI_Scatter(const void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int recvcount, MPI_Datatype recvtype, int root, MPI_Comm comm, const MString &name, const MString &sndvarname, const MString &rcvvarname)
same as MPI_Scatter
int MPI_Cancel(MPI_Request *request, const MString &name)
same as MPI_cancel
int MPI_Wait(MPI_Request *request, MPI_Status *status, const MString &name)
same as MPI_Wait
int MPI_Gatherv(const void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, const int recvcounts[], const int displs[], MPI_Datatype recvtype, int root, MPI_Comm comm, const MString &name, const MString &sndvarname, const MString &rcvvarname)
same as MPI_Gatherv
int MPI_Comm_disconnect(MPI_Comm *comm)
int MPI_Exscan(const void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype, MPI_Op op, MPI_Comm comm, const MString &name, const MString &sndvarname, const MString &rcvvarname)
same as MPI_Exscan
int MPI_Type_set_name(MPI_Datatype type, const char *type_name)
int MPI_Waitall(int count, MPI_Request *request, MPI_Status *status, const MString &name)
same as MPI_Waitall
int MPI_Type_contiguous(int count, MPI_Datatype old_type, MPI_Datatype *new_type_p, const MString &name)
same as MPI_Type_contiguous
int MPI_Comm_split_type(MPI_Comm comm, int split_type, int key, MPI_Info info, MPI_Comm *newcomm)
int MPI_Start(MPI_Request *request, const MString &name)
same as MPI_Start
int MPI_Iallreduce(const void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype, MPI_Op op, MPI_Comm comm, MPI_Request *request, const MString &name, const MString &sndvarname, const MString &rcvvarname)
same as MPI_Iallreduce
int MPI_Type_create_hindexed(int count, const int array_of_solverlengths[], const MPI_Aint array_of_displacements[], MPI_Datatype oldtype, MPI_Datatype *newtype, const MString &name)
same as MPI_Type_create_hindexed
int MPI_Reduce(const void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype, MPI_Op op, int root, MPI_Comm comm, const MString &name, const MString &sndvarname, const MString &rcvvarname)
same as MPI_Reduce
int MPI_File_close(MPI_File *mpi_fh, const MString &name)
same as MPI_File_close
int MPI_Info_create(MPI_Info *info, const MString &name)
same as MPI_Info_create
int MPI_Test(MPI_Request *request, int *flag, MPI_Status *status, const MString &name)
same as MPI_Test
int MPI_Ialltoall(const void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int recvcount, MPI_Datatype recvtype, MPI_Comm comm, MPI_Request *request)
int MPI_Iscatter(const void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int recvcount, MPI_Datatype recvtype, int root, MPI_Comm comm, MPI_Request *request)
int MPI_Get_address(const void *location, MPI_Aint *address, const MString &name)
same as MPI_Get_address
int MPI_Alloc_mem(MPI_Aint size, MPI_Info info, void *baseptr)
int MPI_Ireduce_scatter_solver(const void *sendbuf, void *recvbuf, int recvcount, MPI_Datatype datatype, MPI_Op op, MPI_Comm comm, MPI_Request *request)
int MPI_Compare_and_swap(const void *origin_addr, const void *compare_addr, void *result_addr, MPI_Datatype datatype, int target_rank, MPI_Aint target_disp, MPI_Win win)
int MPI_Allreduce(const void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype, MPI_Op op, MPI_Comm comm, const MString &name, const MString &sndvarname, const MString &rcvvarname)
same as MPI_Allreduce
int MPI_Cart_create(MPI_Comm comm_old, int ndims, const int dims[], const int periods[], int reorder, MPI_Comm *comm_cart)
int MPI_Info_get_nthkey(MPI_Info info, int n, char *key, const MString &name)
same as MPI_Info_get_nthkey
int MPI_Alltoall(const void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int recvcount, MPI_Datatype recvtype, MPI_Comm comm, const MString &name, const MString &sndvarname, const MString &rcvvarname)
same as MPI_Alltoall
int MPI_Request_free(MPI_Request *request, const MString &name)
same as MPI_Request_free
int MPI_Comm_split(MPI_Comm comm, int color, int key, MPI_Comm *newcomm, const MString &name, const MString &varname)
same as MPI_Comm_split, but updates the number of MPI communicators
int MPI_Iprobe(int source, int tag, MPI_Comm comm, int *flag, MPI_Status *status, const MString &name)
Iprobe MPI to get status without actually receiving the message.
int MPI_Bcast(void *buffer, int count, MPI_Datatype datatype, int root, MPI_Comm comm, const MString &name, const MString &varname)
same as MPI_Bcast
int MPI_Probe(int source, int tag, MPI_Comm comm, MPI_Status *status, const MString &name)
probe MPI to get status without actually receiving the message
int MPI_Type_struct(int count, int *array_of_solverlengths, MPI_Aint *array_of_displacements, MPI_Datatype *array_of_types, MPI_Datatype *newtype)
int MPI_Gather(const void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int recvcount, MPI_Datatype recvtype, int root, MPI_Comm comm, const MString &name, const MString &sndvarname, const MString &rcvvarname)
same as MPI_Gather
int MPI_Type_create_darray(int size, int rank, int ndims, const int array_of_gsizes[], const int array_of_distribs[], const int array_of_dargs[], const int array_of_psizes[], int order, MPI_Datatype oldtype, MPI_Datatype *newtype)
int MPI_Graph_create(MPI_Comm comm_old, int nnodes, const int index[], const int edges[], int reorder, MPI_Comm *comm_graph)
int MPI_Allgather(const void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int recvcount, MPI_Datatype recvtype, MPI_Comm comm, const MString &name, const MString &sndvarname, const MString &rcvvarname)
same as MPI_Allgather
int MPI_Igatherv(const void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, const int recvcounts[], const int displs[], MPI_Datatype recvtype, int root, MPI_Comm comm, MPI_Request *request)
int MPI_File_write_shared(MPI_File mpi_fh, const void *buf, int count, MPI_Datatype datatype, MPI_Status *status, const MString &name)
same as MPI_File_write_shared
int MPI_Put(const void *origin_addr, int origin_count, MPI_Datatype origin_datatype, int target_rank, MPI_Aint target_disp, int target_count, MPI_Datatype target_datatype, MPI_Win win)
int MPI_Comm_remote_group(MPI_Comm comm, MPI_Group *group)
int MPI_Info_get_nkeys(MPI_Info info, int *nkeys, const MString &name)
same as MPI_Info_get_nkeys
int MPI_Group_free(MPI_Group *group, const MString &name)
same as MPI_Group_free
int MPI_Cart_coords(MPI_Comm comm, int rank, int maxdims, int coords[])
int MPI_Accumulate(const void *origin_addr, int origin_count, MPI_Datatype origin_datatype, int target_rank, MPI_Aint target_disp, int target_count, MPI_Datatype target_datatype, MPI_Op op, MPI_Win win)
int MPI_Mrecv(void *buf, int count, MPI_Datatype type, MPI_Message *message, MPI_Status *status)
int MPI_Group_intersection(MPI_Group group1, MPI_Group group2, MPI_Group *newgroup)
int MPI_Alltoallv(const void *sendbuf, const int sendcounts[], const int sdispls[], MPI_Datatype sendtype, void *recvbuf, const int recvcounts[], const int rdispls[], MPI_Datatype recvtype, MPI_Comm comm, const MString &name, const MString &sndvarname, const MString &rcvvarname)
same as MPI_Alltoallv
int MPI_Group_union(MPI_Group group1, MPI_Group group2, MPI_Group *newgroup)
int MPI_Startall(int count, MPI_Request array_of_requests[], const MString &name)
same as MPI_Startall
int MPI_Sendrecv_replace(void *buf, int count, MPI_Datatype datatype, int dest, int sendtag, int source, int recvtag, MPI_Comm comm, MPI_Status *status)
int MPI_Comm_create_errhandler(MPI_Comm_errhandler_function *function, MPI_Errhandler *errhandler)
int MPI_Group_excl(MPI_Group group, int n, const int ranks[], MPI_Group *newgroup)
int MPI_Send(const void *buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm, const MString &name, const MString &varname)
same as MPI_Send
int MPI_Ialltoallw(const void *sendbuf, const int sendcounts[], const int sdispls[], const MPI_Datatype sendtypes[], void *recvbuf, const int recvcounts[], const int rdispls[], const MPI_Datatype recvtypes[], MPI_Comm comm, MPI_Request *request)
int MPI_Iallgatherv(const void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, const int recvcounts[], const int displs[], MPI_Datatype recvtype, MPI_Comm comm, MPI_Request *request)
int MPI_Iscatterv(const void *sendbuf, const int sendcounts[], const int displs[], MPI_Datatype sendtype, void *recvbuf, int recvcount, MPI_Datatype recvtype, int root, MPI_Comm comm, MPI_Request *request)
int MPI_Win_fence(int assert, MPI_Win win)
int MPI_Group_difference(MPI_Group group1, MPI_Group group2, MPI_Group *newgroup)