42#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
43 template<
typename DATATYPE>
44 void AMPI_Send_adj(
typename DATATYPE::AdjointType* bufAdjoints,
int bufSize,
int count, DATATYPE* datatype,
int dest,
int tag,
AMPI_Comm comm) {
46 MPI_Recv(bufAdjoints, bufSize, datatype->getADTool().getAdjointMpiType(), dest, tag, comm, MPI_STATUS_IGNORE);
50#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
51 template<
typename DATATYPE>
54 MPI_Irecv(bufAdjoints, bufSize, datatype->getADTool().getAdjointMpiType(), dest, tag, comm, &request->
request);
58#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
59 template<
typename DATATYPE>
60 void AMPI_Bsend_adj(
typename DATATYPE::AdjointType* bufAdjoints,
int bufSize,
int count, DATATYPE* datatype,
int dest,
int tag,
AMPI_Comm comm) {
62 MPI_Recv(bufAdjoints, bufSize, datatype->getADTool().getAdjointMpiType(), dest, tag, comm, MPI_STATUS_IGNORE);
66#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
67 template<
typename DATATYPE>
70 MPI_Irecv(bufAdjoints, bufSize, datatype->getADTool().getAdjointMpiType(), dest, tag, comm, &request->
request);
74#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
75 template<
typename DATATYPE>
76 void AMPI_Ssend_adj(
typename DATATYPE::AdjointType* bufAdjoints,
int bufSize,
int count, DATATYPE* datatype,
int dest,
int tag,
AMPI_Comm comm) {
78 MPI_Recv(bufAdjoints, bufSize, datatype->getADTool().getAdjointMpiType(), dest, tag, comm, MPI_STATUS_IGNORE);
82#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
83 template<
typename DATATYPE>
86 MPI_Irecv(bufAdjoints, bufSize, datatype->getADTool().getAdjointMpiType(), dest, tag, comm, &request->
request);
90#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
91 template<
typename DATATYPE>
92 void AMPI_Rsend_adj(
typename DATATYPE::AdjointType* bufAdjoints,
int bufSize,
int count, DATATYPE* datatype,
int dest,
int tag,
AMPI_Comm comm) {
94 MPI_Recv(bufAdjoints, bufSize, datatype->getADTool().getAdjointMpiType(), dest, tag, comm, MPI_STATUS_IGNORE);
98#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
99 template<
typename DATATYPE>
102 MPI_Irecv(bufAdjoints, bufSize, datatype->getADTool().getAdjointMpiType(), dest, tag, comm, &request->
request);
106#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
107 template<
typename DATATYPE>
112 MPI_Send(bufAdjoints, bufSize, datatype->getADTool().getAdjointMpiType(), src, tag, comm);
114 MPI_Bsend(bufAdjoints, bufSize, datatype->getADTool().getAdjointMpiType(), src, tag, comm);
116 MPI_Rsend(bufAdjoints, bufSize, datatype->getADTool().getAdjointMpiType(), src, tag, comm);
118 MPI_Ssend(bufAdjoints, bufSize, datatype->getADTool().getAdjointMpiType(), src, tag, comm);
120 MEDI_EXCEPTION(
"Unimplemented case for RecvAdjCall %d.", (
int)reverse_call);
125#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
126 template<
typename DATATYPE>
128 AMPI_Recv_adj(bufAdjoints, bufSize, count, datatype, message->
src, message->
tag, message->
comm, status, reverse_call);
132#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
133 template<
typename DATATYPE>
137 MPI_Isend(bufAdjoints, bufSize, datatype->getADTool().getAdjointMpiType(), src, tag, comm, &request->
request);
139 MPI_Ibsend(bufAdjoints, bufSize, datatype->getADTool().getAdjointMpiType(), src, tag, comm, &request->
request);
141 MPI_Irsend(bufAdjoints, bufSize, datatype->getADTool().getAdjointMpiType(), src, tag, comm, &request->
request);
143 MPI_Issend(bufAdjoints, bufSize, datatype->getADTool().getAdjointMpiType(), src, tag, comm, &request->
request);
145 MEDI_EXCEPTION(
"Unimplemented case for IrecvAdjCall %d.", (
int)reverse_call);
150#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
151 template<
typename DATATYPE>
154 AMPI_Irecv_adj(bufAdjoints, bufSize, count, datatype, message->
src, message->
tag, message->
comm, request, reverse_call);
158#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
159 template<
typename SENDTYPE,
typename RECVTYPE>
160 void AMPI_Sendrecv_adj(
typename SENDTYPE::AdjointType* sendbuf,
int sendbufSize,
int sendcount, SENDTYPE* sendtype,
int dest,
int sendtag,
162 typename RECVTYPE::AdjointType* recvbuf,
int recvbufSize,
int recvcount, RECVTYPE* recvtype,
int source,
int recvtag,
AMPI_Comm comm,
AMPI_Status* status) {
166 MPI_Sendrecv(recvbuf, recvbufSize, recvtype->getADTool().getAdjointMpiType(), source, recvtag, sendbuf, sendbufSize, sendtype->getADTool().getAdjointMpiType(), dest, sendtag, comm, status);
169#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
170 template<
typename DATATYPE>
171 void AMPI_Bcast_wrap_adj(
typename DATATYPE::AdjointType* &sendbufAdjoints,
int sendbufSize,
typename DATATYPE::AdjointType* &recvbufAdjoints,
int recvbufSize,
int count, DATATYPE* datatype,
int root,
AMPI_Comm comm) {
174 MPI_Gather(recvbufAdjoints, recvbufSize, datatype->getADTool().getAdjointMpiType(), sendbufAdjoints, sendbufSize, datatype->getADTool().getAdjointMpiType(), root, comm);
178#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
179 template<
typename DATATYPE>
180 void AMPI_Ibcast_wrap_adj(
typename DATATYPE::AdjointType* &sendbufAdjoints,
int sendbufSize,
typename DATATYPE::AdjointType* &recvbufAdjoints,
int recvbufSize,
int count, DATATYPE* datatype,
int root,
AMPI_Comm comm,
AMPI_Request* request) {
183 MPI_Igather(recvbufAdjoints, recvbufSize, datatype->getADTool().getAdjointMpiType(), sendbufAdjoints, sendbufSize, datatype->getADTool().getAdjointMpiType(), root, comm, &request->
request);
187#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
188 template<
typename SENDTYPE,
typename RECVTYPE>
189 void AMPI_Scatter_adj(
typename SENDTYPE::AdjointType* &sendbufAdjoints,
int sendbufSize,
int sendcount, SENDTYPE* sendtype,
typename RECVTYPE::AdjointType* &recvbufAdjoints,
int recvbufSize,
int recvcount, RECVTYPE* recvtype,
int root,
AMPI_Comm comm) {
193 MPI_Gather(recvbufAdjoints, recvbufSize, recvtype->getADTool().getAdjointMpiType(), sendbufAdjoints, sendbufSize, sendtype->getADTool().getAdjointMpiType(), root, comm);
197#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
198 template<
typename SENDTYPE,
typename RECVTYPE>
199 void AMPI_Iscatter_adj(
typename SENDTYPE::AdjointType* &sendbufAdjoints,
int sendbufSize,
int sendcount, SENDTYPE* sendtype,
typename RECVTYPE::AdjointType* &recvbufAdjoints,
int recvbufSize,
int recvcount, RECVTYPE* recvtype,
int root,
AMPI_Comm comm,
AMPI_Request* request) {
203 MPI_Igather(recvbufAdjoints, recvbufSize, recvtype->getADTool().getAdjointMpiType(), sendbufAdjoints, sendbufSize, sendtype->getADTool().getAdjointMpiType(), root, comm, &request->
request);
207#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
208 template<
typename SENDTYPE,
typename RECVTYPE>
209 void AMPI_Scatterv_adj(
typename SENDTYPE::AdjointType* &sendbufAdjoints,
int* sendbufCounts,
MEDI_OPTIONAL_CONST int* sendbufDispl,
MEDI_OPTIONAL_CONST int* sendcount,
MEDI_OPTIONAL_CONST int* displs, SENDTYPE* sendtype,
typename RECVTYPE::AdjointType* &recvbufAdjoints,
int recvbufSize,
int recvcount, RECVTYPE* recvtype,
int root,
AMPI_Comm comm) {
213 MPI_Gatherv(recvbufAdjoints, recvbufSize, recvtype->getADTool().getAdjointMpiType(), sendbufAdjoints, sendbufCounts, sendbufDispl, sendtype->getADTool().getAdjointMpiType(), root, comm);
217#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
218 template<
typename SENDTYPE,
typename RECVTYPE>
219 void AMPI_Iscatterv_adj(
typename SENDTYPE::AdjointType* &sendbufAdjoints,
int* sendbufCounts,
MEDI_OPTIONAL_CONST int* sendbufDispl,
MEDI_OPTIONAL_CONST int* sendcount,
MEDI_OPTIONAL_CONST int* displs, SENDTYPE* sendtype,
typename RECVTYPE::AdjointType* &recvbufAdjoints,
int recvbufSize,
int recvcount, RECVTYPE* recvtype,
int root,
AMPI_Comm comm,
AMPI_Request* request) {
223 MPI_Igatherv(recvbufAdjoints, recvbufSize, recvtype->getADTool().getAdjointMpiType(), sendbufAdjoints, sendbufCounts, sendbufDispl, sendtype->getADTool().getAdjointMpiType(), root, comm, &request->
request);
227#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
228 template<
typename SENDTYPE,
typename RECVTYPE>
229 void AMPI_Gather_adj(
typename SENDTYPE::AdjointType* &sendbufAdjoints,
int sendbufSize,
int sendcount, SENDTYPE* sendtype,
typename RECVTYPE::AdjointType* &recvbufAdjoints,
int recvbufSize,
int recvcount, RECVTYPE* recvtype,
int root,
AMPI_Comm comm) {
233 MPI_Scatter(recvbufAdjoints, recvbufSize, recvtype->getADTool().getAdjointMpiType(), sendbufAdjoints, sendbufSize, sendtype->getADTool().getAdjointMpiType(), root, comm);
237#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
238 template<
typename SENDTYPE,
typename RECVTYPE>
239 void AMPI_Igather_adj(
typename SENDTYPE::AdjointType* &sendbufAdjoints,
int sendbufSize,
int sendcount, SENDTYPE* sendtype,
typename RECVTYPE::AdjointType* &recvbufAdjoints,
int recvbufSize,
int recvcount, RECVTYPE* recvtype,
int root,
AMPI_Comm comm,
AMPI_Request* request) {
243 MPI_Iscatter(recvbufAdjoints, recvbufSize, recvtype->getADTool().getAdjointMpiType(), sendbufAdjoints, sendbufSize, sendtype->getADTool().getAdjointMpiType(), root, comm, &request->
request);
247#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
248 template<
typename SENDTYPE,
typename RECVTYPE>
249 void AMPI_Gatherv_adj(
typename SENDTYPE::AdjointType* &sendbufAdjoints,
int sendbufSize,
int sendcount, SENDTYPE* sendtype,
typename RECVTYPE::AdjointType* &recvbufAdjoints,
int* recvbufCounts,
MEDI_OPTIONAL_CONST int* recvbufDispls,
MEDI_OPTIONAL_CONST int* recvcounts,
MEDI_OPTIONAL_CONST int* displs, RECVTYPE* recvtype,
int root,
AMPI_Comm comm) {
254 MPI_Scatterv(recvbufAdjoints, recvbufCounts, recvbufDispls, recvtype->getADTool().getAdjointMpiType(), sendbufAdjoints, sendbufSize, sendtype->getADTool().getAdjointMpiType(), root, comm);
258#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
259 template<
typename SENDTYPE,
typename RECVTYPE>
260 void AMPI_Igatherv_adj(
typename SENDTYPE::AdjointType* &sendbufAdjoints,
int sendbufSize,
int sendcount, SENDTYPE* sendtype,
typename RECVTYPE::AdjointType* &recvbufAdjoints,
int* recvbufCounts,
MEDI_OPTIONAL_CONST int* recvbufDispls,
MEDI_OPTIONAL_CONST int* recvcounts,
MEDI_OPTIONAL_CONST int* displs, RECVTYPE* recvtype,
int root,
AMPI_Comm comm,
AMPI_Request* request) {
265 MPI_Iscatterv(recvbufAdjoints, recvbufCounts, recvbufDispls, recvtype->getADTool().getAdjointMpiType(), sendbufAdjoints, sendbufSize, sendtype->getADTool().getAdjointMpiType(), root, comm, &request->
request);
269#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
270 template<
typename SENDTYPE,
typename RECVTYPE>
271 void AMPI_Allgather_adj(
typename SENDTYPE::AdjointType* &sendbufAdjoints,
int sendbufSize,
int sendcount, SENDTYPE* sendtype,
typename RECVTYPE::AdjointType* &recvbufAdjoints,
int recvbufSize,
int recvcount, RECVTYPE* recvtype,
AMPI_Comm comm) {
275 MPI_Alltoall(recvbufAdjoints, recvbufSize, recvtype->getADTool().getAdjointMpiType(), sendbufAdjoints, sendbufSize, sendtype->getADTool().getAdjointMpiType(), comm);
279#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
280 template<
typename SENDTYPE,
typename RECVTYPE>
281 void AMPI_Iallgather_adj(
typename SENDTYPE::AdjointType* &sendbufAdjoints,
int sendbufSize,
int sendcount, SENDTYPE* sendtype,
typename RECVTYPE::AdjointType* &recvbufAdjoints,
int recvbufSize,
int recvcount, RECVTYPE* recvtype,
AMPI_Comm comm,
AMPI_Request* request ) {
285 MPI_Ialltoall(recvbufAdjoints, recvbufSize, recvtype->getADTool().getAdjointMpiType(), sendbufAdjoints, sendbufSize, sendtype->getADTool().getAdjointMpiType(), comm, &request->
request);
289#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
290 template<
typename SENDTYPE,
typename RECVTYPE>
291 void AMPI_Allgatherv_adj(
typename SENDTYPE::AdjointType* &sendbufAdjoints,
int sendbufSize,
int sendcount, SENDTYPE* sendtype,
typename RECVTYPE::AdjointType* &recvbufAdjoints,
int* recvbufCounts,
MEDI_OPTIONAL_CONST int* recvbufDispls,
MEDI_OPTIONAL_CONST int* recvcounts,
MEDI_OPTIONAL_CONST int* displs, RECVTYPE* recvtype,
AMPI_Comm comm) {
298 MPI_Alltoallv(recvbufAdjoints, recvbufCounts, recvbufDispls, recvtype->getADTool().getAdjointMpiType(), sendbufAdjoints, linDis.
counts, linDis.
displs, sendtype->getADTool().getAdjointMpiType(), comm);
302#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
303 template<
typename SENDTYPE,
typename RECVTYPE>
304 void AMPI_Iallgatherv_adj(
typename SENDTYPE::AdjointType* &sendbufAdjoints,
int sendbufSize,
int sendcount, SENDTYPE* sendtype,
typename RECVTYPE::AdjointType* &recvbufAdjoints,
int* recvbufCounts,
MEDI_OPTIONAL_CONST int* recvbufDispls,
MEDI_OPTIONAL_CONST int* recvcounts,
MEDI_OPTIONAL_CONST int* displs, RECVTYPE* recvtype,
AMPI_Comm comm,
AMPI_Request* request) {
312 MPI_Ialltoallv(recvbufAdjoints, recvbufCounts, recvbufDispls, recvtype->getADTool().getAdjointMpiType(), sendbufAdjoints, linDis->
counts, linDis->
displs, sendtype->getADTool().getAdjointMpiType(), comm, &request->
request);
316#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
317 template<
typename SENDTYPE,
typename RECVTYPE>
318 void AMPI_Alltoall_adj(
typename SENDTYPE::AdjointType* &sendbufAdjoints,
int sendbufSize,
int sendcount, SENDTYPE* sendtype,
typename RECVTYPE::AdjointType* &recvbufAdjoints,
int recvbufSize,
int recvcount, RECVTYPE* recvtype,
AMPI_Comm comm) {
322 MPI_Alltoall(recvbufAdjoints, recvbufSize, recvtype->getADTool().getAdjointMpiType(), sendbufAdjoints, sendbufSize, sendtype->getADTool().getAdjointMpiType(), comm);
326#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
327 template<
typename SENDTYPE,
typename RECVTYPE>
328 void AMPI_Ialltoall_adj(
typename SENDTYPE::AdjointType* &sendbufAdjoints,
int sendbufSize,
int sendcount, SENDTYPE* sendtype,
typename RECVTYPE::AdjointType* &recvbufAdjoints,
int recvbufSize,
int recvcount, RECVTYPE* recvtype,
AMPI_Comm comm,
AMPI_Request* request) {
332 MPI_Ialltoall(recvbufAdjoints, recvbufSize, recvtype->getADTool().getAdjointMpiType(), sendbufAdjoints, sendbufSize, sendtype->getADTool().getAdjointMpiType(), comm, &request->
request);
336#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
337 template<
typename SENDTYPE,
typename RECVTYPE>
338 void AMPI_Alltoallv_adj(
typename SENDTYPE::AdjointType* &sendbufAdjoints,
int* sendbufCounts,
MEDI_OPTIONAL_CONST int* sendbufDispls,
MEDI_OPTIONAL_CONST int* sendcounts,
MEDI_OPTIONAL_CONST int* sdispls, SENDTYPE* sendtype,
typename RECVTYPE::AdjointType* &recvbufAdjoints,
int* recvbufCounts,
MEDI_OPTIONAL_CONST int* recvbufDispls,
MEDI_OPTIONAL_CONST int* recvcounts,
MEDI_OPTIONAL_CONST int* rdispls, RECVTYPE* recvtype,
AMPI_Comm comm) {
344 MPI_Alltoallv(recvbufAdjoints, recvbufCounts, recvbufDispls, recvtype->getADTool().getAdjointMpiType(), sendbufAdjoints, sendbufCounts, sendbufDispls, sendtype->getADTool().getAdjointMpiType(), comm);
348#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
349 template<
typename SENDTYPE,
typename RECVTYPE>
350 void AMPI_Ialltoallv_adj(
typename SENDTYPE::AdjointType* &sendbufAdjoints,
int* sendbufCounts,
MEDI_OPTIONAL_CONST int* sendbufDispls,
MEDI_OPTIONAL_CONST int* sendcounts,
MEDI_OPTIONAL_CONST int* sdispls, SENDTYPE* sendtype,
typename RECVTYPE::AdjointType* &recvbufAdjoints,
int* recvbufCounts,
MEDI_OPTIONAL_CONST int* recvbufDispls,
MEDI_OPTIONAL_CONST int* recvcounts,
MEDI_OPTIONAL_CONST int* rdispls, RECVTYPE* recvtype,
AMPI_Comm comm,
AMPI_Request* request) {
356 MPI_Ialltoallv(recvbufAdjoints, recvbufCounts, recvbufDispls, recvtype->getADTool().getAdjointMpiType(), sendbufAdjoints, sendbufCounts, sendbufDispls, sendtype->getADTool().getAdjointMpiType(), comm, &request->
request);
360#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
361 template<
typename DATATYPE>
362 void AMPI_Reduce_global_adj(
typename DATATYPE::AdjointType* &sendbufAdjoints,
int sendbufSize,
typename DATATYPE::AdjointType* &recvbufAdjoints,
int recvbufSize,
int count, DATATYPE* datatype,
AMPI_Op op,
int root,
AMPI_Comm comm) {
365 MPI_Bcast(recvbufAdjoints, recvbufSize, datatype->getADTool().getAdjointMpiType(), root, comm);
366 std::swap(sendbufAdjoints, recvbufAdjoints);
368 MPI_Bcast(sendbufAdjoints, sendbufSize, datatype->getADTool().getAdjointMpiType(), root, comm);
373#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
374 template<
typename DATATYPE>
378 MPI_Ibcast(recvbufAdjoints, recvbufSize, datatype->getADTool().getAdjointMpiType(), root, comm, &request->
request);
379 std::swap(sendbufAdjoints, recvbufAdjoints);
381 MPI_Ibcast(sendbufAdjoints, sendbufSize, datatype->getADTool().getAdjointMpiType(), root, comm, &request->
request);
386#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
387 template<
typename DATATYPE>
388 void AMPI_Allreduce_global_adj(
typename DATATYPE::AdjointType* &sendbufAdjoints,
int sendbufSize,
typename DATATYPE::AdjointType* &recvbufAdjoints,
int recvbufSize,
int count, DATATYPE* datatype,
AMPI_Op op,
AMPI_Comm comm) {
392 MPI_Allgather(recvbufAdjoints, recvbufSize, datatype->getADTool().getAdjointMpiType(), sendbufAdjoints, sendbufSize, datatype->getADTool().getAdjointMpiType(), comm);
396#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
397 template<
typename DATATYPE>
402 MPI_Iallgather(recvbufAdjoints, recvbufSize, datatype->getADTool().getAdjointMpiType(), sendbufAdjoints, sendbufSize, datatype->getADTool().getAdjointMpiType(), comm, &request->
request);
#define AMPI_Status
Definition ampiDefinitions.h:772
#define AMPI_Comm
Definition ampiDefinitions.h:778
#define MEDI_EXCEPTION(...)
Generates an exception.
Definition exceptions.hpp:44
#define MEDI_OPTIONAL_CONST
Definition macros.h:70
#define MEDI_UNUSED(name)
Definition macros.h:108
Global namespace for MeDiPack - Message Differentiation Package.
Definition adjointInterface.hpp:37
void AMPI_Recv_adj(typename DATATYPE::AdjointType *bufAdjoints, int bufSize, int count, DATATYPE *datatype, int src, int tag, MPI_Comm comm, MPI_Status *status, RecvAdjCall reverse_call)
Definition reverseFunctions.hpp:108
void AMPI_Irsend_adj(typename DATATYPE::AdjointType *bufAdjoints, int bufSize, int count, DATATYPE *datatype, int dest, int tag, MPI_Comm comm, AMPI_Request *request)
Definition reverseFunctions.hpp:100
void AMPI_Mrecv_adj(typename DATATYPE::AdjointType *bufAdjoints, int bufSize, int count, DATATYPE *datatype, AMPI_Message *message, MPI_Status *status, RecvAdjCall reverse_call)
Definition reverseFunctions.hpp:127
void AMPI_Irecv_adj(typename DATATYPE::AdjointType *bufAdjoints, int bufSize, int count, DATATYPE *datatype, int src, int tag, MPI_Comm comm, AMPI_Request *request, IrecvAdjCall reverse_call)
Definition reverseFunctions.hpp:134
void AMPI_Ireduce_global_adj(typename DATATYPE::AdjointType *&sendbufAdjoints, int sendbufSize, typename DATATYPE::AdjointType *&recvbufAdjoints, int recvbufSize, int count, DATATYPE *datatype, AMPI_Op op, int root, MPI_Comm comm, AMPI_Request *request)
Definition reverseFunctions.hpp:375
void AMPI_Iallgather_adj(typename SENDTYPE::AdjointType *&sendbufAdjoints, int sendbufSize, int sendcount, SENDTYPE *sendtype, typename RECVTYPE::AdjointType *&recvbufAdjoints, int recvbufSize, int recvcount, RECVTYPE *recvtype, MPI_Comm comm, AMPI_Request *request)
Definition reverseFunctions.hpp:281
void AMPI_Bcast_wrap_adj(typename DATATYPE::AdjointType *&sendbufAdjoints, int sendbufSize, typename DATATYPE::AdjointType *&recvbufAdjoints, int recvbufSize, int count, DATATYPE *datatype, int root, MPI_Comm comm)
Definition reverseFunctions.hpp:171
void AMPI_Igatherv_adj(typename SENDTYPE::AdjointType *&sendbufAdjoints, int sendbufSize, int sendcount, SENDTYPE *sendtype, typename RECVTYPE::AdjointType *&recvbufAdjoints, int *recvbufCounts, const int *recvbufDispls, const int *recvcounts, const int *displs, RECVTYPE *recvtype, int root, MPI_Comm comm, AMPI_Request *request)
Definition reverseFunctions.hpp:260
void AMPI_Iscatter_adj(typename SENDTYPE::AdjointType *&sendbufAdjoints, int sendbufSize, int sendcount, SENDTYPE *sendtype, typename RECVTYPE::AdjointType *&recvbufAdjoints, int recvbufSize, int recvcount, RECVTYPE *recvtype, int root, MPI_Comm comm, AMPI_Request *request)
Definition reverseFunctions.hpp:199
IrecvAdjCall
Definition enums.hpp:40
void AMPI_Gatherv_adj(typename SENDTYPE::AdjointType *&sendbufAdjoints, int sendbufSize, int sendcount, SENDTYPE *sendtype, typename RECVTYPE::AdjointType *&recvbufAdjoints, int *recvbufCounts, const int *recvbufDispls, const int *recvcounts, const int *displs, RECVTYPE *recvtype, int root, MPI_Comm comm)
Definition reverseFunctions.hpp:249
RecvAdjCall
Definition enums.hpp:44
void AMPI_Gather_adj(typename SENDTYPE::AdjointType *&sendbufAdjoints, int sendbufSize, int sendcount, SENDTYPE *sendtype, typename RECVTYPE::AdjointType *&recvbufAdjoints, int recvbufSize, int recvcount, RECVTYPE *recvtype, int root, MPI_Comm comm)
Definition reverseFunctions.hpp:229
void AMPI_Send_adj(typename DATATYPE::AdjointType *bufAdjoints, int bufSize, int count, DATATYPE *datatype, int dest, int tag, MPI_Comm comm)
Definition reverseFunctions.hpp:44
void AMPI_Ibcast_wrap_adj(typename DATATYPE::AdjointType *&sendbufAdjoints, int sendbufSize, typename DATATYPE::AdjointType *&recvbufAdjoints, int recvbufSize, int count, DATATYPE *datatype, int root, MPI_Comm comm, AMPI_Request *request)
Definition reverseFunctions.hpp:180
void AMPI_Iscatterv_adj(typename SENDTYPE::AdjointType *&sendbufAdjoints, int *sendbufCounts, const int *sendbufDispl, const int *sendcount, const int *displs, SENDTYPE *sendtype, typename RECVTYPE::AdjointType *&recvbufAdjoints, int recvbufSize, int recvcount, RECVTYPE *recvtype, int root, MPI_Comm comm, AMPI_Request *request)
Definition reverseFunctions.hpp:219
void AMPI_Scatterv_adj(typename SENDTYPE::AdjointType *&sendbufAdjoints, int *sendbufCounts, const int *sendbufDispl, const int *sendcount, const int *displs, SENDTYPE *sendtype, typename RECVTYPE::AdjointType *&recvbufAdjoints, int recvbufSize, int recvcount, RECVTYPE *recvtype, int root, MPI_Comm comm)
Definition reverseFunctions.hpp:209
void AMPI_Allgatherv_adj(typename SENDTYPE::AdjointType *&sendbufAdjoints, int sendbufSize, int sendcount, SENDTYPE *sendtype, typename RECVTYPE::AdjointType *&recvbufAdjoints, int *recvbufCounts, const int *recvbufDispls, const int *recvcounts, const int *displs, RECVTYPE *recvtype, MPI_Comm comm)
Definition reverseFunctions.hpp:291
void AMPI_Rsend_adj(typename DATATYPE::AdjointType *bufAdjoints, int bufSize, int count, DATATYPE *datatype, int dest, int tag, MPI_Comm comm)
Definition reverseFunctions.hpp:92
void AMPI_Allgather_adj(typename SENDTYPE::AdjointType *&sendbufAdjoints, int sendbufSize, int sendcount, SENDTYPE *sendtype, typename RECVTYPE::AdjointType *&recvbufAdjoints, int recvbufSize, int recvcount, RECVTYPE *recvtype, MPI_Comm comm)
Definition reverseFunctions.hpp:271
void AMPI_Ialltoall_adj(typename SENDTYPE::AdjointType *&sendbufAdjoints, int sendbufSize, int sendcount, SENDTYPE *sendtype, typename RECVTYPE::AdjointType *&recvbufAdjoints, int recvbufSize, int recvcount, RECVTYPE *recvtype, MPI_Comm comm, AMPI_Request *request)
Definition reverseFunctions.hpp:328
void AMPI_Allreduce_global_adj(typename DATATYPE::AdjointType *&sendbufAdjoints, int sendbufSize, typename DATATYPE::AdjointType *&recvbufAdjoints, int recvbufSize, int count, DATATYPE *datatype, AMPI_Op op, MPI_Comm comm)
Definition reverseFunctions.hpp:388
void AMPI_Isend_adj(typename DATATYPE::AdjointType *bufAdjoints, int bufSize, int count, DATATYPE *datatype, int dest, int tag, MPI_Comm comm, AMPI_Request *request)
Definition reverseFunctions.hpp:52
int getCommSize(MPI_Comm comm)
Helper function that gets the number of ranks from the communicator.
Definition mpiTools.h:64
void AMPI_Sendrecv_adj(typename SENDTYPE::AdjointType *sendbuf, int sendbufSize, int sendcount, SENDTYPE *sendtype, int dest, int sendtag, typename RECVTYPE::AdjointType *recvbuf, int recvbufSize, int recvcount, RECVTYPE *recvtype, int source, int recvtag, MPI_Comm comm, MPI_Status *status)
Definition reverseFunctions.hpp:160
int getCommRank(MPI_Comm comm)
Helper function that gets the own rank number from the communicator.
Definition mpiTools.h:52
void AMPI_Issend_adj(typename DATATYPE::AdjointType *bufAdjoints, int bufSize, int count, DATATYPE *datatype, int dest, int tag, MPI_Comm comm, AMPI_Request *request)
Definition reverseFunctions.hpp:84
void AMPI_Bsend_adj(typename DATATYPE::AdjointType *bufAdjoints, int bufSize, int count, DATATYPE *datatype, int dest, int tag, MPI_Comm comm)
Definition reverseFunctions.hpp:60
void AMPI_Iallgatherv_adj(typename SENDTYPE::AdjointType *&sendbufAdjoints, int sendbufSize, int sendcount, SENDTYPE *sendtype, typename RECVTYPE::AdjointType *&recvbufAdjoints, int *recvbufCounts, const int *recvbufDispls, const int *recvcounts, const int *displs, RECVTYPE *recvtype, MPI_Comm comm, AMPI_Request *request)
Definition reverseFunctions.hpp:304
void AMPI_Alltoall_adj(typename SENDTYPE::AdjointType *&sendbufAdjoints, int sendbufSize, int sendcount, SENDTYPE *sendtype, typename RECVTYPE::AdjointType *&recvbufAdjoints, int recvbufSize, int recvcount, RECVTYPE *recvtype, MPI_Comm comm)
Definition reverseFunctions.hpp:318
void AMPI_Igather_adj(typename SENDTYPE::AdjointType *&sendbufAdjoints, int sendbufSize, int sendcount, SENDTYPE *sendtype, typename RECVTYPE::AdjointType *&recvbufAdjoints, int recvbufSize, int recvcount, RECVTYPE *recvtype, int root, MPI_Comm comm, AMPI_Request *request)
Definition reverseFunctions.hpp:239
void AMPI_Ibsend_adj(typename DATATYPE::AdjointType *bufAdjoints, int bufSize, int count, DATATYPE *datatype, int dest, int tag, MPI_Comm comm, AMPI_Request *request)
Definition reverseFunctions.hpp:68
void AMPI_Iallreduce_global_adj(typename DATATYPE::AdjointType *&sendbufAdjoints, int sendbufSize, typename DATATYPE::AdjointType *&recvbufAdjoints, int recvbufSize, int count, DATATYPE *datatype, AMPI_Op op, MPI_Comm comm, AMPI_Request *request)
Definition reverseFunctions.hpp:398
void AMPI_Ssend_adj(typename DATATYPE::AdjointType *bufAdjoints, int bufSize, int count, DATATYPE *datatype, int dest, int tag, MPI_Comm comm)
Definition reverseFunctions.hpp:76
void AMPI_Ialltoallv_adj(typename SENDTYPE::AdjointType *&sendbufAdjoints, int *sendbufCounts, const int *sendbufDispls, const int *sendcounts, const int *sdispls, SENDTYPE *sendtype, typename RECVTYPE::AdjointType *&recvbufAdjoints, int *recvbufCounts, const int *recvbufDispls, const int *recvcounts, const int *rdispls, RECVTYPE *recvtype, MPI_Comm comm, AMPI_Request *request)
Definition reverseFunctions.hpp:350
void AMPI_Alltoallv_adj(typename SENDTYPE::AdjointType *&sendbufAdjoints, int *sendbufCounts, const int *sendbufDispls, const int *sendcounts, const int *sdispls, SENDTYPE *sendtype, typename RECVTYPE::AdjointType *&recvbufAdjoints, int *recvbufCounts, const int *recvbufDispls, const int *recvcounts, const int *rdispls, RECVTYPE *recvtype, MPI_Comm comm)
Definition reverseFunctions.hpp:338
void AMPI_Reduce_global_adj(typename DATATYPE::AdjointType *&sendbufAdjoints, int sendbufSize, typename DATATYPE::AdjointType *&recvbufAdjoints, int recvbufSize, int count, DATATYPE *datatype, AMPI_Op op, int root, MPI_Comm comm)
Definition reverseFunctions.hpp:362
void AMPI_Imrecv_adj(typename DATATYPE::AdjointType *bufAdjoints, int bufSize, int count, DATATYPE *datatype, AMPI_Message *message, AMPI_Request *request, IrecvAdjCall reverse_call)
Definition reverseFunctions.hpp:152
void AMPI_Scatter_adj(typename SENDTYPE::AdjointType *&sendbufAdjoints, int sendbufSize, int sendcount, SENDTYPE *sendtype, typename RECVTYPE::AdjointType *&recvbufAdjoints, int recvbufSize, int recvcount, RECVTYPE *recvtype, int root, MPI_Comm comm)
Definition reverseFunctions.hpp:189
Stores additional information for a MPI_Message.
Definition message.hpp:44
int src
Definition message.hpp:48
MPI_Comm comm
Definition message.hpp:49
int tag
Definition message.hpp:47
Structure for the special handling of the MPI_Op structure.
Definition op.hpp:50
MPI_Request request
Definition async.hpp:46
void setReverseData(void *data, DeleteReverseData func)
Definition async.hpp:70
Helper structure for the easy creation of a linear displacement with a the same length.
Definition displacementTools.hpp:43
int * displs
The array with the displacements.
Definition displacementTools.hpp:48
int * counts
The array with the counts.
Definition displacementTools.hpp:53
static void deleteFunc(void *d)
Helper function for deleting a LinearDisplacements structure.
Definition displacementTools.hpp:90