43#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
44 template<
typename DATATYPE>
71 template<
typename DATATYPE>
89 template<
typename DATATYPE>
107 template<
typename DATATYPE>
124 template<
typename DATATYPE>
132 rStatus = MPI_Bsend(buf, count, datatype->getMpiType(), dest, tag, comm);
137 typename DATATYPE::ModifiedType* bufMod =
nullptr;
143 if(datatype->isModifiedBufferRequired() ) {
144 datatype->createModifiedTypeBuffer(bufMod, bufElements);
146 bufMod =
reinterpret_cast<typename DATATYPE::ModifiedType*
>(
const_cast<typename DATATYPE::Type*
>(buf));
154 if(datatype->isModifiedBufferRequired()) {
155 datatype->copyIntoModifiedBuffer(buf, 0, bufMod, 0, count);
162 h->
bufCount = datatype->computeActiveElements(count);
163 h->
bufTotalSize = datatype->computeActiveElements(bufElements);
169 datatype->getIndices(buf, 0, h->
bufIndices, 0, count);
184 rStatus = MPI_Bsend(bufMod, count, datatype->getModifiedMpiType(), dest, tag, comm);
194 if(datatype->isModifiedBufferRequired() ) {
195 datatype->deleteModifiedTypeBuffer(bufMod);
205#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
206 template<
typename DATATYPE>
232 template<
typename DATATYPE>
244 template<
typename DATATYPE>
262 template<
typename DATATYPE>
273 template<
typename DATATYPE>
291 template<
typename DATATYPE>
302 template<
typename DATATYPE>
317 template<
typename DATATYPE>
330 template<
typename DATATYPE>
332 template<
typename DATATYPE>
340 rStatus = MPI_Ibsend(buf, count, datatype->getMpiType(), dest, tag, comm, &request->
request);
345 typename DATATYPE::ModifiedType* bufMod =
nullptr;
351 if(datatype->isModifiedBufferRequired() ) {
352 datatype->createModifiedTypeBuffer(bufMod, bufElements);
354 bufMod =
reinterpret_cast<typename DATATYPE::ModifiedType*
>(
const_cast<typename DATATYPE::Type*
>(buf));
362 if(datatype->isModifiedBufferRequired()) {
363 datatype->copyIntoModifiedBuffer(buf, 0, bufMod, 0, count);
370 h->
bufCount = datatype->computeActiveElements(count);
371 h->
bufTotalSize = datatype->computeActiveElements(bufElements);
377 datatype->getIndices(buf, 0, h->
bufIndices, 0, count);
392 rStatus = MPI_Ibsend(bufMod, count, datatype->getModifiedMpiType(), dest, tag, comm, &request->
request);
395 asyncHandle->
buf = buf;
396 asyncHandle->
bufMod = bufMod;
397 asyncHandle->
count = count;
399 asyncHandle->
dest = dest;
400 asyncHandle->
tag = tag;
401 asyncHandle->
comm = comm;
403 request->
handle = asyncHandle;
417 template<
typename DATATYPE>
423 typename DATATYPE::ModifiedType* bufMod = asyncHandle->
bufMod;
424 int count = asyncHandle->
count;
425 DATATYPE* datatype = asyncHandle->
datatype;
426 int dest = asyncHandle->
dest;
427 int tag = asyncHandle->
tag;
444 if(adType->isActiveType()) {
446 adType->addToolAction(h);
453 adType->stopAssembly(h);
455 if(datatype->isModifiedBufferRequired() ) {
456 datatype->deleteModifiedTypeBuffer(bufMod);
466#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
468 template<
typename DATATYPE>
481 template<
typename DATATYPE>
483 template<
typename DATATYPE>
485 template<
typename DATATYPE>
487 template<
typename DATATYPE>
495 rStatus = MPI_Bsend_init(buf, count, datatype->getMpiType(), dest, tag, comm, &request->
request);
500 typename DATATYPE::ModifiedType* bufMod =
nullptr;
506 if(datatype->isModifiedBufferRequired() ) {
507 datatype->createModifiedTypeBuffer(bufMod, bufElements);
509 bufMod =
reinterpret_cast<typename DATATYPE::ModifiedType*
>(
const_cast<typename DATATYPE::Type*
>(buf));
512 rStatus = MPI_Bsend_init(bufMod, count, datatype->getModifiedMpiType(), dest, tag, comm, &request->
request);
515 asyncHandle->
buf = buf;
516 asyncHandle->
bufMod = bufMod;
517 asyncHandle->
count = count;
519 asyncHandle->
dest = dest;
520 asyncHandle->
tag = tag;
521 asyncHandle->
comm = comm;
523 request->
handle = asyncHandle;
532 template<
typename DATATYPE>
538 typename DATATYPE::ModifiedType* bufMod = asyncHandle->
bufMod;
539 int count = asyncHandle->
count;
540 DATATYPE* datatype = asyncHandle->
datatype;
541 int dest = asyncHandle->
dest;
542 int tag = asyncHandle->
tag;
558 if(adType->isActiveType()) {
565 if(adType->isHandleRequired()) {
568 adType->startAssembly(h);
569 if(datatype->isModifiedBufferRequired()) {
570 datatype->copyIntoModifiedBuffer(buf, 0, bufMod, 0, count);
577 h->
bufCount = datatype->computeActiveElements(count);
578 h->
bufTotalSize = datatype->computeActiveElements(bufElements);
584 datatype->getIndices(buf, 0, h->
bufIndices, 0, count);
605 adType->addToolAction(waitH);
612 template<
typename DATATYPE>
618 typename DATATYPE::ModifiedType* bufMod = asyncHandle->
bufMod;
619 int count = asyncHandle->
count;
620 DATATYPE* datatype = asyncHandle->
datatype;
621 int dest = asyncHandle->
dest;
622 int tag = asyncHandle->
tag;
638 if(adType->isActiveType()) {
640 adType->addToolAction(h);
647 adType->stopAssembly(h);
653 template<
typename DATATYPE>
659 typename DATATYPE::ModifiedType* bufMod = asyncHandle->
bufMod;
660 int count = asyncHandle->
count;
661 DATATYPE* datatype = asyncHandle->
datatype;
662 int dest = asyncHandle->
dest;
663 int tag = asyncHandle->
tag;
680 if(adType->isActiveType()) {
683 if(datatype->isModifiedBufferRequired() ) {
684 datatype->deleteModifiedTypeBuffer(bufMod);
694#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
695 template<
typename DATATYPE>
725 template<
typename DATATYPE>
727 typename DATATYPE::Type*
buf;
736 template<
typename DATATYPE>
751 template<
typename DATATYPE>
759 if(adType->isOldPrimalsRequired()) {
767 template<
typename DATATYPE>
782 template<
typename DATATYPE>
795 template<
typename DATATYPE>
807 if(adType->isOldPrimalsRequired()) {
816 template<
typename DATATYPE>
827 template<
typename DATATYPE>
829 template<
typename DATATYPE>
837 rStatus = MPI_Imrecv(buf, count, datatype->getMpiType(), &message->
message, &request->
request);
842 typename DATATYPE::ModifiedType* bufMod =
nullptr;
848 if(datatype->isModifiedBufferRequired() ) {
849 datatype->createModifiedTypeBuffer(bufMod, bufElements);
851 bufMod =
reinterpret_cast<typename DATATYPE::ModifiedType*
>(
const_cast<typename DATATYPE::Type*
>(buf));
864 h->
bufCount = datatype->computeActiveElements(count);
865 h->
bufTotalSize = datatype->computeActiveElements(bufElements);
878 datatype->createIndices(buf, 0, h->
bufIndices, 0, count);
890 if(!datatype->isModifiedBufferRequired()) {
891 datatype->clearIndices(buf, 0, count);
894 rStatus = MPI_Imrecv(bufMod, count, datatype->getModifiedMpiType(), &message->
message, &request->
request);
897 asyncHandle->
buf = buf;
898 asyncHandle->
bufMod = bufMod;
899 asyncHandle->
count = count;
901 asyncHandle->
message = message;
904 request->
handle = asyncHandle;
918 template<
typename DATATYPE>
923 typename DATATYPE::Type* buf = asyncHandle->
buf;
924 typename DATATYPE::ModifiedType* bufMod = asyncHandle->
bufMod;
925 int count = asyncHandle->
count;
926 DATATYPE* datatype = asyncHandle->
datatype;
943 if(adType->isActiveType()) {
945 adType->addToolAction(h);
947 if(datatype->isModifiedBufferRequired()) {
948 datatype->copyFromModifiedBuffer(buf, 0, bufMod, 0, count);
956 adType->stopAssembly(h);
958 if(datatype->isModifiedBufferRequired() ) {
959 datatype->deleteModifiedTypeBuffer(bufMod);
969#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
970 template<
typename DATATYPE>
1002 template<
typename DATATYPE>
1015 template<
typename DATATYPE>
1030 template<
typename DATATYPE>
1038 if(adType->isOldPrimalsRequired()) {
1046 template<
typename DATATYPE>
1061 template<
typename DATATYPE>
1074 template<
typename DATATYPE>
1086 if(adType->isOldPrimalsRequired()) {
1095 template<
typename DATATYPE>
1106 template<
typename DATATYPE>
1108 template<
typename DATATYPE>
1109 int AMPI_Irecv(
typename DATATYPE::Type* buf,
int count, DATATYPE* datatype,
int source,
int tag,
AMPI_Comm comm,
1116 rStatus = MPI_Irecv(buf, count, datatype->getMpiType(), source, tag, comm, &request->
request);
1121 typename DATATYPE::ModifiedType* bufMod =
nullptr;
1122 int bufElements = 0;
1125 bufElements = count;
1127 if(datatype->isModifiedBufferRequired() ) {
1128 datatype->createModifiedTypeBuffer(bufMod, bufElements);
1130 bufMod =
reinterpret_cast<typename DATATYPE::ModifiedType*
>(
const_cast<typename DATATYPE::Type*
>(buf));
1143 h->
bufCount = datatype->computeActiveElements(count);
1144 h->
bufTotalSize = datatype->computeActiveElements(bufElements);
1157 datatype->createIndices(buf, 0, h->
bufIndices, 0, count);
1171 if(!datatype->isModifiedBufferRequired()) {
1172 datatype->clearIndices(buf, 0, count);
1175 rStatus = MPI_Irecv(bufMod, count, datatype->getModifiedMpiType(), source, tag, comm, &request->
request);
1178 asyncHandle->
buf = buf;
1179 asyncHandle->
bufMod = bufMod;
1180 asyncHandle->
count = count;
1182 asyncHandle->
source = source;
1183 asyncHandle->
tag = tag;
1184 asyncHandle->
comm = comm;
1187 request->
handle = asyncHandle;
1201 template<
typename DATATYPE>
1206 typename DATATYPE::Type* buf = asyncHandle->
buf;
1207 typename DATATYPE::ModifiedType* bufMod = asyncHandle->
bufMod;
1208 int count = asyncHandle->
count;
1209 DATATYPE* datatype = asyncHandle->
datatype;
1210 int source = asyncHandle->
source;
1211 int tag = asyncHandle->
tag;
1230 if(adType->isActiveType()) {
1232 adType->addToolAction(h);
1234 if(datatype->isModifiedBufferRequired()) {
1235 datatype->copyFromModifiedBuffer(buf, 0, bufMod, 0, count);
1243 adType->stopAssembly(h);
1245 if(datatype->isModifiedBufferRequired() ) {
1246 datatype->deleteModifiedTypeBuffer(bufMod);
1256#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
1257 template<
typename DATATYPE>
1283 template<
typename DATATYPE>
1295 template<
typename DATATYPE>
1313 template<
typename DATATYPE>
1324 template<
typename DATATYPE>
1342 template<
typename DATATYPE>
1353 template<
typename DATATYPE>
1368 template<
typename DATATYPE>
1381 template<
typename DATATYPE>
1383 template<
typename DATATYPE>
1391 rStatus = MPI_Irsend(buf, count, datatype->getMpiType(), dest, tag, comm, &request->
request);
1396 typename DATATYPE::ModifiedType* bufMod =
nullptr;
1397 int bufElements = 0;
1400 bufElements = count;
1402 if(datatype->isModifiedBufferRequired() ) {
1403 datatype->createModifiedTypeBuffer(bufMod, bufElements);
1405 bufMod =
reinterpret_cast<typename DATATYPE::ModifiedType*
>(
const_cast<typename DATATYPE::Type*
>(buf));
1413 if(datatype->isModifiedBufferRequired()) {
1414 datatype->copyIntoModifiedBuffer(buf, 0, bufMod, 0, count);
1421 h->
bufCount = datatype->computeActiveElements(count);
1422 h->
bufTotalSize = datatype->computeActiveElements(bufElements);
1428 datatype->getIndices(buf, 0, h->
bufIndices, 0, count);
1443 rStatus = MPI_Irsend(bufMod, count, datatype->getModifiedMpiType(), dest, tag, comm, &request->
request);
1446 asyncHandle->
buf = buf;
1447 asyncHandle->
bufMod = bufMod;
1448 asyncHandle->
count = count;
1450 asyncHandle->
dest = dest;
1451 asyncHandle->
tag = tag;
1452 asyncHandle->
comm = comm;
1454 request->
handle = asyncHandle;
1468 template<
typename DATATYPE>
1474 typename DATATYPE::ModifiedType* bufMod = asyncHandle->
bufMod;
1475 int count = asyncHandle->
count;
1476 DATATYPE* datatype = asyncHandle->
datatype;
1477 int dest = asyncHandle->
dest;
1478 int tag = asyncHandle->
tag;
1495 if(adType->isActiveType()) {
1497 adType->addToolAction(h);
1504 adType->stopAssembly(h);
1506 if(datatype->isModifiedBufferRequired() ) {
1507 datatype->deleteModifiedTypeBuffer(bufMod);
1517#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
1518 template<
typename DATATYPE>
1544 template<
typename DATATYPE>
1556 template<
typename DATATYPE>
1574 template<
typename DATATYPE>
1585 template<
typename DATATYPE>
1603 template<
typename DATATYPE>
1614 template<
typename DATATYPE>
1629 template<
typename DATATYPE>
1642 template<
typename DATATYPE>
1644 template<
typename DATATYPE>
1652 rStatus = MPI_Isend(buf, count, datatype->getMpiType(), dest, tag, comm, &request->
request);
1657 typename DATATYPE::ModifiedType* bufMod =
nullptr;
1658 int bufElements = 0;
1661 bufElements = count;
1663 if(datatype->isModifiedBufferRequired() ) {
1664 datatype->createModifiedTypeBuffer(bufMod, bufElements);
1666 bufMod =
reinterpret_cast<typename DATATYPE::ModifiedType*
>(
const_cast<typename DATATYPE::Type*
>(buf));
1674 if(datatype->isModifiedBufferRequired()) {
1675 datatype->copyIntoModifiedBuffer(buf, 0, bufMod, 0, count);
1682 h->
bufCount = datatype->computeActiveElements(count);
1683 h->
bufTotalSize = datatype->computeActiveElements(bufElements);
1689 datatype->getIndices(buf, 0, h->
bufIndices, 0, count);
1704 rStatus = MPI_Isend(bufMod, count, datatype->getModifiedMpiType(), dest, tag, comm, &request->
request);
1707 asyncHandle->
buf = buf;
1708 asyncHandle->
bufMod = bufMod;
1709 asyncHandle->
count = count;
1711 asyncHandle->
dest = dest;
1712 asyncHandle->
tag = tag;
1713 asyncHandle->
comm = comm;
1715 request->
handle = asyncHandle;
1729 template<
typename DATATYPE>
1735 typename DATATYPE::ModifiedType* bufMod = asyncHandle->
bufMod;
1736 int count = asyncHandle->
count;
1737 DATATYPE* datatype = asyncHandle->
datatype;
1738 int dest = asyncHandle->
dest;
1739 int tag = asyncHandle->
tag;
1756 if(adType->isActiveType()) {
1758 adType->addToolAction(h);
1765 adType->stopAssembly(h);
1767 if(datatype->isModifiedBufferRequired() ) {
1768 datatype->deleteModifiedTypeBuffer(bufMod);
1778#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
1779 template<
typename DATATYPE>
1805 template<
typename DATATYPE>
1817 template<
typename DATATYPE>
1835 template<
typename DATATYPE>
1846 template<
typename DATATYPE>
1864 template<
typename DATATYPE>
1875 template<
typename DATATYPE>
1890 template<
typename DATATYPE>
1903 template<
typename DATATYPE>
1905 template<
typename DATATYPE>
1913 rStatus = MPI_Issend(buf, count, datatype->getMpiType(), dest, tag, comm, &request->
request);
1918 typename DATATYPE::ModifiedType* bufMod =
nullptr;
1919 int bufElements = 0;
1922 bufElements = count;
1924 if(datatype->isModifiedBufferRequired() ) {
1925 datatype->createModifiedTypeBuffer(bufMod, bufElements);
1927 bufMod =
reinterpret_cast<typename DATATYPE::ModifiedType*
>(
const_cast<typename DATATYPE::Type*
>(buf));
1935 if(datatype->isModifiedBufferRequired()) {
1936 datatype->copyIntoModifiedBuffer(buf, 0, bufMod, 0, count);
1943 h->
bufCount = datatype->computeActiveElements(count);
1944 h->
bufTotalSize = datatype->computeActiveElements(bufElements);
1950 datatype->getIndices(buf, 0, h->
bufIndices, 0, count);
1965 rStatus = MPI_Issend(bufMod, count, datatype->getModifiedMpiType(), dest, tag, comm, &request->
request);
1968 asyncHandle->
buf = buf;
1969 asyncHandle->
bufMod = bufMod;
1970 asyncHandle->
count = count;
1972 asyncHandle->
dest = dest;
1973 asyncHandle->
tag = tag;
1974 asyncHandle->
comm = comm;
1976 request->
handle = asyncHandle;
1990 template<
typename DATATYPE>
1996 typename DATATYPE::ModifiedType* bufMod = asyncHandle->
bufMod;
1997 int count = asyncHandle->
count;
1998 DATATYPE* datatype = asyncHandle->
datatype;
1999 int dest = asyncHandle->
dest;
2000 int tag = asyncHandle->
tag;
2017 if(adType->isActiveType()) {
2019 adType->addToolAction(h);
2026 adType->stopAssembly(h);
2028 if(datatype->isModifiedBufferRequired() ) {
2029 datatype->deleteModifiedTypeBuffer(bufMod);
2039#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
2040 template<
typename DATATYPE>
2072 template<
typename DATATYPE>
2084 if(adType->isOldPrimalsRequired()) {
2092 template<
typename DATATYPE>
2110 template<
typename DATATYPE>
2122 if(adType->isOldPrimalsRequired()) {
2132 template<
typename DATATYPE>
2140 rStatus = MPI_Mrecv(buf, count, datatype->getMpiType(), &message->
message, status);
2145 typename DATATYPE::ModifiedType* bufMod =
nullptr;
2146 int bufElements = 0;
2149 bufElements = count;
2151 if(datatype->isModifiedBufferRequired() ) {
2152 datatype->createModifiedTypeBuffer(bufMod, bufElements);
2154 bufMod =
reinterpret_cast<typename DATATYPE::ModifiedType*
>(
const_cast<typename DATATYPE::Type*
>(buf));
2167 h->
bufCount = datatype->computeActiveElements(count);
2168 h->
bufTotalSize = datatype->computeActiveElements(bufElements);
2181 datatype->createIndices(buf, 0, h->
bufIndices, 0, count);
2194 if(!datatype->isModifiedBufferRequired()) {
2195 datatype->clearIndices(buf, 0, count);
2198 rStatus = MPI_Mrecv(bufMod, count, datatype->getModifiedMpiType(), &message->
message, status);
2201 if(datatype->isModifiedBufferRequired()) {
2202 datatype->copyFromModifiedBuffer(buf, 0, bufMod, 0, count);
2212 if(datatype->isModifiedBufferRequired() ) {
2213 datatype->deleteModifiedTypeBuffer(bufMod);
2223#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
2224 template<
typename DATATYPE>
2257 template<
typename DATATYPE>
2271 if(adType->isOldPrimalsRequired()) {
2279 template<
typename DATATYPE>
2298 template<
typename DATATYPE>
2311 if(adType->isOldPrimalsRequired()) {
2321 template<
typename DATATYPE>
2322 int AMPI_Recv(
typename DATATYPE::Type* buf,
int count, DATATYPE* datatype,
int source,
int tag,
AMPI_Comm comm,
2329 rStatus = MPI_Recv(buf, count, datatype->getMpiType(), source, tag, comm, status);
2334 typename DATATYPE::ModifiedType* bufMod =
nullptr;
2335 int bufElements = 0;
2338 bufElements = count;
2340 if(datatype->isModifiedBufferRequired() ) {
2341 datatype->createModifiedTypeBuffer(bufMod, bufElements);
2343 bufMod =
reinterpret_cast<typename DATATYPE::ModifiedType*
>(
const_cast<typename DATATYPE::Type*
>(buf));
2356 h->
bufCount = datatype->computeActiveElements(count);
2357 h->
bufTotalSize = datatype->computeActiveElements(bufElements);
2370 datatype->createIndices(buf, 0, h->
bufIndices, 0, count);
2384 if(!datatype->isModifiedBufferRequired()) {
2385 datatype->clearIndices(buf, 0, count);
2388 rStatus = MPI_Recv(bufMod, count, datatype->getModifiedMpiType(), source, tag, comm, status);
2391 if(datatype->isModifiedBufferRequired()) {
2392 datatype->copyFromModifiedBuffer(buf, 0, bufMod, 0, count);
2402 if(datatype->isModifiedBufferRequired() ) {
2403 datatype->deleteModifiedTypeBuffer(bufMod);
2413#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
2415 template<
typename DATATYPE>
2429 template<
typename DATATYPE>
2431 template<
typename DATATYPE>
2433 template<
typename DATATYPE>
2435 template<
typename DATATYPE>
2443 rStatus = MPI_Recv_init(buf, count, datatype->getMpiType(), source, tag, comm, &request->
request);
2448 typename DATATYPE::ModifiedType* bufMod =
nullptr;
2449 int bufElements = 0;
2452 bufElements = count;
2454 if(datatype->isModifiedBufferRequired() ) {
2455 datatype->createModifiedTypeBuffer(bufMod, bufElements);
2457 bufMod =
reinterpret_cast<typename DATATYPE::ModifiedType*
>(
const_cast<typename DATATYPE::Type*
>(buf));
2460 rStatus = MPI_Recv_init(bufMod, count, datatype->getModifiedMpiType(), source, tag, comm, &request->
request);
2463 asyncHandle->
buf = buf;
2464 asyncHandle->
bufMod = bufMod;
2465 asyncHandle->
count = count;
2467 asyncHandle->
source = source;
2468 asyncHandle->
tag = tag;
2469 asyncHandle->
comm = comm;
2472 request->
handle = asyncHandle;
2481 template<
typename DATATYPE>
2486 typename DATATYPE::Type* buf = asyncHandle->
buf;
2487 typename DATATYPE::ModifiedType* bufMod = asyncHandle->
bufMod;
2488 int count = asyncHandle->
count;
2489 DATATYPE* datatype = asyncHandle->
datatype;
2490 int source = asyncHandle->
source;
2491 int tag = asyncHandle->
tag;
2509 if(adType->isActiveType()) {
2511 int bufElements = 0;
2514 bufElements = count;
2516 if(adType->isHandleRequired()) {
2519 adType->startAssembly(h);
2525 h->
bufCount = datatype->computeActiveElements(count);
2526 h->
bufTotalSize = datatype->computeActiveElements(bufElements);
2532 if(adType->isOldPrimalsRequired()) {
2539 datatype->createIndices(buf, 0, h->
bufIndices, 0, count);
2553 if(!datatype->isModifiedBufferRequired()) {
2554 datatype->clearIndices(buf, 0, count);
2563 adType->addToolAction(waitH);
2570 template<
typename DATATYPE>
2575 typename DATATYPE::Type* buf = asyncHandle->
buf;
2576 typename DATATYPE::ModifiedType* bufMod = asyncHandle->
bufMod;
2577 int count = asyncHandle->
count;
2578 DATATYPE* datatype = asyncHandle->
datatype;
2579 int source = asyncHandle->
source;
2580 int tag = asyncHandle->
tag;
2598 if(adType->isActiveType()) {
2600 adType->addToolAction(h);
2602 if(datatype->isModifiedBufferRequired()) {
2603 datatype->copyFromModifiedBuffer(buf, 0, bufMod, 0, count);
2611 adType->stopAssembly(h);
2617 template<
typename DATATYPE>
2622 typename DATATYPE::Type* buf = asyncHandle->
buf;
2623 typename DATATYPE::ModifiedType* bufMod = asyncHandle->
bufMod;
2624 int count = asyncHandle->
count;
2625 DATATYPE* datatype = asyncHandle->
datatype;
2626 int source = asyncHandle->
source;
2627 int tag = asyncHandle->
tag;
2646 if(adType->isActiveType()) {
2649 if(datatype->isModifiedBufferRequired() ) {
2650 datatype->deleteModifiedTypeBuffer(bufMod);
2660#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
2661 template<
typename DATATYPE>
2688 template<
typename DATATYPE>
2706 template<
typename DATATYPE>
2724 template<
typename DATATYPE>
2741 template<
typename DATATYPE>
2749 rStatus = MPI_Rsend(buf, count, datatype->getMpiType(), dest, tag, comm);
2754 typename DATATYPE::ModifiedType* bufMod =
nullptr;
2755 int bufElements = 0;
2758 bufElements = count;
2760 if(datatype->isModifiedBufferRequired() ) {
2761 datatype->createModifiedTypeBuffer(bufMod, bufElements);
2763 bufMod =
reinterpret_cast<typename DATATYPE::ModifiedType*
>(
const_cast<typename DATATYPE::Type*
>(buf));
2771 if(datatype->isModifiedBufferRequired()) {
2772 datatype->copyIntoModifiedBuffer(buf, 0, bufMod, 0, count);
2779 h->
bufCount = datatype->computeActiveElements(count);
2780 h->
bufTotalSize = datatype->computeActiveElements(bufElements);
2786 datatype->getIndices(buf, 0, h->
bufIndices, 0, count);
2801 rStatus = MPI_Rsend(bufMod, count, datatype->getModifiedMpiType(), dest, tag, comm);
2811 if(datatype->isModifiedBufferRequired() ) {
2812 datatype->deleteModifiedTypeBuffer(bufMod);
2822#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
2824 template<
typename DATATYPE>
2837 template<
typename DATATYPE>
2839 template<
typename DATATYPE>
2841 template<
typename DATATYPE>
2843 template<
typename DATATYPE>
2851 rStatus = MPI_Rsend_init(buf, count, datatype->getMpiType(), dest, tag, comm, &request->
request);
2856 typename DATATYPE::ModifiedType* bufMod =
nullptr;
2857 int bufElements = 0;
2860 bufElements = count;
2862 if(datatype->isModifiedBufferRequired() ) {
2863 datatype->createModifiedTypeBuffer(bufMod, bufElements);
2865 bufMod =
reinterpret_cast<typename DATATYPE::ModifiedType*
>(
const_cast<typename DATATYPE::Type*
>(buf));
2868 rStatus = MPI_Rsend_init(bufMod, count, datatype->getModifiedMpiType(), dest, tag, comm, &request->
request);
2871 asyncHandle->
buf = buf;
2872 asyncHandle->
bufMod = bufMod;
2873 asyncHandle->
count = count;
2875 asyncHandle->
dest = dest;
2876 asyncHandle->
tag = tag;
2877 asyncHandle->
comm = comm;
2879 request->
handle = asyncHandle;
2888 template<
typename DATATYPE>
2894 typename DATATYPE::ModifiedType* bufMod = asyncHandle->
bufMod;
2895 int count = asyncHandle->
count;
2896 DATATYPE* datatype = asyncHandle->
datatype;
2897 int dest = asyncHandle->
dest;
2898 int tag = asyncHandle->
tag;
2914 if(adType->isActiveType()) {
2916 int bufElements = 0;
2919 bufElements = count;
2921 if(adType->isHandleRequired()) {
2924 adType->startAssembly(h);
2925 if(datatype->isModifiedBufferRequired()) {
2926 datatype->copyIntoModifiedBuffer(buf, 0, bufMod, 0, count);
2933 h->
bufCount = datatype->computeActiveElements(count);
2934 h->
bufTotalSize = datatype->computeActiveElements(bufElements);
2940 datatype->getIndices(buf, 0, h->
bufIndices, 0, count);
2961 adType->addToolAction(waitH);
2968 template<
typename DATATYPE>
2974 typename DATATYPE::ModifiedType* bufMod = asyncHandle->
bufMod;
2975 int count = asyncHandle->
count;
2976 DATATYPE* datatype = asyncHandle->
datatype;
2977 int dest = asyncHandle->
dest;
2978 int tag = asyncHandle->
tag;
2994 if(adType->isActiveType()) {
2996 adType->addToolAction(h);
3003 adType->stopAssembly(h);
3009 template<
typename DATATYPE>
3015 typename DATATYPE::ModifiedType* bufMod = asyncHandle->
bufMod;
3016 int count = asyncHandle->
count;
3017 DATATYPE* datatype = asyncHandle->
datatype;
3018 int dest = asyncHandle->
dest;
3019 int tag = asyncHandle->
tag;
3036 if(adType->isActiveType()) {
3039 if(datatype->isModifiedBufferRequired() ) {
3040 datatype->deleteModifiedTypeBuffer(bufMod);
3050#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
3051 template<
typename DATATYPE>
3078 template<
typename DATATYPE>
3096 template<
typename DATATYPE>
3114 template<
typename DATATYPE>
3131 template<
typename DATATYPE>
3139 rStatus = MPI_Send(buf, count, datatype->getMpiType(), dest, tag, comm);
3144 typename DATATYPE::ModifiedType* bufMod =
nullptr;
3145 int bufElements = 0;
3148 bufElements = count;
3150 if(datatype->isModifiedBufferRequired() ) {
3151 datatype->createModifiedTypeBuffer(bufMod, bufElements);
3153 bufMod =
reinterpret_cast<typename DATATYPE::ModifiedType*
>(
const_cast<typename DATATYPE::Type*
>(buf));
3161 if(datatype->isModifiedBufferRequired()) {
3162 datatype->copyIntoModifiedBuffer(buf, 0, bufMod, 0, count);
3169 h->
bufCount = datatype->computeActiveElements(count);
3170 h->
bufTotalSize = datatype->computeActiveElements(bufElements);
3176 datatype->getIndices(buf, 0, h->
bufIndices, 0, count);
3191 rStatus = MPI_Send(bufMod, count, datatype->getModifiedMpiType(), dest, tag, comm);
3201 if(datatype->isModifiedBufferRequired() ) {
3202 datatype->deleteModifiedTypeBuffer(bufMod);
3212#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
3214 template<
typename DATATYPE>
3227 template<
typename DATATYPE>
3229 template<
typename DATATYPE>
3231 template<
typename DATATYPE>
3233 template<
typename DATATYPE>
3241 rStatus = MPI_Send_init(buf, count, datatype->getMpiType(), dest, tag, comm, &request->
request);
3246 typename DATATYPE::ModifiedType* bufMod =
nullptr;
3247 int bufElements = 0;
3250 bufElements = count;
3252 if(datatype->isModifiedBufferRequired() ) {
3253 datatype->createModifiedTypeBuffer(bufMod, bufElements);
3255 bufMod =
reinterpret_cast<typename DATATYPE::ModifiedType*
>(
const_cast<typename DATATYPE::Type*
>(buf));
3258 rStatus = MPI_Send_init(bufMod, count, datatype->getModifiedMpiType(), dest, tag, comm, &request->
request);
3261 asyncHandle->
buf = buf;
3262 asyncHandle->
bufMod = bufMod;
3263 asyncHandle->
count = count;
3265 asyncHandle->
dest = dest;
3266 asyncHandle->
tag = tag;
3267 asyncHandle->
comm = comm;
3269 request->
handle = asyncHandle;
3278 template<
typename DATATYPE>
3284 typename DATATYPE::ModifiedType* bufMod = asyncHandle->
bufMod;
3285 int count = asyncHandle->
count;
3286 DATATYPE* datatype = asyncHandle->
datatype;
3287 int dest = asyncHandle->
dest;
3288 int tag = asyncHandle->
tag;
3304 if(adType->isActiveType()) {
3306 int bufElements = 0;
3309 bufElements = count;
3311 if(adType->isHandleRequired()) {
3314 adType->startAssembly(h);
3315 if(datatype->isModifiedBufferRequired()) {
3316 datatype->copyIntoModifiedBuffer(buf, 0, bufMod, 0, count);
3323 h->
bufCount = datatype->computeActiveElements(count);
3324 h->
bufTotalSize = datatype->computeActiveElements(bufElements);
3330 datatype->getIndices(buf, 0, h->
bufIndices, 0, count);
3351 adType->addToolAction(waitH);
3358 template<
typename DATATYPE>
3364 typename DATATYPE::ModifiedType* bufMod = asyncHandle->
bufMod;
3365 int count = asyncHandle->
count;
3366 DATATYPE* datatype = asyncHandle->
datatype;
3367 int dest = asyncHandle->
dest;
3368 int tag = asyncHandle->
tag;
3384 if(adType->isActiveType()) {
3386 adType->addToolAction(h);
3393 adType->stopAssembly(h);
3399 template<
typename DATATYPE>
3405 typename DATATYPE::ModifiedType* bufMod = asyncHandle->
bufMod;
3406 int count = asyncHandle->
count;
3407 DATATYPE* datatype = asyncHandle->
datatype;
3408 int dest = asyncHandle->
dest;
3409 int tag = asyncHandle->
tag;
3426 if(adType->isActiveType()) {
3429 if(datatype->isModifiedBufferRequired() ) {
3430 datatype->deleteModifiedTypeBuffer(bufMod);
3440#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
3441 template<
typename SENDTYPE,
typename RECVTYPE>
3491 template<
typename SENDTYPE,
typename RECVTYPE>
3513 if(adType->isOldPrimalsRequired()) {
3521 template<
typename SENDTYPE,
typename RECVTYPE>
3548 template<
typename SENDTYPE,
typename RECVTYPE>
3562 if(adType->isOldPrimalsRequired()) {
3578 template<
typename SENDTYPE,
typename RECVTYPE>
3580 int sendtag,
typename RECVTYPE::Type* recvbuf,
int recvcount, RECVTYPE* recvtype,
int source,
int recvtag,
3587 rStatus = MPI_Sendrecv(sendbuf, sendcount, sendtype->getMpiType(), dest, sendtag, recvbuf, recvcount,
3588 recvtype->getMpiType(), source, recvtag, comm, status);
3593 typename SENDTYPE::ModifiedType* sendbufMod =
nullptr;
3594 int sendbufElements = 0;
3597 sendbufElements = sendcount;
3599 if(sendtype->isModifiedBufferRequired() ) {
3600 sendtype->createModifiedTypeBuffer(sendbufMod, sendbufElements);
3602 sendbufMod =
reinterpret_cast<typename SENDTYPE::ModifiedType*
>(
const_cast<typename SENDTYPE::Type*
>(sendbuf));
3604 typename RECVTYPE::ModifiedType* recvbufMod =
nullptr;
3605 int recvbufElements = 0;
3608 recvbufElements = recvcount;
3610 if(recvtype->isModifiedBufferRequired() ) {
3611 recvtype->createModifiedTypeBuffer(recvbufMod, recvbufElements);
3613 recvbufMod =
reinterpret_cast<typename RECVTYPE::ModifiedType*
>(
const_cast<typename RECVTYPE::Type*
>(recvbuf));
3621 if(sendtype->isModifiedBufferRequired()) {
3622 sendtype->copyIntoModifiedBuffer(sendbuf, 0, sendbufMod, 0, sendcount);
3629 h->
sendbufCount = sendtype->computeActiveElements(sendcount);
3632 h->
recvbufCount = recvtype->computeActiveElements(recvcount);
3645 sendtype->getIndices(sendbuf, 0, h->
sendbufIndices, 0, sendcount);
3647 recvtype->createIndices(recvbuf, 0, h->
recvbufIndices, 0, recvcount);
3664 if(!recvtype->isModifiedBufferRequired()) {
3665 recvtype->clearIndices(recvbuf, 0, recvcount);
3668 rStatus = MPI_Sendrecv(sendbufMod, sendcount, sendtype->getModifiedMpiType(), dest, sendtag, recvbufMod, recvcount,
3669 recvtype->getModifiedMpiType(), source, recvtag, comm, status);
3672 if(recvtype->isModifiedBufferRequired()) {
3673 recvtype->copyFromModifiedBuffer(recvbuf, 0, recvbufMod, 0, recvcount);
3683 if(sendtype->isModifiedBufferRequired() ) {
3684 sendtype->deleteModifiedTypeBuffer(sendbufMod);
3686 if(recvtype->isModifiedBufferRequired() ) {
3687 recvtype->deleteModifiedTypeBuffer(recvbufMod);
3697#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
3698 template<
typename DATATYPE>
3725 template<
typename DATATYPE>
3743 template<
typename DATATYPE>
3761 template<
typename DATATYPE>
3778 template<
typename DATATYPE>
3786 rStatus = MPI_Ssend(buf, count, datatype->getMpiType(), dest, tag, comm);
3791 typename DATATYPE::ModifiedType* bufMod =
nullptr;
3792 int bufElements = 0;
3795 bufElements = count;
3797 if(datatype->isModifiedBufferRequired() ) {
3798 datatype->createModifiedTypeBuffer(bufMod, bufElements);
3800 bufMod =
reinterpret_cast<typename DATATYPE::ModifiedType*
>(
const_cast<typename DATATYPE::Type*
>(buf));
3808 if(datatype->isModifiedBufferRequired()) {
3809 datatype->copyIntoModifiedBuffer(buf, 0, bufMod, 0, count);
3816 h->
bufCount = datatype->computeActiveElements(count);
3817 h->
bufTotalSize = datatype->computeActiveElements(bufElements);
3823 datatype->getIndices(buf, 0, h->
bufIndices, 0, count);
3838 rStatus = MPI_Ssend(bufMod, count, datatype->getModifiedMpiType(), dest, tag, comm);
3848 if(datatype->isModifiedBufferRequired() ) {
3849 datatype->deleteModifiedTypeBuffer(bufMod);
3859#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
3861 template<
typename DATATYPE>
3874 template<
typename DATATYPE>
3876 template<
typename DATATYPE>
3878 template<
typename DATATYPE>
3880 template<
typename DATATYPE>
3888 rStatus = MPI_Ssend_init(buf, count, datatype->getMpiType(), dest, tag, comm, &request->
request);
3893 typename DATATYPE::ModifiedType* bufMod =
nullptr;
3894 int bufElements = 0;
3897 bufElements = count;
3899 if(datatype->isModifiedBufferRequired() ) {
3900 datatype->createModifiedTypeBuffer(bufMod, bufElements);
3902 bufMod =
reinterpret_cast<typename DATATYPE::ModifiedType*
>(
const_cast<typename DATATYPE::Type*
>(buf));
3905 rStatus = MPI_Ssend_init(bufMod, count, datatype->getModifiedMpiType(), dest, tag, comm, &request->
request);
3908 asyncHandle->
buf = buf;
3909 asyncHandle->
bufMod = bufMod;
3910 asyncHandle->
count = count;
3912 asyncHandle->
dest = dest;
3913 asyncHandle->
tag = tag;
3914 asyncHandle->
comm = comm;
3916 request->
handle = asyncHandle;
3925 template<
typename DATATYPE>
3931 typename DATATYPE::ModifiedType* bufMod = asyncHandle->
bufMod;
3932 int count = asyncHandle->
count;
3933 DATATYPE* datatype = asyncHandle->
datatype;
3934 int dest = asyncHandle->
dest;
3935 int tag = asyncHandle->
tag;
3951 if(adType->isActiveType()) {
3953 int bufElements = 0;
3956 bufElements = count;
3958 if(adType->isHandleRequired()) {
3961 adType->startAssembly(h);
3962 if(datatype->isModifiedBufferRequired()) {
3963 datatype->copyIntoModifiedBuffer(buf, 0, bufMod, 0, count);
3970 h->
bufCount = datatype->computeActiveElements(count);
3971 h->
bufTotalSize = datatype->computeActiveElements(bufElements);
3977 datatype->getIndices(buf, 0, h->
bufIndices, 0, count);
3998 adType->addToolAction(waitH);
4005 template<
typename DATATYPE>
4011 typename DATATYPE::ModifiedType* bufMod = asyncHandle->
bufMod;
4012 int count = asyncHandle->
count;
4013 DATATYPE* datatype = asyncHandle->
datatype;
4014 int dest = asyncHandle->
dest;
4015 int tag = asyncHandle->
tag;
4031 if(adType->isActiveType()) {
4033 adType->addToolAction(h);
4040 adType->stopAssembly(h);
4046 template<
typename DATATYPE>
4052 typename DATATYPE::ModifiedType* bufMod = asyncHandle->
bufMod;
4053 int count = asyncHandle->
count;
4054 DATATYPE* datatype = asyncHandle->
datatype;
4055 int dest = asyncHandle->
dest;
4056 int tag = asyncHandle->
tag;
4073 if(adType->isActiveType()) {
4076 if(datatype->isModifiedBufferRequired() ) {
4077 datatype->deleteModifiedTypeBuffer(bufMod);
4087#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
4088 template<
typename SENDTYPE,
typename RECVTYPE>
4134 template<
typename SENDTYPE,
typename RECVTYPE>
4155 if(adType->isOldPrimalsRequired()) {
4163 template<
typename SENDTYPE,
typename RECVTYPE>
4189 template<
typename SENDTYPE,
typename RECVTYPE>
4202 if(adType->isOldPrimalsRequired()) {
4219 template<
typename SENDTYPE,
typename RECVTYPE>
4221 typename RECVTYPE::Type* recvbuf,
int recvcount, RECVTYPE* recvtype,
AMPI_Comm comm) {
4227 rStatus = MPI_Allgather(sendbuf, sendcount, sendtype->getMpiType(), recvbuf, recvcount, recvtype->getMpiType(), comm);
4232 typename SENDTYPE::ModifiedType* sendbufMod =
nullptr;
4233 int sendbufElements = 0;
4237 sendbufElements = sendcount;
4239 sendbufElements = recvcount;
4242 if(sendtype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == sendbuf)) {
4243 sendtype->createModifiedTypeBuffer(sendbufMod, sendbufElements);
4245 sendbufMod =
reinterpret_cast<typename SENDTYPE::ModifiedType*
>(
const_cast<typename SENDTYPE::Type*
>(sendbuf));
4247 typename RECVTYPE::ModifiedType* recvbufMod =
nullptr;
4248 int recvbufElements = 0;
4253 if(recvtype->isModifiedBufferRequired() ) {
4254 recvtype->createModifiedTypeBuffer(recvbufMod, recvbufElements);
4256 recvbufMod =
reinterpret_cast<typename RECVTYPE::ModifiedType*
>(
const_cast<typename RECVTYPE::Type*
>(recvbuf));
4264 if(sendtype->isModifiedBufferRequired()) {
4266 sendtype->copyIntoModifiedBuffer(sendbuf, 0, sendbufMod, 0, sendcount);
4268 recvtype->copyIntoModifiedBuffer(recvbuf, recvcount *
getCommRank(comm), recvbufMod, recvcount *
getCommRank(comm),
4278 h->
sendbufCount = sendtype->computeActiveElements(sendcount);
4280 h->
sendbufCount = recvtype->computeActiveElements(recvcount);
4284 h->
recvbufCount = recvtype->computeActiveElements(recvcount);
4298 sendtype->getIndices(sendbuf, 0, h->
sendbufIndices, 0, sendcount);
4316 if(!recvtype->isModifiedBufferRequired()) {
4317 recvtype->clearIndices(recvbuf, 0, recvcount *
getCommSize(comm));
4320 rStatus = MPI_Allgather(sendbufMod, sendcount, sendtype->getModifiedMpiType(), recvbufMod, recvcount,
4321 recvtype->getModifiedMpiType(), comm);
4324 if(recvtype->isModifiedBufferRequired()) {
4325 recvtype->copyFromModifiedBuffer(recvbuf, 0, recvbufMod, 0, recvcount *
getCommSize(comm));
4335 if(sendtype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == sendbuf)) {
4336 sendtype->deleteModifiedTypeBuffer(sendbufMod);
4338 if(recvtype->isModifiedBufferRequired() ) {
4339 recvtype->deleteModifiedTypeBuffer(recvbufMod);
4349#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
4350 template<
typename SENDTYPE,
typename RECVTYPE>
4402 template<
typename SENDTYPE,
typename RECVTYPE>
4424 if(adType->isOldPrimalsRequired()) {
4434 template<
typename SENDTYPE,
typename RECVTYPE>
4463 template<
typename SENDTYPE,
typename RECVTYPE>
4477 if(adType->isOldPrimalsRequired()) {
4496 template<
typename SENDTYPE,
typename RECVTYPE>
4505 rStatus = MPI_Allgatherv(sendbuf, sendcount, sendtype->getMpiType(), recvbuf, recvcounts, displs,
4506 recvtype->getMpiType(), comm);
4512 int displsTotalSize = 0;
4513 if(
nullptr != displs) {
4515 if(recvtype->isModifiedBufferRequired()) {
4519 typename SENDTYPE::ModifiedType* sendbufMod =
nullptr;
4520 int sendbufElements = 0;
4524 sendbufElements = sendcount;
4529 if(sendtype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == sendbuf)) {
4530 sendtype->createModifiedTypeBuffer(sendbufMod, sendbufElements);
4532 sendbufMod =
reinterpret_cast<typename SENDTYPE::ModifiedType*
>(
const_cast<typename SENDTYPE::Type*
>(sendbuf));
4534 typename RECVTYPE::ModifiedType* recvbufMod =
nullptr;
4535 int recvbufElements = 0;
4538 recvbufElements = displsTotalSize;
4540 if(recvtype->isModifiedBufferRequired() ) {
4541 recvtype->createModifiedTypeBuffer(recvbufMod, recvbufElements);
4543 recvbufMod =
reinterpret_cast<typename RECVTYPE::ModifiedType*
>(
const_cast<typename RECVTYPE::Type*
>(recvbuf));
4551 if(sendtype->isModifiedBufferRequired()) {
4553 sendtype->copyIntoModifiedBuffer(sendbuf, 0, sendbufMod, 0, sendcount);
4557 recvtype->copyIntoModifiedBuffer(recvbuf, displs[rank], recvbufMod, displsMod[rank], recvcounts[rank]);
4567 h->
sendbufCount = sendtype->computeActiveElements(sendcount);
4570 comm)]) - recvtype->computeActiveElements(displs[
getCommRank(comm)]);
4584 recvtype->getValues(recvbuf, displs[i], h->
recvbufOldPrimals, displsMod[i], recvcounts[i]);
4590 sendtype->getIndices(sendbuf, 0, h->
sendbufIndices, 0, sendcount);
4594 recvtype->getIndices(recvbuf, displs[rank], h->
sendbufIndices, 0, recvcounts[rank]);
4599 recvtype->createIndices(recvbuf, displs[i], h->
recvbufIndices, displsMod[i], recvcounts[i]);
4614 if(!recvtype->isModifiedBufferRequired()) {
4616 recvtype->clearIndices(recvbuf, displs[i], recvcounts[i]);
4620 rStatus = MPI_Allgatherv(sendbufMod, sendcount, sendtype->getModifiedMpiType(), recvbufMod, recvcounts, displsMod,
4621 recvtype->getModifiedMpiType(), comm);
4624 if(recvtype->isModifiedBufferRequired()) {
4626 recvtype->copyFromModifiedBuffer(recvbuf, displs[i], recvbufMod, displsMod[i], recvcounts[i]);
4638 if(recvtype->isModifiedBufferRequired()) {
4639 delete [] displsMod;
4642 if(sendtype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == sendbuf)) {
4643 sendtype->deleteModifiedTypeBuffer(sendbufMod);
4645 if(recvtype->isModifiedBufferRequired() ) {
4646 recvtype->deleteModifiedTypeBuffer(recvbufMod);
4656#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
4657 template<
typename DATATYPE>
4702 template<
typename DATATYPE>
4708 AMPI_Op convOp = adType->convertOperator(h->
op);
4724 if(adType->isOldPrimalsRequired()) {
4732 template<
typename DATATYPE>
4738 AMPI_Op convOp = adType->convertOperator(h->
op);
4759 template<
typename DATATYPE>
4765 AMPI_Op convOp = adType->convertOperator(h->
op);
4774 if(adType->isOldPrimalsRequired()) {
4795 template<
typename DATATYPE>
4805 rStatus = MPI_Allreduce(sendbuf, recvbuf, count, datatype->getMpiType(), convOp.
primalFunction, comm);
4810 typename DATATYPE::ModifiedType* sendbufMod =
nullptr;
4811 int sendbufElements = 0;
4815 sendbufElements = count;
4817 sendbufElements = count;
4820 if(datatype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == sendbuf)) {
4821 datatype->createModifiedTypeBuffer(sendbufMod, sendbufElements);
4823 sendbufMod =
reinterpret_cast<typename DATATYPE::ModifiedType*
>(
const_cast<typename DATATYPE::Type*
>(sendbuf));
4825 typename DATATYPE::ModifiedType* recvbufMod =
nullptr;
4826 int recvbufElements = 0;
4829 recvbufElements = count;
4831 if(datatype->isModifiedBufferRequired() ) {
4832 datatype->createModifiedTypeBuffer(recvbufMod, recvbufElements);
4834 recvbufMod =
reinterpret_cast<typename DATATYPE::ModifiedType*
>(
const_cast<typename DATATYPE::Type*
>(recvbuf));
4842 if(datatype->isModifiedBufferRequired()) {
4844 datatype->copyIntoModifiedBuffer(sendbuf, 0, sendbufMod, 0, count);
4846 datatype->copyIntoModifiedBuffer(recvbuf, 0, recvbufMod, 0, count);
4855 h->
sendbufCount = datatype->computeActiveElements(count);
4857 h->
sendbufCount = datatype->computeActiveElements(count);
4861 h->
recvbufCount = datatype->computeActiveElements(count);
4889 datatype->createIndices(recvbuf, 0, h->
recvbufIndices, 0, count);
4901 if(!datatype->isModifiedBufferRequired()) {
4902 datatype->clearIndices(recvbuf, 0, count);
4905 rStatus = MPI_Allreduce(sendbufMod, recvbufMod, count, datatype->getModifiedMpiType(), convOp.
modifiedPrimalFunction,
4909 if(datatype->isModifiedBufferRequired()) {
4910 datatype->copyFromModifiedBuffer(recvbuf, 0, recvbufMod, 0, count);
4925 if(datatype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == sendbuf)) {
4926 datatype->deleteModifiedTypeBuffer(sendbufMod);
4928 if(datatype->isModifiedBufferRequired() ) {
4929 datatype->deleteModifiedTypeBuffer(recvbufMod);
4939#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
4940 template<
typename SENDTYPE,
typename RECVTYPE>
4986 template<
typename SENDTYPE,
typename RECVTYPE>
5007 if(adType->isOldPrimalsRequired()) {
5015 template<
typename SENDTYPE,
typename RECVTYPE>
5041 template<
typename SENDTYPE,
typename RECVTYPE>
5054 if(adType->isOldPrimalsRequired()) {
5070 template<
typename SENDTYPE,
typename RECVTYPE>
5072 typename RECVTYPE::Type* recvbuf,
int recvcount, RECVTYPE* recvtype,
AMPI_Comm comm) {
5078 rStatus = MPI_Alltoall(sendbuf, sendcount, sendtype->getMpiType(), recvbuf, recvcount, recvtype->getMpiType(), comm);
5083 typename SENDTYPE::ModifiedType* sendbufMod =
nullptr;
5084 int sendbufElements = 0;
5093 if(sendtype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == sendbuf)) {
5094 sendtype->createModifiedTypeBuffer(sendbufMod, sendbufElements);
5096 sendbufMod =
reinterpret_cast<typename SENDTYPE::ModifiedType*
>(
const_cast<typename SENDTYPE::Type*
>(sendbuf));
5098 typename RECVTYPE::ModifiedType* recvbufMod =
nullptr;
5099 int recvbufElements = 0;
5104 if(recvtype->isModifiedBufferRequired() ) {
5105 recvtype->createModifiedTypeBuffer(recvbufMod, recvbufElements);
5107 recvbufMod =
reinterpret_cast<typename RECVTYPE::ModifiedType*
>(
const_cast<typename RECVTYPE::Type*
>(recvbuf));
5115 if(sendtype->isModifiedBufferRequired()) {
5117 sendtype->copyIntoModifiedBuffer(sendbuf, 0, sendbufMod, 0, sendcount *
getCommSize(comm));
5119 recvtype->copyIntoModifiedBuffer(recvbuf, 0, recvbufMod, 0, recvcount *
getCommSize(comm));
5128 h->
sendbufCount = sendtype->computeActiveElements(sendcount);
5130 h->
sendbufCount = recvtype->computeActiveElements(recvcount);
5134 h->
recvbufCount = recvtype->computeActiveElements(recvcount);
5166 if(!recvtype->isModifiedBufferRequired()) {
5167 recvtype->clearIndices(recvbuf, 0, recvcount *
getCommSize(comm));
5170 rStatus = MPI_Alltoall(sendbufMod, sendcount, sendtype->getModifiedMpiType(), recvbufMod, recvcount,
5171 recvtype->getModifiedMpiType(), comm);
5174 if(recvtype->isModifiedBufferRequired()) {
5175 recvtype->copyFromModifiedBuffer(recvbuf, 0, recvbufMod, 0, recvcount *
getCommSize(comm));
5185 if(sendtype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == sendbuf)) {
5186 sendtype->deleteModifiedTypeBuffer(sendbufMod);
5188 if(recvtype->isModifiedBufferRequired() ) {
5189 recvtype->deleteModifiedTypeBuffer(recvbufMod);
5199#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
5200 template<
typename SENDTYPE,
typename RECVTYPE>
5258 template<
typename SENDTYPE,
typename RECVTYPE>
5284 if(adType->isOldPrimalsRequired()) {
5294 template<
typename SENDTYPE,
typename RECVTYPE>
5327 template<
typename SENDTYPE,
typename RECVTYPE>
5341 if(adType->isOldPrimalsRequired()) {
5363 template<
typename SENDTYPE,
typename RECVTYPE>
5372 rStatus = MPI_Alltoallv(sendbuf, sendcounts, sdispls, sendtype->getMpiType(), recvbuf, recvcounts, rdispls,
5373 recvtype->getMpiType(), comm);
5379 int sdisplsTotalSize = 0;
5380 if(
nullptr != sdispls) {
5382 if(recvtype->isModifiedBufferRequired()) {
5387 int rdisplsTotalSize = 0;
5388 if(
nullptr != rdispls) {
5390 if(recvtype->isModifiedBufferRequired()) {
5394 typename SENDTYPE::ModifiedType* sendbufMod =
nullptr;
5395 int sendbufElements = 0;
5399 sendbufElements = sdisplsTotalSize;
5401 sendbufElements = rdisplsTotalSize;
5404 if(sendtype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == sendbuf)) {
5405 sendtype->createModifiedTypeBuffer(sendbufMod, sendbufElements);
5407 sendbufMod =
reinterpret_cast<typename SENDTYPE::ModifiedType*
>(
const_cast<typename SENDTYPE::Type*
>(sendbuf));
5409 typename RECVTYPE::ModifiedType* recvbufMod =
nullptr;
5410 int recvbufElements = 0;
5413 recvbufElements = rdisplsTotalSize;
5415 if(recvtype->isModifiedBufferRequired() ) {
5416 recvtype->createModifiedTypeBuffer(recvbufMod, recvbufElements);
5418 recvbufMod =
reinterpret_cast<typename RECVTYPE::ModifiedType*
>(
const_cast<typename RECVTYPE::Type*
>(recvbuf));
5426 if(sendtype->isModifiedBufferRequired()) {
5429 sendtype->copyIntoModifiedBuffer(sendbuf, sdispls[i], sendbufMod, sdisplsMod[i], sendcounts[i]);
5433 recvtype->copyIntoModifiedBuffer(recvbuf, rdispls[i], recvbufMod, rdisplsMod[i], recvcounts[i]);
5459 recvtype->getValues(recvbuf, rdispls[i], h->
recvbufOldPrimals, rdisplsMod[i], recvcounts[i]);
5466 sendtype->getIndices(sendbuf, sdispls[i], h->
sendbufIndices, sdisplsMod[i], sendcounts[i]);
5470 recvtype->getIndices(recvbuf, rdispls[i], h->
sendbufIndices, rdisplsMod[i], recvcounts[i]);
5475 recvtype->createIndices(recvbuf, rdispls[i], h->
recvbufIndices, rdisplsMod[i], recvcounts[i]);
5491 if(!recvtype->isModifiedBufferRequired()) {
5493 recvtype->clearIndices(recvbuf, rdispls[i], recvcounts[i]);
5497 rStatus = MPI_Alltoallv(sendbufMod, sendcounts, sdisplsMod, sendtype->getModifiedMpiType(), recvbufMod, recvcounts,
5498 rdisplsMod, recvtype->getModifiedMpiType(), comm);
5501 if(recvtype->isModifiedBufferRequired()) {
5503 recvtype->copyFromModifiedBuffer(recvbuf, rdispls[i], recvbufMod, rdisplsMod[i], recvcounts[i]);
5515 if(recvtype->isModifiedBufferRequired()) {
5516 delete [] sdisplsMod;
5518 if(recvtype->isModifiedBufferRequired()) {
5519 delete [] rdisplsMod;
5522 if(sendtype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == sendbuf)) {
5523 sendtype->deleteModifiedTypeBuffer(sendbufMod);
5525 if(recvtype->isModifiedBufferRequired() ) {
5526 recvtype->deleteModifiedTypeBuffer(recvbufMod);
5536#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
5537 template<
typename DATATYPE>
5582 template<
typename DATATYPE>
5606 if(adType->isOldPrimalsRequired()) {
5614 template<
typename DATATYPE>
5643 template<
typename DATATYPE>
5655 if(adType->isOldPrimalsRequired()) {
5676 template<
typename DATATYPE>
5677 int AMPI_Bcast_wrap(
typename DATATYPE::Type* bufferSend,
typename DATATYPE::Type* bufferRecv,
int count,
5678 DATATYPE* datatype,
int root,
AMPI_Comm comm) {
5684 rStatus =
MPI_Bcast_wrap(bufferSend, bufferRecv, count, datatype->getMpiType(), root, comm);
5689 typename DATATYPE::ModifiedType* bufferSendMod =
nullptr;
5690 int bufferSendElements = 0;
5695 bufferSendElements = count;
5697 bufferSendElements = count;
5700 if(datatype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == bufferSend)) {
5701 datatype->createModifiedTypeBuffer(bufferSendMod, bufferSendElements);
5703 bufferSendMod =
reinterpret_cast<typename DATATYPE::ModifiedType*
>(
const_cast<typename DATATYPE::Type*
>(bufferSend));
5706 typename DATATYPE::ModifiedType* bufferRecvMod =
nullptr;
5707 int bufferRecvElements = 0;
5710 bufferRecvElements = count;
5712 if(datatype->isModifiedBufferRequired() ) {
5713 datatype->createModifiedTypeBuffer(bufferRecvMod, bufferRecvElements);
5715 bufferRecvMod =
reinterpret_cast<typename DATATYPE::ModifiedType*
>(
const_cast<typename DATATYPE::Type*
>(bufferRecv));
5724 if(datatype->isModifiedBufferRequired()) {
5726 datatype->copyIntoModifiedBuffer(bufferSend, 0, bufferSendMod, 0, count);
5728 datatype->copyIntoModifiedBuffer(bufferRecv, 0, bufferRecvMod, 0, count);
5779 if(!datatype->isModifiedBufferRequired()) {
5780 datatype->clearIndices(bufferRecv, 0, count);
5783 rStatus =
MPI_Bcast_wrap(bufferSendMod, bufferRecvMod, count, datatype->getModifiedMpiType(), root, comm);
5786 if(datatype->isModifiedBufferRequired()) {
5787 datatype->copyFromModifiedBuffer(bufferRecv, 0, bufferRecvMod, 0, count);
5798 if(datatype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == bufferSend)) {
5799 datatype->deleteModifiedTypeBuffer(bufferSendMod);
5802 if(datatype->isModifiedBufferRequired() ) {
5803 datatype->deleteModifiedTypeBuffer(bufferRecvMod);
5813#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
5814 template<
typename SENDTYPE,
typename RECVTYPE>
5861 template<
typename SENDTYPE,
typename RECVTYPE>
5883 if(adType->isOldPrimalsRequired()) {
5895 template<
typename SENDTYPE,
typename RECVTYPE>
5924 template<
typename SENDTYPE,
typename RECVTYPE>
5938 if(adType->isOldPrimalsRequired()) {
5958 template<
typename SENDTYPE,
typename RECVTYPE>
5960 typename RECVTYPE::Type* recvbuf,
int recvcount, RECVTYPE* recvtype,
int root,
AMPI_Comm comm) {
5966 rStatus = MPI_Gather(sendbuf, sendcount, sendtype->getMpiType(), recvbuf, recvcount, recvtype->getMpiType(), root,
5972 typename SENDTYPE::ModifiedType* sendbufMod =
nullptr;
5973 int sendbufElements = 0;
5977 sendbufElements = sendcount;
5979 sendbufElements = recvcount;
5982 if(sendtype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == sendbuf)) {
5983 sendtype->createModifiedTypeBuffer(sendbufMod, sendbufElements);
5985 sendbufMod =
reinterpret_cast<typename SENDTYPE::ModifiedType*
>(
const_cast<typename SENDTYPE::Type*
>(sendbuf));
5987 typename RECVTYPE::ModifiedType* recvbufMod =
nullptr;
5988 int recvbufElements = 0;
5994 if(recvtype->isModifiedBufferRequired() ) {
5995 recvtype->createModifiedTypeBuffer(recvbufMod, recvbufElements);
5997 recvbufMod =
reinterpret_cast<typename RECVTYPE::ModifiedType*
>(
const_cast<typename RECVTYPE::Type*
>(recvbuf));
6006 if(sendtype->isModifiedBufferRequired()) {
6008 sendtype->copyIntoModifiedBuffer(sendbuf, 0, sendbufMod, 0, sendcount);
6010 recvtype->copyIntoModifiedBuffer(recvbuf, recvcount *
getCommRank(comm), recvbufMod, recvcount *
getCommRank(comm),
6020 h->
sendbufCount = sendtype->computeActiveElements(sendcount);
6022 h->
sendbufCount = recvtype->computeActiveElements(recvcount);
6027 h->
recvbufCount = recvtype->computeActiveElements(recvcount);
6046 sendtype->getIndices(sendbuf, 0, h->
sendbufIndices, 0, sendcount);
6068 if(!recvtype->isModifiedBufferRequired()) {
6069 recvtype->clearIndices(recvbuf, 0, recvcount *
getCommSize(comm));
6073 rStatus = MPI_Gather(sendbufMod, sendcount, sendtype->getModifiedMpiType(), recvbufMod, recvcount,
6074 recvtype->getModifiedMpiType(), root, comm);
6078 if(recvtype->isModifiedBufferRequired()) {
6079 recvtype->copyFromModifiedBuffer(recvbuf, 0, recvbufMod, 0, recvcount *
getCommSize(comm));
6092 if(sendtype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == sendbuf)) {
6093 sendtype->deleteModifiedTypeBuffer(sendbufMod);
6096 if(recvtype->isModifiedBufferRequired() ) {
6097 recvtype->deleteModifiedTypeBuffer(recvbufMod);
6108#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
6109 template<
typename SENDTYPE,
typename RECVTYPE>
6162 template<
typename SENDTYPE,
typename RECVTYPE>
6186 if(adType->isOldPrimalsRequired()) {
6200 template<
typename SENDTYPE,
typename RECVTYPE>
6233 template<
typename SENDTYPE,
typename RECVTYPE>
6249 if(adType->isOldPrimalsRequired()) {
6271 template<
typename SENDTYPE,
typename RECVTYPE>
6273 typename RECVTYPE::Type* recvbuf,
const int* recvcounts,
const int* displs, RECVTYPE* recvtype,
int root,
6280 rStatus = MPI_Gatherv(sendbuf, sendcount, sendtype->getMpiType(), recvbuf, recvcounts, displs, recvtype->getMpiType(),
6287 int displsTotalSize = 0;
6288 if(
nullptr != displs) {
6290 if(recvtype->isModifiedBufferRequired()) {
6294 typename SENDTYPE::ModifiedType* sendbufMod =
nullptr;
6295 int sendbufElements = 0;
6299 sendbufElements = sendcount;
6304 if(sendtype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == sendbuf)) {
6305 sendtype->createModifiedTypeBuffer(sendbufMod, sendbufElements);
6307 sendbufMod =
reinterpret_cast<typename SENDTYPE::ModifiedType*
>(
const_cast<typename SENDTYPE::Type*
>(sendbuf));
6309 typename RECVTYPE::ModifiedType* recvbufMod =
nullptr;
6310 int recvbufElements = 0;
6314 recvbufElements = displsTotalSize;
6316 if(recvtype->isModifiedBufferRequired() ) {
6317 recvtype->createModifiedTypeBuffer(recvbufMod, recvbufElements);
6319 recvbufMod =
reinterpret_cast<typename RECVTYPE::ModifiedType*
>(
const_cast<typename RECVTYPE::Type*
>(recvbuf));
6328 if(sendtype->isModifiedBufferRequired()) {
6330 sendtype->copyIntoModifiedBuffer(sendbuf, 0, sendbufMod, 0, sendcount);
6334 recvtype->copyIntoModifiedBuffer(recvbuf, displs[rank], recvbufMod, displsMod[rank], recvcounts[rank]);
6344 h->
sendbufCount = sendtype->computeActiveElements(sendcount);
6347 comm)]) - recvtype->computeActiveElements(displs[
getCommRank(comm)]);
6365 recvtype->getValues(recvbuf, displs[i], h->
recvbufOldPrimals, displsMod[i], recvcounts[i]);
6373 sendtype->getIndices(sendbuf, 0, h->
sendbufIndices, 0, sendcount);
6377 recvtype->getIndices(recvbuf, displs[rank], h->
sendbufIndices, 0, recvcounts[rank]);
6383 recvtype->createIndices(recvbuf, displs[i], h->
recvbufIndices, displsMod[i], recvcounts[i]);
6401 if(!recvtype->isModifiedBufferRequired()) {
6403 recvtype->clearIndices(recvbuf, displs[i], recvcounts[i]);
6408 rStatus = MPI_Gatherv(sendbufMod, sendcount, sendtype->getModifiedMpiType(), recvbufMod, recvcounts, displsMod,
6409 recvtype->getModifiedMpiType(), root, comm);
6413 if(recvtype->isModifiedBufferRequired()) {
6415 recvtype->copyFromModifiedBuffer(recvbuf, displs[i], recvbufMod, displsMod[i], recvcounts[i]);
6430 if(recvtype->isModifiedBufferRequired()) {
6431 delete [] displsMod;
6434 if(sendtype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == sendbuf)) {
6435 sendtype->deleteModifiedTypeBuffer(sendbufMod);
6438 if(recvtype->isModifiedBufferRequired() ) {
6439 recvtype->deleteModifiedTypeBuffer(recvbufMod);
6450#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
6451 template<
typename SENDTYPE,
typename RECVTYPE>
6496 template<
typename SENDTYPE,
typename RECVTYPE>
6510 template<
typename SENDTYPE,
typename RECVTYPE>
6532 template<
typename SENDTYPE,
typename RECVTYPE>
6542 if(adType->isOldPrimalsRequired()) {
6550 template<
typename SENDTYPE,
typename RECVTYPE>
6572 template<
typename SENDTYPE,
typename RECVTYPE>
6587 template<
typename SENDTYPE,
typename RECVTYPE>
6600 if(adType->isOldPrimalsRequired()) {
6612 template<
typename SENDTYPE,
typename RECVTYPE>
6628 template<
typename SENDTYPE,
typename RECVTYPE>
6630 template<
typename SENDTYPE,
typename RECVTYPE>
6632 typename RECVTYPE::Type* recvbuf,
int recvcount, RECVTYPE* recvtype,
AMPI_Comm comm,
AMPI_Request* request) {
6638 rStatus = MPI_Iallgather(sendbuf, sendcount, sendtype->getMpiType(), recvbuf, recvcount, recvtype->getMpiType(), comm,
6644 typename SENDTYPE::ModifiedType* sendbufMod =
nullptr;
6645 int sendbufElements = 0;
6649 sendbufElements = sendcount;
6651 sendbufElements = recvcount;
6654 if(sendtype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == sendbuf)) {
6655 sendtype->createModifiedTypeBuffer(sendbufMod, sendbufElements);
6657 sendbufMod =
reinterpret_cast<typename SENDTYPE::ModifiedType*
>(
const_cast<typename SENDTYPE::Type*
>(sendbuf));
6659 typename RECVTYPE::ModifiedType* recvbufMod =
nullptr;
6660 int recvbufElements = 0;
6665 if(recvtype->isModifiedBufferRequired() ) {
6666 recvtype->createModifiedTypeBuffer(recvbufMod, recvbufElements);
6668 recvbufMod =
reinterpret_cast<typename RECVTYPE::ModifiedType*
>(
const_cast<typename RECVTYPE::Type*
>(recvbuf));
6676 if(sendtype->isModifiedBufferRequired()) {
6678 sendtype->copyIntoModifiedBuffer(sendbuf, 0, sendbufMod, 0, sendcount);
6680 recvtype->copyIntoModifiedBuffer(recvbuf, recvcount *
getCommRank(comm), recvbufMod, recvcount *
getCommRank(comm),
6690 h->
sendbufCount = sendtype->computeActiveElements(sendcount);
6692 h->
sendbufCount = recvtype->computeActiveElements(recvcount);
6696 h->
recvbufCount = recvtype->computeActiveElements(recvcount);
6710 sendtype->getIndices(sendbuf, 0, h->
sendbufIndices, 0, sendcount);
6728 if(!recvtype->isModifiedBufferRequired()) {
6729 recvtype->clearIndices(recvbuf, 0, recvcount *
getCommSize(comm));
6732 rStatus = MPI_Iallgather(sendbufMod, sendcount, sendtype->getModifiedMpiType(), recvbufMod, recvcount,
6733 recvtype->getModifiedMpiType(), comm, &request->
request);
6736 asyncHandle->
sendbuf = sendbuf;
6740 asyncHandle->
recvbuf = recvbuf;
6744 asyncHandle->
comm = comm;
6746 request->
handle = asyncHandle;
6760 template<
typename SENDTYPE,
typename RECVTYPE>
6767 typename SENDTYPE::ModifiedType* sendbufMod = asyncHandle->
sendbufMod;
6769 SENDTYPE* sendtype = asyncHandle->
sendtype;
6770 typename RECVTYPE::Type* recvbuf = asyncHandle->
recvbuf;
6771 typename RECVTYPE::ModifiedType* recvbufMod = asyncHandle->
recvbufMod;
6773 RECVTYPE* recvtype = asyncHandle->
recvtype;
6793 if(adType->isActiveType()) {
6795 adType->addToolAction(h);
6797 if(recvtype->isModifiedBufferRequired()) {
6798 recvtype->copyFromModifiedBuffer(recvbuf, 0, recvbufMod, 0, recvcount *
getCommSize(comm));
6806 adType->stopAssembly(h);
6808 if(sendtype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == sendbuf)) {
6809 sendtype->deleteModifiedTypeBuffer(sendbufMod);
6811 if(recvtype->isModifiedBufferRequired() ) {
6812 recvtype->deleteModifiedTypeBuffer(recvbufMod);
6822#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
6823 template<
typename SENDTYPE,
typename RECVTYPE>
6874 template<
typename SENDTYPE,
typename RECVTYPE>
6890 template<
typename SENDTYPE,
typename RECVTYPE>
6914 template<
typename SENDTYPE,
typename RECVTYPE>
6924 if(adType->isOldPrimalsRequired()) {
6934 template<
typename SENDTYPE,
typename RECVTYPE>
6958 template<
typename SENDTYPE,
typename RECVTYPE>
6975 template<
typename SENDTYPE,
typename RECVTYPE>
6989 if(adType->isOldPrimalsRequired()) {
7002 template<
typename SENDTYPE,
typename RECVTYPE>
7020 template<
typename SENDTYPE,
typename RECVTYPE>
7022 template<
typename SENDTYPE,
typename RECVTYPE>
7024 typename RECVTYPE::Type* recvbuf,
const int* recvcounts,
const int* displs, RECVTYPE* recvtype,
AMPI_Comm comm,
7031 rStatus = MPI_Iallgatherv(sendbuf, sendcount, sendtype->getMpiType(), recvbuf, recvcounts, displs,
7032 recvtype->getMpiType(), comm, &request->
request);
7038 int displsTotalSize = 0;
7039 if(
nullptr != displs) {
7041 if(recvtype->isModifiedBufferRequired()) {
7045 typename SENDTYPE::ModifiedType* sendbufMod =
nullptr;
7046 int sendbufElements = 0;
7050 sendbufElements = sendcount;
7055 if(sendtype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == sendbuf)) {
7056 sendtype->createModifiedTypeBuffer(sendbufMod, sendbufElements);
7058 sendbufMod =
reinterpret_cast<typename SENDTYPE::ModifiedType*
>(
const_cast<typename SENDTYPE::Type*
>(sendbuf));
7060 typename RECVTYPE::ModifiedType* recvbufMod =
nullptr;
7061 int recvbufElements = 0;
7064 recvbufElements = displsTotalSize;
7066 if(recvtype->isModifiedBufferRequired() ) {
7067 recvtype->createModifiedTypeBuffer(recvbufMod, recvbufElements);
7069 recvbufMod =
reinterpret_cast<typename RECVTYPE::ModifiedType*
>(
const_cast<typename RECVTYPE::Type*
>(recvbuf));
7077 if(sendtype->isModifiedBufferRequired()) {
7079 sendtype->copyIntoModifiedBuffer(sendbuf, 0, sendbufMod, 0, sendcount);
7083 recvtype->copyIntoModifiedBuffer(recvbuf, displs[rank], recvbufMod, displsMod[rank], recvcounts[rank]);
7093 h->
sendbufCount = sendtype->computeActiveElements(sendcount);
7096 comm)]) - recvtype->computeActiveElements(displs[
getCommRank(comm)]);
7110 recvtype->getValues(recvbuf, displs[i], h->
recvbufOldPrimals, displsMod[i], recvcounts[i]);
7116 sendtype->getIndices(sendbuf, 0, h->
sendbufIndices, 0, sendcount);
7120 recvtype->getIndices(recvbuf, displs[rank], h->
sendbufIndices, 0, recvcounts[rank]);
7125 recvtype->createIndices(recvbuf, displs[i], h->
recvbufIndices, displsMod[i], recvcounts[i]);
7140 if(!recvtype->isModifiedBufferRequired()) {
7142 recvtype->clearIndices(recvbuf, displs[i], recvcounts[i]);
7146 rStatus = MPI_Iallgatherv(sendbufMod, sendcount, sendtype->getModifiedMpiType(), recvbufMod, recvcounts, displsMod,
7147 recvtype->getModifiedMpiType(), comm, &request->
request);
7150 asyncHandle->
sendbuf = sendbuf;
7154 asyncHandle->
recvbuf = recvbuf;
7158 asyncHandle->
displs = displs;
7160 asyncHandle->
comm = comm;
7162 request->
handle = asyncHandle;
7176 template<
typename SENDTYPE,
typename RECVTYPE>
7183 typename SENDTYPE::ModifiedType* sendbufMod = asyncHandle->
sendbufMod;
7185 SENDTYPE* sendtype = asyncHandle->
sendtype;
7186 typename RECVTYPE::Type* recvbuf = asyncHandle->
recvbuf;
7187 typename RECVTYPE::ModifiedType* recvbufMod = asyncHandle->
recvbufMod;
7188 const int* displsMod = asyncHandle->
displsMod;
7189 const int* recvcounts = asyncHandle->
recvcounts;
7190 const int* displs = asyncHandle->
displs;
7191 RECVTYPE* recvtype = asyncHandle->
recvtype;
7213 if(adType->isActiveType()) {
7215 adType->addToolAction(h);
7217 if(recvtype->isModifiedBufferRequired()) {
7219 recvtype->copyFromModifiedBuffer(recvbuf, displs[i], recvbufMod, displsMod[i], recvcounts[i]);
7230 adType->stopAssembly(h);
7231 if(recvtype->isModifiedBufferRequired()) {
7232 delete [] displsMod;
7235 if(sendtype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == sendbuf)) {
7236 sendtype->deleteModifiedTypeBuffer(sendbufMod);
7238 if(recvtype->isModifiedBufferRequired() ) {
7239 recvtype->deleteModifiedTypeBuffer(recvbufMod);
7249#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
7250 template<
typename DATATYPE>
7294 template<
typename DATATYPE>
7307 template<
typename DATATYPE>
7314 AMPI_Op convOp = adType->convertOperator(h->
op);
7331 template<
typename DATATYPE>
7340 AMPI_Op convOp = adType->convertOperator(h->
op);
7343 if(adType->isOldPrimalsRequired()) {
7351 template<
typename DATATYPE>
7358 AMPI_Op convOp = adType->convertOperator(h->
op);
7375 template<
typename DATATYPE>
7384 AMPI_Op convOp = adType->convertOperator(h->
op);
7392 template<
typename DATATYPE>
7399 AMPI_Op convOp = adType->convertOperator(h->
op);
7408 if(adType->isOldPrimalsRequired()) {
7420 template<
typename DATATYPE>
7429 AMPI_Op convOp = adType->convertOperator(h->
op);
7442 template<
typename DATATYPE>
7444 template<
typename DATATYPE>
7454 rStatus = MPI_Iallreduce(sendbuf, recvbuf, count, datatype->getMpiType(), convOp.
primalFunction, comm,
7460 typename DATATYPE::ModifiedType* sendbufMod =
nullptr;
7461 int sendbufElements = 0;
7465 sendbufElements = count;
7467 sendbufElements = count;
7470 if(datatype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == sendbuf)) {
7471 datatype->createModifiedTypeBuffer(sendbufMod, sendbufElements);
7473 sendbufMod =
reinterpret_cast<typename DATATYPE::ModifiedType*
>(
const_cast<typename DATATYPE::Type*
>(sendbuf));
7475 typename DATATYPE::ModifiedType* recvbufMod =
nullptr;
7476 int recvbufElements = 0;
7479 recvbufElements = count;
7481 if(datatype->isModifiedBufferRequired() ) {
7482 datatype->createModifiedTypeBuffer(recvbufMod, recvbufElements);
7484 recvbufMod =
reinterpret_cast<typename DATATYPE::ModifiedType*
>(
const_cast<typename DATATYPE::Type*
>(recvbuf));
7492 if(datatype->isModifiedBufferRequired()) {
7494 datatype->copyIntoModifiedBuffer(sendbuf, 0, sendbufMod, 0, count);
7496 datatype->copyIntoModifiedBuffer(recvbuf, 0, recvbufMod, 0, count);
7505 h->
sendbufCount = datatype->computeActiveElements(count);
7507 h->
sendbufCount = datatype->computeActiveElements(count);
7511 h->
recvbufCount = datatype->computeActiveElements(count);
7539 datatype->createIndices(recvbuf, 0, h->
recvbufIndices, 0, count);
7551 if(!datatype->isModifiedBufferRequired()) {
7552 datatype->clearIndices(recvbuf, 0, count);
7555 rStatus = MPI_Iallreduce(sendbufMod, recvbufMod, count, datatype->getModifiedMpiType(), convOp.
modifiedPrimalFunction,
7559 asyncHandle->
sendbuf = sendbuf;
7561 asyncHandle->
recvbuf = recvbuf;
7563 asyncHandle->
count = count;
7565 asyncHandle->
op = op;
7566 asyncHandle->
comm = comm;
7568 request->
handle = asyncHandle;
7582 template<
typename DATATYPE>
7589 typename DATATYPE::ModifiedType* sendbufMod = asyncHandle->
sendbufMod;
7590 typename DATATYPE::Type* recvbuf = asyncHandle->
recvbuf;
7591 typename DATATYPE::ModifiedType* recvbufMod = asyncHandle->
recvbufMod;
7592 int count = asyncHandle->
count;
7593 DATATYPE* datatype = asyncHandle->
datatype;
7613 if(adType->isActiveType()) {
7615 AMPI_Op convOp = adType->convertOperator(op);
7617 adType->addToolAction(h);
7619 if(datatype->isModifiedBufferRequired()) {
7620 datatype->copyFromModifiedBuffer(recvbuf, 0, recvbufMod, 0, count);
7633 adType->stopAssembly(h);
7635 if(datatype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == sendbuf)) {
7636 datatype->deleteModifiedTypeBuffer(sendbufMod);
7638 if(datatype->isModifiedBufferRequired() ) {
7639 datatype->deleteModifiedTypeBuffer(recvbufMod);
7649#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
7650 template<
typename SENDTYPE,
typename RECVTYPE>
7695 template<
typename SENDTYPE,
typename RECVTYPE>
7709 template<
typename SENDTYPE,
typename RECVTYPE>
7731 template<
typename SENDTYPE,
typename RECVTYPE>
7741 if(adType->isOldPrimalsRequired()) {
7749 template<
typename SENDTYPE,
typename RECVTYPE>
7771 template<
typename SENDTYPE,
typename RECVTYPE>
7786 template<
typename SENDTYPE,
typename RECVTYPE>
7799 if(adType->isOldPrimalsRequired()) {
7811 template<
typename SENDTYPE,
typename RECVTYPE>
7826 template<
typename SENDTYPE,
typename RECVTYPE>
7828 template<
typename SENDTYPE,
typename RECVTYPE>
7830 typename RECVTYPE::Type* recvbuf,
int recvcount, RECVTYPE* recvtype,
AMPI_Comm comm,
AMPI_Request* request) {
7836 rStatus = MPI_Ialltoall(sendbuf, sendcount, sendtype->getMpiType(), recvbuf, recvcount, recvtype->getMpiType(), comm,
7842 typename SENDTYPE::ModifiedType* sendbufMod =
nullptr;
7843 int sendbufElements = 0;
7852 if(sendtype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == sendbuf)) {
7853 sendtype->createModifiedTypeBuffer(sendbufMod, sendbufElements);
7855 sendbufMod =
reinterpret_cast<typename SENDTYPE::ModifiedType*
>(
const_cast<typename SENDTYPE::Type*
>(sendbuf));
7857 typename RECVTYPE::ModifiedType* recvbufMod =
nullptr;
7858 int recvbufElements = 0;
7863 if(recvtype->isModifiedBufferRequired() ) {
7864 recvtype->createModifiedTypeBuffer(recvbufMod, recvbufElements);
7866 recvbufMod =
reinterpret_cast<typename RECVTYPE::ModifiedType*
>(
const_cast<typename RECVTYPE::Type*
>(recvbuf));
7874 if(sendtype->isModifiedBufferRequired()) {
7876 sendtype->copyIntoModifiedBuffer(sendbuf, 0, sendbufMod, 0, sendcount *
getCommSize(comm));
7878 recvtype->copyIntoModifiedBuffer(recvbuf, 0, recvbufMod, 0, recvcount *
getCommSize(comm));
7887 h->
sendbufCount = sendtype->computeActiveElements(sendcount);
7889 h->
sendbufCount = recvtype->computeActiveElements(recvcount);
7893 h->
recvbufCount = recvtype->computeActiveElements(recvcount);
7925 if(!recvtype->isModifiedBufferRequired()) {
7926 recvtype->clearIndices(recvbuf, 0, recvcount *
getCommSize(comm));
7929 rStatus = MPI_Ialltoall(sendbufMod, sendcount, sendtype->getModifiedMpiType(), recvbufMod, recvcount,
7930 recvtype->getModifiedMpiType(), comm, &request->
request);
7933 asyncHandle->
sendbuf = sendbuf;
7937 asyncHandle->
recvbuf = recvbuf;
7941 asyncHandle->
comm = comm;
7943 request->
handle = asyncHandle;
7957 template<
typename SENDTYPE,
typename RECVTYPE>
7964 typename SENDTYPE::ModifiedType* sendbufMod = asyncHandle->
sendbufMod;
7966 SENDTYPE* sendtype = asyncHandle->
sendtype;
7967 typename RECVTYPE::Type* recvbuf = asyncHandle->
recvbuf;
7968 typename RECVTYPE::ModifiedType* recvbufMod = asyncHandle->
recvbufMod;
7970 RECVTYPE* recvtype = asyncHandle->
recvtype;
7990 if(adType->isActiveType()) {
7992 adType->addToolAction(h);
7994 if(recvtype->isModifiedBufferRequired()) {
7995 recvtype->copyFromModifiedBuffer(recvbuf, 0, recvbufMod, 0, recvcount *
getCommSize(comm));
8003 adType->stopAssembly(h);
8005 if(sendtype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == sendbuf)) {
8006 sendtype->deleteModifiedTypeBuffer(sendbufMod);
8008 if(recvtype->isModifiedBufferRequired() ) {
8009 recvtype->deleteModifiedTypeBuffer(recvbufMod);
8019#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
8020 template<
typename SENDTYPE,
typename RECVTYPE>
8077 template<
typename SENDTYPE,
typename RECVTYPE>
8095 template<
typename SENDTYPE,
typename RECVTYPE>
8120 template<
typename SENDTYPE,
typename RECVTYPE>
8132 if(adType->isOldPrimalsRequired()) {
8142 template<
typename SENDTYPE,
typename RECVTYPE>
8167 template<
typename SENDTYPE,
typename RECVTYPE>
8186 template<
typename SENDTYPE,
typename RECVTYPE>
8200 if(adType->isOldPrimalsRequired()) {
8214 template<
typename SENDTYPE,
typename RECVTYPE>
8233 template<
typename SENDTYPE,
typename RECVTYPE>
8235 template<
typename SENDTYPE,
typename RECVTYPE>
8237 SENDTYPE* sendtype,
typename RECVTYPE::Type* recvbuf,
const int* recvcounts,
const int* rdispls, RECVTYPE* recvtype,
8244 rStatus = MPI_Ialltoallv(sendbuf, sendcounts, sdispls, sendtype->getMpiType(), recvbuf, recvcounts, rdispls,
8245 recvtype->getMpiType(), comm, &request->
request);
8251 int sdisplsTotalSize = 0;
8252 if(
nullptr != sdispls) {
8254 if(recvtype->isModifiedBufferRequired()) {
8259 int rdisplsTotalSize = 0;
8260 if(
nullptr != rdispls) {
8262 if(recvtype->isModifiedBufferRequired()) {
8266 typename SENDTYPE::ModifiedType* sendbufMod =
nullptr;
8267 int sendbufElements = 0;
8271 sendbufElements = sdisplsTotalSize;
8273 sendbufElements = rdisplsTotalSize;
8276 if(sendtype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == sendbuf)) {
8277 sendtype->createModifiedTypeBuffer(sendbufMod, sendbufElements);
8279 sendbufMod =
reinterpret_cast<typename SENDTYPE::ModifiedType*
>(
const_cast<typename SENDTYPE::Type*
>(sendbuf));
8281 typename RECVTYPE::ModifiedType* recvbufMod =
nullptr;
8282 int recvbufElements = 0;
8285 recvbufElements = rdisplsTotalSize;
8287 if(recvtype->isModifiedBufferRequired() ) {
8288 recvtype->createModifiedTypeBuffer(recvbufMod, recvbufElements);
8290 recvbufMod =
reinterpret_cast<typename RECVTYPE::ModifiedType*
>(
const_cast<typename RECVTYPE::Type*
>(recvbuf));
8298 if(sendtype->isModifiedBufferRequired()) {
8301 sendtype->copyIntoModifiedBuffer(sendbuf, sdispls[i], sendbufMod, sdisplsMod[i], sendcounts[i]);
8305 recvtype->copyIntoModifiedBuffer(recvbuf, rdispls[i], recvbufMod, rdisplsMod[i], recvcounts[i]);
8331 recvtype->getValues(recvbuf, rdispls[i], h->
recvbufOldPrimals, rdisplsMod[i], recvcounts[i]);
8338 sendtype->getIndices(sendbuf, sdispls[i], h->
sendbufIndices, sdisplsMod[i], sendcounts[i]);
8342 recvtype->getIndices(recvbuf, rdispls[i], h->
sendbufIndices, rdisplsMod[i], recvcounts[i]);
8347 recvtype->createIndices(recvbuf, rdispls[i], h->
recvbufIndices, rdisplsMod[i], recvcounts[i]);
8363 if(!recvtype->isModifiedBufferRequired()) {
8365 recvtype->clearIndices(recvbuf, rdispls[i], recvcounts[i]);
8369 rStatus = MPI_Ialltoallv(sendbufMod, sendcounts, sdisplsMod, sendtype->getModifiedMpiType(), recvbufMod, recvcounts,
8370 rdisplsMod, recvtype->getModifiedMpiType(), comm, &request->
request);
8373 asyncHandle->
sendbuf = sendbuf;
8377 asyncHandle->
sdispls = sdispls;
8379 asyncHandle->
recvbuf = recvbuf;
8383 asyncHandle->
rdispls = rdispls;
8385 asyncHandle->
comm = comm;
8387 request->
handle = asyncHandle;
8401 template<
typename SENDTYPE,
typename RECVTYPE>
8408 typename SENDTYPE::ModifiedType* sendbufMod = asyncHandle->
sendbufMod;
8409 const int* sdisplsMod = asyncHandle->
sdisplsMod;
8410 const int* sendcounts = asyncHandle->
sendcounts;
8411 const int* sdispls = asyncHandle->
sdispls;
8412 SENDTYPE* sendtype = asyncHandle->
sendtype;
8413 typename RECVTYPE::Type* recvbuf = asyncHandle->
recvbuf;
8414 typename RECVTYPE::ModifiedType* recvbufMod = asyncHandle->
recvbufMod;
8415 const int* rdisplsMod = asyncHandle->
rdisplsMod;
8416 const int* recvcounts = asyncHandle->
recvcounts;
8417 const int* rdispls = asyncHandle->
rdispls;
8418 RECVTYPE* recvtype = asyncHandle->
recvtype;
8442 if(adType->isActiveType()) {
8444 adType->addToolAction(h);
8446 if(recvtype->isModifiedBufferRequired()) {
8448 recvtype->copyFromModifiedBuffer(recvbuf, rdispls[i], recvbufMod, rdisplsMod[i], recvcounts[i]);
8459 adType->stopAssembly(h);
8460 if(recvtype->isModifiedBufferRequired()) {
8461 delete [] sdisplsMod;
8463 if(recvtype->isModifiedBufferRequired()) {
8464 delete [] rdisplsMod;
8467 if(sendtype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == sendbuf)) {
8468 sendtype->deleteModifiedTypeBuffer(sendbufMod);
8470 if(recvtype->isModifiedBufferRequired() ) {
8471 recvtype->deleteModifiedTypeBuffer(recvbufMod);
8481#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
8482 template<
typename DATATYPE>
8526 template<
typename DATATYPE>
8539 template<
typename DATATYPE>
8562 template<
typename DATATYPE>
8573 if(adType->isOldPrimalsRequired()) {
8581 template<
typename DATATYPE>
8604 template<
typename DATATYPE>
8620 template<
typename DATATYPE>
8632 if(adType->isOldPrimalsRequired()) {
8646 template<
typename DATATYPE>
8663 template<
typename DATATYPE>
8665 template<
typename DATATYPE>
8666 int AMPI_Ibcast_wrap(
typename DATATYPE::Type* bufferSend,
typename DATATYPE::Type* bufferRecv,
int count,
8673 rStatus =
MPI_Ibcast_wrap(bufferSend, bufferRecv, count, datatype->getMpiType(), root, comm, &request->
request);
8678 typename DATATYPE::ModifiedType* bufferSendMod =
nullptr;
8679 int bufferSendElements = 0;
8684 bufferSendElements = count;
8686 bufferSendElements = count;
8689 if(datatype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == bufferSend)) {
8690 datatype->createModifiedTypeBuffer(bufferSendMod, bufferSendElements);
8692 bufferSendMod =
reinterpret_cast<typename DATATYPE::ModifiedType*
>(
const_cast<typename DATATYPE::Type*
>(bufferSend));
8695 typename DATATYPE::ModifiedType* bufferRecvMod =
nullptr;
8696 int bufferRecvElements = 0;
8699 bufferRecvElements = count;
8701 if(datatype->isModifiedBufferRequired() ) {
8702 datatype->createModifiedTypeBuffer(bufferRecvMod, bufferRecvElements);
8704 bufferRecvMod =
reinterpret_cast<typename DATATYPE::ModifiedType*
>(
const_cast<typename DATATYPE::Type*
>(bufferRecv));
8713 if(datatype->isModifiedBufferRequired()) {
8715 datatype->copyIntoModifiedBuffer(bufferSend, 0, bufferSendMod, 0, count);
8717 datatype->copyIntoModifiedBuffer(bufferRecv, 0, bufferRecvMod, 0, count);
8768 if(!datatype->isModifiedBufferRequired()) {
8769 datatype->clearIndices(bufferRecv, 0, count);
8772 rStatus =
MPI_Ibcast_wrap(bufferSendMod, bufferRecvMod, count, datatype->getModifiedMpiType(), root, comm,
8780 asyncHandle->
count = count;
8782 asyncHandle->
root = root;
8783 asyncHandle->
comm = comm;
8785 request->
handle = asyncHandle;
8799 template<
typename DATATYPE>
8804 typename DATATYPE::Type* bufferSend = asyncHandle->
bufferSend;
8805 typename DATATYPE::ModifiedType* bufferSendMod = asyncHandle->
bufferSendMod;
8806 typename DATATYPE::Type* bufferRecv = asyncHandle->
bufferRecv;
8807 typename DATATYPE::ModifiedType* bufferRecvMod = asyncHandle->
bufferRecvMod;
8808 int count = asyncHandle->
count;
8809 DATATYPE* datatype = asyncHandle->
datatype;
8810 int root = asyncHandle->
root;
8829 if(adType->isActiveType()) {
8831 adType->addToolAction(h);
8833 if(datatype->isModifiedBufferRequired()) {
8834 datatype->copyFromModifiedBuffer(bufferRecv, 0, bufferRecvMod, 0, count);
8842 adType->stopAssembly(h);
8845 if(datatype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == bufferSend)) {
8846 datatype->deleteModifiedTypeBuffer(bufferSendMod);
8849 if(datatype->isModifiedBufferRequired() ) {
8850 datatype->deleteModifiedTypeBuffer(bufferRecvMod);
8860#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
8861 template<
typename SENDTYPE,
typename RECVTYPE>
8907 template<
typename SENDTYPE,
typename RECVTYPE>
8922 template<
typename SENDTYPE,
typename RECVTYPE>
8946 template<
typename SENDTYPE,
typename RECVTYPE>
8956 if(adType->isOldPrimalsRequired()) {
8968 template<
typename SENDTYPE,
typename RECVTYPE>
8992 template<
typename SENDTYPE,
typename RECVTYPE>
9009 template<
typename SENDTYPE,
typename RECVTYPE>
9024 if(adType->isOldPrimalsRequired()) {
9038 template<
typename SENDTYPE,
typename RECVTYPE>
9055 template<
typename SENDTYPE,
typename RECVTYPE>
9057 template<
typename SENDTYPE,
typename RECVTYPE>
9059 typename RECVTYPE::Type* recvbuf,
int recvcount, RECVTYPE* recvtype,
int root,
AMPI_Comm comm,
AMPI_Request* request) {
9065 rStatus = MPI_Igather(sendbuf, sendcount, sendtype->getMpiType(), recvbuf, recvcount, recvtype->getMpiType(), root,
9071 typename SENDTYPE::ModifiedType* sendbufMod =
nullptr;
9072 int sendbufElements = 0;
9076 sendbufElements = sendcount;
9078 sendbufElements = recvcount;
9081 if(sendtype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == sendbuf)) {
9082 sendtype->createModifiedTypeBuffer(sendbufMod, sendbufElements);
9084 sendbufMod =
reinterpret_cast<typename SENDTYPE::ModifiedType*
>(
const_cast<typename SENDTYPE::Type*
>(sendbuf));
9086 typename RECVTYPE::ModifiedType* recvbufMod =
nullptr;
9087 int recvbufElements = 0;
9093 if(recvtype->isModifiedBufferRequired() ) {
9094 recvtype->createModifiedTypeBuffer(recvbufMod, recvbufElements);
9096 recvbufMod =
reinterpret_cast<typename RECVTYPE::ModifiedType*
>(
const_cast<typename RECVTYPE::Type*
>(recvbuf));
9105 if(sendtype->isModifiedBufferRequired()) {
9107 sendtype->copyIntoModifiedBuffer(sendbuf, 0, sendbufMod, 0, sendcount);
9109 recvtype->copyIntoModifiedBuffer(recvbuf, recvcount *
getCommRank(comm), recvbufMod, recvcount *
getCommRank(comm),
9119 h->
sendbufCount = sendtype->computeActiveElements(sendcount);
9121 h->
sendbufCount = recvtype->computeActiveElements(recvcount);
9126 h->
recvbufCount = recvtype->computeActiveElements(recvcount);
9145 sendtype->getIndices(sendbuf, 0, h->
sendbufIndices, 0, sendcount);
9167 if(!recvtype->isModifiedBufferRequired()) {
9168 recvtype->clearIndices(recvbuf, 0, recvcount *
getCommSize(comm));
9172 rStatus = MPI_Igather(sendbufMod, sendcount, sendtype->getModifiedMpiType(), recvbufMod, recvcount,
9173 recvtype->getModifiedMpiType(), root, comm, &request->
request);
9176 asyncHandle->
sendbuf = sendbuf;
9180 asyncHandle->
recvbuf = recvbuf;
9184 asyncHandle->
root = root;
9185 asyncHandle->
comm = comm;
9187 request->
handle = asyncHandle;
9201 template<
typename SENDTYPE,
typename RECVTYPE>
9208 typename SENDTYPE::ModifiedType* sendbufMod = asyncHandle->
sendbufMod;
9210 SENDTYPE* sendtype = asyncHandle->
sendtype;
9211 typename RECVTYPE::Type* recvbuf = asyncHandle->
recvbuf;
9212 typename RECVTYPE::ModifiedType* recvbufMod = asyncHandle->
recvbufMod;
9214 RECVTYPE* recvtype = asyncHandle->
recvtype;
9215 int root = asyncHandle->
root;
9236 if(adType->isActiveType()) {
9238 adType->addToolAction(h);
9241 if(recvtype->isModifiedBufferRequired()) {
9242 recvtype->copyFromModifiedBuffer(recvbuf, 0, recvbufMod, 0, recvcount *
getCommSize(comm));
9253 adType->stopAssembly(h);
9255 if(sendtype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == sendbuf)) {
9256 sendtype->deleteModifiedTypeBuffer(sendbufMod);
9259 if(recvtype->isModifiedBufferRequired() ) {
9260 recvtype->deleteModifiedTypeBuffer(recvbufMod);
9271#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
9272 template<
typename SENDTYPE,
typename RECVTYPE>
9324 template<
typename SENDTYPE,
typename RECVTYPE>
9341 template<
typename SENDTYPE,
typename RECVTYPE>
9367 template<
typename SENDTYPE,
typename RECVTYPE>
9377 if(adType->isOldPrimalsRequired()) {
9391 template<
typename SENDTYPE,
typename RECVTYPE>
9417 template<
typename SENDTYPE,
typename RECVTYPE>
9436 template<
typename SENDTYPE,
typename RECVTYPE>
9452 if(adType->isOldPrimalsRequired()) {
9467 template<
typename SENDTYPE,
typename RECVTYPE>
9486 template<
typename SENDTYPE,
typename RECVTYPE>
9488 template<
typename SENDTYPE,
typename RECVTYPE>
9490 typename RECVTYPE::Type* recvbuf,
const int* recvcounts,
const int* displs, RECVTYPE* recvtype,
int root,
9497 rStatus = MPI_Igatherv(sendbuf, sendcount, sendtype->getMpiType(), recvbuf, recvcounts, displs, recvtype->getMpiType(),
9498 root, comm, &request->
request);
9504 int displsTotalSize = 0;
9505 if(
nullptr != displs) {
9507 if(recvtype->isModifiedBufferRequired()) {
9511 typename SENDTYPE::ModifiedType* sendbufMod =
nullptr;
9512 int sendbufElements = 0;
9516 sendbufElements = sendcount;
9521 if(sendtype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == sendbuf)) {
9522 sendtype->createModifiedTypeBuffer(sendbufMod, sendbufElements);
9524 sendbufMod =
reinterpret_cast<typename SENDTYPE::ModifiedType*
>(
const_cast<typename SENDTYPE::Type*
>(sendbuf));
9526 typename RECVTYPE::ModifiedType* recvbufMod =
nullptr;
9527 int recvbufElements = 0;
9531 recvbufElements = displsTotalSize;
9533 if(recvtype->isModifiedBufferRequired() ) {
9534 recvtype->createModifiedTypeBuffer(recvbufMod, recvbufElements);
9536 recvbufMod =
reinterpret_cast<typename RECVTYPE::ModifiedType*
>(
const_cast<typename RECVTYPE::Type*
>(recvbuf));
9545 if(sendtype->isModifiedBufferRequired()) {
9547 sendtype->copyIntoModifiedBuffer(sendbuf, 0, sendbufMod, 0, sendcount);
9551 recvtype->copyIntoModifiedBuffer(recvbuf, displs[rank], recvbufMod, displsMod[rank], recvcounts[rank]);
9561 h->
sendbufCount = sendtype->computeActiveElements(sendcount);
9564 comm)]) - recvtype->computeActiveElements(displs[
getCommRank(comm)]);
9582 recvtype->getValues(recvbuf, displs[i], h->
recvbufOldPrimals, displsMod[i], recvcounts[i]);
9590 sendtype->getIndices(sendbuf, 0, h->
sendbufIndices, 0, sendcount);
9594 recvtype->getIndices(recvbuf, displs[rank], h->
sendbufIndices, 0, recvcounts[rank]);
9600 recvtype->createIndices(recvbuf, displs[i], h->
recvbufIndices, displsMod[i], recvcounts[i]);
9618 if(!recvtype->isModifiedBufferRequired()) {
9620 recvtype->clearIndices(recvbuf, displs[i], recvcounts[i]);
9625 rStatus = MPI_Igatherv(sendbufMod, sendcount, sendtype->getModifiedMpiType(), recvbufMod, recvcounts, displsMod,
9626 recvtype->getModifiedMpiType(), root, comm, &request->
request);
9629 asyncHandle->
sendbuf = sendbuf;
9633 asyncHandle->
recvbuf = recvbuf;
9637 asyncHandle->
displs = displs;
9639 asyncHandle->
root = root;
9640 asyncHandle->
comm = comm;
9642 request->
handle = asyncHandle;
9656 template<
typename SENDTYPE,
typename RECVTYPE>
9663 typename SENDTYPE::ModifiedType* sendbufMod = asyncHandle->
sendbufMod;
9665 SENDTYPE* sendtype = asyncHandle->
sendtype;
9666 typename RECVTYPE::Type* recvbuf = asyncHandle->
recvbuf;
9667 typename RECVTYPE::ModifiedType* recvbufMod = asyncHandle->
recvbufMod;
9668 const int* displsMod = asyncHandle->
displsMod;
9669 const int* recvcounts = asyncHandle->
recvcounts;
9670 const int* displs = asyncHandle->
displs;
9671 RECVTYPE* recvtype = asyncHandle->
recvtype;
9672 int root = asyncHandle->
root;
9695 if(adType->isActiveType()) {
9697 adType->addToolAction(h);
9700 if(recvtype->isModifiedBufferRequired()) {
9702 recvtype->copyFromModifiedBuffer(recvbuf, displs[i], recvbufMod, displsMod[i], recvcounts[i]);
9716 adType->stopAssembly(h);
9717 if(recvtype->isModifiedBufferRequired()) {
9718 delete [] displsMod;
9721 if(sendtype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == sendbuf)) {
9722 sendtype->deleteModifiedTypeBuffer(sendbufMod);
9725 if(recvtype->isModifiedBufferRequired() ) {
9726 recvtype->deleteModifiedTypeBuffer(recvbufMod);
9737#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
9738 template<
typename DATATYPE>
9783 template<
typename DATATYPE>
9797 template<
typename DATATYPE>
9803 AMPI_Op convOp = adType->convertOperator(h->
op);
9822 template<
typename DATATYPE>
9830 AMPI_Op convOp = adType->convertOperator(h->
op);
9833 if(adType->isOldPrimalsRequired()) {
9845 template<
typename DATATYPE>
9851 AMPI_Op convOp = adType->convertOperator(h->
op);
9870 template<
typename DATATYPE>
9878 AMPI_Op convOp = adType->convertOperator(h->
op);
9888 template<
typename DATATYPE>
9894 AMPI_Op convOp = adType->convertOperator(h->
op);
9905 if(adType->isOldPrimalsRequired()) {
9919 template<
typename DATATYPE>
9927 AMPI_Op convOp = adType->convertOperator(h->
op);
9941 template<
typename DATATYPE>
9943 template<
typename DATATYPE>
9953 rStatus = MPI_Ireduce(sendbuf, recvbuf, count, datatype->getMpiType(), convOp.
primalFunction, root, comm,
9959 typename DATATYPE::ModifiedType* sendbufMod =
nullptr;
9960 int sendbufElements = 0;
9964 sendbufElements = count;
9966 sendbufElements = count;
9969 if(datatype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == sendbuf)) {
9970 datatype->createModifiedTypeBuffer(sendbufMod, sendbufElements);
9972 sendbufMod =
reinterpret_cast<typename DATATYPE::ModifiedType*
>(
const_cast<typename DATATYPE::Type*
>(sendbuf));
9974 typename DATATYPE::ModifiedType* recvbufMod =
nullptr;
9975 int recvbufElements = 0;
9979 recvbufElements = count;
9981 if(datatype->isModifiedBufferRequired() ) {
9982 datatype->createModifiedTypeBuffer(recvbufMod, recvbufElements);
9984 recvbufMod =
reinterpret_cast<typename DATATYPE::ModifiedType*
>(
const_cast<typename DATATYPE::Type*
>(recvbuf));
9993 if(datatype->isModifiedBufferRequired()) {
9995 datatype->copyIntoModifiedBuffer(sendbuf, 0, sendbufMod, 0, count);
9997 datatype->copyIntoModifiedBuffer(recvbuf, 0, recvbufMod, 0, count);
10006 h->
sendbufCount = datatype->computeActiveElements(count);
10008 h->
sendbufCount = datatype->computeActiveElements(count);
10013 h->
recvbufCount = datatype->computeActiveElements(count);
10047 datatype->createIndices(recvbuf, 0, h->
recvbufIndices, 0, count);
10062 if(!datatype->isModifiedBufferRequired()) {
10063 datatype->clearIndices(recvbuf, 0, count);
10067 rStatus = MPI_Ireduce(sendbufMod, recvbufMod, count, datatype->getModifiedMpiType(), convOp.
modifiedPrimalFunction,
10068 root, comm, &request->
request);
10071 asyncHandle->
sendbuf = sendbuf;
10073 asyncHandle->
recvbuf = recvbuf;
10075 asyncHandle->
count = count;
10077 asyncHandle->
op = op;
10078 asyncHandle->
root = root;
10079 asyncHandle->
comm = comm;
10081 request->
handle = asyncHandle;
10095 template<
typename DATATYPE>
10102 typename DATATYPE::ModifiedType* sendbufMod = asyncHandle->
sendbufMod;
10103 typename DATATYPE::Type* recvbuf = asyncHandle->
recvbuf;
10104 typename DATATYPE::ModifiedType* recvbufMod = asyncHandle->
recvbufMod;
10105 int count = asyncHandle->
count;
10106 DATATYPE* datatype = asyncHandle->
datatype;
10108 int root = asyncHandle->
root;
10126 delete asyncHandle;
10128 if(adType->isActiveType()) {
10130 AMPI_Op convOp = adType->convertOperator(op);
10132 adType->addToolAction(h);
10135 if(datatype->isModifiedBufferRequired()) {
10136 datatype->copyFromModifiedBuffer(recvbuf, 0, recvbufMod, 0, count);
10156 adType->stopAssembly(h);
10158 if(datatype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == sendbuf)) {
10159 datatype->deleteModifiedTypeBuffer(sendbufMod);
10162 if(datatype->isModifiedBufferRequired() ) {
10163 datatype->deleteModifiedTypeBuffer(recvbufMod);
10174#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
10175 template<
typename SENDTYPE,
typename RECVTYPE>
10221 template<
typename SENDTYPE,
typename RECVTYPE>
10236 template<
typename SENDTYPE,
typename RECVTYPE>
10260 template<
typename SENDTYPE,
typename RECVTYPE>
10272 if(adType->isOldPrimalsRequired()) {
10280 template<
typename SENDTYPE,
typename RECVTYPE>
10304 template<
typename SENDTYPE,
typename RECVTYPE>
10321 template<
typename SENDTYPE,
typename RECVTYPE>
10334 if(adType->isOldPrimalsRequired()) {
10348 template<
typename SENDTYPE,
typename RECVTYPE>
10365 template<
typename SENDTYPE,
typename RECVTYPE>
10367 template<
typename SENDTYPE,
typename RECVTYPE>
10368 int AMPI_Iscatter(
const typename SENDTYPE::Type* sendbuf,
int sendcount, SENDTYPE* sendtype,
10369 typename RECVTYPE::Type* recvbuf,
int recvcount, RECVTYPE* recvtype,
int root,
AMPI_Comm comm,
AMPI_Request* request) {
10375 rStatus = MPI_Iscatter(sendbuf, sendcount, sendtype->getMpiType(), recvbuf, recvcount, recvtype->getMpiType(), root,
10381 typename SENDTYPE::ModifiedType* sendbufMod =
nullptr;
10382 int sendbufElements = 0;
10388 if(sendtype->isModifiedBufferRequired() ) {
10389 sendtype->createModifiedTypeBuffer(sendbufMod, sendbufElements);
10391 sendbufMod =
reinterpret_cast<typename SENDTYPE::ModifiedType*
>(
const_cast<typename SENDTYPE::Type*
>(sendbuf));
10394 typename RECVTYPE::ModifiedType* recvbufMod =
nullptr;
10395 int recvbufElements = 0;
10399 recvbufElements = recvcount;
10401 recvbufElements = sendcount;
10404 if(recvtype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == recvbuf)) {
10405 recvtype->createModifiedTypeBuffer(recvbufMod, recvbufElements);
10407 recvbufMod =
reinterpret_cast<typename RECVTYPE::ModifiedType*
>(
const_cast<typename RECVTYPE::Type*
>(recvbuf));
10416 if(sendtype->isModifiedBufferRequired()) {
10417 sendtype->copyIntoModifiedBuffer(sendbuf, 0, sendbufMod, 0, sendcount *
getCommSize(comm));
10426 h->
sendbufCount = sendtype->computeActiveElements(sendcount);
10431 h->
recvbufCount = recvtype->computeActiveElements(recvcount);
10433 h->
recvbufCount = sendtype->computeActiveElements(sendcount);
10456 recvtype->createIndices(recvbuf, 0, h->
recvbufIndices, 0, recvcount);
10458 sendtype->createIndices(
const_cast<typename SENDTYPE::Type*
>(sendbuf), sendcount *
getCommRank(comm), h->
recvbufIndices,
10474 if(!recvtype->isModifiedBufferRequired()) {
10476 recvtype->clearIndices(recvbuf, 0, recvcount);
10478 sendtype->clearIndices(
const_cast<typename SENDTYPE::Type*
>(sendbuf), sendcount *
getCommRank(comm), sendcount);
10482 rStatus = MPI_Iscatter(sendbufMod, sendcount, sendtype->getModifiedMpiType(), recvbufMod, recvcount,
10483 recvtype->getModifiedMpiType(), root, comm, &request->
request);
10486 asyncHandle->
sendbuf = sendbuf;
10490 asyncHandle->
recvbuf = recvbuf;
10494 asyncHandle->
root = root;
10495 asyncHandle->
comm = comm;
10497 request->
handle = asyncHandle;
10511 template<
typename SENDTYPE,
typename RECVTYPE>
10517 const typename SENDTYPE::Type* sendbuf = asyncHandle->
sendbuf;
10518 typename SENDTYPE::ModifiedType* sendbufMod = asyncHandle->
sendbufMod;
10519 int sendcount = asyncHandle->
sendcount;
10520 SENDTYPE* sendtype = asyncHandle->
sendtype;
10521 typename RECVTYPE::Type* recvbuf = asyncHandle->
recvbuf;
10522 typename RECVTYPE::ModifiedType* recvbufMod = asyncHandle->
recvbufMod;
10523 int recvcount = asyncHandle->
recvcount;
10524 RECVTYPE* recvtype = asyncHandle->
recvtype;
10525 int root = asyncHandle->
root;
10544 delete asyncHandle;
10546 if(adType->isActiveType()) {
10548 adType->addToolAction(h);
10550 if(recvtype->isModifiedBufferRequired()) {
10552 recvtype->copyFromModifiedBuffer(recvbuf, 0, recvbufMod, 0, recvcount);
10554 sendtype->copyFromModifiedBuffer(
const_cast<typename SENDTYPE::Type*
>(sendbuf), sendcount *
getCommRank(comm),
10555 sendbufMod, sendcount *
getCommRank(comm), sendcount);
10564 sendtype->registerValue(
const_cast<typename SENDTYPE::Type*
>(sendbuf), sendcount *
getCommRank(comm), h->
recvbufIndices,
10569 adType->stopAssembly(h);
10572 if(sendtype->isModifiedBufferRequired() ) {
10573 sendtype->deleteModifiedTypeBuffer(sendbufMod);
10576 if(recvtype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == recvbuf)) {
10577 recvtype->deleteModifiedTypeBuffer(recvbufMod);
10587#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
10588 template<
typename SENDTYPE,
typename RECVTYPE>
10640 template<
typename SENDTYPE,
typename RECVTYPE>
10657 template<
typename SENDTYPE,
typename RECVTYPE>
10683 template<
typename SENDTYPE,
typename RECVTYPE>
10697 if(adType->isOldPrimalsRequired()) {
10705 template<
typename SENDTYPE,
typename RECVTYPE>
10731 template<
typename SENDTYPE,
typename RECVTYPE>
10750 template<
typename SENDTYPE,
typename RECVTYPE>
10763 if(adType->isOldPrimalsRequired()) {
10779 template<
typename SENDTYPE,
typename RECVTYPE>
10798 template<
typename SENDTYPE,
typename RECVTYPE>
10800 template<
typename SENDTYPE,
typename RECVTYPE>
10801 int AMPI_Iscatterv(
const typename SENDTYPE::Type* sendbuf,
const int* sendcounts,
const int* displs, SENDTYPE* sendtype,
10802 typename RECVTYPE::Type* recvbuf,
int recvcount, RECVTYPE* recvtype,
int root,
AMPI_Comm comm,
AMPI_Request* request) {
10808 rStatus = MPI_Iscatterv(sendbuf, sendcounts, displs, sendtype->getMpiType(), recvbuf, recvcount, recvtype->getMpiType(),
10809 root, comm, &request->
request);
10815 int displsTotalSize = 0;
10816 if(
nullptr != displs) {
10818 if(recvtype->isModifiedBufferRequired()) {
10822 typename SENDTYPE::ModifiedType* sendbufMod =
nullptr;
10823 int sendbufElements = 0;
10827 sendbufElements = displsTotalSize;
10829 if(sendtype->isModifiedBufferRequired() ) {
10830 sendtype->createModifiedTypeBuffer(sendbufMod, sendbufElements);
10832 sendbufMod =
reinterpret_cast<typename SENDTYPE::ModifiedType*
>(
const_cast<typename SENDTYPE::Type*
>(sendbuf));
10835 typename RECVTYPE::ModifiedType* recvbufMod =
nullptr;
10836 int recvbufElements = 0;
10840 recvbufElements = recvcount;
10845 if(recvtype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == recvbuf)) {
10846 recvtype->createModifiedTypeBuffer(recvbufMod, recvbufElements);
10848 recvbufMod =
reinterpret_cast<typename RECVTYPE::ModifiedType*
>(
const_cast<typename RECVTYPE::Type*
>(recvbuf));
10857 if(sendtype->isModifiedBufferRequired()) {
10859 sendtype->copyIntoModifiedBuffer(sendbuf, displs[i], sendbufMod, displsMod[i], sendcounts[i]);
10874 h->
recvbufCount = recvtype->computeActiveElements(recvcount);
10877 comm)]) - sendtype->computeActiveElements(displs[
getCommRank(comm)]);
10892 sendtype->getValues(sendbuf, displs[rank], h->
recvbufOldPrimals, 0, sendcounts[rank]);
10900 sendtype->getIndices(sendbuf, displs[i], h->
sendbufIndices, displsMod[i], sendcounts[i]);
10905 recvtype->createIndices(recvbuf, 0, h->
recvbufIndices, 0, recvcount);
10909 sendtype->createIndices(
const_cast<typename SENDTYPE::Type*
>(sendbuf), displs[rank], h->
recvbufIndices, 0,
10927 if(!recvtype->isModifiedBufferRequired()) {
10929 recvtype->clearIndices(recvbuf, 0, recvcount);
10933 sendtype->clearIndices(
const_cast<typename SENDTYPE::Type*
>(sendbuf), displs[rank], sendcounts[rank]);
10938 rStatus = MPI_Iscatterv(sendbufMod, sendcounts, displsMod, sendtype->getModifiedMpiType(), recvbufMod, recvcount,
10939 recvtype->getModifiedMpiType(), root, comm, &request->
request);
10942 asyncHandle->
sendbuf = sendbuf;
10946 asyncHandle->
displs = displs;
10948 asyncHandle->
recvbuf = recvbuf;
10952 asyncHandle->
root = root;
10953 asyncHandle->
comm = comm;
10955 request->
handle = asyncHandle;
10969 template<
typename SENDTYPE,
typename RECVTYPE>
10975 const typename SENDTYPE::Type* sendbuf = asyncHandle->
sendbuf;
10976 typename SENDTYPE::ModifiedType* sendbufMod = asyncHandle->
sendbufMod;
10977 const int* displsMod = asyncHandle->
displsMod;
10978 const int* sendcounts = asyncHandle->
sendcounts;
10979 const int* displs = asyncHandle->
displs;
10980 SENDTYPE* sendtype = asyncHandle->
sendtype;
10981 typename RECVTYPE::Type* recvbuf = asyncHandle->
recvbuf;
10982 typename RECVTYPE::ModifiedType* recvbufMod = asyncHandle->
recvbufMod;
10983 int recvcount = asyncHandle->
recvcount;
10984 RECVTYPE* recvtype = asyncHandle->
recvtype;
10985 int root = asyncHandle->
root;
11006 delete asyncHandle;
11008 if(adType->isActiveType()) {
11010 adType->addToolAction(h);
11012 if(recvtype->isModifiedBufferRequired()) {
11014 recvtype->copyFromModifiedBuffer(recvbuf, 0, recvbufMod, 0, recvcount);
11018 sendtype->copyFromModifiedBuffer(
const_cast<typename SENDTYPE::Type*
>(sendbuf), displs[rank], sendbufMod,
11019 displsMod[rank], sendcounts[rank]);
11031 sendtype->registerValue(
const_cast<typename SENDTYPE::Type*
>(sendbuf), displs[rank], h->
recvbufIndices,
11037 adType->stopAssembly(h);
11038 if(recvtype->isModifiedBufferRequired()) {
11039 delete [] displsMod;
11043 if(sendtype->isModifiedBufferRequired() ) {
11044 sendtype->deleteModifiedTypeBuffer(sendbufMod);
11047 if(recvtype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == recvbuf)) {
11048 recvtype->deleteModifiedTypeBuffer(recvbufMod);
11058#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
11059 template<
typename DATATYPE>
11105 template<
typename DATATYPE>
11111 AMPI_Op convOp = adType->convertOperator(h->
op);
11129 if(adType->isOldPrimalsRequired()) {
11141 template<
typename DATATYPE>
11147 AMPI_Op convOp = adType->convertOperator(h->
op);
11172 template<
typename DATATYPE>
11178 AMPI_Op convOp = adType->convertOperator(h->
op);
11189 if(adType->isOldPrimalsRequired()) {
11213 template<
typename DATATYPE>
11223 rStatus = MPI_Reduce(sendbuf, recvbuf, count, datatype->getMpiType(), convOp.
primalFunction, root, comm);
11228 typename DATATYPE::ModifiedType* sendbufMod =
nullptr;
11229 int sendbufElements = 0;
11233 sendbufElements = count;
11235 sendbufElements = count;
11238 if(datatype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == sendbuf)) {
11239 datatype->createModifiedTypeBuffer(sendbufMod, sendbufElements);
11241 sendbufMod =
reinterpret_cast<typename DATATYPE::ModifiedType*
>(
const_cast<typename DATATYPE::Type*
>(sendbuf));
11243 typename DATATYPE::ModifiedType* recvbufMod =
nullptr;
11244 int recvbufElements = 0;
11248 recvbufElements = count;
11250 if(datatype->isModifiedBufferRequired() ) {
11251 datatype->createModifiedTypeBuffer(recvbufMod, recvbufElements);
11253 recvbufMod =
reinterpret_cast<typename DATATYPE::ModifiedType*
>(
const_cast<typename DATATYPE::Type*
>(recvbuf));
11262 if(datatype->isModifiedBufferRequired()) {
11264 datatype->copyIntoModifiedBuffer(sendbuf, 0, sendbufMod, 0, count);
11266 datatype->copyIntoModifiedBuffer(recvbuf, 0, recvbufMod, 0, count);
11275 h->
sendbufCount = datatype->computeActiveElements(count);
11277 h->
sendbufCount = datatype->computeActiveElements(count);
11282 h->
recvbufCount = datatype->computeActiveElements(count);
11316 datatype->createIndices(recvbuf, 0, h->
recvbufIndices, 0, count);
11331 if(!datatype->isModifiedBufferRequired()) {
11332 datatype->clearIndices(recvbuf, 0, count);
11336 rStatus = MPI_Reduce(sendbufMod, recvbufMod, count, datatype->getModifiedMpiType(), convOp.
modifiedPrimalFunction, root,
11341 if(datatype->isModifiedBufferRequired()) {
11342 datatype->copyFromModifiedBuffer(recvbuf, 0, recvbufMod, 0, count);
11364 if(datatype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == sendbuf)) {
11365 datatype->deleteModifiedTypeBuffer(sendbufMod);
11368 if(datatype->isModifiedBufferRequired() ) {
11369 datatype->deleteModifiedTypeBuffer(recvbufMod);
11380#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
11381 template<
typename SENDTYPE,
typename RECVTYPE>
11428 template<
typename SENDTYPE,
typename RECVTYPE>
11453 if(adType->isOldPrimalsRequired()) {
11461 template<
typename SENDTYPE,
typename RECVTYPE>
11491 template<
typename SENDTYPE,
typename RECVTYPE>
11504 if(adType->isOldPrimalsRequired()) {
11524 template<
typename SENDTYPE,
typename RECVTYPE>
11526 typename RECVTYPE::Type* recvbuf,
int recvcount, RECVTYPE* recvtype,
int root,
AMPI_Comm comm) {
11532 rStatus = MPI_Scatter(sendbuf, sendcount, sendtype->getMpiType(), recvbuf, recvcount, recvtype->getMpiType(), root,
11538 typename SENDTYPE::ModifiedType* sendbufMod =
nullptr;
11539 int sendbufElements = 0;
11545 if(sendtype->isModifiedBufferRequired() ) {
11546 sendtype->createModifiedTypeBuffer(sendbufMod, sendbufElements);
11548 sendbufMod =
reinterpret_cast<typename SENDTYPE::ModifiedType*
>(
const_cast<typename SENDTYPE::Type*
>(sendbuf));
11551 typename RECVTYPE::ModifiedType* recvbufMod =
nullptr;
11552 int recvbufElements = 0;
11556 recvbufElements = recvcount;
11558 recvbufElements = sendcount;
11561 if(recvtype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == recvbuf)) {
11562 recvtype->createModifiedTypeBuffer(recvbufMod, recvbufElements);
11564 recvbufMod =
reinterpret_cast<typename RECVTYPE::ModifiedType*
>(
const_cast<typename RECVTYPE::Type*
>(recvbuf));
11573 if(sendtype->isModifiedBufferRequired()) {
11574 sendtype->copyIntoModifiedBuffer(sendbuf, 0, sendbufMod, 0, sendcount *
getCommSize(comm));
11583 h->
sendbufCount = sendtype->computeActiveElements(sendcount);
11588 h->
recvbufCount = recvtype->computeActiveElements(recvcount);
11590 h->
recvbufCount = sendtype->computeActiveElements(sendcount);
11613 recvtype->createIndices(recvbuf, 0, h->
recvbufIndices, 0, recvcount);
11615 sendtype->createIndices(
const_cast<typename SENDTYPE::Type*
>(sendbuf), sendcount *
getCommRank(comm), h->
recvbufIndices,
11631 if(!recvtype->isModifiedBufferRequired()) {
11633 recvtype->clearIndices(recvbuf, 0, recvcount);
11635 sendtype->clearIndices(
const_cast<typename SENDTYPE::Type*
>(sendbuf), sendcount *
getCommRank(comm), sendcount);
11639 rStatus = MPI_Scatter(sendbufMod, sendcount, sendtype->getModifiedMpiType(), recvbufMod, recvcount,
11640 recvtype->getModifiedMpiType(), root, comm);
11643 if(recvtype->isModifiedBufferRequired()) {
11645 recvtype->copyFromModifiedBuffer(recvbuf, 0, recvbufMod, 0, recvcount);
11647 sendtype->copyFromModifiedBuffer(
const_cast<typename SENDTYPE::Type*
>(sendbuf), sendcount *
getCommRank(comm),
11648 sendbufMod, sendcount *
getCommRank(comm), sendcount);
11657 sendtype->registerValue(
const_cast<typename SENDTYPE::Type*
>(sendbuf), sendcount *
getCommRank(comm), h->
recvbufIndices,
11665 if(sendtype->isModifiedBufferRequired() ) {
11666 sendtype->deleteModifiedTypeBuffer(sendbufMod);
11669 if(recvtype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == recvbuf)) {
11670 recvtype->deleteModifiedTypeBuffer(recvbufMod);
11680#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
11681 template<
typename SENDTYPE,
typename RECVTYPE>
11734 template<
typename SENDTYPE,
typename RECVTYPE>
11762 if(adType->isOldPrimalsRequired()) {
11770 template<
typename SENDTYPE,
typename RECVTYPE>
11803 template<
typename SENDTYPE,
typename RECVTYPE>
11816 if(adType->isOldPrimalsRequired()) {
11839 template<
typename SENDTYPE,
typename RECVTYPE>
11841 SENDTYPE* sendtype,
typename RECVTYPE::Type* recvbuf,
int recvcount, RECVTYPE* recvtype,
int root,
AMPI_Comm comm) {
11847 rStatus = MPI_Scatterv(sendbuf, sendcounts, displs, sendtype->getMpiType(), recvbuf, recvcount, recvtype->getMpiType(),
11854 int displsTotalSize = 0;
11855 if(
nullptr != displs) {
11857 if(recvtype->isModifiedBufferRequired()) {
11861 typename SENDTYPE::ModifiedType* sendbufMod =
nullptr;
11862 int sendbufElements = 0;
11866 sendbufElements = displsTotalSize;
11868 if(sendtype->isModifiedBufferRequired() ) {
11869 sendtype->createModifiedTypeBuffer(sendbufMod, sendbufElements);
11871 sendbufMod =
reinterpret_cast<typename SENDTYPE::ModifiedType*
>(
const_cast<typename SENDTYPE::Type*
>(sendbuf));
11874 typename RECVTYPE::ModifiedType* recvbufMod =
nullptr;
11875 int recvbufElements = 0;
11879 recvbufElements = recvcount;
11884 if(recvtype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == recvbuf)) {
11885 recvtype->createModifiedTypeBuffer(recvbufMod, recvbufElements);
11887 recvbufMod =
reinterpret_cast<typename RECVTYPE::ModifiedType*
>(
const_cast<typename RECVTYPE::Type*
>(recvbuf));
11896 if(sendtype->isModifiedBufferRequired()) {
11898 sendtype->copyIntoModifiedBuffer(sendbuf, displs[i], sendbufMod, displsMod[i], sendcounts[i]);
11913 h->
recvbufCount = recvtype->computeActiveElements(recvcount);
11916 comm)]) - sendtype->computeActiveElements(displs[
getCommRank(comm)]);
11931 sendtype->getValues(sendbuf, displs[rank], h->
recvbufOldPrimals, 0, sendcounts[rank]);
11939 sendtype->getIndices(sendbuf, displs[i], h->
sendbufIndices, displsMod[i], sendcounts[i]);
11944 recvtype->createIndices(recvbuf, 0, h->
recvbufIndices, 0, recvcount);
11948 sendtype->createIndices(
const_cast<typename SENDTYPE::Type*
>(sendbuf), displs[rank], h->
recvbufIndices, 0,
11966 if(!recvtype->isModifiedBufferRequired()) {
11968 recvtype->clearIndices(recvbuf, 0, recvcount);
11972 sendtype->clearIndices(
const_cast<typename SENDTYPE::Type*
>(sendbuf), displs[rank], sendcounts[rank]);
11977 rStatus = MPI_Scatterv(sendbufMod, sendcounts, displsMod, sendtype->getModifiedMpiType(), recvbufMod, recvcount,
11978 recvtype->getModifiedMpiType(), root, comm);
11981 if(recvtype->isModifiedBufferRequired()) {
11983 recvtype->copyFromModifiedBuffer(recvbuf, 0, recvbufMod, 0, recvcount);
11987 sendtype->copyFromModifiedBuffer(
const_cast<typename SENDTYPE::Type*
>(sendbuf), displs[rank], sendbufMod,
11988 displsMod[rank], sendcounts[rank]);
12000 sendtype->registerValue(
const_cast<typename SENDTYPE::Type*
>(sendbuf), displs[rank], h->
recvbufIndices,
12007 if(recvtype->isModifiedBufferRequired()) {
12008 delete [] displsMod;
12012 if(sendtype->isModifiedBufferRequired() ) {
12013 sendtype->deleteModifiedTypeBuffer(sendbufMod);
12016 if(recvtype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == recvbuf)) {
12017 recvtype->deleteModifiedTypeBuffer(recvbufMod);
12028#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
12030 return MPI_Buffer_attach(buffer, size);
12034#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
12036 return MPI_Buffer_detach(buffer_addr, size);
12040#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
12042 return MPI_Cancel(&request->
request);
12046#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
12047 template<
typename DATATYPE>
12049 return MPI_Get_count(status, datatype->getModifiedMpiType(), count);
12053#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
12055 return MPI_Iprobe(source, tag, comm, flag, status);
12059#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
12061 return MPI_Probe(source, tag, comm, status);
12065#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12067 return MPI_Request_get_status(request.
request, flag, status);
12071#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
12073 return MPI_Test_cancelled(status, flag);
12077#if MEDI_MPI_VERSION_3_1 <= MEDI_MPI_TARGET
12079 return MPI_Aint_add(base, disp);
12083#if MEDI_MPI_VERSION_3_1 <= MEDI_MPI_TARGET
12085 return MPI_Aint_diff(addr1, addr2);
12089#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12091 return MPI_Get_address(location, address);
12095#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
12096 template<
typename DATATYPE>
12098 return MPI_Get_elements(status, datatype->getModifiedMpiType(), count);
12102#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
12103 template<
typename DATATYPE>
12105 return MPI_Get_elements_x(status, datatype->getModifiedMpiType(), count);
12109#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12110 template<
typename DATATYPE>
12113 return MPI_Type_get_contents(datatype->getModifiedMpiType(), max_integers, max_addresses, max_datatypes,
12114 array_of_integers, array_of_addresses, array_of_datatypes);
12118#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12119 template<
typename DATATYPE>
12122 return MPI_Type_get_envelope(datatype->getModifiedMpiType(), num_integers, num_addresses, num_datatypes, combiner);
12126#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12127 template<
typename DATATYPE>
12129 return MPI_Type_get_extent(datatype->getModifiedMpiType(), lb, extent);
12133#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
12134 template<
typename DATATYPE>
12136 return MPI_Type_get_extent_x(datatype->getModifiedMpiType(), lb, extent);
12140#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12141 template<
typename DATATYPE>
12143 return MPI_Type_get_true_extent(datatype->getModifiedMpiType(), true_lb, true_extent);
12147#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
12148 template<
typename DATATYPE>
12150 return MPI_Type_get_true_extent_x(datatype->getModifiedMpiType(), true_lb, true_extent);
12154#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
12155 template<
typename DATATYPE>
12157 return MPI_Type_size(datatype->getModifiedMpiType(), size);
12161#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
12162 template<
typename DATATYPE>
12164 return MPI_Type_size_x(datatype->getModifiedMpiType(), size);
12168#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
12170 return MPI_Barrier(comm);
12174#if MEDI_MPI_VERSION_2_2 <= MEDI_MPI_TARGET
12182#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
12184 return MPI_Comm_compare(comm1, comm2, result);
12188#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
12190 return MPI_Comm_create(comm, group, newcomm);
12194#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
12196 return MPI_Comm_create_group(comm, group, tag, newcomm);
12200#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12203 return MPI_Comm_create_keyval(comm_copy_attr_fn, comm_delete_attr_fn, comm_keyval, extra_state);
12207#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12209 return MPI_Comm_delete_attr(comm, comm_keyval);
12213#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
12215 return MPI_Comm_dup(comm, newcomm);
12219#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
12221 return MPI_Comm_dup_with_info(comm, info, newcomm);
12225#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
12227 return MPI_Comm_free(comm);
12231#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12233 return MPI_Comm_free_keyval(comm_keyval);
12237#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12239 return MPI_Comm_get_attr(comm, comm_keyval, attribute_val, flag);
12243#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
12245 return MPI_Comm_get_info(comm, info_used);
12249#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12251 return MPI_Comm_get_name(comm, comm_name, resultlen);
12255#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
12257 return MPI_Comm_group(comm, group);
12261#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
12263 return MPI_Comm_idup(comm, newcomm, &request->
request);
12267#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
12269 return MPI_Comm_rank(comm, rank);
12273#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
12275 return MPI_Comm_remote_group(comm, group);
12279#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
12281 return MPI_Comm_remote_size(comm, size);
12285#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12287 return MPI_Comm_set_attr(comm, comm_keyval, attribute_val);
12291#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
12293 return MPI_Comm_set_info(comm, info);
12297#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12299 return MPI_Comm_set_name(comm, comm_name);
12303#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
12305 return MPI_Comm_size(comm, size);
12309#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
12311 return MPI_Comm_split(comm, color, key, newcomm);
12315#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
12317 return MPI_Comm_split_type(comm, split_type, key, info, newcomm);
12321#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
12323 return MPI_Comm_test_inter(comm, flag);
12327#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
12329 return MPI_Group_compare(group1, group2, result);
12333#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
12335 return MPI_Group_difference(group1, group2, newgroup);
12339#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
12341 return MPI_Group_excl(group, n, ranks, newgroup);
12345#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
12347 return MPI_Group_free(group);
12351#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
12353 return MPI_Group_incl(group, n, ranks, newgroup);
12357#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
12359 return MPI_Group_intersection(group1, group2, newgroup);
12363#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
12365 return MPI_Group_range_excl(group, n, ranges, newgroup);
12369#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
12371 return MPI_Group_range_incl(group, n, ranges, newgroup);
12375#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
12377 return MPI_Group_rank(group, rank);
12381#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
12383 return MPI_Group_size(group, size);
12387#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
12390 return MPI_Group_translate_ranks(group1, n, ranks1, group2, ranks2);
12394#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
12396 return MPI_Group_union(group1, group2, newgroup);
12400#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
12403 return MPI_Intercomm_create(local_comm, local_leader, peer_comm, remote_leader, tag, newintercomm);
12407#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
12409 return MPI_Intercomm_merge(intercomm, high, newintracomm);
12413#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12416 return MPI_Type_create_keyval(type_copy_attr_fn, type_delete_attr_fn, type_keyval, extra_state);
12420#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12421 template<
typename DATATYPE>
12423 return MPI_Type_delete_attr(datatype->getModifiedMpiType(), type_keyval);
12427#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12429 return MPI_Type_free_keyval(type_keyval);
12433#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12434 template<
typename DATATYPE>
12436 return MPI_Type_get_attr(datatype->getModifiedMpiType(), type_keyval, attribute_val, flag);
12440#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12441 template<
typename DATATYPE>
12443 return MPI_Type_get_name(datatype->getModifiedMpiType(), type_name, resultlen);
12447#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12448 template<
typename DATATYPE>
12450 return MPI_Type_set_attr(datatype->getModifiedMpiType(), type_keyval, attribute_val);
12454#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12455 template<
typename DATATYPE>
12457 return MPI_Type_set_name(datatype->getModifiedMpiType(), type_name);
12461#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12464 return MPI_Win_create_keyval(win_copy_attr_fn, win_delete_attr_fn, win_keyval, extra_state);
12468#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12470 return MPI_Win_delete_attr(win, win_keyval);
12474#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12476 return MPI_Win_free_keyval(win_keyval);
12480#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12482 return MPI_Win_get_attr(win, win_keyval, attribute_val, flag);
12486#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12488 return MPI_Win_get_name(win, win_name, resultlen);
12492#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12494 return MPI_Win_set_attr(win, win_keyval, attribute_val);
12498#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12500 return MPI_Win_set_name(win, win_name);
12504#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
12506 return MPI_Cart_coords(comm, rank, maxdims, coords);
12510#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
12513 return MPI_Cart_create(comm_old, ndims, dims, periods, reorder, comm_cart);
12517#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
12519 return MPI_Cart_get(comm, maxdims, dims, periods, coords);
12523#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
12526 return MPI_Cart_map(comm, ndims, dims, periods, newrank);
12530#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
12532 return MPI_Cart_rank(comm, coords, rank);
12536#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
12538 return MPI_Cart_shift(comm, direction, disp, rank_source, rank_dest);
12542#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
12544 return MPI_Cart_sub(comm, remain_dims, newcomm);
12548#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
12550 return MPI_Cartdim_get(comm, ndims);
12554#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
12556 return MPI_Dims_create(nnodes, ndims, dims);
12560#if MEDI_MPI_VERSION_2_2 <= MEDI_MPI_TARGET
12564 return MPI_Dist_graph_create(comm_old, n, sources, degrees, destinations, weights, info, reorder, comm_dist_graph);
12568#if MEDI_MPI_VERSION_2_2 <= MEDI_MPI_TARGET
12572 return MPI_Dist_graph_create_adjacent(comm_old, indegree, sources, sourceweights, outdegree, destinations, destweights,
12573 info, reorder, comm_dist_graph);
12577#if MEDI_MPI_VERSION_2_2 <= MEDI_MPI_TARGET
12579 int maxoutdegree,
int* destinations,
int* destweights) {
12580 return MPI_Dist_graph_neighbors(comm, maxindegree, sources, sourceweights, maxoutdegree, destinations, destweights);
12584#if MEDI_MPI_VERSION_2_2 <= MEDI_MPI_TARGET
12586 return MPI_Dist_graph_neighbors_count(comm, indegree, outdegree, weighted);
12590#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
12593 return MPI_Graph_create(comm_old, nnodes, index, edges, reorder, comm_graph);
12597#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
12599 return MPI_Graph_get(comm, maxindex, maxedges, index, edges);
12603#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
12606 return MPI_Graph_map(comm, nnodes, index, edges, newrank);
12610#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
12612 return MPI_Graph_neighbors(comm, rank, maxneighbors, neighbors);
12616#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
12618 return MPI_Graph_neighbors_count(comm, rank, nneighbors);
12622#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
12624 return MPI_Graphdims_get(comm, nnodes, nedges);
12628#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
12630 return MPI_Topo_test(comm, status);
12634#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
12636 return MPI_Wtick();
12640#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
12642 return MPI_Wtime();
12646#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
12648 return MPI_Abort(comm, errorcode);
12652#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12654 return MPI_Add_error_class(errorclass);
12658#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12660 return MPI_Add_error_code(errorclass, errorcode);
12664#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12666 return MPI_Add_error_string(errorcode,
string);
12670#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12672 return MPI_Alloc_mem(size, info, baseptr);
12676#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12678 return MPI_Comm_call_errhandler(comm, errorcode);
12682#if MEDI_MPI_VERSION_2_2 <= MEDI_MPI_TARGET
12684 return MPI_Comm_create_errhandler(comm_errhandler_fn, errhandler);
12688#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET && MEDI_MPI_TARGET < MEDI_MPI_VERSION_2_2
12690 return MPI_Comm_create_errhandler(comm_errhandler_fn, errhandler);
12694#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12696 return MPI_Comm_get_errhandler(comm, errhandler);
12700#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12702 return MPI_Comm_set_errhandler(comm, errhandler);
12706#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
12708 return MPI_Errhandler_free(errhandler);
12712#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
12714 return MPI_Error_class(errorcode, errorclass);
12718#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
12720 return MPI_Error_string(errorcode,
string, resultlen);
12724#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12726 return MPI_File_call_errhandler(fh, errorcode);
12730#if MEDI_MPI_VERSION_2_2 <= MEDI_MPI_TARGET
12732 return MPI_File_create_errhandler(file_errhandler_fn, errhandler);
12736#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET && MEDI_MPI_TARGET < MEDI_MPI_VERSION_2_2
12738 return MPI_File_create_errhandler(file_errhandler_fn, errhandler);
12742#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12744 return MPI_File_get_errhandler(file, errhandler);
12748#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12750 return MPI_File_set_errhandler(file, errhandler);
12754#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
12756 return MPI_Finalize();
12760#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12762 return MPI_Finalized(flag);
12766#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12768 return MPI_Free_mem(base);
12772#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
12774 return MPI_Get_library_version(version, resultlen);
12778#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
12780 return MPI_Get_processor_name(name, resultlen);
12784#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
12786 return MPI_Get_version(version, subversion);
12790#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
12792 return MPI_Initialized(flag);
12796#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12798 return MPI_Win_call_errhandler(win, errorcode);
12802#if MEDI_MPI_VERSION_2_2 <= MEDI_MPI_TARGET
12804 return MPI_Win_create_errhandler(win_errhandler_fn, errhandler);
12808#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET && MEDI_MPI_TARGET < MEDI_MPI_VERSION_2_2
12810 return MPI_Win_create_errhandler(win_errhandler_fn, errhandler);
12814#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12816 return MPI_Win_get_errhandler(win, errhandler);
12820#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12822 return MPI_Win_set_errhandler(win, errhandler);
12826#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12828 return MPI_Info_create(info);
12832#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12834 return MPI_Info_delete(info, key);
12838#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12840 return MPI_Info_dup(info, newinfo);
12844#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12846 return MPI_Info_free(info);
12850#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12852 return MPI_Info_get(info, key, valuelen, value, flag);
12856#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12858 return MPI_Info_get_nkeys(info, nkeys);
12862#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12864 return MPI_Info_get_nthkey(info, n, key);
12868#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12870 return MPI_Info_get_valuelen(info, key, valuelen, flag);
12874#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12876 return MPI_Info_set(info, key, value);
12880#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12882 return MPI_Close_port(port_name);
12886#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12889 return MPI_Comm_accept(port_name, info, root, comm, newcomm);
12893#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12896 return MPI_Comm_connect(port_name, info, root, comm, newcomm);
12900#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12902 return MPI_Comm_disconnect(comm);
12906#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12908 return MPI_Comm_get_parent(parent);
12912#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12914 return MPI_Comm_join(fd, intercomm);
12918#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12921 return MPI_Comm_spawn(command, argv, maxprocs, info, root, comm, intercomm, array_of_errcodes);
12925#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12928 AMPI_Comm* intercomm,
int* array_of_errcodes) {
12929 return MPI_Comm_spawn_multiple(count, array_of_commands, array_of_argv, array_of_maxprocs, array_of_info, root, comm,
12930 intercomm, array_of_errcodes);
12934#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12936 return MPI_Lookup_name(service_name, info, port_name);
12940#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12942 return MPI_Open_port(info, port_name);
12946#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12949 return MPI_Publish_name(service_name, info, port_name);
12953#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12956 return MPI_Unpublish_name(service_name, info, port_name);
12960#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12962 return MPI_Grequest_complete(request.
request);
12966#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12969 return MPI_Grequest_start(query_fn, free_fn, cancel_fn, extra_state, &request->
request);
12973#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12975 return MPI_Is_thread_main(flag);
12979#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12981 return MPI_Query_thread(provided);
12985#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12987 return MPI_Status_set_cancelled(status, flag);
12991#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12992 template<
typename DATATYPE>
12994 return MPI_Status_set_elements(status, datatype->getModifiedMpiType(), count);
12998#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
12999 template<
typename DATATYPE>
13001 return MPI_Status_set_elements_x(status, datatype->getModifiedMpiType(), count);
13005#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13007 return MPI_File_close(fh);
13011#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13013 return MPI_File_delete(filename, info);
13017#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13019 return MPI_File_get_amode(fh, amode);
13023#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13025 return MPI_File_get_atomicity(fh, flag);
13029#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13031 return MPI_File_get_byte_offset(fh, offset, disp);
13035#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13037 return MPI_File_get_group(fh, group);
13041#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13043 return MPI_File_get_info(fh, info_used);
13047#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13049 return MPI_File_get_position(fh, offset);
13053#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13055 return MPI_File_get_position_shared(fh, offset);
13059#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13061 return MPI_File_get_size(fh, size);
13065#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13066 template<
typename DATATYPE>
13068 return MPI_File_get_type_extent(fh, datatype->getModifiedMpiType(), extent);
13072#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13073 template<
typename ETYPE,
typename FILETYPE>
13075 return MPI_File_get_view(fh, disp, etype->getModifiedMpiType(), filetype->getModifiedMpiType(), datarep);
13079#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13080 template<
typename DATATYPE>
13082 return MPI_File_iread(fh, buf, count, datatype->getModifiedMpiType(), request);
13086#if MEDI_MPI_VERSION_3_1 <= MEDI_MPI_TARGET
13087 template<
typename DATATYPE>
13089 return MPI_File_iread_all(fh, buf, count, datatype->getModifiedMpiType(), &request->
request);
13093#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13094 template<
typename DATATYPE>
13097 return MPI_File_iread_at(fh, offset, buf, count, datatype->getModifiedMpiType(), &request->
request);
13101#if MEDI_MPI_VERSION_3_1 <= MEDI_MPI_TARGET
13102 template<
typename DATATYPE>
13105 return MPI_File_iread_at_all(fh, offset, buf, count, datatype->getModifiedMpiType(), &request->
request);
13109#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13110 template<
typename DATATYPE>
13112 return MPI_File_iread_shared(fh, buf, count, datatype->getModifiedMpiType(), &request->
request);
13116#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13117 template<
typename DATATYPE>
13119 return MPI_File_iwrite(fh, buf, count, datatype->getModifiedMpiType(), &request->
request);
13123#if MEDI_MPI_VERSION_3_1 <= MEDI_MPI_TARGET
13124 template<
typename DATATYPE>
13126 return MPI_File_iwrite_all(fh, buf, count, datatype->getModifiedMpiType(), &request->
request);
13130#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13131 template<
typename DATATYPE>
13134 return MPI_File_iwrite_at(fh, offset, buf, count, datatype->getModifiedMpiType(), &request->
request);
13138#if MEDI_MPI_VERSION_3_1 <= MEDI_MPI_TARGET
13139 template<
typename DATATYPE>
13142 return MPI_File_iwrite_at_all(fh, offset, buf, count, datatype->getModifiedMpiType(), &request->
request);
13146#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13147 template<
typename DATATYPE>
13150 return MPI_File_iwrite_shared(fh, buf, count, datatype->getModifiedMpiType(), &request->
request);
13154#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13157 return MPI_File_open(comm, filename, amode, info, fh);
13161#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13163 return MPI_File_preallocate(fh, size);
13167#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13168 template<
typename DATATYPE>
13170 return MPI_File_read(fh, buf, count, datatype->getModifiedMpiType(), status);
13174#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13175 template<
typename DATATYPE>
13177 return MPI_File_read_all(fh, buf, count, datatype->getModifiedMpiType(), status);
13181#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13182 template<
typename DATATYPE>
13184 return MPI_File_read_all_begin(fh, buf, count, datatype->getModifiedMpiType());
13188#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13190 return MPI_File_read_all_end(fh, buf, status);
13194#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13195 template<
typename DATATYPE>
13198 return MPI_File_read_at(fh, offset, buf, count, datatype->getModifiedMpiType(), status);
13202#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13203 template<
typename DATATYPE>
13206 return MPI_File_read_at_all(fh, offset, buf, count, datatype->getModifiedMpiType(), status);
13210#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13211 template<
typename DATATYPE>
13213 return MPI_File_read_at_all_begin(fh, offset, buf, count, datatype->getModifiedMpiType());
13217#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13219 return MPI_File_read_at_all_end(fh, buf, status);
13223#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13224 template<
typename DATATYPE>
13226 return MPI_File_read_ordered(fh, buf, count, datatype->getModifiedMpiType(), status);
13230#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13231 template<
typename DATATYPE>
13233 return MPI_File_read_ordered_begin(fh, buf, count, datatype->getModifiedMpiType());
13237#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13239 return MPI_File_read_ordered_end(fh, buf, status);
13243#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13244 template<
typename DATATYPE>
13246 return MPI_File_read_shared(fh, buf, count, datatype->getModifiedMpiType(), status);
13250#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13252 return MPI_File_seek(fh, offset, whence);
13256#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13258 return MPI_File_seek_shared(fh, offset, whence);
13262#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13264 return MPI_File_set_atomicity(fh, flag);
13268#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13270 return MPI_File_set_info(fh, info);
13274#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13276 return MPI_File_set_size(fh, size);
13280#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13281 template<
typename ETYPE,
typename FILETYPE>
13284 return MPI_File_set_view(fh, disp, etype->getModifiedMpiType(), filetype->getModifiedMpiType(), datarep, info);
13288#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13290 return MPI_File_sync(fh);
13294#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13295 template<
typename DATATYPE>
13297 return MPI_File_write(fh, buf, count, datatype->getModifiedMpiType(), status);
13301#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13302 template<
typename DATATYPE>
13304 return MPI_File_write_all(fh, buf, count, datatype->getModifiedMpiType(), status);
13308#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13309 template<
typename DATATYPE>
13311 return MPI_File_write_all_begin(fh, buf, count, datatype->getModifiedMpiType());
13315#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13317 return MPI_File_write_all_end(fh, buf, status);
13321#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13322 template<
typename DATATYPE>
13325 return MPI_File_write_at(fh, offset, buf, count, datatype->getModifiedMpiType(), status);
13329#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13330 template<
typename DATATYPE>
13333 return MPI_File_write_at_all(fh, offset, buf, count, datatype->getModifiedMpiType(), status);
13337#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13338 template<
typename DATATYPE>
13340 DATATYPE* datatype) {
13341 return MPI_File_write_at_all_begin(fh, offset, buf, count, datatype->getModifiedMpiType());
13345#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13347 return MPI_File_write_at_all_end(fh, buf, status);
13351#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13352 template<
typename DATATYPE>
13354 return MPI_File_write_ordered(fh, buf, count, datatype->getModifiedMpiType(), status);
13358#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13359 template<
typename DATATYPE>
13361 return MPI_File_write_ordered_begin(fh, buf, count, datatype->getModifiedMpiType());
13365#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13367 return MPI_File_write_ordered_end(fh, buf, status);
13371#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13372 template<
typename DATATYPE>
13374 return MPI_File_write_shared(fh, buf, count, datatype->getModifiedMpiType(), status);
13378#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13382 return MPI_Register_datarep(datarep, read_conversion_fn, write_conversion_fn, dtype_file_extent_fn, extra_state);
13386#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13388 return MPI_Comm_c2f(comm);
13392#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13394 return MPI_Comm_f2c(comm);
13398#if MEDI_MPI_VERSION_2_1 <= MEDI_MPI_TARGET
13400 return MPI_Errhandler_c2f(errhandler);
13404#if MEDI_MPI_VERSION_2_1 <= MEDI_MPI_TARGET
13406 return MPI_Errhandler_f2c(errhandler);
13410#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13412 return MPI_File_c2f(file);
13416#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13418 return MPI_File_f2c(file);
13422#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13424 return MPI_Group_c2f(group);
13428#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13430 return MPI_Group_f2c(group);
13434#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13436 return MPI_Info_c2f(info);
13440#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13442 return MPI_Info_f2c(info);
13446#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13448 return MPI_Status_c2f(c_status, f_status);
13452#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13454 return MPI_Status_f2c(f_status, c_status);
13458#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13460 return MPI_Win_c2f(win);
13464#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13466 return MPI_Win_f2c(win);
13470#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
13472 return MPI_T_category_changed(stamp);
13476#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
13478 return MPI_T_category_get_categories(cat_index, len, indices);
13482#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
13484 return MPI_T_category_get_cvars(cat_index, len, indices);
13488#if MEDI_MPI_VERSION_3_1 <= MEDI_MPI_TARGET
13490 return MPI_T_category_get_index(name, cat_index);
13494#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
13496 int* num_pvars,
int* num_categories) {
13497 return MPI_T_category_get_info(cat_index, name, name_len, desc, desc_len, num_cvars, num_pvars, num_categories);
13501#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
13503 return MPI_T_category_get_num(num_cat);
13507#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
13509 return MPI_T_category_get_pvars(cat_index, len, indices);
13513#if MEDI_MPI_VERSION_3_1 <= MEDI_MPI_TARGET
13515 return MPI_T_cvar_get_index(name, cvar_index);
13519#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
13521 return MPI_T_cvar_get_num(num_cvar);
13525#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
13527 return MPI_T_cvar_handle_alloc(cvar_index, obj_handle, handle, count);
13531#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
13533 return MPI_T_cvar_handle_free(handle);
13537#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
13539 return MPI_T_cvar_read(handle, buf);
13543#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
13545 return MPI_T_cvar_write(handle, buf);
13549#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
13551 return MPI_T_enum_get_info(enumtype, num, name, name_len);
13555#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
13557 return MPI_T_enum_get_item(enumtype, index, value, name, name_len);
13561#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
13563 return MPI_T_finalize();
13567#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
13569 return MPI_T_init_thread(required, provided);
13573#if MEDI_MPI_VERSION_3_1 <= MEDI_MPI_TARGET
13575 return MPI_T_pvar_get_index(name, var_class, pvar_index);
13579#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
13581 return MPI_T_pvar_get_num(num_pvar);
13585#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
13588 return MPI_T_pvar_handle_alloc(session, pvar_index, obj_handle, handle, count);
13592#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
13594 return MPI_T_pvar_handle_free(session, handle);
13598#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
13600 return MPI_T_pvar_read(session, handle, buf);
13604#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
13606 return MPI_T_pvar_readreset(session, handle, buf);
13610#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
13612 return MPI_T_pvar_reset(session, handle);
13616#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
13618 return MPI_T_pvar_session_create(session);
13622#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
13624 return MPI_T_pvar_session_free(session);
13628#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
13630 return MPI_T_pvar_start(session, handle);
13634#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
13636 return MPI_T_pvar_stop(session, handle);
13640#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
13642 return MPI_T_pvar_write(session, handle, buf);
13646#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET && MEDI_MPI_TARGET < MEDI_MPI_VERSION_3_0
13647 inline int AMPI_Address(
void* location,
AMPI_Aint* address) {
13648 return MPI_Address(location, address);
13652#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
13654 return MPI_Attr_delete(comm, keyval);
13658#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
13660 return MPI_Attr_get(comm, keyval, attribute_val, flag);
13664#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
13666 return MPI_Attr_put(comm, keyval, attribute_val);
13670#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
13672 void* extra_state) {
13673 return MPI_Keyval_create(copy_fn, delete_fn, keyval, extra_state);
13677#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
13679 return MPI_Keyval_free(keyval);
13683#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET && MEDI_MPI_TARGET < MEDI_MPI_VERSION_3_0
13684 inline int AMPI_Errhandler_create(AMPI_Handler_function* function,
AMPI_Errhandler* errhandler) {
13685 return MPI_Errhandler_create(function, errhandler);
13689#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET && MEDI_MPI_TARGET < MEDI_MPI_VERSION_3_0
13691 return MPI_Errhandler_get(comm, errhandler);
13695#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET && MEDI_MPI_TARGET < MEDI_MPI_VERSION_3_0
13697 return MPI_Errhandler_set(comm, errhandler);
13701#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET && MEDI_MPI_TARGET < MEDI_MPI_VERSION_3_0
13702 template<
typename DATATYPE>
13703 inline int AMPI_Type_extent(DATATYPE* datatype,
AMPI_Aint* extent) {
13704 return MPI_Type_extent(datatype->getModifiedMpiType(), extent);
13708#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET && MEDI_MPI_TARGET < MEDI_MPI_VERSION_3_0
13709 template<
typename DATATYPE>
13710 inline int AMPI_Type_lb(DATATYPE* datatype,
AMPI_Aint* displacement) {
13711 return MPI_Type_lb(datatype->getModifiedMpiType(), displacement);
13715#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET && MEDI_MPI_TARGET < MEDI_MPI_VERSION_3_0
13716 template<
typename DATATYPE>
13717 inline int AMPI_Type_ub(DATATYPE* datatype,
AMPI_Aint* displacement) {
13718 return MPI_Type_ub(datatype->getModifiedMpiType(), displacement);
13723#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
13724#define AMPI_Pcontrol MPI_Pcontrol
#define AMPI_T_pvar_session
Definition ampiDefinitions.h:805
#define AMPI_Status
Definition ampiDefinitions.h:772
#define AMPI_T_cvar_handle
Definition ampiDefinitions.h:799
#define AMPI_Errhandler
Definition ampiDefinitions.h:781
#define AMPI_T_pvar_handle
Definition ampiDefinitions.h:802
#define AMPI_Aint
Definition ampiDefinitions.h:760
#define AMPI_Info
Definition ampiDefinitions.h:790
#define AMPI_Win
Definition ampiDefinitions.h:793
#define AMPI_Group
Definition ampiDefinitions.h:787
#define AMPI_Comm
Definition ampiDefinitions.h:778
#define AMPI_Fint
Definition ampiDefinitions.h:766
#define AMPI_Count
Definition ampiDefinitions.h:763
#define AMPI_Offset
Definition ampiDefinitions.h:769
#define AMPI_File
Definition ampiDefinitions.h:784
#define AMPI_T_enum
Definition ampiDefinitions.h:796
Definition adjointInterface.hpp:40
virtual void updateAdjoints(const void *indices, const void *adjoints, int elements) const =0
Add the adjoint varaibles to the ones in the AD tool. That is the AD tool should perform the operatio...
virtual void createPrimalTypeBuffer(void *&buf, size_t size) const =0
Create an array for the primal variables.
virtual void deletePrimalTypeBuffer(void *&buf) const =0
Delete the array of the primal variables.
virtual void getPrimals(const void *indices, const void *primals, int elements) const =0
Get the primal values from the AD tool.
virtual void getAdjoints(const void *indices, void *adjoints, int elements) const =0
Get the adjoints for the indices from the AD tool.
virtual void createAdjointTypeBuffer(void *&buf, size_t size) const =0
Create an array for the adjoint variables.
virtual int getVectorSize() const =0
The vector size for the current evaluation.
virtual void combineAdjoints(void *buf, const int elements, const int ranks) const =0
Perform a reduction in the first element of the buffer.
virtual void deleteAdjointTypeBuffer(void *&buf) const =0
Delete the array of the adjoint variables.
virtual void setPrimals(const void *indices, const void *primals, int elements) const =0
Set the primal values on the AD tool.
#define MEDI_OPTIONAL_CONST
Definition macros.h:70
#define MEDI_UNUSED(name)
Definition macros.h:108
int Range[3]
Definition mpiTools.h:43
Global namespace for MeDiPack - Message Differentiation Package.
Definition adjointInterface.hpp:37
void AMPI_Igatherv_p(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:9342
int AMPI_Comm_free_keyval(int *comm_keyval)
Definition ampiFunctions.hpp:12232
int AMPI_T_enum_get_info(MPI_T_enum enumtype, int *num, char *name, int *name_len)
Definition ampiFunctions.hpp:13550
int AMPI_Info_dup(MPI_Info info, MPI_Info *newinfo)
Definition ampiFunctions.hpp:12839
MPI_Comm_errhandler_function AMPI_Comm_errhandler_function
Definition ampiDefinitions.h:848
int AMPI_Errhandler_free(MPI_Errhandler *errhandler)
Definition ampiFunctions.hpp:12707
void AMPI_Iallgather_fwd(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 forwardFunctions.hpp:273
int AMPI_Topo_test(MPI_Comm comm, int *status)
Definition ampiFunctions.hpp:12629
MPI_Win AMPI_Win_f2c(MPI_Fint win)
Definition ampiFunctions.hpp:13465
void AMPI_Mrecv_fwd(typename DATATYPE::AdjointType *bufAdjoints, int bufSize, int count, DATATYPE *datatype, AMPI_Message *message, MPI_Status *status, RecvAdjCall reverse_call)
Definition forwardFunctions.hpp:119
int AMPI_Reduce_global(const typename DATATYPE::Type *sendbuf, typename DATATYPE::Type *recvbuf, int count, DATATYPE *datatype, AMPI_Op op, int root, MPI_Comm comm)
Definition ampiFunctions.hpp:11214
void AMPI_Irsend_d(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:1325
void AMPI_Iscatter_p_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:10261
void AMPI_Ibcast_wrap_pri(typename DATATYPE::PrimalType *&sendbufAdjoints, int sendbufSize, typename DATATYPE::PrimalType *&recvbufAdjoints, int recvbufSize, int count, DATATYPE *datatype, int root, MPI_Comm comm, AMPI_Request *request)
Definition primalFunctions.hpp:169
int AMPI_Allgather(const typename SENDTYPE::Type *sendbuf, int sendcount, SENDTYPE *sendtype, typename RECVTYPE::Type *recvbuf, int recvcount, RECVTYPE *recvtype, MPI_Comm comm)
Definition ampiFunctions.hpp:4220
void AMPI_Iscatter_d_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:10305
void AMPI_Bsend_fwd(typename DATATYPE::AdjointType *bufAdjoints, int bufSize, int count, DATATYPE *datatype, int dest, int tag, MPI_Comm comm)
Definition forwardFunctions.hpp:62
void AMPI_Isend_pri(typename DATATYPE::PrimalType *bufAdjoints, int bufSize, int count, DATATYPE *datatype, int dest, int tag, MPI_Comm comm, AMPI_Request *request)
Definition primalFunctions.hpp:54
int AMPI_File_get_amode(MPI_File fh, int *amode)
Definition ampiFunctions.hpp:13018
int AMPI_Send_init_postEnd(HandleBase *handle)
Definition ampiFunctions.hpp:3400
void AMPI_Igatherv_b(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:9437
int AMPI_File_create_errhandler(AMPI_File_errhandler_function *file_errhandler_fn, MPI_Errhandler *errhandler)
Definition ampiFunctions.hpp:12731
int AMPI_T_pvar_stop(MPI_T_pvar_session session, MPI_T_pvar_handle handle)
Definition ampiFunctions.hpp:13635
int AMPI_Free_mem(void *base)
Definition ampiFunctions.hpp:12767
int AMPI_Grequest_start(AMPI_Grequest_query_function *query_fn, AMPI_Grequest_free_function *free_fn, AMPI_Grequest_cancel_function *cancel_fn, void *extra_state, AMPI_Request *request)
Definition ampiFunctions.hpp:12967
int AMPI_File_write_all_begin(MPI_File fh, const void *buf, int count, DATATYPE *datatype)
Definition ampiFunctions.hpp:13310
MPI_Datarep_conversion_function AMPI_Datarep_conversion_function
Definition ampiDefinitions.h:878
void AMPI_Irecv_d(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:1047
int AMPI_Group_intersection(MPI_Group group1, MPI_Group group2, MPI_Group *newgroup)
Definition ampiFunctions.hpp:12358
void AMPI_Bcast_wrap_pri(typename DATATYPE::PrimalType *&sendbufAdjoints, int sendbufSize, typename DATATYPE::PrimalType *&recvbufAdjoints, int recvbufSize, int count, DATATYPE *datatype, int root, MPI_Comm comm)
Definition primalFunctions.hpp:157
int AMPI_Info_delete(MPI_Info info, const char *key)
Definition ampiFunctions.hpp:12833
int AMPI_Get_elements(const MPI_Status *status, DATATYPE *datatype, int *count)
Definition ampiFunctions.hpp:12097
void AMPI_Igather_d_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:8993
void AMPI_Ibcast_wrap_d(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:8582
void AMPI_Isend_p(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:1557
MPI_Delete_function AMPI_Delete_function
Definition ampiDefinitions.h:884
void AMPI_Reduce_global_b(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:11173
void AMPI_Iallreduce_global_p(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:7308
void AMPI_Iallgather_pri(typename SENDTYPE::PrimalType *&sendbufAdjoints, int sendbufSize, int sendcount, SENDTYPE *sendtype, typename RECVTYPE::PrimalType *&recvbufAdjoints, int recvbufSize, int recvcount, RECVTYPE *recvtype, MPI_Comm comm, AMPI_Request *request)
Definition primalFunctions.hpp:273
int AMPI_Issend(const typename DATATYPE::Type *buf, int count, DATATYPE *datatype, int dest, int tag, MPI_Comm comm, AMPI_Request *request)
Definition ampiFunctions.hpp:1906
int AMPI_Bsend_init(const typename DATATYPE::Type *buf, int count, DATATYPE *datatype, int dest, int tag, MPI_Comm comm, AMPI_Request *request)
Definition ampiFunctions.hpp:488
int AMPI_File_write_all_end(MPI_File fh, const void *buf, MPI_Status *status)
Definition ampiFunctions.hpp:13316
void AMPI_Gatherv_b(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:6234
int AMPI_Comm_delete_attr(MPI_Comm comm, int comm_keyval)
Definition ampiFunctions.hpp:12208
int AMPI_Type_get_true_extent_x(DATATYPE *datatype, MPI_Count *true_lb, MPI_Count *true_extent)
Definition ampiFunctions.hpp:12149
void AMPI_Issend_pri(typename DATATYPE::PrimalType *bufAdjoints, int bufSize, int count, DATATYPE *datatype, int dest, int tag, MPI_Comm comm, AMPI_Request *request)
Definition primalFunctions.hpp:86
void AMPI_Imrecv_p_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:752
int AMPI_Close_port(const char *port_name)
Definition ampiFunctions.hpp:12881
int AMPI_T_pvar_start(MPI_T_pvar_session session, MPI_T_pvar_handle handle)
Definition ampiFunctions.hpp:13629
int MPI_Ibcast_wrap(void *bufferSend, void *bufferRecv, int count, MPI_Datatype type, int root, MPI_Comm comm, MPI_Request *request)
Definition wrappers.hpp:68
int AMPI_Graph_map(MPI_Comm comm, int nnodes, const int *index, const int *edges, int *newrank)
Definition ampiFunctions.hpp:12604
int AMPI_Attr_delete(MPI_Comm comm, int keyval)
Definition ampiFunctions.hpp:13653
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
MPI_Aint AMPI_Aint_add(MPI_Aint base, MPI_Aint disp)
Definition ampiFunctions.hpp:12078
void AMPI_Iallgatherv_b(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:6976
int AMPI_Mrecv(typename DATATYPE::Type *buf, int count, DATATYPE *datatype, AMPI_Message *message, MPI_Status *status, RecvAdjCall reverse_send=RecvAdjCall::Send)
Definition ampiFunctions.hpp:2133
int AMPI_Cart_coords(MPI_Comm comm, int rank, int maxdims, int *coords)
Definition ampiFunctions.hpp:12505
MPI_Aint AMPI_Aint_diff(MPI_Aint addr1, MPI_Aint addr2)
Definition ampiFunctions.hpp:12084
int AMPI_File_read_ordered(MPI_File fh, void *buf, int count, DATATYPE *datatype, MPI_Status *status)
Definition ampiFunctions.hpp:13225
void AMPI_Iscatterv_b_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:10780
int AMPI_Comm_join(int fd, MPI_Comm *intercomm)
Definition ampiFunctions.hpp:12913
int AMPI_T_finalize()
Definition ampiFunctions.hpp:13562
int AMPI_Comm_group(MPI_Comm comm, MPI_Group *group)
Definition ampiFunctions.hpp:12256
void AMPI_Issend_d_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:1865
void AMPI_Bsend_d(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:90
int AMPI_Status_set_cancelled(MPI_Status *status, int flag)
Definition ampiFunctions.hpp:12986
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
int AMPI_Iallreduce_global_finish(HandleBase *handle)
Definition ampiFunctions.hpp:7583
int AMPI_T_enum_get_item(MPI_T_enum enumtype, int index, int *value, char *name, int *name_len)
Definition ampiFunctions.hpp:13556
void AMPI_Igather_d(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:8969
void AMPI_Ireduce_global_pri(typename DATATYPE::PrimalType *&sendbufAdjoints, int sendbufSize, typename DATATYPE::PrimalType *&recvbufAdjoints, int recvbufSize, int count, DATATYPE *datatype, AMPI_Op op, int root, MPI_Comm comm, AMPI_Request *request)
Definition primalFunctions.hpp:359
int AMPI_Add_error_code(int errorclass, int *errorcode)
Definition ampiFunctions.hpp:12659
int AMPI_Open_port(MPI_Info info, char *port_name)
Definition ampiFunctions.hpp:12941
int AMPI_Barrier(MPI_Comm comm)
Definition ampiFunctions.hpp:12169
void AMPI_Send_d(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:3097
void AMPI_Iscatterv_p_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:10684
int AMPI_Info_get_nthkey(MPI_Info info, int n, char *key)
Definition ampiFunctions.hpp:12863
void AMPI_Alltoall_p(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:4987
void AMPI_Bsend_p(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:72
void AMPI_Imrecv_d(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:768
int AMPI_Info_free(MPI_Info *info)
Definition ampiFunctions.hpp:12845
void AMPI_Irsend_pri(typename DATATYPE::PrimalType *bufAdjoints, int bufSize, int count, DATATYPE *datatype, int dest, int tag, MPI_Comm comm, AMPI_Request *request)
Definition primalFunctions.hpp:102
void AMPI_Alltoallv_p(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:5259
int AMPI_Dist_graph_neighbors_count(MPI_Comm comm, int *indegree, int *outdegree, int *weighted)
Definition ampiFunctions.hpp:12585
void AMPI_Alltoallv_b(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:5328
void AMPI_Ireduce_global_fwd(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 forwardFunctions.hpp:359
int AMPI_File_iwrite_all(MPI_File fh, const void *buf, int count, DATATYPE *datatype, AMPI_Request *request)
Definition ampiFunctions.hpp:13125
int AMPI_File_iread(MPI_File fh, void *buf, int count, DATATYPE *datatype, AMPI_Request *request)
Definition ampiFunctions.hpp:13081
int AMPI_Type_set_name(DATATYPE *datatype, const char *type_name)
Definition ampiFunctions.hpp:12456
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
int AMPI_Win_get_errhandler(MPI_Win win, MPI_Errhandler *errhandler)
Definition ampiFunctions.hpp:12815
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_Rsend_pri(typename DATATYPE::PrimalType *bufAdjoints, int bufSize, int count, DATATYPE *datatype, int dest, int tag, MPI_Comm comm)
Definition primalFunctions.hpp:94
int AMPI_File_get_position_shared(MPI_File fh, MPI_Offset *offset)
Definition ampiFunctions.hpp:13054
int AMPI_T_pvar_readreset(MPI_T_pvar_session session, MPI_T_pvar_handle handle, void *buf)
Definition ampiFunctions.hpp:13605
void AMPI_Ireduce_global_b(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:9889
int AMPI_Ssend_init_postEnd(HandleBase *handle)
Definition ampiFunctions.hpp:4047
int AMPI_Rsend_init(const typename DATATYPE::Type *buf, int count, DATATYPE *datatype, int dest, int tag, MPI_Comm comm, AMPI_Request *request)
Definition ampiFunctions.hpp:2844
int AMPI_Bsend_init_finish(HandleBase *handle)
Definition ampiFunctions.hpp:613
int AMPI_Bsend(const typename DATATYPE::Type *buf, int count, DATATYPE *datatype, int dest, int tag, MPI_Comm comm)
Definition ampiFunctions.hpp:125
int AMPI_Iallgather_finish(HandleBase *handle)
Definition ampiFunctions.hpp:6761
int AMPI_File_get_position(MPI_File fh, MPI_Offset *offset)
Definition ampiFunctions.hpp:13048
int AMPI_Cart_create(MPI_Comm comm_old, int ndims, const int *dims, const int *periods, int reorder, MPI_Comm *comm_cart)
Definition ampiFunctions.hpp:12511
void AMPI_Ireduce_global_d(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:9846
void AMPI_Gather_p(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:5862
int AMPI_Alltoallv(const typename SENDTYPE::Type *sendbuf, const int *sendcounts, const int *sdispls, SENDTYPE *sendtype, typename RECVTYPE::Type *recvbuf, const int *recvcounts, const int *rdispls, RECVTYPE *recvtype, MPI_Comm comm)
Definition ampiFunctions.hpp:5364
int AMPI_Irsend_finish(HandleBase *handle)
Definition ampiFunctions.hpp:1469
int AMPI_Probe(int source, int tag, MPI_Comm comm, MPI_Status *status)
Definition ampiFunctions.hpp:12060
int AMPI_T_category_get_info(int cat_index, char *name, int *name_len, char *desc, int *desc_len, int *num_cvars, int *num_pvars, int *num_categories)
Definition ampiFunctions.hpp:13495
int AMPI_Allgatherv(const typename SENDTYPE::Type *sendbuf, int sendcount, SENDTYPE *sendtype, typename RECVTYPE::Type *recvbuf, const int *recvcounts, const int *displs, RECVTYPE *recvtype, MPI_Comm comm)
Definition ampiFunctions.hpp:4497
int AMPI_Ialltoallv_finish(HandleBase *handle)
Definition ampiFunctions.hpp:8402
int AMPI_File_get_size(MPI_File fh, MPI_Offset *size)
Definition ampiFunctions.hpp:13060
int AMPI_Add_error_class(int *errorclass)
Definition ampiFunctions.hpp:12653
int AMPI_Gather(const typename SENDTYPE::Type *sendbuf, int sendcount, SENDTYPE *sendtype, typename RECVTYPE::Type *recvbuf, int recvcount, RECVTYPE *recvtype, int root, MPI_Comm comm)
Definition ampiFunctions.hpp:5959
void AMPI_Issend_p_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:1836
void AMPI_Recv_b(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:2299
void AMPI_Iallgatherv_p(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:6891
int AMPI_Isend_finish(HandleBase *handle)
Definition ampiFunctions.hpp:1730
MPI_File_errhandler_function AMPI_File_errhandler_function
Definition ampiDefinitions.h:854
int AMPI_Keyval_free(int *keyval)
Definition ampiFunctions.hpp:13678
int AMPI_Is_thread_main(int *flag)
Definition ampiFunctions.hpp:12974
MPI_Win_copy_attr_function AMPI_Win_copy_attr_function
Definition ampiDefinitions.h:836
int AMPI_Type_size(DATATYPE *datatype, int *size)
Definition ampiFunctions.hpp:12156
void AMPI_Ialltoallv_d_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:8168
int AMPI_Comm_size(MPI_Comm comm, int *size)
Definition ampiFunctions.hpp:12304
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
int AMPI_Get_library_version(char *version, int *resultlen)
Definition ampiFunctions.hpp:12773
int AMPI_Iscatter_finish(HandleBase *handle)
Definition ampiFunctions.hpp:10512
int AMPI_Buffer_attach(void *buffer, int size)
Definition ampiFunctions.hpp:12029
int AMPI_T_pvar_read(MPI_T_pvar_session session, MPI_T_pvar_handle handle, void *buf)
Definition ampiFunctions.hpp:13599
int AMPI_File_set_size(MPI_File fh, MPI_Offset size)
Definition ampiFunctions.hpp:13275
void AMPI_Allgather_b(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:4190
int AMPI_Igather(const typename SENDTYPE::Type *sendbuf, int sendcount, SENDTYPE *sendtype, typename RECVTYPE::Type *recvbuf, int recvcount, RECVTYPE *recvtype, int root, MPI_Comm comm, AMPI_Request *request)
Definition ampiFunctions.hpp:9058
int AMPI_Send_init_finish(HandleBase *handle)
Definition ampiFunctions.hpp:3359
int AMPI_Rsend_init_preStart(HandleBase *handle)
Definition ampiFunctions.hpp:2889
int AMPI_Ssend_init(const typename DATATYPE::Type *buf, int count, DATATYPE *datatype, int dest, int tag, MPI_Comm comm, AMPI_Request *request)
Definition ampiFunctions.hpp:3881
int AMPI_Get_version(int *version, int *subversion)
Definition ampiFunctions.hpp:12785
void AMPI_Ibcast_wrap_b_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:8647
int AMPI_Cart_rank(MPI_Comm comm, const int *coords, int *rank)
Definition ampiFunctions.hpp:12531
int AMPI_Iscatter(const typename SENDTYPE::Type *sendbuf, int sendcount, SENDTYPE *sendtype, typename RECVTYPE::Type *recvbuf, int recvcount, RECVTYPE *recvtype, int root, MPI_Comm comm, AMPI_Request *request)
Definition ampiFunctions.hpp:10368
int AMPI_File_get_atomicity(MPI_File fh, int *flag)
Definition ampiFunctions.hpp:13024
int AMPI_T_category_get_cvars(int cat_index, int len, int *indices)
Definition ampiFunctions.hpp:13483
int AMPI_Dims_create(int nnodes, int ndims, int *dims)
Definition ampiFunctions.hpp:12555
void AMPI_Ialltoall_d(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:7750
int AMPI_File_seek_shared(MPI_File fh, MPI_Offset offset, int whence)
Definition ampiFunctions.hpp:13257
void AMPI_Gather_b(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:5925
void AMPI_Scatter_d(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:11462
int AMPI_Comm_remote_group(MPI_Comm comm, MPI_Group *group)
Definition ampiFunctions.hpp:12274
int AMPI_Info_set(MPI_Info info, const char *key, const char *value)
Definition ampiFunctions.hpp:12875
int AMPI_Graph_get(MPI_Comm comm, int maxindex, int maxedges, int *index, int *edges)
Definition ampiFunctions.hpp:12598
void AMPI_Bcast_wrap_d(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:5615
int AMPI_File_get_errhandler(MPI_File file, MPI_Errhandler *errhandler)
Definition ampiFunctions.hpp:12743
int AMPI_Attr_get(MPI_Comm comm, int keyval, void *attribute_val, int *flag)
Definition ampiFunctions.hpp:13659
int AMPI_Igather_finish(HandleBase *handle)
Definition ampiFunctions.hpp:9202
void AMPI_Igather_pri(typename SENDTYPE::PrimalType *&sendbufAdjoints, int sendbufSize, int sendcount, SENDTYPE *sendtype, typename RECVTYPE::PrimalType *&recvbufAdjoints, int recvbufSize, int recvcount, RECVTYPE *recvtype, int root, MPI_Comm comm, AMPI_Request *request)
Definition primalFunctions.hpp:231
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
int AMPI_File_get_view(MPI_File fh, MPI_Offset *disp, ETYPE *etype, FILETYPE *filetype, char *datarep)
Definition ampiFunctions.hpp:13074
int AMPI_Scatterv(const typename SENDTYPE::Type *sendbuf, const int *sendcounts, const int *displs, SENDTYPE *sendtype, typename RECVTYPE::Type *recvbuf, int recvcount, RECVTYPE *recvtype, int root, MPI_Comm comm)
Definition ampiFunctions.hpp:11840
void AMPI_Sendrecv_p(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:3492
int AMPI_Cartdim_get(MPI_Comm comm, int *ndims)
Definition ampiFunctions.hpp:12549
void AMPI_Ibcast_wrap_p_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:8563
int AMPI_Ibcast_wrap(typename DATATYPE::Type *bufferSend, typename DATATYPE::Type *bufferRecv, int count, DATATYPE *datatype, int root, MPI_Comm comm, AMPI_Request *request)
Definition ampiFunctions.hpp:8666
MPI_Comm AMPI_Comm_f2c(MPI_Fint comm)
Definition ampiFunctions.hpp:13393
void AMPI_Gather_fwd(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 forwardFunctions.hpp:221
int AMPI_Graph_neighbors(MPI_Comm comm, int rank, int maxneighbors, int *neighbors)
Definition ampiFunctions.hpp:12611
void AMPI_Mrecv_d(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:2093
int AMPI_Isend(const typename DATATYPE::Type *buf, int count, DATATYPE *datatype, int dest, int tag, MPI_Comm comm, AMPI_Request *request)
Definition ampiFunctions.hpp:1645
void AMPI_Bsend_pri(typename DATATYPE::PrimalType *bufAdjoints, int bufSize, int count, DATATYPE *datatype, int dest, int tag, MPI_Comm comm)
Definition primalFunctions.hpp:62
void AMPI_Iscatterv_p(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:10658
int AMPI_File_iread_at(MPI_File fh, MPI_Offset offset, void *buf, int count, DATATYPE *datatype, AMPI_Request *request)
Definition ampiFunctions.hpp:13095
int AMPI_Win_create_errhandler(AMPI_Win_errhandler_function *win_errhandler_fn, MPI_Errhandler *errhandler)
Definition ampiFunctions.hpp:12803
void AMPI_Iscatterv_d_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:10732
int AMPI_File_read_at_all_begin(MPI_File fh, MPI_Offset offset, void *buf, int count, DATATYPE *datatype)
Definition ampiFunctions.hpp:13212
int AMPI_File_open(MPI_Comm comm, const char *filename, int amode, MPI_Info info, MPI_File *fh)
Definition ampiFunctions.hpp:13155
void AMPI_Send_fwd(typename DATATYPE::AdjointType *bufAdjoints, int bufSize, int count, DATATYPE *datatype, int dest, int tag, MPI_Comm comm)
Definition forwardFunctions.hpp:46
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
int AMPI_Type_size_x(DATATYPE *datatype, MPI_Count *size)
Definition ampiFunctions.hpp:12163
void AMPI_Ibsend_p_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:263
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
void AMPI_Mrecv_b(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:2111
void AMPI_Sendrecv_pri(typename SENDTYPE::PrimalType *sendbuf, int sendbufSize, int sendcount, SENDTYPE *sendtype, int dest, int sendtag, typename RECVTYPE::PrimalType *recvbuf, int recvbufSize, int recvcount, RECVTYPE *recvtype, int source, int recvtag, MPI_Comm comm, MPI_Status *status)
Definition primalFunctions.hpp:146
IrecvAdjCall
Definition enums.hpp:40
@ Isend
Definition enums.hpp:41
int AMPI_File_read_at_all(MPI_File fh, MPI_Offset offset, void *buf, int count, DATATYPE *datatype, MPI_Status *status)
Definition ampiFunctions.hpp:13204
int AMPI_Comm_set_name(MPI_Comm comm, const char *comm_name)
Definition ampiFunctions.hpp:12298
int AMPI_Igatherv_finish(HandleBase *handle)
Definition ampiFunctions.hpp:9657
int AMPI_Comm_set_info(MPI_Comm comm, MPI_Info info)
Definition ampiFunctions.hpp:12292
int AMPI_Type_create_keyval(AMPI_Type_copy_attr_function *type_copy_attr_fn, AMPI_Type_delete_attr_function *type_delete_attr_fn, int *type_keyval, void *extra_state)
Definition ampiFunctions.hpp:12414
int AMPI_Comm_spawn_multiple(int count, char **array_of_commands, char ***array_of_argv, const int *array_of_maxprocs, const MPI_Info *array_of_info, int root, MPI_Comm comm, MPI_Comm *intercomm, int *array_of_errcodes)
Definition ampiFunctions.hpp:12926
MPI_Fint AMPI_Win_c2f(MPI_Win win)
Definition ampiFunctions.hpp:13459
int AMPI_Win_get_name(MPI_Win win, char *win_name, int *resultlen)
Definition ampiFunctions.hpp:12487
void AMPI_Irsend_fwd(typename DATATYPE::AdjointType *bufAdjoints, int bufSize, int count, DATATYPE *datatype, int dest, int tag, MPI_Comm comm, AMPI_Request *request)
Definition forwardFunctions.hpp:102
void AMPI_Ibcast_wrap_fwd(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 forwardFunctions.hpp:169
int AMPI_File_set_atomicity(MPI_File fh, int flag)
Definition ampiFunctions.hpp:13263
int AMPI_T_init_thread(int required, int *provided)
Definition ampiFunctions.hpp:13568
int AMPI_T_category_get_categories(int cat_index, int len, int *indices)
Definition ampiFunctions.hpp:13477
void AMPI_Iallgather_d_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:6573
void AMPI_Igatherv_fwd(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 forwardFunctions.hpp:252
int AMPI_Irecv_finish(HandleBase *handle)
Definition ampiFunctions.hpp:1202
int AMPI_Attr_put(MPI_Comm comm, int keyval, void *attribute_val)
Definition ampiFunctions.hpp:13665
void AMPI_Allreduce_global_d(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:4733
int AMPI_Ialltoall(const typename SENDTYPE::Type *sendbuf, int sendcount, SENDTYPE *sendtype, typename RECVTYPE::Type *recvbuf, int recvcount, RECVTYPE *recvtype, MPI_Comm comm, AMPI_Request *request)
Definition ampiFunctions.hpp:7829
int AMPI_Group_range_incl(MPI_Group group, int n, ::medi::common::Range *ranges, MPI_Group *newgroup)
Definition ampiFunctions.hpp:12370
int AMPI_File_delete(const char *filename, MPI_Info info)
Definition ampiFunctions.hpp:13012
int AMPI_Group_rank(MPI_Group group, int *rank)
Definition ampiFunctions.hpp:12376
int AMPI_Rsend_init_finish(HandleBase *handle)
Definition ampiFunctions.hpp:2969
void AMPI_Ialltoallv_p_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:8121
void AMPI_Igather_fwd(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 forwardFunctions.hpp:231
void AMPI_Ibcast_wrap_b(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:8621
void AMPI_Irsend_d_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:1343
int AMPI_File_iwrite(MPI_File fh, const void *buf, int count, DATATYPE *datatype, AMPI_Request *request)
Definition ampiFunctions.hpp:13118
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
void AMPI_Igatherv_d(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:9392
void AMPI_Ibcast_wrap_p(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:8540
void AMPI_Irecv_p(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:1016
int AMPI_File_set_info(MPI_File fh, MPI_Info info)
Definition ampiFunctions.hpp:13269
int AMPI_Status_set_elements_x(MPI_Status *status, DATATYPE *datatype, MPI_Count count)
Definition ampiFunctions.hpp:13000
int AMPI_Win_create_keyval(AMPI_Win_copy_attr_function *win_copy_attr_fn, AMPI_Win_delete_attr_function *win_delete_attr_fn, int *win_keyval, void *extra_state)
Definition ampiFunctions.hpp:12462
int computeDisplacementsTotalSize(const int *counts, int ranks)
Compute the total size of a message that has a different size on each rank.
Definition displacementTools.hpp:105
int AMPI_Comm_test_inter(MPI_Comm comm, int *flag)
Definition ampiFunctions.hpp:12322
int AMPI_Ssend_init_finish(HandleBase *handle)
Definition ampiFunctions.hpp:4006
int AMPI_Cart_map(MPI_Comm comm, int ndims, const int *dims, const int *periods, int *newrank)
Definition ampiFunctions.hpp:12524
void AMPI_Ibsend_pri(typename DATATYPE::PrimalType *bufAdjoints, int bufSize, int count, DATATYPE *datatype, int dest, int tag, MPI_Comm comm, AMPI_Request *request)
Definition primalFunctions.hpp:70
int AMPI_File_iwrite_shared(MPI_File fh, const void *buf, int count, DATATYPE *datatype, AMPI_Request *request)
Definition ampiFunctions.hpp:13148
int AMPI_Comm_idup(MPI_Comm comm, MPI_Comm *newcomm, AMPI_Request *request)
Definition ampiFunctions.hpp:12262
int AMPI_Comm_create_keyval(AMPI_Comm_copy_attr_function *comm_copy_attr_fn, AMPI_Comm_delete_attr_function *comm_delete_attr_fn, int *comm_keyval, void *extra_state)
Definition ampiFunctions.hpp:12201
int AMPI_Cart_shift(MPI_Comm comm, int direction, int disp, int *rank_source, int *rank_dest)
Definition ampiFunctions.hpp:12537
void AMPI_Isend_b_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:1630
double AMPI_Wtick()
Definition ampiFunctions.hpp:12635
int AMPI_Lookup_name(const char *service_name, MPI_Info info, char *port_name)
Definition ampiFunctions.hpp:12935
int AMPI_T_cvar_get_num(int *num_cvar)
Definition ampiFunctions.hpp:13520
int AMPI_Comm_get_attr(MPI_Comm comm, int comm_keyval, void *attribute_val, int *flag)
Definition ampiFunctions.hpp:12238
void AMPI_Ssend_fwd(typename DATATYPE::AdjointType *bufAdjoints, int bufSize, int count, DATATYPE *datatype, int dest, int tag, MPI_Comm comm)
Definition forwardFunctions.hpp:78
int AMPI_Comm_free(MPI_Comm *comm)
Definition ampiFunctions.hpp:12226
int AMPI_Recv_init_finish(HandleBase *handle)
Definition ampiFunctions.hpp:2571
RecvAdjCall
Definition enums.hpp:44
@ Send
Definition enums.hpp:45
const AMPI_IN_PLACE_IMPL AMPI_IN_PLACE
This structure is able to be cast to any type.
Definition ampi.cpp:40
void AMPI_Irsend_b(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:1354
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_Bcast_wrap_b(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:5644
void AMPI_Recv_fwd(typename DATATYPE::AdjointType *bufAdjoints, int bufSize, int count, DATATYPE *datatype, int src, int tag, MPI_Comm comm, MPI_Status *status, RecvAdjCall reverse_call)
Definition forwardFunctions.hpp:110
int AMPI_Win_free_keyval(int *win_keyval)
Definition ampiFunctions.hpp:12475
int MPI_Bcast_wrap(void *bufferSend, void *bufferRecv, int count, MPI_Datatype type, int root, MPI_Comm comm)
Definition wrappers.hpp:52
int AMPI_Group_excl(MPI_Group group, int n, const int *ranks, MPI_Group *newgroup)
Definition ampiFunctions.hpp:12340
int AMPI_Request_get_status(AMPI_Request request, int *flag, MPI_Status *status)
Definition ampiFunctions.hpp:12066
void AMPI_Rsend_fwd(typename DATATYPE::AdjointType *bufAdjoints, int bufSize, int count, DATATYPE *datatype, int dest, int tag, MPI_Comm comm)
Definition forwardFunctions.hpp:94
void AMPI_Ialltoallv_p(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:8096
int AMPI_Iallgather(const typename SENDTYPE::Type *sendbuf, int sendcount, SENDTYPE *sendtype, typename RECVTYPE::Type *recvbuf, int recvcount, RECVTYPE *recvtype, MPI_Comm comm, AMPI_Request *request)
Definition ampiFunctions.hpp:6631
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_Iallreduce_global_pri(typename DATATYPE::PrimalType *&sendbufAdjoints, int sendbufSize, typename DATATYPE::PrimalType *&recvbufAdjoints, int recvbufSize, int count, DATATYPE *datatype, AMPI_Op op, MPI_Comm comm, AMPI_Request *request)
Definition primalFunctions.hpp:380
int AMPI_Get_count(const MPI_Status *status, DATATYPE *datatype, int *count)
Definition ampiFunctions.hpp:12048
void AMPI_Iallgatherv_d_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:6959
ADToolInterface const * selectADTool(ADToolInterface const &tool)
Definition adToolInterface.h:342
int AMPI_Status_f2c(const MPI_Fint *f_status, MPI_Status *c_status)
Definition ampiFunctions.hpp:13453
int AMPI_File_set_errhandler(MPI_File file, MPI_Errhandler errhandler)
Definition ampiFunctions.hpp:12749
void(* ForwardFunction)(HandleBase *h, AdjointInterface *a)
Definition typeDefinitions.h:47
int AMPI_Ibsend(const typename DATATYPE::Type *buf, int count, DATATYPE *datatype, int dest, int tag, MPI_Comm comm, AMPI_Request *request)
Definition ampiFunctions.hpp:333
MPI_Group AMPI_Group_f2c(MPI_Fint group)
Definition ampiFunctions.hpp:13429
int AMPI_File_read(MPI_File fh, void *buf, int count, DATATYPE *datatype, MPI_Status *status)
Definition ampiFunctions.hpp:13169
void AMPI_Irecv_b_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:1096
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_Scatter_b(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:11492
int AMPI_Intercomm_merge(MPI_Comm intercomm, int high, MPI_Comm *newintracomm)
Definition ampiFunctions.hpp:12408
int AMPI_File_preallocate(MPI_File fh, MPI_Offset size)
Definition ampiFunctions.hpp:13162
void AMPI_Ssend_d(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:3744
void AMPI_Iallgather_d(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:6551
void AMPI_Bcast_wrap_fwd(typename DATATYPE::AdjointType *&sendbufAdjoints, int sendbufSize, typename DATATYPE::AdjointType *&recvbufAdjoints, int recvbufSize, int count, DATATYPE *datatype, int root, MPI_Comm comm)
Definition forwardFunctions.hpp:157
int AMPI_Comm_remote_size(MPI_Comm comm, int *size)
Definition ampiFunctions.hpp:12280
int AMPI_Type_delete_attr(DATATYPE *datatype, int type_keyval)
Definition ampiFunctions.hpp:12422
int AMPI_Status_set_elements(MPI_Status *status, DATATYPE *datatype, int count)
Definition ampiFunctions.hpp:12993
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_Iallgather_p(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:6511
int AMPI_Group_size(MPI_Group group, int *size)
Definition ampiFunctions.hpp:12382
MPI_Info AMPI_Info_f2c(MPI_Fint info)
Definition ampiFunctions.hpp:13441
int AMPI_Info_create(MPI_Info *info)
Definition ampiFunctions.hpp:12827
int AMPI_T_category_get_pvars(int cat_index, int len, int *indices)
Definition ampiFunctions.hpp:13508
void AMPI_Ialltoallv_b_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:8215
void AMPI_Iallgatherv_pri(typename SENDTYPE::PrimalType *&sendbufAdjoints, int sendbufSize, int sendcount, SENDTYPE *sendtype, typename RECVTYPE::PrimalType *&recvbufAdjoints, int *recvbufCounts, const int *recvbufDispls, const int *recvcounts, const int *displs, RECVTYPE *recvtype, MPI_Comm comm, AMPI_Request *request)
Definition primalFunctions.hpp:294
MPI_Win_delete_attr_function AMPI_Win_delete_attr_function
Definition ampiDefinitions.h:839
void AMPI_Alltoallv_pri(typename SENDTYPE::PrimalType *&sendbufAdjoints, int *sendbufCounts, const int *sendbufDispls, const int *sendcounts, const int *sdispls, SENDTYPE *sendtype, typename RECVTYPE::PrimalType *&recvbufAdjoints, int *recvbufCounts, const int *recvbufDispls, const int *recvcounts, const int *rdispls, RECVTYPE *recvtype, MPI_Comm comm)
Definition primalFunctions.hpp:325
int AMPI_Ialltoall_finish(HandleBase *handle)
Definition ampiFunctions.hpp:7958
int AMPI_Finalize()
Definition ampiFunctions.hpp:12755
int AMPI_Igatherv(const typename SENDTYPE::Type *sendbuf, int sendcount, SENDTYPE *sendtype, typename RECVTYPE::Type *recvbuf, const int *recvcounts, const int *displs, RECVTYPE *recvtype, int root, MPI_Comm comm, AMPI_Request *request)
Definition ampiFunctions.hpp:9489
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_Ibsend_b_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:318
int AMPI_Issend_finish(HandleBase *handle)
Definition ampiFunctions.hpp:1991
MPI_Grequest_query_function AMPI_Grequest_query_function
Definition ampiDefinitions.h:866
MPI_Type_delete_attr_function AMPI_Type_delete_attr_function
Definition ampiDefinitions.h:845
int * createLinearDisplacements(const int *counts, int ranks)
Creates the linearized displacements of a message with a different size on each rank.
Definition displacementTools.hpp:122
void AMPI_Sendrecv_b(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:3549
MPI_Win_errhandler_function AMPI_Win_errhandler_function
Definition ampiDefinitions.h:851
int AMPI_Graph_create(MPI_Comm comm_old, int nnodes, const int *index, const int *edges, int reorder, MPI_Comm *comm_graph)
Definition ampiFunctions.hpp:12591
void AMPI_Allgather_p(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:4135
int AMPI_Info_get(MPI_Info info, const char *key, int valuelen, char *value, int *flag)
Definition ampiFunctions.hpp:12851
MPI_Fint AMPI_Info_c2f(MPI_Info info)
Definition ampiFunctions.hpp:13435
int AMPI_Win_set_errhandler(MPI_Win win, MPI_Errhandler errhandler)
Definition ampiFunctions.hpp:12821
int AMPI_File_get_group(MPI_File fh, MPI_Group *group)
Definition ampiFunctions.hpp:13036
int AMPI_Comm_set_errhandler(MPI_Comm comm, MPI_Errhandler errhandler)
Definition ampiFunctions.hpp:12701
int AMPI_File_read_shared(MPI_File fh, void *buf, int count, DATATYPE *datatype, MPI_Status *status)
Definition ampiFunctions.hpp:13245
int AMPI_T_pvar_handle_alloc(MPI_T_pvar_session session, int pvar_index, void *obj_handle, MPI_T_pvar_handle *handle, int *count)
Definition ampiFunctions.hpp:13586
void AMPI_Irsend_p_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:1314
void AMPI_Igather_p(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:8923
int AMPI_Get_address(const void *location, MPI_Aint *address)
Definition ampiFunctions.hpp:12090
int AMPI_Win_set_attr(MPI_Win win, int win_keyval, void *attribute_val)
Definition ampiFunctions.hpp:12493
void AMPI_Imrecv_b(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:796
int AMPI_Query_thread(int *provided)
Definition ampiFunctions.hpp:12980
int AMPI_File_sync(MPI_File fh)
Definition ampiFunctions.hpp:13289
void AMPI_Issend_fwd(typename DATATYPE::AdjointType *bufAdjoints, int bufSize, int count, DATATYPE *datatype, int dest, int tag, MPI_Comm comm, AMPI_Request *request)
Definition forwardFunctions.hpp:86
void AMPI_Alltoall_d(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:5016
int AMPI_Rsend(const typename DATATYPE::Type *buf, int count, DATATYPE *datatype, int dest, int tag, MPI_Comm comm)
Definition ampiFunctions.hpp:2742
void AMPI_Igather_p_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:8947
int AMPI_Send_init(const typename DATATYPE::Type *buf, int count, DATATYPE *datatype, int dest, int tag, MPI_Comm comm, AMPI_Request *request)
Definition ampiFunctions.hpp:3234
void AMPI_Igather_b(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:9010
int AMPI_Ssend(const typename DATATYPE::Type *buf, int count, DATATYPE *datatype, int dest, int tag, MPI_Comm comm)
Definition ampiFunctions.hpp:3779
int AMPI_T_pvar_reset(MPI_T_pvar_session session, MPI_T_pvar_handle handle)
Definition ampiFunctions.hpp:13611
void AMPI_Imrecv_pri(typename DATATYPE::PrimalType *bufAdjoints, int bufSize, int count, DATATYPE *datatype, AMPI_Message *message, AMPI_Request *request, IrecvAdjCall reverse_call)
Definition primalFunctions.hpp:137
int AMPI_Initialized(int *flag)
Definition ampiFunctions.hpp:12791
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_Iallreduce_global_b_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:7421
void AMPI_Igatherv_d_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:9418
int AMPI_Group_range_excl(MPI_Group group, int n, ::medi::common::Range *ranges, MPI_Group *newgroup)
Definition ampiFunctions.hpp:12364
int AMPI_Type_set_attr(DATATYPE *datatype, int type_keyval, void *attribute_val)
Definition ampiFunctions.hpp:12449
double AMPI_Wtime()
Definition ampiFunctions.hpp:12641
int AMPI_File_set_view(MPI_File fh, MPI_Offset disp, ETYPE *etype, FILETYPE *filetype, const char *datarep, MPI_Info info)
Definition ampiFunctions.hpp:13282
int AMPI_Iprobe(int source, int tag, MPI_Comm comm, int *flag, MPI_Status *status)
Definition ampiFunctions.hpp:12054
void AMPI_Send_b(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:3115
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
MPI_Grequest_cancel_function AMPI_Grequest_cancel_function
Definition ampiDefinitions.h:872
void AMPI_Iscatter_b(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:10322
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
int AMPI_T_pvar_get_num(int *num_pvar)
Definition ampiFunctions.hpp:13580
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
int AMPI_File_write(MPI_File fh, const void *buf, int count, DATATYPE *datatype, MPI_Status *status)
Definition ampiFunctions.hpp:13296
void AMPI_Iscatter_d(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:10281
int AMPI_Iscatterv_finish(HandleBase *handle)
Definition ampiFunctions.hpp:10970
int AMPI_Dist_graph_neighbors(MPI_Comm comm, int maxindegree, int *sources, int *sourceweights, int maxoutdegree, int *destinations, int *destweights)
Definition ampiFunctions.hpp:12578
void AMPI_Ssend_p(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:3726
int AMPI_Comm_get_name(MPI_Comm comm, char *comm_name, int *resultlen)
Definition ampiFunctions.hpp:12250
void AMPI_Scatterv_b(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:11804
void AMPI_Irecv_pri(typename DATATYPE::PrimalType *bufAdjoints, int bufSize, int count, DATATYPE *datatype, int src, int tag, MPI_Comm comm, AMPI_Request *request, IrecvAdjCall reverse_call)
Definition primalFunctions.hpp:128
int AMPI_T_category_get_index(const char *name, int *cat_index)
Definition ampiFunctions.hpp:13489
void AMPI_Ialltoall_b_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:7812
void AMPI_Gather_d(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:5896
int AMPI_Get_elements_x(const MPI_Status *status, DATATYPE *datatype, MPI_Count *count)
Definition ampiFunctions.hpp:12104
void AMPI_Gatherv_fwd(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 forwardFunctions.hpp:241
void AMPI_Allreduce_global_pri(typename DATATYPE::PrimalType *&sendbufAdjoints, int sendbufSize, typename DATATYPE::PrimalType *&recvbufAdjoints, int recvbufSize, int count, DATATYPE *datatype, AMPI_Op op, MPI_Comm comm)
Definition primalFunctions.hpp:369
MPI_Errhandler AMPI_Errhandler_f2c(MPI_Fint errhandler)
Definition ampiFunctions.hpp:13405
int AMPI_Comm_dup(MPI_Comm comm, MPI_Comm *newcomm)
Definition ampiFunctions.hpp:12214
int AMPI_Group_difference(MPI_Group group1, MPI_Group group2, MPI_Group *newgroup)
Definition ampiFunctions.hpp:12334
void AMPI_Iscatter_p(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:10237
void AMPI_Ssend_b(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:3762
void AMPI_Alltoall_pri(typename SENDTYPE::PrimalType *&sendbufAdjoints, int sendbufSize, int sendcount, SENDTYPE *sendtype, typename RECVTYPE::PrimalType *&recvbufAdjoints, int recvbufSize, int recvcount, RECVTYPE *recvtype, MPI_Comm comm)
Definition primalFunctions.hpp:305
int AMPI_Dist_graph_create(MPI_Comm comm_old, int n, const int *sources, const int *degrees, const int *destinations, const int *weights, MPI_Info info, int reorder, MPI_Comm *comm_dist_graph)
Definition ampiFunctions.hpp:12561
int AMPI_Grequest_complete(AMPI_Request request)
Definition ampiFunctions.hpp:12961
void AMPI_Iallgather_b(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:6588
void createLinearDisplacementsAndCount(int *&countsOut, int *&displsOut, const int *counts, int ranks, int scale)
Creates the linearized displacements of a message with a different size on each rank.
Definition displacementTools.hpp:144
int AMPI_Group_translate_ranks(MPI_Group group1, int n, const int *ranks1, MPI_Group group2, int *ranks2)
Definition ampiFunctions.hpp:12388
int AMPI_Comm_compare(MPI_Comm comm1, MPI_Comm comm2, int *result)
Definition ampiFunctions.hpp:12183
void AMPI_Scatter_fwd(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 forwardFunctions.hpp:181
int AMPI_File_read_all(MPI_File fh, void *buf, int count, DATATYPE *datatype, MPI_Status *status)
Definition ampiFunctions.hpp:13176
void AMPI_Iscatterv_pri(typename SENDTYPE::PrimalType *&sendbufAdjoints, int *sendbufCounts, const int *sendbufDispl, const int *sendcount, const int *displs, SENDTYPE *sendtype, typename RECVTYPE::PrimalType *&recvbufAdjoints, int recvbufSize, int recvcount, RECVTYPE *recvtype, int root, MPI_Comm comm, AMPI_Request *request)
Definition primalFunctions.hpp:211
int AMPI_Comm_call_errhandler(MPI_Comm comm, int errorcode)
Definition ampiFunctions.hpp:12677
int AMPI_Type_get_extent_x(DATATYPE *datatype, MPI_Count *lb, MPI_Count *extent)
Definition ampiFunctions.hpp:12135
int AMPI_Win_delete_attr(MPI_Win win, int win_keyval)
Definition ampiFunctions.hpp:12469
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
int AMPI_Imrecv(typename DATATYPE::Type *buf, int count, DATATYPE *datatype, AMPI_Message *message, AMPI_Request *request, IrecvAdjCall reverse_send=IrecvAdjCall::Isend)
Definition ampiFunctions.hpp:830
void AMPI_Scatter_pri(typename SENDTYPE::PrimalType *&sendbufAdjoints, int sendbufSize, int sendcount, SENDTYPE *sendtype, typename RECVTYPE::PrimalType *&recvbufAdjoints, int recvbufSize, int recvcount, RECVTYPE *recvtype, int root, MPI_Comm comm)
Definition primalFunctions.hpp:181
void createLinearIndexCounts(int *&linearCounts, const int *counts, const int *displs, int ranks, Datatype *type)
Creates the counts for a message with a different size on each rank.
Definition displacementTools.hpp:170
MPI_Fint AMPI_File_c2f(MPI_File file)
Definition ampiFunctions.hpp:13411
int AMPI_Allreduce_global(const typename DATATYPE::Type *sendbuf, typename DATATYPE::Type *recvbuf, int count, DATATYPE *datatype, AMPI_Op op, MPI_Comm comm)
Definition ampiFunctions.hpp:4796
void AMPI_Igather_b_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:9039
MPI_Fint AMPI_Group_c2f(MPI_Group group)
Definition ampiFunctions.hpp:13423
void AMPI_Iscatterv_d(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:10706
void AMPI_Imrecv_d_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:783
int AMPI_T_pvar_session_free(MPI_T_pvar_session *session)
Definition ampiFunctions.hpp:13623
int AMPI_Graph_neighbors_count(MPI_Comm comm, int rank, int *nneighbors)
Definition ampiFunctions.hpp:12617
int AMPI_Iscatterv(const typename SENDTYPE::Type *sendbuf, const int *sendcounts, const int *displs, SENDTYPE *sendtype, typename RECVTYPE::Type *recvbuf, int recvcount, RECVTYPE *recvtype, int root, MPI_Comm comm, AMPI_Request *request)
Definition ampiFunctions.hpp:10801
int AMPI_Ibsend_finish(HandleBase *handle)
Definition ampiFunctions.hpp:418
int AMPI_File_write_shared(MPI_File fh, const void *buf, int count, DATATYPE *datatype, MPI_Status *status)
Definition ampiFunctions.hpp:13373
int AMPI_Ialltoallv(const typename SENDTYPE::Type *sendbuf, const int *sendcounts, const int *sdispls, SENDTYPE *sendtype, typename RECVTYPE::Type *recvbuf, const int *recvcounts, const int *rdispls, RECVTYPE *recvtype, MPI_Comm comm, AMPI_Request *request)
Definition ampiFunctions.hpp:8236
int AMPI_Info_get_valuelen(MPI_Info info, const char *key, int *valuelen, int *flag)
Definition ampiFunctions.hpp:12869
int AMPI_Win_set_name(MPI_Win win, const char *win_name)
Definition ampiFunctions.hpp:12499
int AMPI_Dist_graph_create_adjacent(MPI_Comm comm_old, int indegree, const int *sources, const int *sourceweights, int outdegree, const int *destinations, const int *destweights, MPI_Info info, int reorder, MPI_Comm *comm_dist_graph)
Definition ampiFunctions.hpp:12569
void AMPI_Irsend_p(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:1296
void AMPI_Recv_d(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:2280
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 AMPI_Recv_init(typename DATATYPE::Type *buf, int count, DATATYPE *datatype, int source, int tag, MPI_Comm comm, AMPI_Request *request, IrecvAdjCall reverse_send=IrecvAdjCall::Isend)
Definition ampiFunctions.hpp:2436
int AMPI_Comm_split(MPI_Comm comm, int color, int key, MPI_Comm *newcomm)
Definition ampiFunctions.hpp:12310
int AMPI_Type_get_true_extent(DATATYPE *datatype, MPI_Aint *true_lb, MPI_Aint *true_extent)
Definition ampiFunctions.hpp:12142
int AMPI_File_get_byte_offset(MPI_File fh, MPI_Offset offset, MPI_Offset *disp)
Definition ampiFunctions.hpp:13030
int AMPI_Alloc_mem(MPI_Aint size, MPI_Info info, void *baseptr)
Definition ampiFunctions.hpp:12671
MPI_Type_copy_attr_function AMPI_Type_copy_attr_function
Definition ampiDefinitions.h:842
int AMPI_Get_processor_name(char *name, int *resultlen)
Definition ampiFunctions.hpp:12779
void AMPI_Rsend_p(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:2689
int AMPI_Comm_create(MPI_Comm comm, MPI_Group group, MPI_Comm *newcomm)
Definition ampiFunctions.hpp:12189
void AMPI_Irecv_fwd(typename DATATYPE::AdjointType *bufAdjoints, int bufSize, int count, DATATYPE *datatype, int src, int tag, MPI_Comm comm, AMPI_Request *request, IrecvAdjCall reverse_call)
Definition forwardFunctions.hpp:128
MPI_Datarep_extent_function AMPI_Datarep_extent_function
Definition ampiDefinitions.h:875
int getCommSize(MPI_Comm comm)
Helper function that gets the number of ranks from the communicator.
Definition mpiTools.h:64
void AMPI_Iscatterv_fwd(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 forwardFunctions.hpp:211
int AMPI_Comm_disconnect(MPI_Comm *comm)
Definition ampiFunctions.hpp:12901
int AMPI_Win_call_errhandler(MPI_Win win, int errorcode)
Definition ampiFunctions.hpp:12797
void AMPI_Igatherv_p_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:9368
int AMPI_T_pvar_handle_free(MPI_T_pvar_session session, MPI_T_pvar_handle *handle)
Definition ampiFunctions.hpp:13593
void AMPI_Mrecv_pri(typename DATATYPE::PrimalType *bufAdjoints, int bufSize, int count, DATATYPE *datatype, AMPI_Message *message, MPI_Status *status, RecvAdjCall reverse_call)
Definition primalFunctions.hpp:119
int AMPI_Comm_get_errhandler(MPI_Comm comm, MPI_Errhandler *errhandler)
Definition ampiFunctions.hpp:12695
int AMPI_Comm_split_type(MPI_Comm comm, int split_type, int key, MPI_Info info, MPI_Comm *newcomm)
Definition ampiFunctions.hpp:12316
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 AMPI_Add_error_string(int errorcode, const char *string)
Definition ampiFunctions.hpp:12665
int AMPI_Irecv(typename DATATYPE::Type *buf, int count, DATATYPE *datatype, int source, int tag, MPI_Comm comm, AMPI_Request *request, IrecvAdjCall reverse_send=IrecvAdjCall::Isend)
Definition ampiFunctions.hpp:1109
int AMPI_Register_datarep(const char *datarep, AMPI_Datarep_conversion_function *read_conversion_fn, AMPI_Datarep_conversion_function *write_conversion_fn, AMPI_Datarep_extent_function *dtype_file_extent_fn, void *extra_state)
Definition ampiFunctions.hpp:13379
void AMPI_Allgather_pri(typename SENDTYPE::PrimalType *&sendbufAdjoints, int sendbufSize, int sendcount, SENDTYPE *sendtype, typename RECVTYPE::PrimalType *&recvbufAdjoints, int recvbufSize, int recvcount, RECVTYPE *recvtype, MPI_Comm comm)
Definition primalFunctions.hpp:263
void AMPI_Issend_b(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:1876
int getCommRank(MPI_Comm comm)
Helper function that gets the own rank number from the communicator.
Definition mpiTools.h:52
void AMPI_Iallgather_p_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:6533
MPI_Fint AMPI_Errhandler_c2f(MPI_Errhandler errhandler)
Definition ampiFunctions.hpp:13399
int AMPI_Iallgatherv(const typename SENDTYPE::Type *sendbuf, int sendcount, SENDTYPE *sendtype, typename RECVTYPE::Type *recvbuf, const int *recvcounts, const int *displs, RECVTYPE *recvtype, MPI_Comm comm, AMPI_Request *request)
Definition ampiFunctions.hpp:7023
int AMPI_Comm_get_parent(MPI_Comm *parent)
Definition ampiFunctions.hpp:12907
void AMPI_Imrecv_fwd(typename DATATYPE::AdjointType *bufAdjoints, int bufSize, int count, DATATYPE *datatype, AMPI_Message *message, AMPI_Request *request, IrecvAdjCall reverse_call)
Definition forwardFunctions.hpp:137
int AMPI_Group_incl(MPI_Group group, int n, const int *ranks, MPI_Group *newgroup)
Definition ampiFunctions.hpp:12352
int AMPI_Comm_set_attr(MPI_Comm comm, int comm_keyval, void *attribute_val)
Definition ampiFunctions.hpp:12286
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_Allreduce_global_fwd(typename DATATYPE::AdjointType *&sendbufAdjoints, int sendbufSize, typename DATATYPE::AdjointType *&recvbufAdjoints, int recvbufSize, int count, DATATYPE *datatype, AMPI_Op op, MPI_Comm comm)
Definition forwardFunctions.hpp:369
int AMPI_Ssend_init_preStart(HandleBase *handle)
Definition ampiFunctions.hpp:3926
void AMPI_Iallgatherv_p_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:6915
int AMPI_Comm_spawn(const char *command, char **argv, int maxprocs, MPI_Info info, int root, MPI_Comm comm, MPI_Comm *intercomm, int *array_of_errcodes)
Definition ampiFunctions.hpp:12919
int AMPI_Op_commutative(AMPI_Op op, int *commute)
Definition ampiFunctions.hpp:12175
void AMPI_Iscatter_b_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:10349
void AMPI_Allgatherv_b(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:4464
int AMPI_Buffer_detach(void *buffer_addr, int *size)
Definition ampiFunctions.hpp:12035
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
int AMPI_File_iread_all(MPI_File fh, void *buf, int count, DATATYPE *datatype, AMPI_Request *request)
Definition ampiFunctions.hpp:13088
void AMPI_Rsend_d(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:2707
void AMPI_Issend_p(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:1818
void AMPI_Imrecv_p(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:737
int AMPI_Finalized(int *flag)
Definition ampiFunctions.hpp:12761
int AMPI_Alltoall(const typename SENDTYPE::Type *sendbuf, int sendcount, SENDTYPE *sendtype, typename RECVTYPE::Type *recvbuf, int recvcount, RECVTYPE *recvtype, MPI_Comm comm)
Definition ampiFunctions.hpp:5071
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
int AMPI_File_write_ordered(MPI_File fh, const void *buf, int count, DATATYPE *datatype, MPI_Status *status)
Definition ampiFunctions.hpp:13353
void AMPI_Iscatter_pri(typename SENDTYPE::PrimalType *&sendbufAdjoints, int sendbufSize, int sendcount, SENDTYPE *sendtype, typename RECVTYPE::PrimalType *&recvbufAdjoints, int recvbufSize, int recvcount, RECVTYPE *recvtype, int root, MPI_Comm comm, AMPI_Request *request)
Definition primalFunctions.hpp:191
MPI_Copy_function AMPI_Copy_function
Definition ampiDefinitions.h:881
int AMPI_File_read_at(MPI_File fh, MPI_Offset offset, void *buf, int count, DATATYPE *datatype, MPI_Status *status)
Definition ampiFunctions.hpp:13196
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
int AMPI_T_cvar_get_index(const char *name, int *cvar_index)
Definition ampiFunctions.hpp:13514
int AMPI_File_read_all_begin(MPI_File fh, void *buf, int count, DATATYPE *datatype)
Definition ampiFunctions.hpp:13183
int AMPI_Bcast_wrap(typename DATATYPE::Type *bufferSend, typename DATATYPE::Type *bufferRecv, int count, DATATYPE *datatype, int root, MPI_Comm comm)
Definition ampiFunctions.hpp:5677
void AMPI_Allgatherv_d(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:4435
void AMPI_Iallreduce_global_d(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:7352
void AMPI_Alltoallv_fwd(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 forwardFunctions.hpp:325
int AMPI_Publish_name(const char *service_name, MPI_Info info, const char *port_name)
Definition ampiFunctions.hpp:12947
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_Iscatterv_b(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:10751
int AMPI_Imrecv_finish(HandleBase *handle)
Definition ampiFunctions.hpp:919
void AMPI_Isend_b(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:1615
void AMPI_Allreduce_global_p(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:4703
int AMPI_File_get_type_extent(MPI_File fh, DATATYPE *datatype, MPI_Aint *extent)
Definition ampiFunctions.hpp:13067
int AMPI_Recv_init_preStart(HandleBase *handle)
Definition ampiFunctions.hpp:2482
void AMPI_Ialltoall_d_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:7772
void AMPI_Rsend_b(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:2725
void AMPI_Ibsend_d(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:274
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
int AMPI_Unpublish_name(const char *service_name, MPI_Info info, const char *port_name)
Definition ampiFunctions.hpp:12954
int AMPI_Bsend_init_postEnd(HandleBase *handle)
Definition ampiFunctions.hpp:654
void AMPI_Ibsend_p(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:245
void AMPI_Ialltoall_fwd(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 forwardFunctions.hpp:315
void AMPI_Scatterv_p(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:11735
int AMPI_Rsend_init_postEnd(HandleBase *handle)
Definition ampiFunctions.hpp:3010
int AMPI_Iallreduce_global(const typename DATATYPE::Type *sendbuf, typename DATATYPE::Type *recvbuf, int count, DATATYPE *datatype, AMPI_Op op, MPI_Comm comm, AMPI_Request *request)
Definition ampiFunctions.hpp:7445
int AMPI_Gatherv(const typename SENDTYPE::Type *sendbuf, int sendcount, SENDTYPE *sendtype, typename RECVTYPE::Type *recvbuf, const int *recvcounts, const int *displs, RECVTYPE *recvtype, int root, MPI_Comm comm)
Definition ampiFunctions.hpp:6272
void AMPI_Scatterv_pri(typename SENDTYPE::PrimalType *&sendbufAdjoints, int *sendbufCounts, const int *sendbufDispl, const int *sendcount, const int *displs, SENDTYPE *sendtype, typename RECVTYPE::PrimalType *&recvbufAdjoints, int recvbufSize, int recvcount, RECVTYPE *recvtype, int root, MPI_Comm comm)
Definition primalFunctions.hpp:201
void AMPI_Scatterv_d(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:11771
void AMPI_Recv_pri(typename DATATYPE::PrimalType *bufAdjoints, int bufSize, int count, DATATYPE *datatype, int src, int tag, MPI_Comm comm, MPI_Status *status, RecvAdjCall reverse_call)
Definition primalFunctions.hpp:110
void AMPI_Ireduce_global_p(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:9798
void AMPI_Gatherv_d(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:6201
void AMPI_Iscatter_fwd(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 forwardFunctions.hpp:191
int AMPI_File_close(MPI_File *fh)
Definition ampiFunctions.hpp:13006
MPI_Grequest_free_function AMPI_Grequest_free_function
Definition ampiDefinitions.h:869
void AMPI_Ibcast_wrap_d_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:8605
void AMPI_Bsend_b(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:108
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
int AMPI_Ibcast_wrap_finish(HandleBase *handle)
Definition ampiFunctions.hpp:8800
void AMPI_Iallreduce_global_fwd(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 forwardFunctions.hpp:380
void AMPI_Sendrecv_d(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:3522
int AMPI_T_pvar_session_create(MPI_T_pvar_session *session)
Definition ampiFunctions.hpp:13617
int AMPI_Group_union(MPI_Group group1, MPI_Group group2, MPI_Group *newgroup)
Definition ampiFunctions.hpp:12395
void AMPI_Alltoallv_d(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:5295
void AMPI_Send_p(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:3079
void AMPI_Reduce_global_d(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:11142
int(* ContinueFunction)(HandleBase *h)
Definition typeDefinitions.h:49
void AMPI_Iallreduce_global_p_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:7332
MpiTypeInterface * AMPI_Datatype
Definition ampiMisc.h:38
int AMPI_File_write_at_all_end(MPI_File fh, const void *buf, MPI_Status *status)
Definition ampiFunctions.hpp:13346
int AMPI_Type_get_extent(DATATYPE *datatype, MPI_Aint *lb, MPI_Aint *extent)
Definition ampiFunctions.hpp:12128
void AMPI_Isend_fwd(typename DATATYPE::AdjointType *bufAdjoints, int bufSize, int count, DATATYPE *datatype, int dest, int tag, MPI_Comm comm, AMPI_Request *request)
Definition forwardFunctions.hpp:54
void AMPI_Mrecv_p(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:2073
int AMPI_Test_cancelled(const MPI_Status *status, int *flag)
Definition ampiFunctions.hpp:12072
void AMPI_Iallreduce_global_d_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:7376
void AMPI_Ireduce_global_d_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:9871
void AMPI_Allgatherv_p(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:4403
void AMPI_Iallgather_b_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:6613
void AMPI_Alltoall_fwd(typename SENDTYPE::AdjointType *&sendbufAdjoints, int sendbufSize, int sendcount, SENDTYPE *sendtype, typename RECVTYPE::AdjointType *&recvbufAdjoints, int recvbufSize, int recvcount, RECVTYPE *recvtype, MPI_Comm comm)
Definition forwardFunctions.hpp:305
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
int AMPI_File_call_errhandler(MPI_File fh, int errorcode)
Definition ampiFunctions.hpp:12725
int AMPI_File_write_at_all_begin(MPI_File fh, MPI_Offset offset, const void *buf, int count, DATATYPE *datatype)
Definition ampiFunctions.hpp:13339
int AMPI_Type_get_envelope(DATATYPE *datatype, int *num_integers, int *num_addresses, int *num_datatypes, int *combiner)
Definition ampiFunctions.hpp:12120
int AMPI_Group_free(MPI_Group *group)
Definition ampiFunctions.hpp:12346
void AMPI_Ialltoall_b(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:7787
void AMPI_Iallgatherv_fwd(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 forwardFunctions.hpp:294
void AMPI_Gatherv_p(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:6163
void AMPI_Iallgatherv_d(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:6935
void AMPI_Imrecv_b_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:817
int AMPI_Cart_sub(MPI_Comm comm, const int *remain_dims, MPI_Comm *newcomm)
Definition ampiFunctions.hpp:12543
int AMPI_File_read_ordered_begin(MPI_File fh, void *buf, int count, DATATYPE *datatype)
Definition ampiFunctions.hpp:13232
void AMPI_Isend_d(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:1586
void AMPI_Allgatherv_fwd(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 forwardFunctions.hpp:283
int AMPI_File_get_info(MPI_File fh, MPI_Info *info_used)
Definition ampiFunctions.hpp:13042
int AMPI_File_iread_shared(MPI_File fh, void *buf, int count, DATATYPE *datatype, AMPI_Request *request)
Definition ampiFunctions.hpp:13111
int AMPI_Comm_accept(const char *port_name, MPI_Info info, int root, MPI_Comm comm, MPI_Comm *newcomm)
Definition ampiFunctions.hpp:12887
void AMPI_Gatherv_pri(typename SENDTYPE::PrimalType *&sendbufAdjoints, int sendbufSize, int sendcount, SENDTYPE *sendtype, typename RECVTYPE::PrimalType *&recvbufAdjoints, int *recvbufCounts, const int *recvbufDispls, const int *recvcounts, const int *displs, RECVTYPE *recvtype, int root, MPI_Comm comm)
Definition primalFunctions.hpp:241
int AMPI_T_category_get_num(int *num_cat)
Definition ampiFunctions.hpp:13502
void AMPI_Alltoall_b(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:5042
int AMPI_Recv_init_postEnd(HandleBase *handle)
Definition ampiFunctions.hpp:2618
MPI_Fint AMPI_Comm_c2f(MPI_Comm comm)
Definition ampiFunctions.hpp:13387
void AMPI_Issend_b_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:1891
void AMPI_Igatherv_pri(typename SENDTYPE::PrimalType *&sendbufAdjoints, int sendbufSize, int sendcount, SENDTYPE *sendtype, typename RECVTYPE::PrimalType *&recvbufAdjoints, int *recvbufCounts, const int *recvbufDispls, const int *recvcounts, const int *displs, RECVTYPE *recvtype, int root, MPI_Comm comm, AMPI_Request *request)
Definition primalFunctions.hpp:252
int AMPI_File_iread_at_all(MPI_File fh, MPI_Offset offset, void *buf, int count, DATATYPE *datatype, AMPI_Request *request)
Definition ampiFunctions.hpp:13103
void AMPI_Recv_p(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:2258
int AMPI_Send_init_preStart(HandleBase *handle)
Definition ampiFunctions.hpp:3279
void AMPI_Isend_p_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:1575
int AMPI_File_write_at_all(MPI_File fh, MPI_Offset offset, const void *buf, int count, DATATYPE *datatype, MPI_Status *status)
Definition ampiFunctions.hpp:13331
void AMPI_Allgather_fwd(typename SENDTYPE::AdjointType *&sendbufAdjoints, int sendbufSize, int sendcount, SENDTYPE *sendtype, typename RECVTYPE::AdjointType *&recvbufAdjoints, int recvbufSize, int recvcount, RECVTYPE *recvtype, MPI_Comm comm)
Definition forwardFunctions.hpp:263
int AMPI_File_write_ordered_begin(MPI_File fh, const void *buf, int count, DATATYPE *datatype)
Definition ampiFunctions.hpp:13360
void AMPI_Ssend_pri(typename DATATYPE::PrimalType *bufAdjoints, int bufSize, int count, DATATYPE *datatype, int dest, int tag, MPI_Comm comm)
Definition primalFunctions.hpp:78
int AMPI_Status_c2f(const MPI_Status *c_status, MPI_Fint *f_status)
Definition ampiFunctions.hpp:13447
void AMPI_Scatterv_fwd(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 forwardFunctions.hpp:201
int AMPI_Graphdims_get(MPI_Comm comm, int *nnodes, int *nedges)
Definition ampiFunctions.hpp:12623
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_Iallgatherv_b_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:7003
int AMPI_File_write_all(MPI_File fh, const void *buf, int count, DATATYPE *datatype, MPI_Status *status)
Definition ampiFunctions.hpp:13303
int AMPI_Comm_connect(const char *port_name, MPI_Info info, int root, MPI_Comm comm, MPI_Comm *newcomm)
Definition ampiFunctions.hpp:12894
void AMPI_Bcast_wrap_p(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:5583
int AMPI_Type_get_name(DATATYPE *datatype, char *type_name, int *resultlen)
Definition ampiFunctions.hpp:12442
void AMPI_Ibsend_b(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:303
int AMPI_T_cvar_read(MPI_T_cvar_handle handle, void *buf)
Definition ampiFunctions.hpp:13538
void AMPI_Irecv_b(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:1075
int AMPI_File_iwrite_at_all(MPI_File fh, MPI_Offset offset, const void *buf, int count, DATATYPE *datatype, AMPI_Request *request)
Definition ampiFunctions.hpp:13140
int AMPI_File_write_at(MPI_File fh, MPI_Offset offset, const void *buf, int count, DATATYPE *datatype, MPI_Status *status)
Definition ampiFunctions.hpp:13323
void AMPI_Igatherv_b_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:9468
void AMPI_Irecv_p_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:1031
int AMPI_T_pvar_get_index(const char *name, int var_class, int *pvar_index)
Definition ampiFunctions.hpp:13574
int AMPI_Ireduce_global(const typename DATATYPE::Type *sendbuf, typename DATATYPE::Type *recvbuf, int count, DATATYPE *datatype, AMPI_Op op, int root, MPI_Comm comm, AMPI_Request *request)
Definition ampiFunctions.hpp:9944
int AMPI_Intercomm_create(MPI_Comm local_comm, int local_leader, MPI_Comm peer_comm, int remote_leader, int tag, MPI_Comm *newintercomm)
Definition ampiFunctions.hpp:12401
int AMPI_Type_get_attr(DATATYPE *datatype, int type_keyval, void *attribute_val, int *flag)
Definition ampiFunctions.hpp:12435
void(* ReverseFunction)(HandleBase *h, AdjointInterface *a)
Definition typeDefinitions.h:46
int AMPI_Type_free_keyval(int *type_keyval)
Definition ampiFunctions.hpp:12428
int AMPI_Irsend(const typename DATATYPE::Type *buf, int count, DATATYPE *datatype, int dest, int tag, MPI_Comm comm, AMPI_Request *request)
Definition ampiFunctions.hpp:1384
void AMPI_Ialltoallv_fwd(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 forwardFunctions.hpp:337
int AMPI_Abort(MPI_Comm comm, int errorcode)
Definition ampiFunctions.hpp:12647
void AMPI_Scatter_p(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:11429
int AMPI_File_iwrite_at(MPI_File fh, MPI_Offset offset, const void *buf, int count, DATATYPE *datatype, AMPI_Request *request)
Definition ampiFunctions.hpp:13132
int AMPI_Ireduce_global_finish(HandleBase *handle)
Definition ampiFunctions.hpp:10096
void AMPI_Allgatherv_pri(typename SENDTYPE::PrimalType *&sendbufAdjoints, int sendbufSize, int sendcount, SENDTYPE *sendtype, typename RECVTYPE::PrimalType *&recvbufAdjoints, int *recvbufCounts, const int *recvbufDispls, const int *recvcounts, const int *displs, RECVTYPE *recvtype, MPI_Comm comm)
Definition primalFunctions.hpp:283
int AMPI_T_cvar_handle_alloc(int cvar_index, void *obj_handle, MPI_T_cvar_handle *handle, int *count)
Definition ampiFunctions.hpp:13526
int AMPI_Win_get_attr(MPI_Win win, int win_keyval, void *attribute_val, int *flag)
Definition ampiFunctions.hpp:12481
void AMPI_Allreduce_global_b(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:4760
int AMPI_Recv(typename DATATYPE::Type *buf, int count, DATATYPE *datatype, int source, int tag, MPI_Comm comm, MPI_Status *status, RecvAdjCall reverse_send=RecvAdjCall::Send)
Definition ampiFunctions.hpp:2322
int AMPI_Comm_get_info(MPI_Comm comm, MPI_Info *info_used)
Definition ampiFunctions.hpp:12244
int AMPI_Bsend_init_preStart(HandleBase *handle)
Definition ampiFunctions.hpp:533
int AMPI_Scatter(const typename SENDTYPE::Type *sendbuf, int sendcount, SENDTYPE *sendtype, typename RECVTYPE::Type *recvbuf, int recvcount, RECVTYPE *recvtype, int root, MPI_Comm comm)
Definition ampiFunctions.hpp:11525
void AMPI_Ialltoall_p_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:7732
int AMPI_Comm_create_group(MPI_Comm comm, MPI_Group group, int tag, MPI_Comm *newcomm)
Definition ampiFunctions.hpp:12195
MPI_File AMPI_File_f2c(MPI_Fint file)
Definition ampiFunctions.hpp:13417
int AMPI_File_read_ordered_end(MPI_File fh, void *buf, MPI_Status *status)
Definition ampiFunctions.hpp:13238
void AMPI_Reduce_global_p(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:11106
void AMPI_Iallreduce_global_b(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:7393
void AMPI_Send_pri(typename DATATYPE::PrimalType *bufAdjoints, int bufSize, int count, DATATYPE *datatype, int dest, int tag, MPI_Comm comm)
Definition primalFunctions.hpp:46
void AMPI_Irsend_b_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:1369
int AMPI_Iallgatherv_finish(HandleBase *handle)
Definition ampiFunctions.hpp:7177
int AMPI_Error_string(int errorcode, char *string, int *resultlen)
Definition ampiFunctions.hpp:12719
int AMPI_Comm_dup_with_info(MPI_Comm comm, MPI_Info info, MPI_Comm *newcomm)
Definition ampiFunctions.hpp:12220
int AMPI_T_cvar_handle_free(MPI_T_cvar_handle *handle)
Definition ampiFunctions.hpp:13532
int AMPI_Comm_create_errhandler(AMPI_Comm_errhandler_function *comm_errhandler_fn, MPI_Errhandler *errhandler)
Definition ampiFunctions.hpp:12683
int AMPI_File_seek(MPI_File fh, MPI_Offset offset, int whence)
Definition ampiFunctions.hpp:13251
int AMPI_Type_get_contents(DATATYPE *datatype, int max_integers, int max_addresses, int max_datatypes, int *array_of_integers, MPI_Aint *array_of_addresses, AMPI_Datatype *array_of_datatypes)
Definition ampiFunctions.hpp:12111
int AMPI_Cart_get(MPI_Comm comm, int maxdims, int *dims, int *periods, int *coords)
Definition ampiFunctions.hpp:12518
void AMPI_Ialltoallv_d(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:8143
int AMPI_Send(const typename DATATYPE::Type *buf, int count, DATATYPE *datatype, int dest, int tag, MPI_Comm comm)
Definition ampiFunctions.hpp:3132
void AMPI_Issend_d(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:1847
void AMPI_Ireduce_global_p_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:9823
int AMPI_Group_compare(MPI_Group group1, MPI_Group group2, int *result)
Definition ampiFunctions.hpp:12328
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
int AMPI_Sendrecv(const typename SENDTYPE::Type *sendbuf, int sendcount, SENDTYPE *sendtype, int dest, int sendtag, typename RECVTYPE::Type *recvbuf, int recvcount, RECVTYPE *recvtype, int source, int recvtag, MPI_Comm comm, MPI_Status *status)
Definition ampiFunctions.hpp:3579
void AMPI_Ialltoall_p(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:7710
void AMPI_Gather_pri(typename SENDTYPE::PrimalType *&sendbufAdjoints, int sendbufSize, int sendcount, SENDTYPE *sendtype, typename RECVTYPE::PrimalType *&recvbufAdjoints, int recvbufSize, int recvcount, RECVTYPE *recvtype, int root, MPI_Comm comm)
Definition primalFunctions.hpp:221
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
int AMPI_T_category_changed(int *stamp)
Definition ampiFunctions.hpp:13471
void AMPI_Isend_d_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:1604
void AMPI_Ialltoallv_pri(typename SENDTYPE::PrimalType *&sendbufAdjoints, int *sendbufCounts, const int *sendbufDispls, const int *sendcounts, const int *sdispls, SENDTYPE *sendtype, typename RECVTYPE::PrimalType *&recvbufAdjoints, int *recvbufCounts, const int *recvbufDispls, const int *recvcounts, const int *rdispls, RECVTYPE *recvtype, MPI_Comm comm, AMPI_Request *request)
Definition primalFunctions.hpp:337
void AMPI_Allgather_d(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:4164
int AMPI_Comm_rank(MPI_Comm comm, int *rank)
Definition ampiFunctions.hpp:12268
int AMPI_Info_get_nkeys(MPI_Info info, int *nkeys)
Definition ampiFunctions.hpp:12857
int AMPI_Cancel(AMPI_Request *request)
Definition ampiFunctions.hpp:12041
void AMPI_Ialltoallv_b(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:8187
void AMPI_Irecv_d_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:1062
void AMPI_Ialltoall_pri(typename SENDTYPE::PrimalType *&sendbufAdjoints, int sendbufSize, int sendcount, SENDTYPE *sendtype, typename RECVTYPE::PrimalType *&recvbufAdjoints, int recvbufSize, int recvcount, RECVTYPE *recvtype, MPI_Comm comm, AMPI_Request *request)
Definition primalFunctions.hpp:315
int AMPI_File_read_at_all_end(MPI_File fh, void *buf, MPI_Status *status)
Definition ampiFunctions.hpp:13218
int AMPI_T_cvar_write(MPI_T_cvar_handle handle, const void *buf)
Definition ampiFunctions.hpp:13544
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
MPI_Comm_delete_attr_function AMPI_Comm_delete_attr_function
Definition ampiDefinitions.h:833
void AMPI_Sendrecv_fwd(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 forwardFunctions.hpp:146
void AMPI_Ireduce_global_b_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:9920
void AMPI_Reduce_global_fwd(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 forwardFunctions.hpp:349
int AMPI_File_read_all_end(MPI_File fh, void *buf, MPI_Status *status)
Definition ampiFunctions.hpp:13189
MPI_Comm_copy_attr_function AMPI_Comm_copy_attr_function
Definition ampiDefinitions.h:830
void AMPI_Ibsend_fwd(typename DATATYPE::AdjointType *bufAdjoints, int bufSize, int count, DATATYPE *datatype, int dest, int tag, MPI_Comm comm, AMPI_Request *request)
Definition forwardFunctions.hpp:70
int AMPI_T_pvar_write(MPI_T_pvar_session session, MPI_T_pvar_handle handle, const void *buf)
Definition ampiFunctions.hpp:13641
int AMPI_Error_class(int errorcode, int *errorclass)
Definition ampiFunctions.hpp:12713
void AMPI_Ibsend_d_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:292
int AMPI_File_write_ordered_end(MPI_File fh, const void *buf, MPI_Status *status)
Definition ampiFunctions.hpp:13366
int AMPI_Keyval_create(AMPI_Copy_function *copy_fn, AMPI_Delete_function *delete_fn, int *keyval, void *extra_state)
Definition ampiFunctions.hpp:13671
void AMPI_Reduce_global_pri(typename DATATYPE::PrimalType *&sendbufAdjoints, int sendbufSize, typename DATATYPE::PrimalType *&recvbufAdjoints, int recvbufSize, int count, DATATYPE *datatype, AMPI_Op op, int root, MPI_Comm comm)
Definition primalFunctions.hpp:349
Definition ampiFunctions.hpp:4089
int sendbufTotalSize
Definition ampiFunctions.hpp:4090
int recvbufCountVec
Definition ampiFunctions.hpp:4104
RECVTYPE::IndexType * recvbufIndices
Definition ampiFunctions.hpp:4099
RECVTYPE::PrimalType * recvbufPrimals
Definition ampiFunctions.hpp:4100
SENDTYPE::PrimalType * sendbufPrimals
Definition ampiFunctions.hpp:4092
SENDTYPE::IndexType * sendbufIndices
Definition ampiFunctions.hpp:4091
int sendcount
Definition ampiFunctions.hpp:4096
void * recvbufAdjoints
Definition ampiFunctions.hpp:4102
int recvbufTotalSize
Definition ampiFunctions.hpp:4098
void * sendbufAdjoints
Definition ampiFunctions.hpp:4093
int recvbufCount
Definition ampiFunctions.hpp:4103
int recvcount
Definition ampiFunctions.hpp:4105
RECVTYPE::PrimalType * recvbufOldPrimals
Definition ampiFunctions.hpp:4101
~AMPI_Allgather_AdjointHandle()
Definition ampiFunctions.hpp:4109
int sendbufCountVec
Definition ampiFunctions.hpp:4095
int sendbufCount
Definition ampiFunctions.hpp:4094
RECVTYPE * recvtype
Definition ampiFunctions.hpp:4106
MPI_Comm comm
Definition ampiFunctions.hpp:4107
SENDTYPE * sendtype
Definition ampiFunctions.hpp:4097
Definition ampiFunctions.hpp:4351
int * recvbufCount
Definition ampiFunctions.hpp:4365
SENDTYPE::PrimalType * sendbufPrimals
Definition ampiFunctions.hpp:4354
int sendbufTotalSize
Definition ampiFunctions.hpp:4352
void * sendbufAdjoints
Definition ampiFunctions.hpp:4355
SENDTYPE::IndexType * sendbufIndices
Definition ampiFunctions.hpp:4353
MPI_Comm comm
Definition ampiFunctions.hpp:4371
void * recvbufAdjoints
Definition ampiFunctions.hpp:4364
int * recvbufDisplsVec
Definition ampiFunctions.hpp:4367
int * recvbufCountVec
Definition ampiFunctions.hpp:4366
int sendbufCountVec
Definition ampiFunctions.hpp:4357
SENDTYPE * sendtype
Definition ampiFunctions.hpp:4359
int sendcount
Definition ampiFunctions.hpp:4358
int recvbufTotalSize
Definition ampiFunctions.hpp:4360
RECVTYPE::IndexType * recvbufIndices
Definition ampiFunctions.hpp:4361
RECVTYPE * recvtype
Definition ampiFunctions.hpp:4370
~AMPI_Allgatherv_AdjointHandle()
Definition ampiFunctions.hpp:4373
int sendbufCount
Definition ampiFunctions.hpp:4356
const int * recvcounts
Definition ampiFunctions.hpp:4368
RECVTYPE::PrimalType * recvbufOldPrimals
Definition ampiFunctions.hpp:4363
const int * displs
Definition ampiFunctions.hpp:4369
RECVTYPE::PrimalType * recvbufPrimals
Definition ampiFunctions.hpp:4362
Definition ampiFunctions.hpp:4658
~AMPI_Allreduce_global_AdjointHandle()
Definition ampiFunctions.hpp:4677
void * sendbufAdjoints
Definition ampiFunctions.hpp:4662
void * recvbufAdjoints
Definition ampiFunctions.hpp:4669
DATATYPE::PrimalType * recvbufPrimals
Definition ampiFunctions.hpp:4667
DATATYPE * datatype
Definition ampiFunctions.hpp:4673
DATATYPE::IndexType * recvbufIndices
Definition ampiFunctions.hpp:4666
DATATYPE::IndexType * sendbufIndices
Definition ampiFunctions.hpp:4660
int count
Definition ampiFunctions.hpp:4672
int sendbufCountVec
Definition ampiFunctions.hpp:4664
int recvbufCountVec
Definition ampiFunctions.hpp:4671
MPI_Comm comm
Definition ampiFunctions.hpp:4675
int sendbufTotalSize
Definition ampiFunctions.hpp:4659
int sendbufCount
Definition ampiFunctions.hpp:4663
int recvbufTotalSize
Definition ampiFunctions.hpp:4665
DATATYPE::PrimalType * sendbufPrimals
Definition ampiFunctions.hpp:4661
DATATYPE::PrimalType * recvbufOldPrimals
Definition ampiFunctions.hpp:4668
AMPI_Op op
Definition ampiFunctions.hpp:4674
int recvbufCount
Definition ampiFunctions.hpp:4670
Definition ampiFunctions.hpp:4941
void * sendbufAdjoints
Definition ampiFunctions.hpp:4945
RECVTYPE::IndexType * recvbufIndices
Definition ampiFunctions.hpp:4951
int sendbufCount
Definition ampiFunctions.hpp:4946
int sendbufTotalSize
Definition ampiFunctions.hpp:4942
int recvbufCountVec
Definition ampiFunctions.hpp:4956
int sendcount
Definition ampiFunctions.hpp:4948
SENDTYPE * sendtype
Definition ampiFunctions.hpp:4949
int recvcount
Definition ampiFunctions.hpp:4957
RECVTYPE::PrimalType * recvbufPrimals
Definition ampiFunctions.hpp:4952
int recvbufTotalSize
Definition ampiFunctions.hpp:4950
MPI_Comm comm
Definition ampiFunctions.hpp:4959
RECVTYPE * recvtype
Definition ampiFunctions.hpp:4958
int sendbufCountVec
Definition ampiFunctions.hpp:4947
RECVTYPE::PrimalType * recvbufOldPrimals
Definition ampiFunctions.hpp:4953
int recvbufCount
Definition ampiFunctions.hpp:4955
SENDTYPE::PrimalType * sendbufPrimals
Definition ampiFunctions.hpp:4944
~AMPI_Alltoall_AdjointHandle()
Definition ampiFunctions.hpp:4961
void * recvbufAdjoints
Definition ampiFunctions.hpp:4954
SENDTYPE::IndexType * sendbufIndices
Definition ampiFunctions.hpp:4943
Definition ampiFunctions.hpp:5201
const int * rdispls
Definition ampiFunctions.hpp:5221
int * recvbufCount
Definition ampiFunctions.hpp:5217
int * sendbufCount
Definition ampiFunctions.hpp:5206
MPI_Comm comm
Definition ampiFunctions.hpp:5223
~AMPI_Alltoallv_AdjointHandle()
Definition ampiFunctions.hpp:5225
void * recvbufAdjoints
Definition ampiFunctions.hpp:5216
RECVTYPE::IndexType * recvbufIndices
Definition ampiFunctions.hpp:5213
RECVTYPE::PrimalType * recvbufPrimals
Definition ampiFunctions.hpp:5214
SENDTYPE * sendtype
Definition ampiFunctions.hpp:5211
int * recvbufCountVec
Definition ampiFunctions.hpp:5218
const int * sdispls
Definition ampiFunctions.hpp:5210
int * sendbufDisplsVec
Definition ampiFunctions.hpp:5208
SENDTYPE::PrimalType * sendbufPrimals
Definition ampiFunctions.hpp:5204
RECVTYPE::PrimalType * recvbufOldPrimals
Definition ampiFunctions.hpp:5215
const int * sendcounts
Definition ampiFunctions.hpp:5209
void * sendbufAdjoints
Definition ampiFunctions.hpp:5205
int * recvbufDisplsVec
Definition ampiFunctions.hpp:5219
RECVTYPE * recvtype
Definition ampiFunctions.hpp:5222
SENDTYPE::IndexType * sendbufIndices
Definition ampiFunctions.hpp:5203
const int * recvcounts
Definition ampiFunctions.hpp:5220
int sendbufTotalSize
Definition ampiFunctions.hpp:5202
int * sendbufCountVec
Definition ampiFunctions.hpp:5207
int recvbufTotalSize
Definition ampiFunctions.hpp:5212
Definition ampiFunctions.hpp:5538
int bufferRecvCountVec
Definition ampiFunctions.hpp:5551
int bufferSendTotalSize
Definition ampiFunctions.hpp:5539
int bufferRecvCount
Definition ampiFunctions.hpp:5550
DATATYPE::PrimalType * bufferSendPrimals
Definition ampiFunctions.hpp:5541
void * bufferRecvAdjoints
Definition ampiFunctions.hpp:5549
int bufferSendCount
Definition ampiFunctions.hpp:5543
int bufferRecvTotalSize
Definition ampiFunctions.hpp:5545
int root
Definition ampiFunctions.hpp:5554
MPI_Comm comm
Definition ampiFunctions.hpp:5555
DATATYPE::PrimalType * bufferRecvPrimals
Definition ampiFunctions.hpp:5547
int count
Definition ampiFunctions.hpp:5552
void * bufferSendAdjoints
Definition ampiFunctions.hpp:5542
DATATYPE * datatype
Definition ampiFunctions.hpp:5553
int bufferSendCountVec
Definition ampiFunctions.hpp:5544
DATATYPE::PrimalType * bufferRecvOldPrimals
Definition ampiFunctions.hpp:5548
~AMPI_Bcast_wrap_AdjointHandle()
Definition ampiFunctions.hpp:5557
DATATYPE::IndexType * bufferRecvIndices
Definition ampiFunctions.hpp:5546
DATATYPE::IndexType * bufferSendIndices
Definition ampiFunctions.hpp:5540
Definition ampiFunctions.hpp:45
int bufCountVec
Definition ampiFunctions.hpp:51
DATATYPE::IndexType * bufIndices
Definition ampiFunctions.hpp:47
int bufCount
Definition ampiFunctions.hpp:50
int count
Definition ampiFunctions.hpp:52
int tag
Definition ampiFunctions.hpp:55
int bufTotalSize
Definition ampiFunctions.hpp:46
MPI_Comm comm
Definition ampiFunctions.hpp:56
DATATYPE::PrimalType * bufPrimals
Definition ampiFunctions.hpp:48
DATATYPE * datatype
Definition ampiFunctions.hpp:53
void * bufAdjoints
Definition ampiFunctions.hpp:49
int dest
Definition ampiFunctions.hpp:54
~AMPI_Bsend_AdjointHandle()
Definition ampiFunctions.hpp:58
Definition ampiFunctions.hpp:469
AMPI_Request * request
Definition ampiFunctions.hpp:477
DATATYPE::ModifiedType * bufMod
Definition ampiFunctions.hpp:471
int count
Definition ampiFunctions.hpp:472
const DATATYPE::Type * buf
Definition ampiFunctions.hpp:470
int tag
Definition ampiFunctions.hpp:475
DATATYPE * datatype
Definition ampiFunctions.hpp:473
int dest
Definition ampiFunctions.hpp:474
MPI_Comm comm
Definition ampiFunctions.hpp:476
Definition ampiFunctions.hpp:5815
int sendbufCount
Definition ampiFunctions.hpp:5820
SENDTYPE * sendtype
Definition ampiFunctions.hpp:5823
RECVTYPE * recvtype
Definition ampiFunctions.hpp:5832
SENDTYPE::IndexType * sendbufIndices
Definition ampiFunctions.hpp:5817
int sendcount
Definition ampiFunctions.hpp:5822
int sendbufTotalSize
Definition ampiFunctions.hpp:5816
int recvbufCountVec
Definition ampiFunctions.hpp:5830
RECVTYPE::PrimalType * recvbufPrimals
Definition ampiFunctions.hpp:5826
int recvcount
Definition ampiFunctions.hpp:5831
MPI_Comm comm
Definition ampiFunctions.hpp:5834
int sendbufCountVec
Definition ampiFunctions.hpp:5821
int root
Definition ampiFunctions.hpp:5833
int recvbufCount
Definition ampiFunctions.hpp:5829
RECVTYPE::IndexType * recvbufIndices
Definition ampiFunctions.hpp:5825
int recvbufTotalSize
Definition ampiFunctions.hpp:5824
~AMPI_Gather_AdjointHandle()
Definition ampiFunctions.hpp:5836
void * sendbufAdjoints
Definition ampiFunctions.hpp:5819
RECVTYPE::PrimalType * recvbufOldPrimals
Definition ampiFunctions.hpp:5827
SENDTYPE::PrimalType * sendbufPrimals
Definition ampiFunctions.hpp:5818
void * recvbufAdjoints
Definition ampiFunctions.hpp:5828
Definition ampiFunctions.hpp:6110
SENDTYPE * sendtype
Definition ampiFunctions.hpp:6118
int sendcount
Definition ampiFunctions.hpp:6117
RECVTYPE::IndexType * recvbufIndices
Definition ampiFunctions.hpp:6120
const int * recvcounts
Definition ampiFunctions.hpp:6127
RECVTYPE * recvtype
Definition ampiFunctions.hpp:6129
int sendbufCountVec
Definition ampiFunctions.hpp:6116
const int * displs
Definition ampiFunctions.hpp:6128
int root
Definition ampiFunctions.hpp:6130
int * recvbufCountVec
Definition ampiFunctions.hpp:6125
~AMPI_Gatherv_AdjointHandle()
Definition ampiFunctions.hpp:6133
void * recvbufAdjoints
Definition ampiFunctions.hpp:6123
void * sendbufAdjoints
Definition ampiFunctions.hpp:6114
int recvbufTotalSize
Definition ampiFunctions.hpp:6119
int * recvbufCount
Definition ampiFunctions.hpp:6124
RECVTYPE::PrimalType * recvbufOldPrimals
Definition ampiFunctions.hpp:6122
int sendbufCount
Definition ampiFunctions.hpp:6115
SENDTYPE::PrimalType * sendbufPrimals
Definition ampiFunctions.hpp:6113
SENDTYPE::IndexType * sendbufIndices
Definition ampiFunctions.hpp:6112
int * recvbufDisplsVec
Definition ampiFunctions.hpp:6126
int sendbufTotalSize
Definition ampiFunctions.hpp:6111
MPI_Comm comm
Definition ampiFunctions.hpp:6131
RECVTYPE::PrimalType * recvbufPrimals
Definition ampiFunctions.hpp:6121
Definition ampiFunctions.hpp:6452
int recvbufCount
Definition ampiFunctions.hpp:6466
RECVTYPE::IndexType * recvbufIndices
Definition ampiFunctions.hpp:6462
int sendcount
Definition ampiFunctions.hpp:6459
RECVTYPE::PrimalType * recvbufPrimals
Definition ampiFunctions.hpp:6463
int recvcount
Definition ampiFunctions.hpp:6468
int recvbufTotalSize
Definition ampiFunctions.hpp:6461
int recvbufCountVec
Definition ampiFunctions.hpp:6467
RECVTYPE * recvtype
Definition ampiFunctions.hpp:6469
void * sendbufAdjoints
Definition ampiFunctions.hpp:6456
SENDTYPE * sendtype
Definition ampiFunctions.hpp:6460
SENDTYPE::IndexType * sendbufIndices
Definition ampiFunctions.hpp:6454
int sendbufTotalSize
Definition ampiFunctions.hpp:6453
SENDTYPE::PrimalType * sendbufPrimals
Definition ampiFunctions.hpp:6455
int sendbufCount
Definition ampiFunctions.hpp:6457
~AMPI_Iallgather_AdjointHandle()
Definition ampiFunctions.hpp:6472
RECVTYPE::PrimalType * recvbufOldPrimals
Definition ampiFunctions.hpp:6464
int sendbufCountVec
Definition ampiFunctions.hpp:6458
void * recvbufAdjoints
Definition ampiFunctions.hpp:6465
MPI_Comm comm
Definition ampiFunctions.hpp:6470
Definition ampiFunctions.hpp:6497
SENDTYPE::ModifiedType * sendbufMod
Definition ampiFunctions.hpp:6499
SENDTYPE * sendtype
Definition ampiFunctions.hpp:6501
MPI_Comm comm
Definition ampiFunctions.hpp:6506
int sendcount
Definition ampiFunctions.hpp:6500
RECVTYPE * recvtype
Definition ampiFunctions.hpp:6505
int recvcount
Definition ampiFunctions.hpp:6504
const SENDTYPE::Type * sendbuf
Definition ampiFunctions.hpp:6498
RECVTYPE::ModifiedType * recvbufMod
Definition ampiFunctions.hpp:6503
RECVTYPE::Type * recvbuf
Definition ampiFunctions.hpp:6502
AMPI_Request * request
Definition ampiFunctions.hpp:6507
Definition ampiFunctions.hpp:6824
SENDTYPE::PrimalType * sendbufPrimals
Definition ampiFunctions.hpp:6827
int * recvbufCount
Definition ampiFunctions.hpp:6838
MPI_Comm comm
Definition ampiFunctions.hpp:6844
RECVTYPE::PrimalType * recvbufOldPrimals
Definition ampiFunctions.hpp:6836
int * recvbufDisplsVec
Definition ampiFunctions.hpp:6840
const int * displs
Definition ampiFunctions.hpp:6842
int sendcount
Definition ampiFunctions.hpp:6831
void * sendbufAdjoints
Definition ampiFunctions.hpp:6828
int sendbufCountVec
Definition ampiFunctions.hpp:6830
SENDTYPE::IndexType * sendbufIndices
Definition ampiFunctions.hpp:6826
~AMPI_Iallgatherv_AdjointHandle()
Definition ampiFunctions.hpp:6846
SENDTYPE * sendtype
Definition ampiFunctions.hpp:6832
int sendbufTotalSize
Definition ampiFunctions.hpp:6825
void * recvbufAdjoints
Definition ampiFunctions.hpp:6837
int * recvbufCountVec
Definition ampiFunctions.hpp:6839
RECVTYPE * recvtype
Definition ampiFunctions.hpp:6843
RECVTYPE::PrimalType * recvbufPrimals
Definition ampiFunctions.hpp:6835
int sendbufCount
Definition ampiFunctions.hpp:6829
int recvbufTotalSize
Definition ampiFunctions.hpp:6833
const int * recvcounts
Definition ampiFunctions.hpp:6841
RECVTYPE::IndexType * recvbufIndices
Definition ampiFunctions.hpp:6834
Definition ampiFunctions.hpp:6875
SENDTYPE::ModifiedType * sendbufMod
Definition ampiFunctions.hpp:6877
MPI_Comm comm
Definition ampiFunctions.hpp:6886
RECVTYPE * recvtype
Definition ampiFunctions.hpp:6885
SENDTYPE * sendtype
Definition ampiFunctions.hpp:6879
const SENDTYPE::Type * sendbuf
Definition ampiFunctions.hpp:6876
RECVTYPE::ModifiedType * recvbufMod
Definition ampiFunctions.hpp:6881
const int * recvcounts
Definition ampiFunctions.hpp:6883
int sendcount
Definition ampiFunctions.hpp:6878
AMPI_Request * request
Definition ampiFunctions.hpp:6887
RECVTYPE::Type * recvbuf
Definition ampiFunctions.hpp:6880
const int * displsMod
Definition ampiFunctions.hpp:6882
const int * displs
Definition ampiFunctions.hpp:6884
Definition ampiFunctions.hpp:7251
MPI_Comm comm
Definition ampiFunctions.hpp:7268
void * sendbufAdjoints
Definition ampiFunctions.hpp:7255
int recvbufCountVec
Definition ampiFunctions.hpp:7264
int count
Definition ampiFunctions.hpp:7265
~AMPI_Iallreduce_global_AdjointHandle()
Definition ampiFunctions.hpp:7270
DATATYPE::PrimalType * recvbufPrimals
Definition ampiFunctions.hpp:7260
int recvbufTotalSize
Definition ampiFunctions.hpp:7258
DATATYPE::PrimalType * sendbufPrimals
Definition ampiFunctions.hpp:7254
void * recvbufAdjoints
Definition ampiFunctions.hpp:7262
int recvbufCount
Definition ampiFunctions.hpp:7263
DATATYPE::IndexType * sendbufIndices
Definition ampiFunctions.hpp:7253
DATATYPE::PrimalType * recvbufOldPrimals
Definition ampiFunctions.hpp:7261
DATATYPE * datatype
Definition ampiFunctions.hpp:7266
int sendbufTotalSize
Definition ampiFunctions.hpp:7252
int sendbufCountVec
Definition ampiFunctions.hpp:7257
int sendbufCount
Definition ampiFunctions.hpp:7256
AMPI_Op op
Definition ampiFunctions.hpp:7267
DATATYPE::IndexType * recvbufIndices
Definition ampiFunctions.hpp:7259
Definition ampiFunctions.hpp:7295
AMPI_Op op
Definition ampiFunctions.hpp:7302
DATATYPE * datatype
Definition ampiFunctions.hpp:7301
int count
Definition ampiFunctions.hpp:7300
DATATYPE::Type * recvbuf
Definition ampiFunctions.hpp:7298
DATATYPE::ModifiedType * recvbufMod
Definition ampiFunctions.hpp:7299
AMPI_Request * request
Definition ampiFunctions.hpp:7304
const DATATYPE::Type * sendbuf
Definition ampiFunctions.hpp:7296
MPI_Comm comm
Definition ampiFunctions.hpp:7303
DATATYPE::ModifiedType * sendbufMod
Definition ampiFunctions.hpp:7297
Definition ampiFunctions.hpp:7651
RECVTYPE * recvtype
Definition ampiFunctions.hpp:7668
int sendcount
Definition ampiFunctions.hpp:7658
RECVTYPE::IndexType * recvbufIndices
Definition ampiFunctions.hpp:7661
int recvcount
Definition ampiFunctions.hpp:7667
RECVTYPE::PrimalType * recvbufOldPrimals
Definition ampiFunctions.hpp:7663
int recvbufTotalSize
Definition ampiFunctions.hpp:7660
int sendbufTotalSize
Definition ampiFunctions.hpp:7652
RECVTYPE::PrimalType * recvbufPrimals
Definition ampiFunctions.hpp:7662
MPI_Comm comm
Definition ampiFunctions.hpp:7669
SENDTYPE::PrimalType * sendbufPrimals
Definition ampiFunctions.hpp:7654
~AMPI_Ialltoall_AdjointHandle()
Definition ampiFunctions.hpp:7671
int sendbufCountVec
Definition ampiFunctions.hpp:7657
void * sendbufAdjoints
Definition ampiFunctions.hpp:7655
SENDTYPE * sendtype
Definition ampiFunctions.hpp:7659
void * recvbufAdjoints
Definition ampiFunctions.hpp:7664
int sendbufCount
Definition ampiFunctions.hpp:7656
int recvbufCount
Definition ampiFunctions.hpp:7665
int recvbufCountVec
Definition ampiFunctions.hpp:7666
SENDTYPE::IndexType * sendbufIndices
Definition ampiFunctions.hpp:7653
Definition ampiFunctions.hpp:7696
MPI_Comm comm
Definition ampiFunctions.hpp:7705
RECVTYPE::ModifiedType * recvbufMod
Definition ampiFunctions.hpp:7702
const SENDTYPE::Type * sendbuf
Definition ampiFunctions.hpp:7697
RECVTYPE::Type * recvbuf
Definition ampiFunctions.hpp:7701
int sendcount
Definition ampiFunctions.hpp:7699
SENDTYPE::ModifiedType * sendbufMod
Definition ampiFunctions.hpp:7698
AMPI_Request * request
Definition ampiFunctions.hpp:7706
RECVTYPE * recvtype
Definition ampiFunctions.hpp:7704
int recvcount
Definition ampiFunctions.hpp:7703
SENDTYPE * sendtype
Definition ampiFunctions.hpp:7700
Definition ampiFunctions.hpp:8021
int * sendbufCountVec
Definition ampiFunctions.hpp:8027
SENDTYPE * sendtype
Definition ampiFunctions.hpp:8031
SENDTYPE::IndexType * sendbufIndices
Definition ampiFunctions.hpp:8023
const int * sdispls
Definition ampiFunctions.hpp:8030
RECVTYPE::PrimalType * recvbufPrimals
Definition ampiFunctions.hpp:8034
int * recvbufCountVec
Definition ampiFunctions.hpp:8038
~AMPI_Ialltoallv_AdjointHandle()
Definition ampiFunctions.hpp:8045
const int * recvcounts
Definition ampiFunctions.hpp:8040
MPI_Comm comm
Definition ampiFunctions.hpp:8043
int * recvbufDisplsVec
Definition ampiFunctions.hpp:8039
void * recvbufAdjoints
Definition ampiFunctions.hpp:8036
int sendbufTotalSize
Definition ampiFunctions.hpp:8022
RECVTYPE * recvtype
Definition ampiFunctions.hpp:8042
const int * sendcounts
Definition ampiFunctions.hpp:8029
int * sendbufDisplsVec
Definition ampiFunctions.hpp:8028
SENDTYPE::PrimalType * sendbufPrimals
Definition ampiFunctions.hpp:8024
RECVTYPE::PrimalType * recvbufOldPrimals
Definition ampiFunctions.hpp:8035
int recvbufTotalSize
Definition ampiFunctions.hpp:8032
int * sendbufCount
Definition ampiFunctions.hpp:8026
int * recvbufCount
Definition ampiFunctions.hpp:8037
RECVTYPE::IndexType * recvbufIndices
Definition ampiFunctions.hpp:8033
void * sendbufAdjoints
Definition ampiFunctions.hpp:8025
const int * rdispls
Definition ampiFunctions.hpp:8041
Definition ampiFunctions.hpp:8078
RECVTYPE::ModifiedType * recvbufMod
Definition ampiFunctions.hpp:8086
const int * rdisplsMod
Definition ampiFunctions.hpp:8087
const int * rdispls
Definition ampiFunctions.hpp:8089
RECVTYPE::Type * recvbuf
Definition ampiFunctions.hpp:8085
AMPI_Request * request
Definition ampiFunctions.hpp:8092
RECVTYPE * recvtype
Definition ampiFunctions.hpp:8090
SENDTYPE * sendtype
Definition ampiFunctions.hpp:8084
const int * sendcounts
Definition ampiFunctions.hpp:8082
const int * sdisplsMod
Definition ampiFunctions.hpp:8081
SENDTYPE::ModifiedType * sendbufMod
Definition ampiFunctions.hpp:8080
const int * sdispls
Definition ampiFunctions.hpp:8083
const SENDTYPE::Type * sendbuf
Definition ampiFunctions.hpp:8079
const int * recvcounts
Definition ampiFunctions.hpp:8088
MPI_Comm comm
Definition ampiFunctions.hpp:8091
Definition ampiFunctions.hpp:8483
int bufferSendTotalSize
Definition ampiFunctions.hpp:8484
DATATYPE::PrimalType * bufferRecvPrimals
Definition ampiFunctions.hpp:8492
~AMPI_Ibcast_wrap_AdjointHandle()
Definition ampiFunctions.hpp:8502
DATATYPE::PrimalType * bufferSendPrimals
Definition ampiFunctions.hpp:8486
MPI_Comm comm
Definition ampiFunctions.hpp:8500
int bufferSendCountVec
Definition ampiFunctions.hpp:8489
int bufferSendCount
Definition ampiFunctions.hpp:8488
int count
Definition ampiFunctions.hpp:8497
int bufferRecvTotalSize
Definition ampiFunctions.hpp:8490
DATATYPE::IndexType * bufferSendIndices
Definition ampiFunctions.hpp:8485
int root
Definition ampiFunctions.hpp:8499
void * bufferRecvAdjoints
Definition ampiFunctions.hpp:8494
DATATYPE::PrimalType * bufferRecvOldPrimals
Definition ampiFunctions.hpp:8493
DATATYPE * datatype
Definition ampiFunctions.hpp:8498
int bufferRecvCountVec
Definition ampiFunctions.hpp:8496
void * bufferSendAdjoints
Definition ampiFunctions.hpp:8487
DATATYPE::IndexType * bufferRecvIndices
Definition ampiFunctions.hpp:8491
int bufferRecvCount
Definition ampiFunctions.hpp:8495
Definition ampiFunctions.hpp:8527
DATATYPE::Type * bufferRecv
Definition ampiFunctions.hpp:8530
AMPI_Request * request
Definition ampiFunctions.hpp:8536
DATATYPE * datatype
Definition ampiFunctions.hpp:8533
int root
Definition ampiFunctions.hpp:8534
DATATYPE::ModifiedType * bufferSendMod
Definition ampiFunctions.hpp:8529
MPI_Comm comm
Definition ampiFunctions.hpp:8535
DATATYPE::ModifiedType * bufferRecvMod
Definition ampiFunctions.hpp:8531
DATATYPE::Type * bufferSend
Definition ampiFunctions.hpp:8528
int count
Definition ampiFunctions.hpp:8532
Definition ampiFunctions.hpp:207
int dest
Definition ampiFunctions.hpp:216
int bufCount
Definition ampiFunctions.hpp:212
int count
Definition ampiFunctions.hpp:214
DATATYPE::PrimalType * bufPrimals
Definition ampiFunctions.hpp:210
DATATYPE::IndexType * bufIndices
Definition ampiFunctions.hpp:209
int tag
Definition ampiFunctions.hpp:217
~AMPI_Ibsend_AdjointHandle()
Definition ampiFunctions.hpp:220
DATATYPE * datatype
Definition ampiFunctions.hpp:215
void * bufAdjoints
Definition ampiFunctions.hpp:211
MPI_Comm comm
Definition ampiFunctions.hpp:218
int bufTotalSize
Definition ampiFunctions.hpp:208
int bufCountVec
Definition ampiFunctions.hpp:213
Definition ampiFunctions.hpp:233
const DATATYPE::Type * buf
Definition ampiFunctions.hpp:234
int count
Definition ampiFunctions.hpp:236
DATATYPE::ModifiedType * bufMod
Definition ampiFunctions.hpp:235
MPI_Comm comm
Definition ampiFunctions.hpp:240
AMPI_Request * request
Definition ampiFunctions.hpp:241
int dest
Definition ampiFunctions.hpp:238
int tag
Definition ampiFunctions.hpp:239
DATATYPE * datatype
Definition ampiFunctions.hpp:237
Definition ampiFunctions.hpp:8862
SENDTYPE * sendtype
Definition ampiFunctions.hpp:8870
int sendbufTotalSize
Definition ampiFunctions.hpp:8863
int sendbufCount
Definition ampiFunctions.hpp:8867
RECVTYPE::PrimalType * recvbufOldPrimals
Definition ampiFunctions.hpp:8874
SENDTYPE::IndexType * sendbufIndices
Definition ampiFunctions.hpp:8864
int sendbufCountVec
Definition ampiFunctions.hpp:8868
int root
Definition ampiFunctions.hpp:8880
RECVTYPE::PrimalType * recvbufPrimals
Definition ampiFunctions.hpp:8873
int recvbufCount
Definition ampiFunctions.hpp:8876
int recvbufCountVec
Definition ampiFunctions.hpp:8877
void * recvbufAdjoints
Definition ampiFunctions.hpp:8875
RECVTYPE * recvtype
Definition ampiFunctions.hpp:8879
SENDTYPE::PrimalType * sendbufPrimals
Definition ampiFunctions.hpp:8865
~AMPI_Igather_AdjointHandle()
Definition ampiFunctions.hpp:8883
void * sendbufAdjoints
Definition ampiFunctions.hpp:8866
RECVTYPE::IndexType * recvbufIndices
Definition ampiFunctions.hpp:8872
int sendcount
Definition ampiFunctions.hpp:8869
int recvcount
Definition ampiFunctions.hpp:8878
int recvbufTotalSize
Definition ampiFunctions.hpp:8871
MPI_Comm comm
Definition ampiFunctions.hpp:8881
Definition ampiFunctions.hpp:8908
AMPI_Request * request
Definition ampiFunctions.hpp:8919
RECVTYPE::ModifiedType * recvbufMod
Definition ampiFunctions.hpp:8914
SENDTYPE::ModifiedType * sendbufMod
Definition ampiFunctions.hpp:8910
MPI_Comm comm
Definition ampiFunctions.hpp:8918
int sendcount
Definition ampiFunctions.hpp:8911
RECVTYPE * recvtype
Definition ampiFunctions.hpp:8916
int recvcount
Definition ampiFunctions.hpp:8915
int root
Definition ampiFunctions.hpp:8917
const SENDTYPE::Type * sendbuf
Definition ampiFunctions.hpp:8909
RECVTYPE::Type * recvbuf
Definition ampiFunctions.hpp:8913
SENDTYPE * sendtype
Definition ampiFunctions.hpp:8912
Definition ampiFunctions.hpp:9273
RECVTYPE::PrimalType * recvbufOldPrimals
Definition ampiFunctions.hpp:9285
int sendcount
Definition ampiFunctions.hpp:9280
~AMPI_Igatherv_AdjointHandle()
Definition ampiFunctions.hpp:9296
int * recvbufCount
Definition ampiFunctions.hpp:9287
const int * recvcounts
Definition ampiFunctions.hpp:9290
int root
Definition ampiFunctions.hpp:9293
void * sendbufAdjoints
Definition ampiFunctions.hpp:9277
int sendbufCountVec
Definition ampiFunctions.hpp:9279
RECVTYPE::PrimalType * recvbufPrimals
Definition ampiFunctions.hpp:9284
int * recvbufDisplsVec
Definition ampiFunctions.hpp:9289
void * recvbufAdjoints
Definition ampiFunctions.hpp:9286
SENDTYPE::IndexType * sendbufIndices
Definition ampiFunctions.hpp:9275
int sendbufCount
Definition ampiFunctions.hpp:9278
MPI_Comm comm
Definition ampiFunctions.hpp:9294
const int * displs
Definition ampiFunctions.hpp:9291
int recvbufTotalSize
Definition ampiFunctions.hpp:9282
SENDTYPE * sendtype
Definition ampiFunctions.hpp:9281
int sendbufTotalSize
Definition ampiFunctions.hpp:9274
RECVTYPE * recvtype
Definition ampiFunctions.hpp:9292
RECVTYPE::IndexType * recvbufIndices
Definition ampiFunctions.hpp:9283
SENDTYPE::PrimalType * sendbufPrimals
Definition ampiFunctions.hpp:9276
int * recvbufCountVec
Definition ampiFunctions.hpp:9288
Definition ampiFunctions.hpp:9325
MPI_Comm comm
Definition ampiFunctions.hpp:9337
int root
Definition ampiFunctions.hpp:9336
const int * displsMod
Definition ampiFunctions.hpp:9332
RECVTYPE::Type * recvbuf
Definition ampiFunctions.hpp:9330
AMPI_Request * request
Definition ampiFunctions.hpp:9338
int sendcount
Definition ampiFunctions.hpp:9328
RECVTYPE * recvtype
Definition ampiFunctions.hpp:9335
SENDTYPE * sendtype
Definition ampiFunctions.hpp:9329
const int * displs
Definition ampiFunctions.hpp:9334
const int * recvcounts
Definition ampiFunctions.hpp:9333
RECVTYPE::ModifiedType * recvbufMod
Definition ampiFunctions.hpp:9331
const SENDTYPE::Type * sendbuf
Definition ampiFunctions.hpp:9326
SENDTYPE::ModifiedType * sendbufMod
Definition ampiFunctions.hpp:9327
Definition ampiFunctions.hpp:696
void * bufAdjoints
Definition ampiFunctions.hpp:701
DATATYPE::PrimalType * bufOldPrimals
Definition ampiFunctions.hpp:700
int bufCountVec
Definition ampiFunctions.hpp:703
DATATYPE * datatype
Definition ampiFunctions.hpp:705
IrecvAdjCall reverse_send
Definition ampiFunctions.hpp:707
int bufCount
Definition ampiFunctions.hpp:702
int bufTotalSize
Definition ampiFunctions.hpp:697
~AMPI_Imrecv_AdjointHandle()
Definition ampiFunctions.hpp:709
int count
Definition ampiFunctions.hpp:704
DATATYPE::PrimalType * bufPrimals
Definition ampiFunctions.hpp:699
AMPI_Message message
Definition ampiFunctions.hpp:706
DATATYPE::IndexType * bufIndices
Definition ampiFunctions.hpp:698
Definition ampiFunctions.hpp:726
int count
Definition ampiFunctions.hpp:729
DATATYPE::Type * buf
Definition ampiFunctions.hpp:727
DATATYPE::ModifiedType * bufMod
Definition ampiFunctions.hpp:728
DATATYPE * datatype
Definition ampiFunctions.hpp:730
IrecvAdjCall reverse_send
Definition ampiFunctions.hpp:733
AMPI_Request * request
Definition ampiFunctions.hpp:732
AMPI_Message * message
Definition ampiFunctions.hpp:731
Definition ampiFunctions.hpp:971
int bufCount
Definition ampiFunctions.hpp:977
DATATYPE::IndexType * bufIndices
Definition ampiFunctions.hpp:973
int source
Definition ampiFunctions.hpp:981
IrecvAdjCall reverse_send
Definition ampiFunctions.hpp:984
int bufTotalSize
Definition ampiFunctions.hpp:972
DATATYPE::PrimalType * bufOldPrimals
Definition ampiFunctions.hpp:975
DATATYPE::PrimalType * bufPrimals
Definition ampiFunctions.hpp:974
int tag
Definition ampiFunctions.hpp:982
void * bufAdjoints
Definition ampiFunctions.hpp:976
int bufCountVec
Definition ampiFunctions.hpp:978
DATATYPE * datatype
Definition ampiFunctions.hpp:980
MPI_Comm comm
Definition ampiFunctions.hpp:983
int count
Definition ampiFunctions.hpp:979
~AMPI_Irecv_AdjointHandle()
Definition ampiFunctions.hpp:986
Definition ampiFunctions.hpp:1003
int count
Definition ampiFunctions.hpp:1006
int source
Definition ampiFunctions.hpp:1008
DATATYPE::Type * buf
Definition ampiFunctions.hpp:1004
int tag
Definition ampiFunctions.hpp:1009
DATATYPE * datatype
Definition ampiFunctions.hpp:1007
MPI_Comm comm
Definition ampiFunctions.hpp:1010
DATATYPE::ModifiedType * bufMod
Definition ampiFunctions.hpp:1005
IrecvAdjCall reverse_send
Definition ampiFunctions.hpp:1012
AMPI_Request * request
Definition ampiFunctions.hpp:1011
Definition ampiFunctions.hpp:9739
int sendbufCount
Definition ampiFunctions.hpp:9744
~AMPI_Ireduce_global_AdjointHandle()
Definition ampiFunctions.hpp:9759
AMPI_Op op
Definition ampiFunctions.hpp:9755
DATATYPE * datatype
Definition ampiFunctions.hpp:9754
void * recvbufAdjoints
Definition ampiFunctions.hpp:9750
int root
Definition ampiFunctions.hpp:9756
DATATYPE::PrimalType * sendbufPrimals
Definition ampiFunctions.hpp:9742
MPI_Comm comm
Definition ampiFunctions.hpp:9757
int sendbufTotalSize
Definition ampiFunctions.hpp:9740
int count
Definition ampiFunctions.hpp:9753
DATATYPE::PrimalType * recvbufOldPrimals
Definition ampiFunctions.hpp:9749
void * sendbufAdjoints
Definition ampiFunctions.hpp:9743
DATATYPE::IndexType * sendbufIndices
Definition ampiFunctions.hpp:9741
int sendbufCountVec
Definition ampiFunctions.hpp:9745
DATATYPE::PrimalType * recvbufPrimals
Definition ampiFunctions.hpp:9748
int recvbufCountVec
Definition ampiFunctions.hpp:9752
DATATYPE::IndexType * recvbufIndices
Definition ampiFunctions.hpp:9747
int recvbufTotalSize
Definition ampiFunctions.hpp:9746
int recvbufCount
Definition ampiFunctions.hpp:9751
Definition ampiFunctions.hpp:9784
const DATATYPE::Type * sendbuf
Definition ampiFunctions.hpp:9785
DATATYPE * datatype
Definition ampiFunctions.hpp:9790
DATATYPE::ModifiedType * sendbufMod
Definition ampiFunctions.hpp:9786
MPI_Comm comm
Definition ampiFunctions.hpp:9793
AMPI_Request * request
Definition ampiFunctions.hpp:9794
DATATYPE::Type * recvbuf
Definition ampiFunctions.hpp:9787
DATATYPE::ModifiedType * recvbufMod
Definition ampiFunctions.hpp:9788
int root
Definition ampiFunctions.hpp:9792
int count
Definition ampiFunctions.hpp:9789
AMPI_Op op
Definition ampiFunctions.hpp:9791
Definition ampiFunctions.hpp:1258
int bufCountVec
Definition ampiFunctions.hpp:1264
DATATYPE * datatype
Definition ampiFunctions.hpp:1266
int bufCount
Definition ampiFunctions.hpp:1263
MPI_Comm comm
Definition ampiFunctions.hpp:1269
int bufTotalSize
Definition ampiFunctions.hpp:1259
void * bufAdjoints
Definition ampiFunctions.hpp:1262
~AMPI_Irsend_AdjointHandle()
Definition ampiFunctions.hpp:1271
DATATYPE::IndexType * bufIndices
Definition ampiFunctions.hpp:1260
int dest
Definition ampiFunctions.hpp:1267
DATATYPE::PrimalType * bufPrimals
Definition ampiFunctions.hpp:1261
int tag
Definition ampiFunctions.hpp:1268
int count
Definition ampiFunctions.hpp:1265
Definition ampiFunctions.hpp:1284
int dest
Definition ampiFunctions.hpp:1289
AMPI_Request * request
Definition ampiFunctions.hpp:1292
DATATYPE::ModifiedType * bufMod
Definition ampiFunctions.hpp:1286
DATATYPE * datatype
Definition ampiFunctions.hpp:1288
int count
Definition ampiFunctions.hpp:1287
MPI_Comm comm
Definition ampiFunctions.hpp:1291
const DATATYPE::Type * buf
Definition ampiFunctions.hpp:1285
int tag
Definition ampiFunctions.hpp:1290
Definition ampiFunctions.hpp:10176
MPI_Comm comm
Definition ampiFunctions.hpp:10195
void * sendbufAdjoints
Definition ampiFunctions.hpp:10180
RECVTYPE::PrimalType * recvbufOldPrimals
Definition ampiFunctions.hpp:10188
SENDTYPE * sendtype
Definition ampiFunctions.hpp:10184
SENDTYPE::IndexType * sendbufIndices
Definition ampiFunctions.hpp:10178
int sendbufTotalSize
Definition ampiFunctions.hpp:10177
int sendbufCount
Definition ampiFunctions.hpp:10181
RECVTYPE * recvtype
Definition ampiFunctions.hpp:10193
int recvbufCountVec
Definition ampiFunctions.hpp:10191
~AMPI_Iscatter_AdjointHandle()
Definition ampiFunctions.hpp:10197
RECVTYPE::IndexType * recvbufIndices
Definition ampiFunctions.hpp:10186
int recvcount
Definition ampiFunctions.hpp:10192
RECVTYPE::PrimalType * recvbufPrimals
Definition ampiFunctions.hpp:10187
SENDTYPE::PrimalType * sendbufPrimals
Definition ampiFunctions.hpp:10179
int recvbufTotalSize
Definition ampiFunctions.hpp:10185
int root
Definition ampiFunctions.hpp:10194
void * recvbufAdjoints
Definition ampiFunctions.hpp:10189
int sendcount
Definition ampiFunctions.hpp:10183
int recvbufCount
Definition ampiFunctions.hpp:10190
int sendbufCountVec
Definition ampiFunctions.hpp:10182
Definition ampiFunctions.hpp:10222
RECVTYPE::ModifiedType * recvbufMod
Definition ampiFunctions.hpp:10228
int root
Definition ampiFunctions.hpp:10231
RECVTYPE::Type * recvbuf
Definition ampiFunctions.hpp:10227
SENDTYPE::ModifiedType * sendbufMod
Definition ampiFunctions.hpp:10224
const SENDTYPE::Type * sendbuf
Definition ampiFunctions.hpp:10223
SENDTYPE * sendtype
Definition ampiFunctions.hpp:10226
RECVTYPE * recvtype
Definition ampiFunctions.hpp:10230
int sendcount
Definition ampiFunctions.hpp:10225
AMPI_Request * request
Definition ampiFunctions.hpp:10233
int recvcount
Definition ampiFunctions.hpp:10229
MPI_Comm comm
Definition ampiFunctions.hpp:10232
Definition ampiFunctions.hpp:10589
int recvcount
Definition ampiFunctions.hpp:10607
RECVTYPE::IndexType * recvbufIndices
Definition ampiFunctions.hpp:10601
const int * sendcounts
Definition ampiFunctions.hpp:10597
int sendbufTotalSize
Definition ampiFunctions.hpp:10590
int * sendbufCount
Definition ampiFunctions.hpp:10594
SENDTYPE::IndexType * sendbufIndices
Definition ampiFunctions.hpp:10591
int recvbufCountVec
Definition ampiFunctions.hpp:10606
RECVTYPE * recvtype
Definition ampiFunctions.hpp:10608
RECVTYPE::PrimalType * recvbufOldPrimals
Definition ampiFunctions.hpp:10603
int * sendbufCountVec
Definition ampiFunctions.hpp:10595
void * sendbufAdjoints
Definition ampiFunctions.hpp:10593
int * sendbufDisplsVec
Definition ampiFunctions.hpp:10596
SENDTYPE * sendtype
Definition ampiFunctions.hpp:10599
MPI_Comm comm
Definition ampiFunctions.hpp:10610
int root
Definition ampiFunctions.hpp:10609
int recvbufCount
Definition ampiFunctions.hpp:10605
void * recvbufAdjoints
Definition ampiFunctions.hpp:10604
SENDTYPE::PrimalType * sendbufPrimals
Definition ampiFunctions.hpp:10592
int recvbufTotalSize
Definition ampiFunctions.hpp:10600
RECVTYPE::PrimalType * recvbufPrimals
Definition ampiFunctions.hpp:10602
~AMPI_Iscatterv_AdjointHandle()
Definition ampiFunctions.hpp:10612
const int * displs
Definition ampiFunctions.hpp:10598
Definition ampiFunctions.hpp:10641
MPI_Comm comm
Definition ampiFunctions.hpp:10653
int root
Definition ampiFunctions.hpp:10652
RECVTYPE::ModifiedType * recvbufMod
Definition ampiFunctions.hpp:10649
RECVTYPE * recvtype
Definition ampiFunctions.hpp:10651
int recvcount
Definition ampiFunctions.hpp:10650
const int * displsMod
Definition ampiFunctions.hpp:10644
const SENDTYPE::Type * sendbuf
Definition ampiFunctions.hpp:10642
const int * displs
Definition ampiFunctions.hpp:10646
const int * sendcounts
Definition ampiFunctions.hpp:10645
AMPI_Request * request
Definition ampiFunctions.hpp:10654
SENDTYPE::ModifiedType * sendbufMod
Definition ampiFunctions.hpp:10643
RECVTYPE::Type * recvbuf
Definition ampiFunctions.hpp:10648
SENDTYPE * sendtype
Definition ampiFunctions.hpp:10647
Definition ampiFunctions.hpp:1519
int bufCountVec
Definition ampiFunctions.hpp:1525
DATATYPE::PrimalType * bufPrimals
Definition ampiFunctions.hpp:1522
int tag
Definition ampiFunctions.hpp:1529
void * bufAdjoints
Definition ampiFunctions.hpp:1523
int count
Definition ampiFunctions.hpp:1526
~AMPI_Isend_AdjointHandle()
Definition ampiFunctions.hpp:1532
DATATYPE * datatype
Definition ampiFunctions.hpp:1527
int dest
Definition ampiFunctions.hpp:1528
MPI_Comm comm
Definition ampiFunctions.hpp:1530
DATATYPE::IndexType * bufIndices
Definition ampiFunctions.hpp:1521
int bufCount
Definition ampiFunctions.hpp:1524
int bufTotalSize
Definition ampiFunctions.hpp:1520
Definition ampiFunctions.hpp:1545
int count
Definition ampiFunctions.hpp:1548
const DATATYPE::Type * buf
Definition ampiFunctions.hpp:1546
int dest
Definition ampiFunctions.hpp:1550
DATATYPE * datatype
Definition ampiFunctions.hpp:1549
AMPI_Request * request
Definition ampiFunctions.hpp:1553
int tag
Definition ampiFunctions.hpp:1551
MPI_Comm comm
Definition ampiFunctions.hpp:1552
DATATYPE::ModifiedType * bufMod
Definition ampiFunctions.hpp:1547
Definition ampiFunctions.hpp:1780
~AMPI_Issend_AdjointHandle()
Definition ampiFunctions.hpp:1793
int bufCountVec
Definition ampiFunctions.hpp:1786
DATATYPE::PrimalType * bufPrimals
Definition ampiFunctions.hpp:1783
DATATYPE::IndexType * bufIndices
Definition ampiFunctions.hpp:1782
int bufCount
Definition ampiFunctions.hpp:1785
MPI_Comm comm
Definition ampiFunctions.hpp:1791
int tag
Definition ampiFunctions.hpp:1790
int dest
Definition ampiFunctions.hpp:1789
void * bufAdjoints
Definition ampiFunctions.hpp:1784
int bufTotalSize
Definition ampiFunctions.hpp:1781
int count
Definition ampiFunctions.hpp:1787
DATATYPE * datatype
Definition ampiFunctions.hpp:1788
Definition ampiFunctions.hpp:1806
int count
Definition ampiFunctions.hpp:1809
AMPI_Request * request
Definition ampiFunctions.hpp:1814
int tag
Definition ampiFunctions.hpp:1812
int dest
Definition ampiFunctions.hpp:1811
DATATYPE::ModifiedType * bufMod
Definition ampiFunctions.hpp:1808
const DATATYPE::Type * buf
Definition ampiFunctions.hpp:1807
DATATYPE * datatype
Definition ampiFunctions.hpp:1810
MPI_Comm comm
Definition ampiFunctions.hpp:1813
Stores additional information for a MPI_Message.
Definition message.hpp:44
MPI_Message message
Definition message.hpp:45
Definition ampiFunctions.hpp:2041
DATATYPE::PrimalType * bufPrimals
Definition ampiFunctions.hpp:2044
~AMPI_Mrecv_AdjointHandle()
Definition ampiFunctions.hpp:2055
int bufTotalSize
Definition ampiFunctions.hpp:2042
int count
Definition ampiFunctions.hpp:2049
RecvAdjCall reverse_send
Definition ampiFunctions.hpp:2053
int bufCountVec
Definition ampiFunctions.hpp:2048
AMPI_Message message
Definition ampiFunctions.hpp:2051
DATATYPE::PrimalType * bufOldPrimals
Definition ampiFunctions.hpp:2045
DATATYPE * datatype
Definition ampiFunctions.hpp:2050
DATATYPE::IndexType * bufIndices
Definition ampiFunctions.hpp:2043
int bufCount
Definition ampiFunctions.hpp:2047
void * bufAdjoints
Definition ampiFunctions.hpp:2046
MPI_Status * status
Definition ampiFunctions.hpp:2052
Structure for the special handling of the MPI_Op structure.
Definition op.hpp:50
PreAdjointOperation preAdjointOperation
The operation that is evaluated on each adjoint value before they are send in a message.
Definition op.hpp:82
PostAdjointOperation postAdjointOperation
The operation that is evaluated on each adjoint after the values have been received in a message.
Definition op.hpp:87
MPI_Op primalFunction
The mpi operator for the unmodified AD types. The AD tool needs to record all operations that are eva...
Definition op.hpp:69
bool requiresPrimal
Indicates if the primal on the sending and receiving side are required by this operator.
Definition op.hpp:55
MPI_Op modifiedPrimalFunction
The mpi operator for the modified AD types. This are the operations that are evaluated during the mpi...
Definition op.hpp:77
Definition ampiFunctions.hpp:2225
~AMPI_Recv_AdjointHandle()
Definition ampiFunctions.hpp:2240
DATATYPE::PrimalType * bufPrimals
Definition ampiFunctions.hpp:2228
int count
Definition ampiFunctions.hpp:2233
RecvAdjCall reverse_send
Definition ampiFunctions.hpp:2238
MPI_Comm comm
Definition ampiFunctions.hpp:2237
int source
Definition ampiFunctions.hpp:2235
DATATYPE::PrimalType * bufOldPrimals
Definition ampiFunctions.hpp:2229
int bufCountVec
Definition ampiFunctions.hpp:2232
void * bufAdjoints
Definition ampiFunctions.hpp:2230
int bufTotalSize
Definition ampiFunctions.hpp:2226
int bufCount
Definition ampiFunctions.hpp:2231
DATATYPE * datatype
Definition ampiFunctions.hpp:2234
DATATYPE::IndexType * bufIndices
Definition ampiFunctions.hpp:2227
int tag
Definition ampiFunctions.hpp:2236
Definition ampiFunctions.hpp:2416
MPI_Comm comm
Definition ampiFunctions.hpp:2423
DATATYPE::Type * buf
Definition ampiFunctions.hpp:2417
int count
Definition ampiFunctions.hpp:2419
int tag
Definition ampiFunctions.hpp:2422
AMPI_Request * request
Definition ampiFunctions.hpp:2424
int source
Definition ampiFunctions.hpp:2421
IrecvAdjCall reverse_send
Definition ampiFunctions.hpp:2425
DATATYPE::ModifiedType * bufMod
Definition ampiFunctions.hpp:2418
DATATYPE * datatype
Definition ampiFunctions.hpp:2420
Definition ampiFunctions.hpp:11060
DATATYPE::PrimalType * recvbufOldPrimals
Definition ampiFunctions.hpp:11070
int sendbufTotalSize
Definition ampiFunctions.hpp:11061
int recvbufCountVec
Definition ampiFunctions.hpp:11073
DATATYPE * datatype
Definition ampiFunctions.hpp:11075
int recvbufTotalSize
Definition ampiFunctions.hpp:11067
DATATYPE::PrimalType * sendbufPrimals
Definition ampiFunctions.hpp:11063
int count
Definition ampiFunctions.hpp:11074
DATATYPE::PrimalType * recvbufPrimals
Definition ampiFunctions.hpp:11069
void * sendbufAdjoints
Definition ampiFunctions.hpp:11064
int sendbufCountVec
Definition ampiFunctions.hpp:11066
~AMPI_Reduce_global_AdjointHandle()
Definition ampiFunctions.hpp:11080
DATATYPE::IndexType * sendbufIndices
Definition ampiFunctions.hpp:11062
AMPI_Op op
Definition ampiFunctions.hpp:11076
void * recvbufAdjoints
Definition ampiFunctions.hpp:11071
MPI_Comm comm
Definition ampiFunctions.hpp:11078
int root
Definition ampiFunctions.hpp:11077
int recvbufCount
Definition ampiFunctions.hpp:11072
int sendbufCount
Definition ampiFunctions.hpp:11065
DATATYPE::IndexType * recvbufIndices
Definition ampiFunctions.hpp:11068
AsyncHandle * handle
Definition async.hpp:47
ContinueFunction start
Definition async.hpp:52
ContinueFunction end
Definition async.hpp:53
MPI_Request request
Definition async.hpp:46
ContinueFunction func
Definition async.hpp:48
Definition ampiFunctions.hpp:2662
MPI_Comm comm
Definition ampiFunctions.hpp:2673
int count
Definition ampiFunctions.hpp:2669
int bufCountVec
Definition ampiFunctions.hpp:2668
DATATYPE * datatype
Definition ampiFunctions.hpp:2670
DATATYPE::IndexType * bufIndices
Definition ampiFunctions.hpp:2664
DATATYPE::PrimalType * bufPrimals
Definition ampiFunctions.hpp:2665
~AMPI_Rsend_AdjointHandle()
Definition ampiFunctions.hpp:2675
int tag
Definition ampiFunctions.hpp:2672
int bufTotalSize
Definition ampiFunctions.hpp:2663
int bufCount
Definition ampiFunctions.hpp:2667
void * bufAdjoints
Definition ampiFunctions.hpp:2666
int dest
Definition ampiFunctions.hpp:2671
Definition ampiFunctions.hpp:2825
DATATYPE * datatype
Definition ampiFunctions.hpp:2829
DATATYPE::ModifiedType * bufMod
Definition ampiFunctions.hpp:2827
int tag
Definition ampiFunctions.hpp:2831
const DATATYPE::Type * buf
Definition ampiFunctions.hpp:2826
MPI_Comm comm
Definition ampiFunctions.hpp:2832
AMPI_Request * request
Definition ampiFunctions.hpp:2833
int count
Definition ampiFunctions.hpp:2828
int dest
Definition ampiFunctions.hpp:2830
Definition ampiFunctions.hpp:11382
SENDTYPE::IndexType * sendbufIndices
Definition ampiFunctions.hpp:11384
void * sendbufAdjoints
Definition ampiFunctions.hpp:11386
int recvbufTotalSize
Definition ampiFunctions.hpp:11391
RECVTYPE * recvtype
Definition ampiFunctions.hpp:11399
int sendbufCountVec
Definition ampiFunctions.hpp:11388
RECVTYPE::IndexType * recvbufIndices
Definition ampiFunctions.hpp:11392
RECVTYPE::PrimalType * recvbufOldPrimals
Definition ampiFunctions.hpp:11394
void * recvbufAdjoints
Definition ampiFunctions.hpp:11395
SENDTYPE::PrimalType * sendbufPrimals
Definition ampiFunctions.hpp:11385
int recvbufCountVec
Definition ampiFunctions.hpp:11397
int sendbufTotalSize
Definition ampiFunctions.hpp:11383
SENDTYPE * sendtype
Definition ampiFunctions.hpp:11390
int recvcount
Definition ampiFunctions.hpp:11398
int root
Definition ampiFunctions.hpp:11400
~AMPI_Scatter_AdjointHandle()
Definition ampiFunctions.hpp:11403
int recvbufCount
Definition ampiFunctions.hpp:11396
int sendcount
Definition ampiFunctions.hpp:11389
int sendbufCount
Definition ampiFunctions.hpp:11387
RECVTYPE::PrimalType * recvbufPrimals
Definition ampiFunctions.hpp:11393
MPI_Comm comm
Definition ampiFunctions.hpp:11401
Definition ampiFunctions.hpp:11682
RECVTYPE::PrimalType * recvbufOldPrimals
Definition ampiFunctions.hpp:11696
int root
Definition ampiFunctions.hpp:11702
SENDTYPE::IndexType * sendbufIndices
Definition ampiFunctions.hpp:11684
int recvcount
Definition ampiFunctions.hpp:11700
void * recvbufAdjoints
Definition ampiFunctions.hpp:11697
RECVTYPE::IndexType * recvbufIndices
Definition ampiFunctions.hpp:11694
RECVTYPE * recvtype
Definition ampiFunctions.hpp:11701
~AMPI_Scatterv_AdjointHandle()
Definition ampiFunctions.hpp:11705
const int * sendcounts
Definition ampiFunctions.hpp:11690
SENDTYPE::PrimalType * sendbufPrimals
Definition ampiFunctions.hpp:11685
SENDTYPE * sendtype
Definition ampiFunctions.hpp:11692
int recvbufTotalSize
Definition ampiFunctions.hpp:11693
int recvbufCountVec
Definition ampiFunctions.hpp:11699
int * sendbufCountVec
Definition ampiFunctions.hpp:11688
MPI_Comm comm
Definition ampiFunctions.hpp:11703
int * sendbufDisplsVec
Definition ampiFunctions.hpp:11689
int * sendbufCount
Definition ampiFunctions.hpp:11687
int recvbufCount
Definition ampiFunctions.hpp:11698
int sendbufTotalSize
Definition ampiFunctions.hpp:11683
void * sendbufAdjoints
Definition ampiFunctions.hpp:11686
const int * displs
Definition ampiFunctions.hpp:11691
RECVTYPE::PrimalType * recvbufPrimals
Definition ampiFunctions.hpp:11695
Definition ampiFunctions.hpp:3052
~AMPI_Send_AdjointHandle()
Definition ampiFunctions.hpp:3065
DATATYPE::PrimalType * bufPrimals
Definition ampiFunctions.hpp:3055
void * bufAdjoints
Definition ampiFunctions.hpp:3056
MPI_Comm comm
Definition ampiFunctions.hpp:3063
DATATYPE * datatype
Definition ampiFunctions.hpp:3060
DATATYPE::IndexType * bufIndices
Definition ampiFunctions.hpp:3054
int dest
Definition ampiFunctions.hpp:3061
int bufTotalSize
Definition ampiFunctions.hpp:3053
int count
Definition ampiFunctions.hpp:3059
int bufCount
Definition ampiFunctions.hpp:3057
int bufCountVec
Definition ampiFunctions.hpp:3058
int tag
Definition ampiFunctions.hpp:3062
Definition ampiFunctions.hpp:3215
DATATYPE * datatype
Definition ampiFunctions.hpp:3219
MPI_Comm comm
Definition ampiFunctions.hpp:3222
const DATATYPE::Type * buf
Definition ampiFunctions.hpp:3216
DATATYPE::ModifiedType * bufMod
Definition ampiFunctions.hpp:3217
AMPI_Request * request
Definition ampiFunctions.hpp:3223
int tag
Definition ampiFunctions.hpp:3221
int count
Definition ampiFunctions.hpp:3218
int dest
Definition ampiFunctions.hpp:3220
Definition ampiFunctions.hpp:3442
SENDTYPE::IndexType * sendbufIndices
Definition ampiFunctions.hpp:3444
void * sendbufAdjoints
Definition ampiFunctions.hpp:3446
int sendcount
Definition ampiFunctions.hpp:3449
int recvbufCountVec
Definition ampiFunctions.hpp:3459
SENDTYPE::PrimalType * sendbufPrimals
Definition ampiFunctions.hpp:3445
int source
Definition ampiFunctions.hpp:3462
int recvcount
Definition ampiFunctions.hpp:3460
MPI_Comm comm
Definition ampiFunctions.hpp:3464
RECVTYPE * recvtype
Definition ampiFunctions.hpp:3461
int recvbufTotalSize
Definition ampiFunctions.hpp:3453
~AMPI_Sendrecv_AdjointHandle()
Definition ampiFunctions.hpp:3466
RECVTYPE::IndexType * recvbufIndices
Definition ampiFunctions.hpp:3454
int recvbufCount
Definition ampiFunctions.hpp:3458
int recvtag
Definition ampiFunctions.hpp:3463
SENDTYPE * sendtype
Definition ampiFunctions.hpp:3450
RECVTYPE::PrimalType * recvbufOldPrimals
Definition ampiFunctions.hpp:3456
int sendbufCountVec
Definition ampiFunctions.hpp:3448
int sendbufTotalSize
Definition ampiFunctions.hpp:3443
int sendtag
Definition ampiFunctions.hpp:3452
void * recvbufAdjoints
Definition ampiFunctions.hpp:3457
RECVTYPE::PrimalType * recvbufPrimals
Definition ampiFunctions.hpp:3455
int dest
Definition ampiFunctions.hpp:3451
int sendbufCount
Definition ampiFunctions.hpp:3447
Definition ampiFunctions.hpp:3699
MPI_Comm comm
Definition ampiFunctions.hpp:3710
int count
Definition ampiFunctions.hpp:3706
DATATYPE * datatype
Definition ampiFunctions.hpp:3707
void * bufAdjoints
Definition ampiFunctions.hpp:3703
int tag
Definition ampiFunctions.hpp:3709
int bufCount
Definition ampiFunctions.hpp:3704
DATATYPE::PrimalType * bufPrimals
Definition ampiFunctions.hpp:3702
DATATYPE::IndexType * bufIndices
Definition ampiFunctions.hpp:3701
int bufCountVec
Definition ampiFunctions.hpp:3705
int bufTotalSize
Definition ampiFunctions.hpp:3700
~AMPI_Ssend_AdjointHandle()
Definition ampiFunctions.hpp:3712
int dest
Definition ampiFunctions.hpp:3708
Definition ampiFunctions.hpp:3862
int dest
Definition ampiFunctions.hpp:3867
AMPI_Request * request
Definition ampiFunctions.hpp:3870
int tag
Definition ampiFunctions.hpp:3868
MPI_Comm comm
Definition ampiFunctions.hpp:3869
DATATYPE::ModifiedType * bufMod
Definition ampiFunctions.hpp:3864
DATATYPE * datatype
Definition ampiFunctions.hpp:3866
int count
Definition ampiFunctions.hpp:3865
const DATATYPE::Type * buf
Definition ampiFunctions.hpp:3863
AMPI_Request requestReverse
Definition async.hpp:95
AsyncAdjointHandle()
Definition async.hpp:97
AsyncAdjointHandle * toolHandle
Definition async.hpp:103
AsyncHandle()
Definition async.hpp:105
Definition typeDefinitions.h:54
PrimalFunction funcPrimal
Definition typeDefinitions.h:61
ReverseFunction funcReverse
Definition typeDefinitions.h:59
HandleBase()
Definition typeDefinitions.h:64
ForwardFunction funcForward
Definition typeDefinitions.h:60