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>
133 template<
typename DATATYPE>
141 template<
typename DATATYPE>
149 rStatus = MPI_Bsend(buf, count, datatype->getMpiType(), dest, tag, comm);
154 typename DATATYPE::ModifiedType* bufMod =
nullptr;
160 if(datatype->isModifiedBufferRequired() ) {
161 datatype->createModifiedTypeBuffer(bufMod, bufElements);
163 bufMod =
reinterpret_cast<typename DATATYPE::ModifiedType*
>(
const_cast<typename DATATYPE::Type*
>(buf));
171 if(datatype->isModifiedBufferRequired()) {
172 datatype->copyIntoModifiedBuffer(buf, 0, bufMod, 0, count);
179 h->
bufCount = datatype->computeActiveElements(count);
180 h->
bufTotalSize = datatype->computeActiveElements(bufElements);
186 datatype->getIndices(buf, 0, h->
bufIndices, 0, count);
203 rStatus = MPI_Bsend(bufMod, count, datatype->getModifiedMpiType(), dest, tag, comm);
213 if(datatype->isModifiedBufferRequired() ) {
214 datatype->deleteModifiedTypeBuffer(bufMod);
224#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
225 template<
typename DATATYPE>
251 template<
typename DATATYPE>
263 template<
typename DATATYPE>
281 template<
typename DATATYPE>
292 template<
typename DATATYPE>
310 template<
typename DATATYPE>
321 template<
typename DATATYPE>
336 template<
typename DATATYPE>
349 template<
typename DATATYPE>
358 template<
typename DATATYPE>
366 template<
typename DATATYPE>
368 template<
typename DATATYPE>
376 rStatus = MPI_Ibsend(buf, count, datatype->getMpiType(), dest, tag, comm, &request->
request);
381 typename DATATYPE::ModifiedType* bufMod =
nullptr;
387 if(datatype->isModifiedBufferRequired() ) {
388 datatype->createModifiedTypeBuffer(bufMod, bufElements);
390 bufMod =
reinterpret_cast<typename DATATYPE::ModifiedType*
>(
const_cast<typename DATATYPE::Type*
>(buf));
398 if(datatype->isModifiedBufferRequired()) {
399 datatype->copyIntoModifiedBuffer(buf, 0, bufMod, 0, count);
406 h->
bufCount = datatype->computeActiveElements(count);
407 h->
bufTotalSize = datatype->computeActiveElements(bufElements);
413 datatype->getIndices(buf, 0, h->
bufIndices, 0, count);
430 rStatus = MPI_Ibsend(bufMod, count, datatype->getModifiedMpiType(), dest, tag, comm, &request->
request);
433 asyncHandle->
buf = buf;
434 asyncHandle->
bufMod = bufMod;
435 asyncHandle->
count = count;
437 asyncHandle->
dest = dest;
438 asyncHandle->
tag = tag;
439 asyncHandle->
comm = comm;
441 request->
handle = asyncHandle;
455 template<
typename DATATYPE>
461 typename DATATYPE::ModifiedType* bufMod = asyncHandle->
bufMod;
462 int count = asyncHandle->
count;
463 DATATYPE* datatype = asyncHandle->
datatype;
464 int dest = asyncHandle->
dest;
465 int tag = asyncHandle->
tag;
482 if(adType->isActiveType()) {
484 adType->addToolAction(h);
491 adType->stopAssembly(h);
493 if(datatype->isModifiedBufferRequired() ) {
494 datatype->deleteModifiedTypeBuffer(bufMod);
504#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
506 template<
typename DATATYPE>
519 template<
typename DATATYPE>
528 template<
typename DATATYPE>
536 template<
typename DATATYPE>
538 template<
typename DATATYPE>
540 template<
typename DATATYPE>
542 template<
typename DATATYPE>
550 rStatus = MPI_Bsend_init(buf, count, datatype->getMpiType(), dest, tag, comm, &request->
request);
555 typename DATATYPE::ModifiedType* bufMod =
nullptr;
561 if(datatype->isModifiedBufferRequired() ) {
562 datatype->createModifiedTypeBuffer(bufMod, bufElements);
564 bufMod =
reinterpret_cast<typename DATATYPE::ModifiedType*
>(
const_cast<typename DATATYPE::Type*
>(buf));
567 rStatus = MPI_Bsend_init(bufMod, count, datatype->getModifiedMpiType(), dest, tag, comm, &request->
request);
570 asyncHandle->
buf = buf;
571 asyncHandle->
bufMod = bufMod;
572 asyncHandle->
count = count;
574 asyncHandle->
dest = dest;
575 asyncHandle->
tag = tag;
576 asyncHandle->
comm = comm;
578 request->
handle = asyncHandle;
587 template<
typename DATATYPE>
593 typename DATATYPE::ModifiedType* bufMod = asyncHandle->
bufMod;
594 int count = asyncHandle->
count;
595 DATATYPE* datatype = asyncHandle->
datatype;
596 int dest = asyncHandle->
dest;
597 int tag = asyncHandle->
tag;
613 if(adType->isActiveType()) {
620 if(adType->isHandleRequired()) {
623 adType->startAssembly(h);
624 if(datatype->isModifiedBufferRequired()) {
625 datatype->copyIntoModifiedBuffer(buf, 0, bufMod, 0, count);
632 h->
bufCount = datatype->computeActiveElements(count);
633 h->
bufTotalSize = datatype->computeActiveElements(bufElements);
639 datatype->getIndices(buf, 0, h->
bufIndices, 0, count);
662 adType->addToolAction(waitH);
669 template<
typename DATATYPE>
675 typename DATATYPE::ModifiedType* bufMod = asyncHandle->
bufMod;
676 int count = asyncHandle->
count;
677 DATATYPE* datatype = asyncHandle->
datatype;
678 int dest = asyncHandle->
dest;
679 int tag = asyncHandle->
tag;
695 if(adType->isActiveType()) {
697 adType->addToolAction(h);
704 adType->stopAssembly(h);
710 template<
typename DATATYPE>
716 typename DATATYPE::ModifiedType* bufMod = asyncHandle->
bufMod;
717 int count = asyncHandle->
count;
718 DATATYPE* datatype = asyncHandle->
datatype;
719 int dest = asyncHandle->
dest;
720 int tag = asyncHandle->
tag;
737 if(adType->isActiveType()) {
740 if(datatype->isModifiedBufferRequired() ) {
741 datatype->deleteModifiedTypeBuffer(bufMod);
751#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
752 template<
typename DATATYPE>
782 template<
typename DATATYPE>
784 typename DATATYPE::Type*
buf;
793 template<
typename DATATYPE>
808 template<
typename DATATYPE>
816 if(adType->isOldPrimalsRequired()) {
824 template<
typename DATATYPE>
839 template<
typename DATATYPE>
852 template<
typename DATATYPE>
864 if(adType->isOldPrimalsRequired()) {
873 template<
typename DATATYPE>
884 template<
typename DATATYPE>
892 template<
typename DATATYPE>
901 template<
typename DATATYPE>
903 template<
typename DATATYPE>
911 rStatus = MPI_Imrecv(buf, count, datatype->getMpiType(), &message->
message, &request->
request);
916 typename DATATYPE::ModifiedType* bufMod =
nullptr;
922 if(datatype->isModifiedBufferRequired() ) {
923 datatype->createModifiedTypeBuffer(bufMod, bufElements);
925 bufMod =
reinterpret_cast<typename DATATYPE::ModifiedType*
>(
const_cast<typename DATATYPE::Type*
>(buf));
938 h->
bufCount = datatype->computeActiveElements(count);
939 h->
bufTotalSize = datatype->computeActiveElements(bufElements);
952 datatype->createIndices(buf, 0, h->
bufIndices, 0, count);
966 if(!datatype->isModifiedBufferRequired()) {
967 datatype->clearIndices(buf, 0, count);
970 rStatus = MPI_Imrecv(bufMod, count, datatype->getModifiedMpiType(), &message->
message, &request->
request);
973 asyncHandle->
buf = buf;
974 asyncHandle->
bufMod = bufMod;
975 asyncHandle->
count = count;
977 asyncHandle->
message = message;
980 request->
handle = asyncHandle;
994 template<
typename DATATYPE>
999 typename DATATYPE::Type* buf = asyncHandle->
buf;
1000 typename DATATYPE::ModifiedType* bufMod = asyncHandle->
bufMod;
1001 int count = asyncHandle->
count;
1002 DATATYPE* datatype = asyncHandle->
datatype;
1019 if(adType->isActiveType()) {
1021 adType->addToolAction(h);
1023 if(datatype->isModifiedBufferRequired()) {
1024 datatype->copyFromModifiedBuffer(buf, 0, bufMod, 0, count);
1032 adType->stopAssembly(h);
1034 if(datatype->isModifiedBufferRequired() ) {
1035 datatype->deleteModifiedTypeBuffer(bufMod);
1045#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
1046 template<
typename DATATYPE>
1078 template<
typename DATATYPE>
1091 template<
typename DATATYPE>
1106 template<
typename DATATYPE>
1114 if(adType->isOldPrimalsRequired()) {
1122 template<
typename DATATYPE>
1137 template<
typename DATATYPE>
1150 template<
typename DATATYPE>
1162 if(adType->isOldPrimalsRequired()) {
1171 template<
typename DATATYPE>
1182 template<
typename DATATYPE>
1190 template<
typename DATATYPE>
1199 template<
typename DATATYPE>
1201 template<
typename DATATYPE>
1202 int AMPI_Irecv(
typename DATATYPE::Type* buf,
int count, DATATYPE* datatype,
int source,
int tag,
AMPI_Comm comm,
1209 rStatus = MPI_Irecv(buf, count, datatype->getMpiType(), source, tag, comm, &request->
request);
1214 typename DATATYPE::ModifiedType* bufMod =
nullptr;
1215 int bufElements = 0;
1218 bufElements = count;
1220 if(datatype->isModifiedBufferRequired() ) {
1221 datatype->createModifiedTypeBuffer(bufMod, bufElements);
1223 bufMod =
reinterpret_cast<typename DATATYPE::ModifiedType*
>(
const_cast<typename DATATYPE::Type*
>(buf));
1236 h->
bufCount = datatype->computeActiveElements(count);
1237 h->
bufTotalSize = datatype->computeActiveElements(bufElements);
1250 datatype->createIndices(buf, 0, h->
bufIndices, 0, count);
1266 if(!datatype->isModifiedBufferRequired()) {
1267 datatype->clearIndices(buf, 0, count);
1270 rStatus = MPI_Irecv(bufMod, count, datatype->getModifiedMpiType(), source, tag, comm, &request->
request);
1273 asyncHandle->
buf = buf;
1274 asyncHandle->
bufMod = bufMod;
1275 asyncHandle->
count = count;
1277 asyncHandle->
source = source;
1278 asyncHandle->
tag = tag;
1279 asyncHandle->
comm = comm;
1282 request->
handle = asyncHandle;
1296 template<
typename DATATYPE>
1301 typename DATATYPE::Type* buf = asyncHandle->
buf;
1302 typename DATATYPE::ModifiedType* bufMod = asyncHandle->
bufMod;
1303 int count = asyncHandle->
count;
1304 DATATYPE* datatype = asyncHandle->
datatype;
1305 int source = asyncHandle->
source;
1306 int tag = asyncHandle->
tag;
1325 if(adType->isActiveType()) {
1327 adType->addToolAction(h);
1329 if(datatype->isModifiedBufferRequired()) {
1330 datatype->copyFromModifiedBuffer(buf, 0, bufMod, 0, count);
1338 adType->stopAssembly(h);
1340 if(datatype->isModifiedBufferRequired() ) {
1341 datatype->deleteModifiedTypeBuffer(bufMod);
1351#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
1352 template<
typename DATATYPE>
1378 template<
typename DATATYPE>
1390 template<
typename DATATYPE>
1408 template<
typename DATATYPE>
1419 template<
typename DATATYPE>
1437 template<
typename DATATYPE>
1448 template<
typename DATATYPE>
1463 template<
typename DATATYPE>
1476 template<
typename DATATYPE>
1485 template<
typename DATATYPE>
1493 template<
typename DATATYPE>
1495 template<
typename DATATYPE>
1503 rStatus = MPI_Irsend(buf, count, datatype->getMpiType(), dest, tag, comm, &request->
request);
1508 typename DATATYPE::ModifiedType* bufMod =
nullptr;
1509 int bufElements = 0;
1512 bufElements = count;
1514 if(datatype->isModifiedBufferRequired() ) {
1515 datatype->createModifiedTypeBuffer(bufMod, bufElements);
1517 bufMod =
reinterpret_cast<typename DATATYPE::ModifiedType*
>(
const_cast<typename DATATYPE::Type*
>(buf));
1525 if(datatype->isModifiedBufferRequired()) {
1526 datatype->copyIntoModifiedBuffer(buf, 0, bufMod, 0, count);
1533 h->
bufCount = datatype->computeActiveElements(count);
1534 h->
bufTotalSize = datatype->computeActiveElements(bufElements);
1540 datatype->getIndices(buf, 0, h->
bufIndices, 0, count);
1557 rStatus = MPI_Irsend(bufMod, count, datatype->getModifiedMpiType(), dest, tag, comm, &request->
request);
1560 asyncHandle->
buf = buf;
1561 asyncHandle->
bufMod = bufMod;
1562 asyncHandle->
count = count;
1564 asyncHandle->
dest = dest;
1565 asyncHandle->
tag = tag;
1566 asyncHandle->
comm = comm;
1568 request->
handle = asyncHandle;
1582 template<
typename DATATYPE>
1588 typename DATATYPE::ModifiedType* bufMod = asyncHandle->
bufMod;
1589 int count = asyncHandle->
count;
1590 DATATYPE* datatype = asyncHandle->
datatype;
1591 int dest = asyncHandle->
dest;
1592 int tag = asyncHandle->
tag;
1609 if(adType->isActiveType()) {
1611 adType->addToolAction(h);
1618 adType->stopAssembly(h);
1620 if(datatype->isModifiedBufferRequired() ) {
1621 datatype->deleteModifiedTypeBuffer(bufMod);
1631#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
1632 template<
typename DATATYPE>
1658 template<
typename DATATYPE>
1670 template<
typename DATATYPE>
1688 template<
typename DATATYPE>
1699 template<
typename DATATYPE>
1717 template<
typename DATATYPE>
1728 template<
typename DATATYPE>
1743 template<
typename DATATYPE>
1756 template<
typename DATATYPE>
1765 template<
typename DATATYPE>
1773 template<
typename DATATYPE>
1775 template<
typename DATATYPE>
1783 rStatus = MPI_Isend(buf, count, datatype->getMpiType(), dest, tag, comm, &request->
request);
1788 typename DATATYPE::ModifiedType* bufMod =
nullptr;
1789 int bufElements = 0;
1792 bufElements = count;
1794 if(datatype->isModifiedBufferRequired() ) {
1795 datatype->createModifiedTypeBuffer(bufMod, bufElements);
1797 bufMod =
reinterpret_cast<typename DATATYPE::ModifiedType*
>(
const_cast<typename DATATYPE::Type*
>(buf));
1805 if(datatype->isModifiedBufferRequired()) {
1806 datatype->copyIntoModifiedBuffer(buf, 0, bufMod, 0, count);
1813 h->
bufCount = datatype->computeActiveElements(count);
1814 h->
bufTotalSize = datatype->computeActiveElements(bufElements);
1820 datatype->getIndices(buf, 0, h->
bufIndices, 0, count);
1837 rStatus = MPI_Isend(bufMod, count, datatype->getModifiedMpiType(), dest, tag, comm, &request->
request);
1840 asyncHandle->
buf = buf;
1841 asyncHandle->
bufMod = bufMod;
1842 asyncHandle->
count = count;
1844 asyncHandle->
dest = dest;
1845 asyncHandle->
tag = tag;
1846 asyncHandle->
comm = comm;
1848 request->
handle = asyncHandle;
1862 template<
typename DATATYPE>
1868 typename DATATYPE::ModifiedType* bufMod = asyncHandle->
bufMod;
1869 int count = asyncHandle->
count;
1870 DATATYPE* datatype = asyncHandle->
datatype;
1871 int dest = asyncHandle->
dest;
1872 int tag = asyncHandle->
tag;
1889 if(adType->isActiveType()) {
1891 adType->addToolAction(h);
1898 adType->stopAssembly(h);
1900 if(datatype->isModifiedBufferRequired() ) {
1901 datatype->deleteModifiedTypeBuffer(bufMod);
1911#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
1912 template<
typename DATATYPE>
1938 template<
typename DATATYPE>
1950 template<
typename DATATYPE>
1968 template<
typename DATATYPE>
1979 template<
typename DATATYPE>
1997 template<
typename DATATYPE>
2008 template<
typename DATATYPE>
2023 template<
typename DATATYPE>
2036 template<
typename DATATYPE>
2045 template<
typename DATATYPE>
2053 template<
typename DATATYPE>
2055 template<
typename DATATYPE>
2063 rStatus = MPI_Issend(buf, count, datatype->getMpiType(), dest, tag, comm, &request->
request);
2068 typename DATATYPE::ModifiedType* bufMod =
nullptr;
2069 int bufElements = 0;
2072 bufElements = count;
2074 if(datatype->isModifiedBufferRequired() ) {
2075 datatype->createModifiedTypeBuffer(bufMod, bufElements);
2077 bufMod =
reinterpret_cast<typename DATATYPE::ModifiedType*
>(
const_cast<typename DATATYPE::Type*
>(buf));
2085 if(datatype->isModifiedBufferRequired()) {
2086 datatype->copyIntoModifiedBuffer(buf, 0, bufMod, 0, count);
2093 h->
bufCount = datatype->computeActiveElements(count);
2094 h->
bufTotalSize = datatype->computeActiveElements(bufElements);
2100 datatype->getIndices(buf, 0, h->
bufIndices, 0, count);
2117 rStatus = MPI_Issend(bufMod, count, datatype->getModifiedMpiType(), dest, tag, comm, &request->
request);
2120 asyncHandle->
buf = buf;
2121 asyncHandle->
bufMod = bufMod;
2122 asyncHandle->
count = count;
2124 asyncHandle->
dest = dest;
2125 asyncHandle->
tag = tag;
2126 asyncHandle->
comm = comm;
2128 request->
handle = asyncHandle;
2142 template<
typename DATATYPE>
2148 typename DATATYPE::ModifiedType* bufMod = asyncHandle->
bufMod;
2149 int count = asyncHandle->
count;
2150 DATATYPE* datatype = asyncHandle->
datatype;
2151 int dest = asyncHandle->
dest;
2152 int tag = asyncHandle->
tag;
2169 if(adType->isActiveType()) {
2171 adType->addToolAction(h);
2178 adType->stopAssembly(h);
2180 if(datatype->isModifiedBufferRequired() ) {
2181 datatype->deleteModifiedTypeBuffer(bufMod);
2191#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
2192 template<
typename DATATYPE>
2224 template<
typename DATATYPE>
2236 if(adType->isOldPrimalsRequired()) {
2244 template<
typename DATATYPE>
2262 template<
typename DATATYPE>
2274 if(adType->isOldPrimalsRequired()) {
2284 template<
typename DATATYPE>
2292 template<
typename DATATYPE>
2301 template<
typename DATATYPE>
2309 rStatus = MPI_Mrecv(buf, count, datatype->getMpiType(), &message->
message, status);
2314 typename DATATYPE::ModifiedType* bufMod =
nullptr;
2315 int bufElements = 0;
2318 bufElements = count;
2320 if(datatype->isModifiedBufferRequired() ) {
2321 datatype->createModifiedTypeBuffer(bufMod, bufElements);
2323 bufMod =
reinterpret_cast<typename DATATYPE::ModifiedType*
>(
const_cast<typename DATATYPE::Type*
>(buf));
2336 h->
bufCount = datatype->computeActiveElements(count);
2337 h->
bufTotalSize = datatype->computeActiveElements(bufElements);
2350 datatype->createIndices(buf, 0, h->
bufIndices, 0, count);
2365 if(!datatype->isModifiedBufferRequired()) {
2366 datatype->clearIndices(buf, 0, count);
2369 rStatus = MPI_Mrecv(bufMod, count, datatype->getModifiedMpiType(), &message->
message, status);
2372 if(datatype->isModifiedBufferRequired()) {
2373 datatype->copyFromModifiedBuffer(buf, 0, bufMod, 0, count);
2383 if(datatype->isModifiedBufferRequired() ) {
2384 datatype->deleteModifiedTypeBuffer(bufMod);
2394#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
2395 template<
typename DATATYPE>
2428 template<
typename DATATYPE>
2442 if(adType->isOldPrimalsRequired()) {
2450 template<
typename DATATYPE>
2469 template<
typename DATATYPE>
2482 if(adType->isOldPrimalsRequired()) {
2492 template<
typename DATATYPE>
2500 template<
typename DATATYPE>
2509 template<
typename DATATYPE>
2510 int AMPI_Recv(
typename DATATYPE::Type* buf,
int count, DATATYPE* datatype,
int source,
int tag,
AMPI_Comm comm,
2517 rStatus = MPI_Recv(buf, count, datatype->getMpiType(), source, tag, comm, status);
2522 typename DATATYPE::ModifiedType* bufMod =
nullptr;
2523 int bufElements = 0;
2526 bufElements = count;
2528 if(datatype->isModifiedBufferRequired() ) {
2529 datatype->createModifiedTypeBuffer(bufMod, bufElements);
2531 bufMod =
reinterpret_cast<typename DATATYPE::ModifiedType*
>(
const_cast<typename DATATYPE::Type*
>(buf));
2544 h->
bufCount = datatype->computeActiveElements(count);
2545 h->
bufTotalSize = datatype->computeActiveElements(bufElements);
2558 datatype->createIndices(buf, 0, h->
bufIndices, 0, count);
2574 if(!datatype->isModifiedBufferRequired()) {
2575 datatype->clearIndices(buf, 0, count);
2578 rStatus = MPI_Recv(bufMod, count, datatype->getModifiedMpiType(), source, tag, comm, status);
2581 if(datatype->isModifiedBufferRequired()) {
2582 datatype->copyFromModifiedBuffer(buf, 0, bufMod, 0, count);
2592 if(datatype->isModifiedBufferRequired() ) {
2593 datatype->deleteModifiedTypeBuffer(bufMod);
2603#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
2605 template<
typename DATATYPE>
2619 template<
typename DATATYPE>
2627 template<
typename DATATYPE>
2636 template<
typename DATATYPE>
2638 template<
typename DATATYPE>
2640 template<
typename DATATYPE>
2642 template<
typename DATATYPE>
2650 rStatus = MPI_Recv_init(buf, count, datatype->getMpiType(), source, tag, comm, &request->
request);
2655 typename DATATYPE::ModifiedType* bufMod =
nullptr;
2656 int bufElements = 0;
2659 bufElements = count;
2661 if(datatype->isModifiedBufferRequired() ) {
2662 datatype->createModifiedTypeBuffer(bufMod, bufElements);
2664 bufMod =
reinterpret_cast<typename DATATYPE::ModifiedType*
>(
const_cast<typename DATATYPE::Type*
>(buf));
2667 rStatus = MPI_Recv_init(bufMod, count, datatype->getModifiedMpiType(), source, tag, comm, &request->
request);
2670 asyncHandle->
buf = buf;
2671 asyncHandle->
bufMod = bufMod;
2672 asyncHandle->
count = count;
2674 asyncHandle->
source = source;
2675 asyncHandle->
tag = tag;
2676 asyncHandle->
comm = comm;
2679 request->
handle = asyncHandle;
2688 template<
typename DATATYPE>
2693 typename DATATYPE::Type* buf = asyncHandle->
buf;
2694 typename DATATYPE::ModifiedType* bufMod = asyncHandle->
bufMod;
2695 int count = asyncHandle->
count;
2696 DATATYPE* datatype = asyncHandle->
datatype;
2697 int source = asyncHandle->
source;
2698 int tag = asyncHandle->
tag;
2716 if(adType->isActiveType()) {
2718 int bufElements = 0;
2721 bufElements = count;
2723 if(adType->isHandleRequired()) {
2726 adType->startAssembly(h);
2732 h->
bufCount = datatype->computeActiveElements(count);
2733 h->
bufTotalSize = datatype->computeActiveElements(bufElements);
2739 if(adType->isOldPrimalsRequired()) {
2746 datatype->createIndices(buf, 0, h->
bufIndices, 0, count);
2762 if(!datatype->isModifiedBufferRequired()) {
2763 datatype->clearIndices(buf, 0, count);
2772 adType->addToolAction(waitH);
2779 template<
typename DATATYPE>
2784 typename DATATYPE::Type* buf = asyncHandle->
buf;
2785 typename DATATYPE::ModifiedType* bufMod = asyncHandle->
bufMod;
2786 int count = asyncHandle->
count;
2787 DATATYPE* datatype = asyncHandle->
datatype;
2788 int source = asyncHandle->
source;
2789 int tag = asyncHandle->
tag;
2807 if(adType->isActiveType()) {
2809 adType->addToolAction(h);
2811 if(datatype->isModifiedBufferRequired()) {
2812 datatype->copyFromModifiedBuffer(buf, 0, bufMod, 0, count);
2820 adType->stopAssembly(h);
2826 template<
typename DATATYPE>
2831 typename DATATYPE::Type* buf = asyncHandle->
buf;
2832 typename DATATYPE::ModifiedType* bufMod = asyncHandle->
bufMod;
2833 int count = asyncHandle->
count;
2834 DATATYPE* datatype = asyncHandle->
datatype;
2835 int source = asyncHandle->
source;
2836 int tag = asyncHandle->
tag;
2855 if(adType->isActiveType()) {
2858 if(datatype->isModifiedBufferRequired() ) {
2859 datatype->deleteModifiedTypeBuffer(bufMod);
2869#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
2870 template<
typename DATATYPE>
2897 template<
typename DATATYPE>
2915 template<
typename DATATYPE>
2933 template<
typename DATATYPE>
2950 template<
typename DATATYPE>
2959 template<
typename DATATYPE>
2967 template<
typename DATATYPE>
2975 rStatus = MPI_Rsend(buf, count, datatype->getMpiType(), dest, tag, comm);
2980 typename DATATYPE::ModifiedType* bufMod =
nullptr;
2981 int bufElements = 0;
2984 bufElements = count;
2986 if(datatype->isModifiedBufferRequired() ) {
2987 datatype->createModifiedTypeBuffer(bufMod, bufElements);
2989 bufMod =
reinterpret_cast<typename DATATYPE::ModifiedType*
>(
const_cast<typename DATATYPE::Type*
>(buf));
2997 if(datatype->isModifiedBufferRequired()) {
2998 datatype->copyIntoModifiedBuffer(buf, 0, bufMod, 0, count);
3005 h->
bufCount = datatype->computeActiveElements(count);
3006 h->
bufTotalSize = datatype->computeActiveElements(bufElements);
3012 datatype->getIndices(buf, 0, h->
bufIndices, 0, count);
3029 rStatus = MPI_Rsend(bufMod, count, datatype->getModifiedMpiType(), dest, tag, comm);
3039 if(datatype->isModifiedBufferRequired() ) {
3040 datatype->deleteModifiedTypeBuffer(bufMod);
3050#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
3052 template<
typename DATATYPE>
3065 template<
typename DATATYPE>
3074 template<
typename DATATYPE>
3082 template<
typename DATATYPE>
3084 template<
typename DATATYPE>
3086 template<
typename DATATYPE>
3088 template<
typename DATATYPE>
3096 rStatus = MPI_Rsend_init(buf, count, datatype->getMpiType(), dest, tag, comm, &request->
request);
3101 typename DATATYPE::ModifiedType* bufMod =
nullptr;
3102 int bufElements = 0;
3105 bufElements = count;
3107 if(datatype->isModifiedBufferRequired() ) {
3108 datatype->createModifiedTypeBuffer(bufMod, bufElements);
3110 bufMod =
reinterpret_cast<typename DATATYPE::ModifiedType*
>(
const_cast<typename DATATYPE::Type*
>(buf));
3113 rStatus = MPI_Rsend_init(bufMod, count, datatype->getModifiedMpiType(), dest, tag, comm, &request->
request);
3116 asyncHandle->
buf = buf;
3117 asyncHandle->
bufMod = bufMod;
3118 asyncHandle->
count = count;
3120 asyncHandle->
dest = dest;
3121 asyncHandle->
tag = tag;
3122 asyncHandle->
comm = comm;
3124 request->
handle = asyncHandle;
3133 template<
typename DATATYPE>
3139 typename DATATYPE::ModifiedType* bufMod = asyncHandle->
bufMod;
3140 int count = asyncHandle->
count;
3141 DATATYPE* datatype = asyncHandle->
datatype;
3142 int dest = asyncHandle->
dest;
3143 int tag = asyncHandle->
tag;
3159 if(adType->isActiveType()) {
3161 int bufElements = 0;
3164 bufElements = count;
3166 if(adType->isHandleRequired()) {
3169 adType->startAssembly(h);
3170 if(datatype->isModifiedBufferRequired()) {
3171 datatype->copyIntoModifiedBuffer(buf, 0, bufMod, 0, count);
3178 h->
bufCount = datatype->computeActiveElements(count);
3179 h->
bufTotalSize = datatype->computeActiveElements(bufElements);
3185 datatype->getIndices(buf, 0, h->
bufIndices, 0, count);
3208 adType->addToolAction(waitH);
3215 template<
typename DATATYPE>
3221 typename DATATYPE::ModifiedType* bufMod = asyncHandle->
bufMod;
3222 int count = asyncHandle->
count;
3223 DATATYPE* datatype = asyncHandle->
datatype;
3224 int dest = asyncHandle->
dest;
3225 int tag = asyncHandle->
tag;
3241 if(adType->isActiveType()) {
3243 adType->addToolAction(h);
3250 adType->stopAssembly(h);
3256 template<
typename DATATYPE>
3262 typename DATATYPE::ModifiedType* bufMod = asyncHandle->
bufMod;
3263 int count = asyncHandle->
count;
3264 DATATYPE* datatype = asyncHandle->
datatype;
3265 int dest = asyncHandle->
dest;
3266 int tag = asyncHandle->
tag;
3283 if(adType->isActiveType()) {
3286 if(datatype->isModifiedBufferRequired() ) {
3287 datatype->deleteModifiedTypeBuffer(bufMod);
3297#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
3298 template<
typename DATATYPE>
3325 template<
typename DATATYPE>
3343 template<
typename DATATYPE>
3361 template<
typename DATATYPE>
3378 template<
typename DATATYPE>
3387 template<
typename DATATYPE>
3395 template<
typename DATATYPE>
3403 rStatus = MPI_Send(buf, count, datatype->getMpiType(), dest, tag, comm);
3408 typename DATATYPE::ModifiedType* bufMod =
nullptr;
3409 int bufElements = 0;
3412 bufElements = count;
3414 if(datatype->isModifiedBufferRequired() ) {
3415 datatype->createModifiedTypeBuffer(bufMod, bufElements);
3417 bufMod =
reinterpret_cast<typename DATATYPE::ModifiedType*
>(
const_cast<typename DATATYPE::Type*
>(buf));
3425 if(datatype->isModifiedBufferRequired()) {
3426 datatype->copyIntoModifiedBuffer(buf, 0, bufMod, 0, count);
3433 h->
bufCount = datatype->computeActiveElements(count);
3434 h->
bufTotalSize = datatype->computeActiveElements(bufElements);
3440 datatype->getIndices(buf, 0, h->
bufIndices, 0, count);
3457 rStatus = MPI_Send(bufMod, count, datatype->getModifiedMpiType(), dest, tag, comm);
3467 if(datatype->isModifiedBufferRequired() ) {
3468 datatype->deleteModifiedTypeBuffer(bufMod);
3478#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
3480 template<
typename DATATYPE>
3493 template<
typename DATATYPE>
3502 template<
typename DATATYPE>
3510 template<
typename DATATYPE>
3512 template<
typename DATATYPE>
3514 template<
typename DATATYPE>
3516 template<
typename DATATYPE>
3524 rStatus = MPI_Send_init(buf, count, datatype->getMpiType(), dest, tag, comm, &request->
request);
3529 typename DATATYPE::ModifiedType* bufMod =
nullptr;
3530 int bufElements = 0;
3533 bufElements = count;
3535 if(datatype->isModifiedBufferRequired() ) {
3536 datatype->createModifiedTypeBuffer(bufMod, bufElements);
3538 bufMod =
reinterpret_cast<typename DATATYPE::ModifiedType*
>(
const_cast<typename DATATYPE::Type*
>(buf));
3541 rStatus = MPI_Send_init(bufMod, count, datatype->getModifiedMpiType(), dest, tag, comm, &request->
request);
3544 asyncHandle->
buf = buf;
3545 asyncHandle->
bufMod = bufMod;
3546 asyncHandle->
count = count;
3548 asyncHandle->
dest = dest;
3549 asyncHandle->
tag = tag;
3550 asyncHandle->
comm = comm;
3552 request->
handle = asyncHandle;
3561 template<
typename DATATYPE>
3567 typename DATATYPE::ModifiedType* bufMod = asyncHandle->
bufMod;
3568 int count = asyncHandle->
count;
3569 DATATYPE* datatype = asyncHandle->
datatype;
3570 int dest = asyncHandle->
dest;
3571 int tag = asyncHandle->
tag;
3587 if(adType->isActiveType()) {
3589 int bufElements = 0;
3592 bufElements = count;
3594 if(adType->isHandleRequired()) {
3597 adType->startAssembly(h);
3598 if(datatype->isModifiedBufferRequired()) {
3599 datatype->copyIntoModifiedBuffer(buf, 0, bufMod, 0, count);
3606 h->
bufCount = datatype->computeActiveElements(count);
3607 h->
bufTotalSize = datatype->computeActiveElements(bufElements);
3613 datatype->getIndices(buf, 0, h->
bufIndices, 0, count);
3636 adType->addToolAction(waitH);
3643 template<
typename DATATYPE>
3649 typename DATATYPE::ModifiedType* bufMod = asyncHandle->
bufMod;
3650 int count = asyncHandle->
count;
3651 DATATYPE* datatype = asyncHandle->
datatype;
3652 int dest = asyncHandle->
dest;
3653 int tag = asyncHandle->
tag;
3669 if(adType->isActiveType()) {
3671 adType->addToolAction(h);
3678 adType->stopAssembly(h);
3684 template<
typename DATATYPE>
3690 typename DATATYPE::ModifiedType* bufMod = asyncHandle->
bufMod;
3691 int count = asyncHandle->
count;
3692 DATATYPE* datatype = asyncHandle->
datatype;
3693 int dest = asyncHandle->
dest;
3694 int tag = asyncHandle->
tag;
3711 if(adType->isActiveType()) {
3714 if(datatype->isModifiedBufferRequired() ) {
3715 datatype->deleteModifiedTypeBuffer(bufMod);
3725#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
3726 template<
typename SENDTYPE,
typename RECVTYPE>
3776 template<
typename SENDTYPE,
typename RECVTYPE>
3798 if(adType->isOldPrimalsRequired()) {
3806 template<
typename SENDTYPE,
typename RECVTYPE>
3833 template<
typename SENDTYPE,
typename RECVTYPE>
3847 if(adType->isOldPrimalsRequired()) {
3863 template<
typename SENDTYPE,
typename RECVTYPE>
3873 template<
typename SENDTYPE,
typename RECVTYPE>
3883 template<
typename SENDTYPE,
typename RECVTYPE>
3885 int sendtag,
typename RECVTYPE::Type* recvbuf,
int recvcount, RECVTYPE* recvtype,
int source,
int recvtag,
3892 rStatus = MPI_Sendrecv(sendbuf, sendcount, sendtype->getMpiType(), dest, sendtag, recvbuf, recvcount,
3893 recvtype->getMpiType(), source, recvtag, comm, status);
3898 typename SENDTYPE::ModifiedType* sendbufMod =
nullptr;
3899 int sendbufElements = 0;
3902 sendbufElements = sendcount;
3904 if(sendtype->isModifiedBufferRequired() ) {
3905 sendtype->createModifiedTypeBuffer(sendbufMod, sendbufElements);
3907 sendbufMod =
reinterpret_cast<typename SENDTYPE::ModifiedType*
>(
const_cast<typename SENDTYPE::Type*
>(sendbuf));
3909 typename RECVTYPE::ModifiedType* recvbufMod =
nullptr;
3910 int recvbufElements = 0;
3913 recvbufElements = recvcount;
3915 if(recvtype->isModifiedBufferRequired() ) {
3916 recvtype->createModifiedTypeBuffer(recvbufMod, recvbufElements);
3918 recvbufMod =
reinterpret_cast<typename RECVTYPE::ModifiedType*
>(
const_cast<typename RECVTYPE::Type*
>(recvbuf));
3926 if(sendtype->isModifiedBufferRequired()) {
3927 sendtype->copyIntoModifiedBuffer(sendbuf, 0, sendbufMod, 0, sendcount);
3934 h->
sendbufCount = sendtype->computeActiveElements(sendcount);
3937 h->
recvbufCount = recvtype->computeActiveElements(recvcount);
3950 sendtype->getIndices(sendbuf, 0, h->
sendbufIndices, 0, sendcount);
3952 recvtype->createIndices(recvbuf, 0, h->
recvbufIndices, 0, recvcount);
3971 if(!recvtype->isModifiedBufferRequired()) {
3972 recvtype->clearIndices(recvbuf, 0, recvcount);
3975 rStatus = MPI_Sendrecv(sendbufMod, sendcount, sendtype->getModifiedMpiType(), dest, sendtag, recvbufMod, recvcount,
3976 recvtype->getModifiedMpiType(), source, recvtag, comm, status);
3979 if(recvtype->isModifiedBufferRequired()) {
3980 recvtype->copyFromModifiedBuffer(recvbuf, 0, recvbufMod, 0, recvcount);
3990 if(sendtype->isModifiedBufferRequired() ) {
3991 sendtype->deleteModifiedTypeBuffer(sendbufMod);
3993 if(recvtype->isModifiedBufferRequired() ) {
3994 recvtype->deleteModifiedTypeBuffer(recvbufMod);
4004#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
4005 template<
typename DATATYPE>
4032 template<
typename DATATYPE>
4050 template<
typename DATATYPE>
4068 template<
typename DATATYPE>
4085 template<
typename DATATYPE>
4094 template<
typename DATATYPE>
4102 template<
typename DATATYPE>
4110 rStatus = MPI_Ssend(buf, count, datatype->getMpiType(), dest, tag, comm);
4115 typename DATATYPE::ModifiedType* bufMod =
nullptr;
4116 int bufElements = 0;
4119 bufElements = count;
4121 if(datatype->isModifiedBufferRequired() ) {
4122 datatype->createModifiedTypeBuffer(bufMod, bufElements);
4124 bufMod =
reinterpret_cast<typename DATATYPE::ModifiedType*
>(
const_cast<typename DATATYPE::Type*
>(buf));
4132 if(datatype->isModifiedBufferRequired()) {
4133 datatype->copyIntoModifiedBuffer(buf, 0, bufMod, 0, count);
4140 h->
bufCount = datatype->computeActiveElements(count);
4141 h->
bufTotalSize = datatype->computeActiveElements(bufElements);
4147 datatype->getIndices(buf, 0, h->
bufIndices, 0, count);
4164 rStatus = MPI_Ssend(bufMod, count, datatype->getModifiedMpiType(), dest, tag, comm);
4174 if(datatype->isModifiedBufferRequired() ) {
4175 datatype->deleteModifiedTypeBuffer(bufMod);
4185#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
4187 template<
typename DATATYPE>
4200 template<
typename DATATYPE>
4209 template<
typename DATATYPE>
4217 template<
typename DATATYPE>
4219 template<
typename DATATYPE>
4221 template<
typename DATATYPE>
4223 template<
typename DATATYPE>
4231 rStatus = MPI_Ssend_init(buf, count, datatype->getMpiType(), dest, tag, comm, &request->
request);
4236 typename DATATYPE::ModifiedType* bufMod =
nullptr;
4237 int bufElements = 0;
4240 bufElements = count;
4242 if(datatype->isModifiedBufferRequired() ) {
4243 datatype->createModifiedTypeBuffer(bufMod, bufElements);
4245 bufMod =
reinterpret_cast<typename DATATYPE::ModifiedType*
>(
const_cast<typename DATATYPE::Type*
>(buf));
4248 rStatus = MPI_Ssend_init(bufMod, count, datatype->getModifiedMpiType(), dest, tag, comm, &request->
request);
4251 asyncHandle->
buf = buf;
4252 asyncHandle->
bufMod = bufMod;
4253 asyncHandle->
count = count;
4255 asyncHandle->
dest = dest;
4256 asyncHandle->
tag = tag;
4257 asyncHandle->
comm = comm;
4259 request->
handle = asyncHandle;
4268 template<
typename DATATYPE>
4274 typename DATATYPE::ModifiedType* bufMod = asyncHandle->
bufMod;
4275 int count = asyncHandle->
count;
4276 DATATYPE* datatype = asyncHandle->
datatype;
4277 int dest = asyncHandle->
dest;
4278 int tag = asyncHandle->
tag;
4294 if(adType->isActiveType()) {
4296 int bufElements = 0;
4299 bufElements = count;
4301 if(adType->isHandleRequired()) {
4304 adType->startAssembly(h);
4305 if(datatype->isModifiedBufferRequired()) {
4306 datatype->copyIntoModifiedBuffer(buf, 0, bufMod, 0, count);
4313 h->
bufCount = datatype->computeActiveElements(count);
4314 h->
bufTotalSize = datatype->computeActiveElements(bufElements);
4320 datatype->getIndices(buf, 0, h->
bufIndices, 0, count);
4343 adType->addToolAction(waitH);
4350 template<
typename DATATYPE>
4356 typename DATATYPE::ModifiedType* bufMod = asyncHandle->
bufMod;
4357 int count = asyncHandle->
count;
4358 DATATYPE* datatype = asyncHandle->
datatype;
4359 int dest = asyncHandle->
dest;
4360 int tag = asyncHandle->
tag;
4376 if(adType->isActiveType()) {
4378 adType->addToolAction(h);
4385 adType->stopAssembly(h);
4391 template<
typename DATATYPE>
4397 typename DATATYPE::ModifiedType* bufMod = asyncHandle->
bufMod;
4398 int count = asyncHandle->
count;
4399 DATATYPE* datatype = asyncHandle->
datatype;
4400 int dest = asyncHandle->
dest;
4401 int tag = asyncHandle->
tag;
4418 if(adType->isActiveType()) {
4421 if(datatype->isModifiedBufferRequired() ) {
4422 datatype->deleteModifiedTypeBuffer(bufMod);
4432#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
4433 template<
typename SENDTYPE,
typename RECVTYPE>
4479 template<
typename SENDTYPE,
typename RECVTYPE>
4500 if(adType->isOldPrimalsRequired()) {
4508 template<
typename SENDTYPE,
typename RECVTYPE>
4534 template<
typename SENDTYPE,
typename RECVTYPE>
4547 if(adType->isOldPrimalsRequired()) {
4564 template<
typename SENDTYPE,
typename RECVTYPE>
4574 template<
typename SENDTYPE,
typename RECVTYPE>
4584 template<
typename SENDTYPE,
typename RECVTYPE>
4586 typename RECVTYPE::Type* recvbuf,
int recvcount, RECVTYPE* recvtype,
AMPI_Comm comm) {
4592 rStatus = MPI_Allgather(sendbuf, sendcount, sendtype->getMpiType(), recvbuf, recvcount, recvtype->getMpiType(), comm);
4597 typename SENDTYPE::ModifiedType* sendbufMod =
nullptr;
4598 int sendbufElements = 0;
4602 sendbufElements = sendcount;
4604 sendbufElements = recvcount;
4607 if(sendtype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == sendbuf)) {
4608 sendtype->createModifiedTypeBuffer(sendbufMod, sendbufElements);
4610 sendbufMod =
reinterpret_cast<typename SENDTYPE::ModifiedType*
>(
const_cast<typename SENDTYPE::Type*
>(sendbuf));
4612 typename RECVTYPE::ModifiedType* recvbufMod =
nullptr;
4613 int recvbufElements = 0;
4618 if(recvtype->isModifiedBufferRequired() ) {
4619 recvtype->createModifiedTypeBuffer(recvbufMod, recvbufElements);
4621 recvbufMod =
reinterpret_cast<typename RECVTYPE::ModifiedType*
>(
const_cast<typename RECVTYPE::Type*
>(recvbuf));
4629 if(sendtype->isModifiedBufferRequired()) {
4631 sendtype->copyIntoModifiedBuffer(sendbuf, 0, sendbufMod, 0, sendcount);
4633 recvtype->copyIntoModifiedBuffer(recvbuf, recvcount *
getCommRank(comm), recvbufMod, recvcount *
getCommRank(comm),
4643 h->
sendbufCount = sendtype->computeActiveElements(sendcount);
4645 h->
sendbufCount = recvtype->computeActiveElements(recvcount);
4649 h->
recvbufCount = recvtype->computeActiveElements(recvcount);
4663 sendtype->getIndices(sendbuf, 0, h->
sendbufIndices, 0, sendcount);
4683 if(!recvtype->isModifiedBufferRequired()) {
4684 recvtype->clearIndices(recvbuf, 0, recvcount *
getCommSize(comm));
4687 rStatus = MPI_Allgather(sendbufMod, sendcount, sendtype->getModifiedMpiType(), recvbufMod, recvcount,
4688 recvtype->getModifiedMpiType(), comm);
4691 if(recvtype->isModifiedBufferRequired()) {
4692 recvtype->copyFromModifiedBuffer(recvbuf, 0, recvbufMod, 0, recvcount *
getCommSize(comm));
4702 if(sendtype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == sendbuf)) {
4703 sendtype->deleteModifiedTypeBuffer(sendbufMod);
4705 if(recvtype->isModifiedBufferRequired() ) {
4706 recvtype->deleteModifiedTypeBuffer(recvbufMod);
4716#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
4717 template<
typename SENDTYPE,
typename RECVTYPE>
4769 template<
typename SENDTYPE,
typename RECVTYPE>
4791 if(adType->isOldPrimalsRequired()) {
4801 template<
typename SENDTYPE,
typename RECVTYPE>
4830 template<
typename SENDTYPE,
typename RECVTYPE>
4844 if(adType->isOldPrimalsRequired()) {
4863 template<
typename SENDTYPE,
typename RECVTYPE>
4873 template<
typename SENDTYPE,
typename RECVTYPE>
4883 template<
typename SENDTYPE,
typename RECVTYPE>
4892 rStatus = MPI_Allgatherv(sendbuf, sendcount, sendtype->getMpiType(), recvbuf, recvcounts, displs,
4893 recvtype->getMpiType(), comm);
4899 int displsTotalSize = 0;
4900 if(
nullptr != displs) {
4902 if(recvtype->isModifiedBufferRequired()) {
4906 typename SENDTYPE::ModifiedType* sendbufMod =
nullptr;
4907 int sendbufElements = 0;
4911 sendbufElements = sendcount;
4916 if(sendtype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == sendbuf)) {
4917 sendtype->createModifiedTypeBuffer(sendbufMod, sendbufElements);
4919 sendbufMod =
reinterpret_cast<typename SENDTYPE::ModifiedType*
>(
const_cast<typename SENDTYPE::Type*
>(sendbuf));
4921 typename RECVTYPE::ModifiedType* recvbufMod =
nullptr;
4922 int recvbufElements = 0;
4925 recvbufElements = displsTotalSize;
4927 if(recvtype->isModifiedBufferRequired() ) {
4928 recvtype->createModifiedTypeBuffer(recvbufMod, recvbufElements);
4930 recvbufMod =
reinterpret_cast<typename RECVTYPE::ModifiedType*
>(
const_cast<typename RECVTYPE::Type*
>(recvbuf));
4938 if(sendtype->isModifiedBufferRequired()) {
4940 sendtype->copyIntoModifiedBuffer(sendbuf, 0, sendbufMod, 0, sendcount);
4944 recvtype->copyIntoModifiedBuffer(recvbuf, displs[rank], recvbufMod, displsMod[rank], recvcounts[rank]);
4954 h->
sendbufCount = sendtype->computeActiveElements(sendcount);
4957 comm)]) - recvtype->computeActiveElements(displs[
getCommRank(comm)]);
4971 recvtype->getValues(recvbuf, displs[i], h->
recvbufOldPrimals, displsMod[i], recvcounts[i]);
4977 sendtype->getIndices(sendbuf, 0, h->
sendbufIndices, 0, sendcount);
4981 recvtype->getIndices(recvbuf, displs[rank], h->
sendbufIndices, 0, recvcounts[rank]);
4986 recvtype->createIndices(recvbuf, displs[i], h->
recvbufIndices, displsMod[i], recvcounts[i]);
5003 if(!recvtype->isModifiedBufferRequired()) {
5005 recvtype->clearIndices(recvbuf, displs[i], recvcounts[i]);
5009 rStatus = MPI_Allgatherv(sendbufMod, sendcount, sendtype->getModifiedMpiType(), recvbufMod, recvcounts, displsMod,
5010 recvtype->getModifiedMpiType(), comm);
5013 if(recvtype->isModifiedBufferRequired()) {
5015 recvtype->copyFromModifiedBuffer(recvbuf, displs[i], recvbufMod, displsMod[i], recvcounts[i]);
5027 if(recvtype->isModifiedBufferRequired()) {
5028 delete [] displsMod;
5031 if(sendtype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == sendbuf)) {
5032 sendtype->deleteModifiedTypeBuffer(sendbufMod);
5034 if(recvtype->isModifiedBufferRequired() ) {
5035 recvtype->deleteModifiedTypeBuffer(recvbufMod);
5045#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
5046 template<
typename DATATYPE>
5091 template<
typename DATATYPE>
5097 AMPI_Op convOp = adType->convertOperator(h->
op);
5113 if(adType->isOldPrimalsRequired()) {
5121 template<
typename DATATYPE>
5127 AMPI_Op convOp = adType->convertOperator(h->
op);
5148 template<
typename DATATYPE>
5154 AMPI_Op convOp = adType->convertOperator(h->
op);
5163 if(adType->isOldPrimalsRequired()) {
5184 template<
typename DATATYPE>
5193 template<
typename DATATYPE>
5202 template<
typename DATATYPE>
5212 rStatus = MPI_Allreduce(sendbuf, recvbuf, count, datatype->getMpiType(), convOp.
primalFunction, comm);
5217 typename DATATYPE::ModifiedType* sendbufMod =
nullptr;
5218 int sendbufElements = 0;
5222 sendbufElements = count;
5224 sendbufElements = count;
5227 if(datatype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == sendbuf)) {
5228 datatype->createModifiedTypeBuffer(sendbufMod, sendbufElements);
5230 sendbufMod =
reinterpret_cast<typename DATATYPE::ModifiedType*
>(
const_cast<typename DATATYPE::Type*
>(sendbuf));
5232 typename DATATYPE::ModifiedType* recvbufMod =
nullptr;
5233 int recvbufElements = 0;
5236 recvbufElements = count;
5238 if(datatype->isModifiedBufferRequired() ) {
5239 datatype->createModifiedTypeBuffer(recvbufMod, recvbufElements);
5241 recvbufMod =
reinterpret_cast<typename DATATYPE::ModifiedType*
>(
const_cast<typename DATATYPE::Type*
>(recvbuf));
5249 if(datatype->isModifiedBufferRequired()) {
5251 datatype->copyIntoModifiedBuffer(sendbuf, 0, sendbufMod, 0, count);
5253 datatype->copyIntoModifiedBuffer(recvbuf, 0, recvbufMod, 0, count);
5262 h->
sendbufCount = datatype->computeActiveElements(count);
5264 h->
sendbufCount = datatype->computeActiveElements(count);
5268 h->
recvbufCount = datatype->computeActiveElements(count);
5296 datatype->createIndices(recvbuf, 0, h->
recvbufIndices, 0, count);
5310 if(!datatype->isModifiedBufferRequired()) {
5311 datatype->clearIndices(recvbuf, 0, count);
5314 rStatus = MPI_Allreduce(sendbufMod, recvbufMod, count, datatype->getModifiedMpiType(), convOp.
modifiedPrimalFunction,
5318 if(datatype->isModifiedBufferRequired()) {
5319 datatype->copyFromModifiedBuffer(recvbuf, 0, recvbufMod, 0, count);
5334 if(datatype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == sendbuf)) {
5335 datatype->deleteModifiedTypeBuffer(sendbufMod);
5337 if(datatype->isModifiedBufferRequired() ) {
5338 datatype->deleteModifiedTypeBuffer(recvbufMod);
5348#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
5349 template<
typename SENDTYPE,
typename RECVTYPE>
5395 template<
typename SENDTYPE,
typename RECVTYPE>
5416 if(adType->isOldPrimalsRequired()) {
5424 template<
typename SENDTYPE,
typename RECVTYPE>
5450 template<
typename SENDTYPE,
typename RECVTYPE>
5463 if(adType->isOldPrimalsRequired()) {
5479 template<
typename SENDTYPE,
typename RECVTYPE>
5489 template<
typename SENDTYPE,
typename RECVTYPE>
5499 template<
typename SENDTYPE,
typename RECVTYPE>
5501 typename RECVTYPE::Type* recvbuf,
int recvcount, RECVTYPE* recvtype,
AMPI_Comm comm) {
5507 rStatus = MPI_Alltoall(sendbuf, sendcount, sendtype->getMpiType(), recvbuf, recvcount, recvtype->getMpiType(), comm);
5512 typename SENDTYPE::ModifiedType* sendbufMod =
nullptr;
5513 int sendbufElements = 0;
5522 if(sendtype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == sendbuf)) {
5523 sendtype->createModifiedTypeBuffer(sendbufMod, sendbufElements);
5525 sendbufMod =
reinterpret_cast<typename SENDTYPE::ModifiedType*
>(
const_cast<typename SENDTYPE::Type*
>(sendbuf));
5527 typename RECVTYPE::ModifiedType* recvbufMod =
nullptr;
5528 int recvbufElements = 0;
5533 if(recvtype->isModifiedBufferRequired() ) {
5534 recvtype->createModifiedTypeBuffer(recvbufMod, recvbufElements);
5536 recvbufMod =
reinterpret_cast<typename RECVTYPE::ModifiedType*
>(
const_cast<typename RECVTYPE::Type*
>(recvbuf));
5544 if(sendtype->isModifiedBufferRequired()) {
5546 sendtype->copyIntoModifiedBuffer(sendbuf, 0, sendbufMod, 0, sendcount *
getCommSize(comm));
5548 recvtype->copyIntoModifiedBuffer(recvbuf, 0, recvbufMod, 0, recvcount *
getCommSize(comm));
5557 h->
sendbufCount = sendtype->computeActiveElements(sendcount);
5559 h->
sendbufCount = recvtype->computeActiveElements(recvcount);
5563 h->
recvbufCount = recvtype->computeActiveElements(recvcount);
5597 if(!recvtype->isModifiedBufferRequired()) {
5598 recvtype->clearIndices(recvbuf, 0, recvcount *
getCommSize(comm));
5601 rStatus = MPI_Alltoall(sendbufMod, sendcount, sendtype->getModifiedMpiType(), recvbufMod, recvcount,
5602 recvtype->getModifiedMpiType(), comm);
5605 if(recvtype->isModifiedBufferRequired()) {
5606 recvtype->copyFromModifiedBuffer(recvbuf, 0, recvbufMod, 0, recvcount *
getCommSize(comm));
5616 if(sendtype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == sendbuf)) {
5617 sendtype->deleteModifiedTypeBuffer(sendbufMod);
5619 if(recvtype->isModifiedBufferRequired() ) {
5620 recvtype->deleteModifiedTypeBuffer(recvbufMod);
5630#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
5631 template<
typename SENDTYPE,
typename RECVTYPE>
5689 template<
typename SENDTYPE,
typename RECVTYPE>
5715 if(adType->isOldPrimalsRequired()) {
5725 template<
typename SENDTYPE,
typename RECVTYPE>
5758 template<
typename SENDTYPE,
typename RECVTYPE>
5772 if(adType->isOldPrimalsRequired()) {
5794 template<
typename SENDTYPE,
typename RECVTYPE>
5804 template<
typename SENDTYPE,
typename RECVTYPE>
5814 template<
typename SENDTYPE,
typename RECVTYPE>
5823 rStatus = MPI_Alltoallv(sendbuf, sendcounts, sdispls, sendtype->getMpiType(), recvbuf, recvcounts, rdispls,
5824 recvtype->getMpiType(), comm);
5830 int sdisplsTotalSize = 0;
5831 if(
nullptr != sdispls) {
5833 if(recvtype->isModifiedBufferRequired()) {
5838 int rdisplsTotalSize = 0;
5839 if(
nullptr != rdispls) {
5841 if(recvtype->isModifiedBufferRequired()) {
5845 typename SENDTYPE::ModifiedType* sendbufMod =
nullptr;
5846 int sendbufElements = 0;
5850 sendbufElements = sdisplsTotalSize;
5852 sendbufElements = rdisplsTotalSize;
5855 if(sendtype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == sendbuf)) {
5856 sendtype->createModifiedTypeBuffer(sendbufMod, sendbufElements);
5858 sendbufMod =
reinterpret_cast<typename SENDTYPE::ModifiedType*
>(
const_cast<typename SENDTYPE::Type*
>(sendbuf));
5860 typename RECVTYPE::ModifiedType* recvbufMod =
nullptr;
5861 int recvbufElements = 0;
5864 recvbufElements = rdisplsTotalSize;
5866 if(recvtype->isModifiedBufferRequired() ) {
5867 recvtype->createModifiedTypeBuffer(recvbufMod, recvbufElements);
5869 recvbufMod =
reinterpret_cast<typename RECVTYPE::ModifiedType*
>(
const_cast<typename RECVTYPE::Type*
>(recvbuf));
5877 if(sendtype->isModifiedBufferRequired()) {
5880 sendtype->copyIntoModifiedBuffer(sendbuf, sdispls[i], sendbufMod, sdisplsMod[i], sendcounts[i]);
5884 recvtype->copyIntoModifiedBuffer(recvbuf, rdispls[i], recvbufMod, rdisplsMod[i], recvcounts[i]);
5910 recvtype->getValues(recvbuf, rdispls[i], h->
recvbufOldPrimals, rdisplsMod[i], recvcounts[i]);
5917 sendtype->getIndices(sendbuf, sdispls[i], h->
sendbufIndices, sdisplsMod[i], sendcounts[i]);
5921 recvtype->getIndices(recvbuf, rdispls[i], h->
sendbufIndices, rdisplsMod[i], recvcounts[i]);
5926 recvtype->createIndices(recvbuf, rdispls[i], h->
recvbufIndices, rdisplsMod[i], recvcounts[i]);
5944 if(!recvtype->isModifiedBufferRequired()) {
5946 recvtype->clearIndices(recvbuf, rdispls[i], recvcounts[i]);
5950 rStatus = MPI_Alltoallv(sendbufMod, sendcounts, sdisplsMod, sendtype->getModifiedMpiType(), recvbufMod, recvcounts,
5951 rdisplsMod, recvtype->getModifiedMpiType(), comm);
5954 if(recvtype->isModifiedBufferRequired()) {
5956 recvtype->copyFromModifiedBuffer(recvbuf, rdispls[i], recvbufMod, rdisplsMod[i], recvcounts[i]);
5968 if(recvtype->isModifiedBufferRequired()) {
5969 delete [] sdisplsMod;
5971 if(recvtype->isModifiedBufferRequired()) {
5972 delete [] rdisplsMod;
5975 if(sendtype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == sendbuf)) {
5976 sendtype->deleteModifiedTypeBuffer(sendbufMod);
5978 if(recvtype->isModifiedBufferRequired() ) {
5979 recvtype->deleteModifiedTypeBuffer(recvbufMod);
5989#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
5990 template<
typename DATATYPE>
6035 template<
typename DATATYPE>
6059 if(adType->isOldPrimalsRequired()) {
6067 template<
typename DATATYPE>
6096 template<
typename DATATYPE>
6108 if(adType->isOldPrimalsRequired()) {
6129 template<
typename DATATYPE>
6140 template<
typename DATATYPE>
6149 template<
typename DATATYPE>
6150 int AMPI_Bcast_wrap(
typename DATATYPE::Type* bufferSend,
typename DATATYPE::Type* bufferRecv,
int count,
6151 DATATYPE* datatype,
int root,
AMPI_Comm comm) {
6157 rStatus =
MPI_Bcast_wrap(bufferSend, bufferRecv, count, datatype->getMpiType(), root, comm);
6162 typename DATATYPE::ModifiedType* bufferSendMod =
nullptr;
6163 int bufferSendElements = 0;
6168 bufferSendElements = count;
6170 bufferSendElements = count;
6173 if(datatype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == bufferSend)) {
6174 datatype->createModifiedTypeBuffer(bufferSendMod, bufferSendElements);
6176 bufferSendMod =
reinterpret_cast<typename DATATYPE::ModifiedType*
>(
const_cast<typename DATATYPE::Type*
>(bufferSend));
6179 typename DATATYPE::ModifiedType* bufferRecvMod =
nullptr;
6180 int bufferRecvElements = 0;
6183 bufferRecvElements = count;
6185 if(datatype->isModifiedBufferRequired() ) {
6186 datatype->createModifiedTypeBuffer(bufferRecvMod, bufferRecvElements);
6188 bufferRecvMod =
reinterpret_cast<typename DATATYPE::ModifiedType*
>(
const_cast<typename DATATYPE::Type*
>(bufferRecv));
6197 if(datatype->isModifiedBufferRequired()) {
6199 datatype->copyIntoModifiedBuffer(bufferSend, 0, bufferSendMod, 0, count);
6201 datatype->copyIntoModifiedBuffer(bufferRecv, 0, bufferRecvMod, 0, count);
6254 if(!datatype->isModifiedBufferRequired()) {
6255 datatype->clearIndices(bufferRecv, 0, count);
6258 rStatus =
MPI_Bcast_wrap(bufferSendMod, bufferRecvMod, count, datatype->getModifiedMpiType(), root, comm);
6261 if(datatype->isModifiedBufferRequired()) {
6262 datatype->copyFromModifiedBuffer(bufferRecv, 0, bufferRecvMod, 0, count);
6273 if(datatype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == bufferSend)) {
6274 datatype->deleteModifiedTypeBuffer(bufferSendMod);
6277 if(datatype->isModifiedBufferRequired() ) {
6278 datatype->deleteModifiedTypeBuffer(bufferRecvMod);
6288#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
6289 template<
typename SENDTYPE,
typename RECVTYPE>
6336 template<
typename SENDTYPE,
typename RECVTYPE>
6358 if(adType->isOldPrimalsRequired()) {
6370 template<
typename SENDTYPE,
typename RECVTYPE>
6399 template<
typename SENDTYPE,
typename RECVTYPE>
6413 if(adType->isOldPrimalsRequired()) {
6433 template<
typename SENDTYPE,
typename RECVTYPE>
6442 template<
typename SENDTYPE,
typename RECVTYPE>
6453 template<
typename SENDTYPE,
typename RECVTYPE>
6455 typename RECVTYPE::Type* recvbuf,
int recvcount, RECVTYPE* recvtype,
int root,
AMPI_Comm comm) {
6461 rStatus = MPI_Gather(sendbuf, sendcount, sendtype->getMpiType(), recvbuf, recvcount, recvtype->getMpiType(), root,
6467 typename SENDTYPE::ModifiedType* sendbufMod =
nullptr;
6468 int sendbufElements = 0;
6472 sendbufElements = sendcount;
6474 sendbufElements = recvcount;
6477 if(sendtype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == sendbuf)) {
6478 sendtype->createModifiedTypeBuffer(sendbufMod, sendbufElements);
6480 sendbufMod =
reinterpret_cast<typename SENDTYPE::ModifiedType*
>(
const_cast<typename SENDTYPE::Type*
>(sendbuf));
6482 typename RECVTYPE::ModifiedType* recvbufMod =
nullptr;
6483 int recvbufElements = 0;
6489 if(recvtype->isModifiedBufferRequired() ) {
6490 recvtype->createModifiedTypeBuffer(recvbufMod, recvbufElements);
6492 recvbufMod =
reinterpret_cast<typename RECVTYPE::ModifiedType*
>(
const_cast<typename RECVTYPE::Type*
>(recvbuf));
6501 if(sendtype->isModifiedBufferRequired()) {
6503 sendtype->copyIntoModifiedBuffer(sendbuf, 0, sendbufMod, 0, sendcount);
6505 recvtype->copyIntoModifiedBuffer(recvbuf, recvcount *
getCommRank(comm), recvbufMod, recvcount *
getCommRank(comm),
6515 h->
sendbufCount = sendtype->computeActiveElements(sendcount);
6517 h->
sendbufCount = recvtype->computeActiveElements(recvcount);
6522 h->
recvbufCount = recvtype->computeActiveElements(recvcount);
6541 sendtype->getIndices(sendbuf, 0, h->
sendbufIndices, 0, sendcount);
6565 if(!recvtype->isModifiedBufferRequired()) {
6566 recvtype->clearIndices(recvbuf, 0, recvcount *
getCommSize(comm));
6570 rStatus = MPI_Gather(sendbufMod, sendcount, sendtype->getModifiedMpiType(), recvbufMod, recvcount,
6571 recvtype->getModifiedMpiType(), root, comm);
6575 if(recvtype->isModifiedBufferRequired()) {
6576 recvtype->copyFromModifiedBuffer(recvbuf, 0, recvbufMod, 0, recvcount *
getCommSize(comm));
6589 if(sendtype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == sendbuf)) {
6590 sendtype->deleteModifiedTypeBuffer(sendbufMod);
6593 if(recvtype->isModifiedBufferRequired() ) {
6594 recvtype->deleteModifiedTypeBuffer(recvbufMod);
6605#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
6606 template<
typename SENDTYPE,
typename RECVTYPE>
6659 template<
typename SENDTYPE,
typename RECVTYPE>
6683 if(adType->isOldPrimalsRequired()) {
6697 template<
typename SENDTYPE,
typename RECVTYPE>
6730 template<
typename SENDTYPE,
typename RECVTYPE>
6746 if(adType->isOldPrimalsRequired()) {
6768 template<
typename SENDTYPE,
typename RECVTYPE>
6778 template<
typename SENDTYPE,
typename RECVTYPE>
6790 template<
typename SENDTYPE,
typename RECVTYPE>
6792 typename RECVTYPE::Type* recvbuf,
const int* recvcounts,
const int* displs, RECVTYPE* recvtype,
int root,
6799 rStatus = MPI_Gatherv(sendbuf, sendcount, sendtype->getMpiType(), recvbuf, recvcounts, displs, recvtype->getMpiType(),
6806 int displsTotalSize = 0;
6807 if(
nullptr != displs) {
6809 if(recvtype->isModifiedBufferRequired()) {
6813 typename SENDTYPE::ModifiedType* sendbufMod =
nullptr;
6814 int sendbufElements = 0;
6818 sendbufElements = sendcount;
6823 if(sendtype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == sendbuf)) {
6824 sendtype->createModifiedTypeBuffer(sendbufMod, sendbufElements);
6826 sendbufMod =
reinterpret_cast<typename SENDTYPE::ModifiedType*
>(
const_cast<typename SENDTYPE::Type*
>(sendbuf));
6828 typename RECVTYPE::ModifiedType* recvbufMod =
nullptr;
6829 int recvbufElements = 0;
6833 recvbufElements = displsTotalSize;
6835 if(recvtype->isModifiedBufferRequired() ) {
6836 recvtype->createModifiedTypeBuffer(recvbufMod, recvbufElements);
6838 recvbufMod =
reinterpret_cast<typename RECVTYPE::ModifiedType*
>(
const_cast<typename RECVTYPE::Type*
>(recvbuf));
6847 if(sendtype->isModifiedBufferRequired()) {
6849 sendtype->copyIntoModifiedBuffer(sendbuf, 0, sendbufMod, 0, sendcount);
6853 recvtype->copyIntoModifiedBuffer(recvbuf, displs[rank], recvbufMod, displsMod[rank], recvcounts[rank]);
6863 h->
sendbufCount = sendtype->computeActiveElements(sendcount);
6866 comm)]) - recvtype->computeActiveElements(displs[
getCommRank(comm)]);
6884 recvtype->getValues(recvbuf, displs[i], h->
recvbufOldPrimals, displsMod[i], recvcounts[i]);
6892 sendtype->getIndices(sendbuf, 0, h->
sendbufIndices, 0, sendcount);
6896 recvtype->getIndices(recvbuf, displs[rank], h->
sendbufIndices, 0, recvcounts[rank]);
6902 recvtype->createIndices(recvbuf, displs[i], h->
recvbufIndices, displsMod[i], recvcounts[i]);
6922 if(!recvtype->isModifiedBufferRequired()) {
6924 recvtype->clearIndices(recvbuf, displs[i], recvcounts[i]);
6929 rStatus = MPI_Gatherv(sendbufMod, sendcount, sendtype->getModifiedMpiType(), recvbufMod, recvcounts, displsMod,
6930 recvtype->getModifiedMpiType(), root, comm);
6934 if(recvtype->isModifiedBufferRequired()) {
6936 recvtype->copyFromModifiedBuffer(recvbuf, displs[i], recvbufMod, displsMod[i], recvcounts[i]);
6951 if(recvtype->isModifiedBufferRequired()) {
6952 delete [] displsMod;
6955 if(sendtype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == sendbuf)) {
6956 sendtype->deleteModifiedTypeBuffer(sendbufMod);
6959 if(recvtype->isModifiedBufferRequired() ) {
6960 recvtype->deleteModifiedTypeBuffer(recvbufMod);
6971#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
6972 template<
typename SENDTYPE,
typename RECVTYPE>
7017 template<
typename SENDTYPE,
typename RECVTYPE>
7031 template<
typename SENDTYPE,
typename RECVTYPE>
7053 template<
typename SENDTYPE,
typename RECVTYPE>
7063 if(adType->isOldPrimalsRequired()) {
7071 template<
typename SENDTYPE,
typename RECVTYPE>
7093 template<
typename SENDTYPE,
typename RECVTYPE>
7108 template<
typename SENDTYPE,
typename RECVTYPE>
7121 if(adType->isOldPrimalsRequired()) {
7133 template<
typename SENDTYPE,
typename RECVTYPE>
7149 template<
typename SENDTYPE,
typename RECVTYPE>
7159 template<
typename SENDTYPE,
typename RECVTYPE>
7169 template<
typename SENDTYPE,
typename RECVTYPE>
7171 template<
typename SENDTYPE,
typename RECVTYPE>
7173 typename RECVTYPE::Type* recvbuf,
int recvcount, RECVTYPE* recvtype,
AMPI_Comm comm,
AMPI_Request* request) {
7179 rStatus = MPI_Iallgather(sendbuf, sendcount, sendtype->getMpiType(), recvbuf, recvcount, recvtype->getMpiType(), comm,
7185 typename SENDTYPE::ModifiedType* sendbufMod =
nullptr;
7186 int sendbufElements = 0;
7190 sendbufElements = sendcount;
7192 sendbufElements = recvcount;
7195 if(sendtype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == sendbuf)) {
7196 sendtype->createModifiedTypeBuffer(sendbufMod, sendbufElements);
7198 sendbufMod =
reinterpret_cast<typename SENDTYPE::ModifiedType*
>(
const_cast<typename SENDTYPE::Type*
>(sendbuf));
7200 typename RECVTYPE::ModifiedType* recvbufMod =
nullptr;
7201 int recvbufElements = 0;
7206 if(recvtype->isModifiedBufferRequired() ) {
7207 recvtype->createModifiedTypeBuffer(recvbufMod, recvbufElements);
7209 recvbufMod =
reinterpret_cast<typename RECVTYPE::ModifiedType*
>(
const_cast<typename RECVTYPE::Type*
>(recvbuf));
7217 if(sendtype->isModifiedBufferRequired()) {
7219 sendtype->copyIntoModifiedBuffer(sendbuf, 0, sendbufMod, 0, sendcount);
7221 recvtype->copyIntoModifiedBuffer(recvbuf, recvcount *
getCommRank(comm), recvbufMod, recvcount *
getCommRank(comm),
7231 h->
sendbufCount = sendtype->computeActiveElements(sendcount);
7233 h->
sendbufCount = recvtype->computeActiveElements(recvcount);
7237 h->
recvbufCount = recvtype->computeActiveElements(recvcount);
7251 sendtype->getIndices(sendbuf, 0, h->
sendbufIndices, 0, sendcount);
7271 if(!recvtype->isModifiedBufferRequired()) {
7272 recvtype->clearIndices(recvbuf, 0, recvcount *
getCommSize(comm));
7275 rStatus = MPI_Iallgather(sendbufMod, sendcount, sendtype->getModifiedMpiType(), recvbufMod, recvcount,
7276 recvtype->getModifiedMpiType(), comm, &request->
request);
7279 asyncHandle->
sendbuf = sendbuf;
7283 asyncHandle->
recvbuf = recvbuf;
7287 asyncHandle->
comm = comm;
7289 request->
handle = asyncHandle;
7303 template<
typename SENDTYPE,
typename RECVTYPE>
7310 typename SENDTYPE::ModifiedType* sendbufMod = asyncHandle->
sendbufMod;
7312 SENDTYPE* sendtype = asyncHandle->
sendtype;
7313 typename RECVTYPE::Type* recvbuf = asyncHandle->
recvbuf;
7314 typename RECVTYPE::ModifiedType* recvbufMod = asyncHandle->
recvbufMod;
7316 RECVTYPE* recvtype = asyncHandle->
recvtype;
7336 if(adType->isActiveType()) {
7338 adType->addToolAction(h);
7340 if(recvtype->isModifiedBufferRequired()) {
7341 recvtype->copyFromModifiedBuffer(recvbuf, 0, recvbufMod, 0, recvcount *
getCommSize(comm));
7349 adType->stopAssembly(h);
7351 if(sendtype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == sendbuf)) {
7352 sendtype->deleteModifiedTypeBuffer(sendbufMod);
7354 if(recvtype->isModifiedBufferRequired() ) {
7355 recvtype->deleteModifiedTypeBuffer(recvbufMod);
7365#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
7366 template<
typename SENDTYPE,
typename RECVTYPE>
7417 template<
typename SENDTYPE,
typename RECVTYPE>
7433 template<
typename SENDTYPE,
typename RECVTYPE>
7457 template<
typename SENDTYPE,
typename RECVTYPE>
7467 if(adType->isOldPrimalsRequired()) {
7477 template<
typename SENDTYPE,
typename RECVTYPE>
7501 template<
typename SENDTYPE,
typename RECVTYPE>
7518 template<
typename SENDTYPE,
typename RECVTYPE>
7532 if(adType->isOldPrimalsRequired()) {
7545 template<
typename SENDTYPE,
typename RECVTYPE>
7563 template<
typename SENDTYPE,
typename RECVTYPE>
7573 template<
typename SENDTYPE,
typename RECVTYPE>
7583 template<
typename SENDTYPE,
typename RECVTYPE>
7585 template<
typename SENDTYPE,
typename RECVTYPE>
7587 typename RECVTYPE::Type* recvbuf,
const int* recvcounts,
const int* displs, RECVTYPE* recvtype,
AMPI_Comm comm,
7594 rStatus = MPI_Iallgatherv(sendbuf, sendcount, sendtype->getMpiType(), recvbuf, recvcounts, displs,
7595 recvtype->getMpiType(), comm, &request->
request);
7601 int displsTotalSize = 0;
7602 if(
nullptr != displs) {
7604 if(recvtype->isModifiedBufferRequired()) {
7608 typename SENDTYPE::ModifiedType* sendbufMod =
nullptr;
7609 int sendbufElements = 0;
7613 sendbufElements = sendcount;
7618 if(sendtype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == sendbuf)) {
7619 sendtype->createModifiedTypeBuffer(sendbufMod, sendbufElements);
7621 sendbufMod =
reinterpret_cast<typename SENDTYPE::ModifiedType*
>(
const_cast<typename SENDTYPE::Type*
>(sendbuf));
7623 typename RECVTYPE::ModifiedType* recvbufMod =
nullptr;
7624 int recvbufElements = 0;
7627 recvbufElements = displsTotalSize;
7629 if(recvtype->isModifiedBufferRequired() ) {
7630 recvtype->createModifiedTypeBuffer(recvbufMod, recvbufElements);
7632 recvbufMod =
reinterpret_cast<typename RECVTYPE::ModifiedType*
>(
const_cast<typename RECVTYPE::Type*
>(recvbuf));
7640 if(sendtype->isModifiedBufferRequired()) {
7642 sendtype->copyIntoModifiedBuffer(sendbuf, 0, sendbufMod, 0, sendcount);
7646 recvtype->copyIntoModifiedBuffer(recvbuf, displs[rank], recvbufMod, displsMod[rank], recvcounts[rank]);
7656 h->
sendbufCount = sendtype->computeActiveElements(sendcount);
7659 comm)]) - recvtype->computeActiveElements(displs[
getCommRank(comm)]);
7673 recvtype->getValues(recvbuf, displs[i], h->
recvbufOldPrimals, displsMod[i], recvcounts[i]);
7679 sendtype->getIndices(sendbuf, 0, h->
sendbufIndices, 0, sendcount);
7683 recvtype->getIndices(recvbuf, displs[rank], h->
sendbufIndices, 0, recvcounts[rank]);
7688 recvtype->createIndices(recvbuf, displs[i], h->
recvbufIndices, displsMod[i], recvcounts[i]);
7705 if(!recvtype->isModifiedBufferRequired()) {
7707 recvtype->clearIndices(recvbuf, displs[i], recvcounts[i]);
7711 rStatus = MPI_Iallgatherv(sendbufMod, sendcount, sendtype->getModifiedMpiType(), recvbufMod, recvcounts, displsMod,
7712 recvtype->getModifiedMpiType(), comm, &request->
request);
7715 asyncHandle->
sendbuf = sendbuf;
7719 asyncHandle->
recvbuf = recvbuf;
7723 asyncHandle->
displs = displs;
7725 asyncHandle->
comm = comm;
7727 request->
handle = asyncHandle;
7741 template<
typename SENDTYPE,
typename RECVTYPE>
7748 typename SENDTYPE::ModifiedType* sendbufMod = asyncHandle->
sendbufMod;
7750 SENDTYPE* sendtype = asyncHandle->
sendtype;
7751 typename RECVTYPE::Type* recvbuf = asyncHandle->
recvbuf;
7752 typename RECVTYPE::ModifiedType* recvbufMod = asyncHandle->
recvbufMod;
7753 const int* displsMod = asyncHandle->
displsMod;
7754 const int* recvcounts = asyncHandle->
recvcounts;
7755 const int* displs = asyncHandle->
displs;
7756 RECVTYPE* recvtype = asyncHandle->
recvtype;
7778 if(adType->isActiveType()) {
7780 adType->addToolAction(h);
7782 if(recvtype->isModifiedBufferRequired()) {
7784 recvtype->copyFromModifiedBuffer(recvbuf, displs[i], recvbufMod, displsMod[i], recvcounts[i]);
7795 adType->stopAssembly(h);
7796 if(recvtype->isModifiedBufferRequired()) {
7797 delete [] displsMod;
7800 if(sendtype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == sendbuf)) {
7801 sendtype->deleteModifiedTypeBuffer(sendbufMod);
7803 if(recvtype->isModifiedBufferRequired() ) {
7804 recvtype->deleteModifiedTypeBuffer(recvbufMod);
7814#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
7815 template<
typename DATATYPE>
7859 template<
typename DATATYPE>
7872 template<
typename DATATYPE>
7879 AMPI_Op convOp = adType->convertOperator(h->
op);
7896 template<
typename DATATYPE>
7905 AMPI_Op convOp = adType->convertOperator(h->
op);
7908 if(adType->isOldPrimalsRequired()) {
7916 template<
typename DATATYPE>
7923 AMPI_Op convOp = adType->convertOperator(h->
op);
7940 template<
typename DATATYPE>
7949 AMPI_Op convOp = adType->convertOperator(h->
op);
7957 template<
typename DATATYPE>
7964 AMPI_Op convOp = adType->convertOperator(h->
op);
7973 if(adType->isOldPrimalsRequired()) {
7985 template<
typename DATATYPE>
7994 AMPI_Op convOp = adType->convertOperator(h->
op);
8007 template<
typename DATATYPE>
8017 template<
typename DATATYPE>
8027 template<
typename DATATYPE>
8029 template<
typename DATATYPE>
8039 rStatus = MPI_Iallreduce(sendbuf, recvbuf, count, datatype->getMpiType(), convOp.
primalFunction, comm,
8045 typename DATATYPE::ModifiedType* sendbufMod =
nullptr;
8046 int sendbufElements = 0;
8050 sendbufElements = count;
8052 sendbufElements = count;
8055 if(datatype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == sendbuf)) {
8056 datatype->createModifiedTypeBuffer(sendbufMod, sendbufElements);
8058 sendbufMod =
reinterpret_cast<typename DATATYPE::ModifiedType*
>(
const_cast<typename DATATYPE::Type*
>(sendbuf));
8060 typename DATATYPE::ModifiedType* recvbufMod =
nullptr;
8061 int recvbufElements = 0;
8064 recvbufElements = count;
8066 if(datatype->isModifiedBufferRequired() ) {
8067 datatype->createModifiedTypeBuffer(recvbufMod, recvbufElements);
8069 recvbufMod =
reinterpret_cast<typename DATATYPE::ModifiedType*
>(
const_cast<typename DATATYPE::Type*
>(recvbuf));
8077 if(datatype->isModifiedBufferRequired()) {
8079 datatype->copyIntoModifiedBuffer(sendbuf, 0, sendbufMod, 0, count);
8081 datatype->copyIntoModifiedBuffer(recvbuf, 0, recvbufMod, 0, count);
8090 h->
sendbufCount = datatype->computeActiveElements(count);
8092 h->
sendbufCount = datatype->computeActiveElements(count);
8096 h->
recvbufCount = datatype->computeActiveElements(count);
8124 datatype->createIndices(recvbuf, 0, h->
recvbufIndices, 0, count);
8138 if(!datatype->isModifiedBufferRequired()) {
8139 datatype->clearIndices(recvbuf, 0, count);
8142 rStatus = MPI_Iallreduce(sendbufMod, recvbufMod, count, datatype->getModifiedMpiType(), convOp.
modifiedPrimalFunction,
8146 asyncHandle->
sendbuf = sendbuf;
8148 asyncHandle->
recvbuf = recvbuf;
8150 asyncHandle->
count = count;
8152 asyncHandle->
op = op;
8153 asyncHandle->
comm = comm;
8155 request->
handle = asyncHandle;
8169 template<
typename DATATYPE>
8176 typename DATATYPE::ModifiedType* sendbufMod = asyncHandle->
sendbufMod;
8177 typename DATATYPE::Type* recvbuf = asyncHandle->
recvbuf;
8178 typename DATATYPE::ModifiedType* recvbufMod = asyncHandle->
recvbufMod;
8179 int count = asyncHandle->
count;
8180 DATATYPE* datatype = asyncHandle->
datatype;
8200 if(adType->isActiveType()) {
8202 AMPI_Op convOp = adType->convertOperator(op);
8204 adType->addToolAction(h);
8206 if(datatype->isModifiedBufferRequired()) {
8207 datatype->copyFromModifiedBuffer(recvbuf, 0, recvbufMod, 0, count);
8220 adType->stopAssembly(h);
8222 if(datatype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == sendbuf)) {
8223 datatype->deleteModifiedTypeBuffer(sendbufMod);
8225 if(datatype->isModifiedBufferRequired() ) {
8226 datatype->deleteModifiedTypeBuffer(recvbufMod);
8236#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
8237 template<
typename SENDTYPE,
typename RECVTYPE>
8282 template<
typename SENDTYPE,
typename RECVTYPE>
8296 template<
typename SENDTYPE,
typename RECVTYPE>
8318 template<
typename SENDTYPE,
typename RECVTYPE>
8328 if(adType->isOldPrimalsRequired()) {
8336 template<
typename SENDTYPE,
typename RECVTYPE>
8358 template<
typename SENDTYPE,
typename RECVTYPE>
8373 template<
typename SENDTYPE,
typename RECVTYPE>
8386 if(adType->isOldPrimalsRequired()) {
8398 template<
typename SENDTYPE,
typename RECVTYPE>
8413 template<
typename SENDTYPE,
typename RECVTYPE>
8423 template<
typename SENDTYPE,
typename RECVTYPE>
8433 template<
typename SENDTYPE,
typename RECVTYPE>
8435 template<
typename SENDTYPE,
typename RECVTYPE>
8437 typename RECVTYPE::Type* recvbuf,
int recvcount, RECVTYPE* recvtype,
AMPI_Comm comm,
AMPI_Request* request) {
8443 rStatus = MPI_Ialltoall(sendbuf, sendcount, sendtype->getMpiType(), recvbuf, recvcount, recvtype->getMpiType(), comm,
8449 typename SENDTYPE::ModifiedType* sendbufMod =
nullptr;
8450 int sendbufElements = 0;
8459 if(sendtype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == sendbuf)) {
8460 sendtype->createModifiedTypeBuffer(sendbufMod, sendbufElements);
8462 sendbufMod =
reinterpret_cast<typename SENDTYPE::ModifiedType*
>(
const_cast<typename SENDTYPE::Type*
>(sendbuf));
8464 typename RECVTYPE::ModifiedType* recvbufMod =
nullptr;
8465 int recvbufElements = 0;
8470 if(recvtype->isModifiedBufferRequired() ) {
8471 recvtype->createModifiedTypeBuffer(recvbufMod, recvbufElements);
8473 recvbufMod =
reinterpret_cast<typename RECVTYPE::ModifiedType*
>(
const_cast<typename RECVTYPE::Type*
>(recvbuf));
8481 if(sendtype->isModifiedBufferRequired()) {
8483 sendtype->copyIntoModifiedBuffer(sendbuf, 0, sendbufMod, 0, sendcount *
getCommSize(comm));
8485 recvtype->copyIntoModifiedBuffer(recvbuf, 0, recvbufMod, 0, recvcount *
getCommSize(comm));
8494 h->
sendbufCount = sendtype->computeActiveElements(sendcount);
8496 h->
sendbufCount = recvtype->computeActiveElements(recvcount);
8500 h->
recvbufCount = recvtype->computeActiveElements(recvcount);
8534 if(!recvtype->isModifiedBufferRequired()) {
8535 recvtype->clearIndices(recvbuf, 0, recvcount *
getCommSize(comm));
8538 rStatus = MPI_Ialltoall(sendbufMod, sendcount, sendtype->getModifiedMpiType(), recvbufMod, recvcount,
8539 recvtype->getModifiedMpiType(), comm, &request->
request);
8542 asyncHandle->
sendbuf = sendbuf;
8546 asyncHandle->
recvbuf = recvbuf;
8550 asyncHandle->
comm = comm;
8552 request->
handle = asyncHandle;
8566 template<
typename SENDTYPE,
typename RECVTYPE>
8573 typename SENDTYPE::ModifiedType* sendbufMod = asyncHandle->
sendbufMod;
8575 SENDTYPE* sendtype = asyncHandle->
sendtype;
8576 typename RECVTYPE::Type* recvbuf = asyncHandle->
recvbuf;
8577 typename RECVTYPE::ModifiedType* recvbufMod = asyncHandle->
recvbufMod;
8579 RECVTYPE* recvtype = asyncHandle->
recvtype;
8599 if(adType->isActiveType()) {
8601 adType->addToolAction(h);
8603 if(recvtype->isModifiedBufferRequired()) {
8604 recvtype->copyFromModifiedBuffer(recvbuf, 0, recvbufMod, 0, recvcount *
getCommSize(comm));
8612 adType->stopAssembly(h);
8614 if(sendtype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == sendbuf)) {
8615 sendtype->deleteModifiedTypeBuffer(sendbufMod);
8617 if(recvtype->isModifiedBufferRequired() ) {
8618 recvtype->deleteModifiedTypeBuffer(recvbufMod);
8628#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
8629 template<
typename SENDTYPE,
typename RECVTYPE>
8686 template<
typename SENDTYPE,
typename RECVTYPE>
8704 template<
typename SENDTYPE,
typename RECVTYPE>
8729 template<
typename SENDTYPE,
typename RECVTYPE>
8741 if(adType->isOldPrimalsRequired()) {
8751 template<
typename SENDTYPE,
typename RECVTYPE>
8776 template<
typename SENDTYPE,
typename RECVTYPE>
8795 template<
typename SENDTYPE,
typename RECVTYPE>
8809 if(adType->isOldPrimalsRequired()) {
8823 template<
typename SENDTYPE,
typename RECVTYPE>
8842 template<
typename SENDTYPE,
typename RECVTYPE>
8852 template<
typename SENDTYPE,
typename RECVTYPE>
8862 template<
typename SENDTYPE,
typename RECVTYPE>
8864 template<
typename SENDTYPE,
typename RECVTYPE>
8866 SENDTYPE* sendtype,
typename RECVTYPE::Type* recvbuf,
const int* recvcounts,
const int* rdispls, RECVTYPE* recvtype,
8873 rStatus = MPI_Ialltoallv(sendbuf, sendcounts, sdispls, sendtype->getMpiType(), recvbuf, recvcounts, rdispls,
8874 recvtype->getMpiType(), comm, &request->
request);
8880 int sdisplsTotalSize = 0;
8881 if(
nullptr != sdispls) {
8883 if(recvtype->isModifiedBufferRequired()) {
8888 int rdisplsTotalSize = 0;
8889 if(
nullptr != rdispls) {
8891 if(recvtype->isModifiedBufferRequired()) {
8895 typename SENDTYPE::ModifiedType* sendbufMod =
nullptr;
8896 int sendbufElements = 0;
8900 sendbufElements = sdisplsTotalSize;
8902 sendbufElements = rdisplsTotalSize;
8905 if(sendtype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == sendbuf)) {
8906 sendtype->createModifiedTypeBuffer(sendbufMod, sendbufElements);
8908 sendbufMod =
reinterpret_cast<typename SENDTYPE::ModifiedType*
>(
const_cast<typename SENDTYPE::Type*
>(sendbuf));
8910 typename RECVTYPE::ModifiedType* recvbufMod =
nullptr;
8911 int recvbufElements = 0;
8914 recvbufElements = rdisplsTotalSize;
8916 if(recvtype->isModifiedBufferRequired() ) {
8917 recvtype->createModifiedTypeBuffer(recvbufMod, recvbufElements);
8919 recvbufMod =
reinterpret_cast<typename RECVTYPE::ModifiedType*
>(
const_cast<typename RECVTYPE::Type*
>(recvbuf));
8927 if(sendtype->isModifiedBufferRequired()) {
8930 sendtype->copyIntoModifiedBuffer(sendbuf, sdispls[i], sendbufMod, sdisplsMod[i], sendcounts[i]);
8934 recvtype->copyIntoModifiedBuffer(recvbuf, rdispls[i], recvbufMod, rdisplsMod[i], recvcounts[i]);
8960 recvtype->getValues(recvbuf, rdispls[i], h->
recvbufOldPrimals, rdisplsMod[i], recvcounts[i]);
8967 sendtype->getIndices(sendbuf, sdispls[i], h->
sendbufIndices, sdisplsMod[i], sendcounts[i]);
8971 recvtype->getIndices(recvbuf, rdispls[i], h->
sendbufIndices, rdisplsMod[i], recvcounts[i]);
8976 recvtype->createIndices(recvbuf, rdispls[i], h->
recvbufIndices, rdisplsMod[i], recvcounts[i]);
8994 if(!recvtype->isModifiedBufferRequired()) {
8996 recvtype->clearIndices(recvbuf, rdispls[i], recvcounts[i]);
9000 rStatus = MPI_Ialltoallv(sendbufMod, sendcounts, sdisplsMod, sendtype->getModifiedMpiType(), recvbufMod, recvcounts,
9001 rdisplsMod, recvtype->getModifiedMpiType(), comm, &request->
request);
9004 asyncHandle->
sendbuf = sendbuf;
9008 asyncHandle->
sdispls = sdispls;
9010 asyncHandle->
recvbuf = recvbuf;
9014 asyncHandle->
rdispls = rdispls;
9016 asyncHandle->
comm = comm;
9018 request->
handle = asyncHandle;
9032 template<
typename SENDTYPE,
typename RECVTYPE>
9039 typename SENDTYPE::ModifiedType* sendbufMod = asyncHandle->
sendbufMod;
9040 const int* sdisplsMod = asyncHandle->
sdisplsMod;
9041 const int* sendcounts = asyncHandle->
sendcounts;
9042 const int* sdispls = asyncHandle->
sdispls;
9043 SENDTYPE* sendtype = asyncHandle->
sendtype;
9044 typename RECVTYPE::Type* recvbuf = asyncHandle->
recvbuf;
9045 typename RECVTYPE::ModifiedType* recvbufMod = asyncHandle->
recvbufMod;
9046 const int* rdisplsMod = asyncHandle->
rdisplsMod;
9047 const int* recvcounts = asyncHandle->
recvcounts;
9048 const int* rdispls = asyncHandle->
rdispls;
9049 RECVTYPE* recvtype = asyncHandle->
recvtype;
9073 if(adType->isActiveType()) {
9075 adType->addToolAction(h);
9077 if(recvtype->isModifiedBufferRequired()) {
9079 recvtype->copyFromModifiedBuffer(recvbuf, rdispls[i], recvbufMod, rdisplsMod[i], recvcounts[i]);
9090 adType->stopAssembly(h);
9091 if(recvtype->isModifiedBufferRequired()) {
9092 delete [] sdisplsMod;
9094 if(recvtype->isModifiedBufferRequired()) {
9095 delete [] rdisplsMod;
9098 if(sendtype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == sendbuf)) {
9099 sendtype->deleteModifiedTypeBuffer(sendbufMod);
9101 if(recvtype->isModifiedBufferRequired() ) {
9102 recvtype->deleteModifiedTypeBuffer(recvbufMod);
9112#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
9113 template<
typename DATATYPE>
9157 template<
typename DATATYPE>
9170 template<
typename DATATYPE>
9193 template<
typename DATATYPE>
9204 if(adType->isOldPrimalsRequired()) {
9212 template<
typename DATATYPE>
9235 template<
typename DATATYPE>
9251 template<
typename DATATYPE>
9263 if(adType->isOldPrimalsRequired()) {
9277 template<
typename DATATYPE>
9294 template<
typename DATATYPE>
9305 template<
typename DATATYPE>
9314 template<
typename DATATYPE>
9316 template<
typename DATATYPE>
9317 int AMPI_Ibcast_wrap(
typename DATATYPE::Type* bufferSend,
typename DATATYPE::Type* bufferRecv,
int count,
9324 rStatus =
MPI_Ibcast_wrap(bufferSend, bufferRecv, count, datatype->getMpiType(), root, comm, &request->
request);
9329 typename DATATYPE::ModifiedType* bufferSendMod =
nullptr;
9330 int bufferSendElements = 0;
9335 bufferSendElements = count;
9337 bufferSendElements = count;
9340 if(datatype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == bufferSend)) {
9341 datatype->createModifiedTypeBuffer(bufferSendMod, bufferSendElements);
9343 bufferSendMod =
reinterpret_cast<typename DATATYPE::ModifiedType*
>(
const_cast<typename DATATYPE::Type*
>(bufferSend));
9346 typename DATATYPE::ModifiedType* bufferRecvMod =
nullptr;
9347 int bufferRecvElements = 0;
9350 bufferRecvElements = count;
9352 if(datatype->isModifiedBufferRequired() ) {
9353 datatype->createModifiedTypeBuffer(bufferRecvMod, bufferRecvElements);
9355 bufferRecvMod =
reinterpret_cast<typename DATATYPE::ModifiedType*
>(
const_cast<typename DATATYPE::Type*
>(bufferRecv));
9364 if(datatype->isModifiedBufferRequired()) {
9366 datatype->copyIntoModifiedBuffer(bufferSend, 0, bufferSendMod, 0, count);
9368 datatype->copyIntoModifiedBuffer(bufferRecv, 0, bufferRecvMod, 0, count);
9421 if(!datatype->isModifiedBufferRequired()) {
9422 datatype->clearIndices(bufferRecv, 0, count);
9425 rStatus =
MPI_Ibcast_wrap(bufferSendMod, bufferRecvMod, count, datatype->getModifiedMpiType(), root, comm,
9433 asyncHandle->
count = count;
9435 asyncHandle->
root = root;
9436 asyncHandle->
comm = comm;
9438 request->
handle = asyncHandle;
9452 template<
typename DATATYPE>
9457 typename DATATYPE::Type* bufferSend = asyncHandle->
bufferSend;
9458 typename DATATYPE::ModifiedType* bufferSendMod = asyncHandle->
bufferSendMod;
9459 typename DATATYPE::Type* bufferRecv = asyncHandle->
bufferRecv;
9460 typename DATATYPE::ModifiedType* bufferRecvMod = asyncHandle->
bufferRecvMod;
9461 int count = asyncHandle->
count;
9462 DATATYPE* datatype = asyncHandle->
datatype;
9463 int root = asyncHandle->
root;
9482 if(adType->isActiveType()) {
9484 adType->addToolAction(h);
9486 if(datatype->isModifiedBufferRequired()) {
9487 datatype->copyFromModifiedBuffer(bufferRecv, 0, bufferRecvMod, 0, count);
9495 adType->stopAssembly(h);
9498 if(datatype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == bufferSend)) {
9499 datatype->deleteModifiedTypeBuffer(bufferSendMod);
9502 if(datatype->isModifiedBufferRequired() ) {
9503 datatype->deleteModifiedTypeBuffer(bufferRecvMod);
9513#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
9514 template<
typename SENDTYPE,
typename RECVTYPE>
9560 template<
typename SENDTYPE,
typename RECVTYPE>
9575 template<
typename SENDTYPE,
typename RECVTYPE>
9599 template<
typename SENDTYPE,
typename RECVTYPE>
9609 if(adType->isOldPrimalsRequired()) {
9621 template<
typename SENDTYPE,
typename RECVTYPE>
9645 template<
typename SENDTYPE,
typename RECVTYPE>
9662 template<
typename SENDTYPE,
typename RECVTYPE>
9677 if(adType->isOldPrimalsRequired()) {
9691 template<
typename SENDTYPE,
typename RECVTYPE>
9708 template<
typename SENDTYPE,
typename RECVTYPE>
9718 template<
typename SENDTYPE,
typename RECVTYPE>
9730 template<
typename SENDTYPE,
typename RECVTYPE>
9732 template<
typename SENDTYPE,
typename RECVTYPE>
9734 typename RECVTYPE::Type* recvbuf,
int recvcount, RECVTYPE* recvtype,
int root,
AMPI_Comm comm,
AMPI_Request* request) {
9740 rStatus = MPI_Igather(sendbuf, sendcount, sendtype->getMpiType(), recvbuf, recvcount, recvtype->getMpiType(), root,
9746 typename SENDTYPE::ModifiedType* sendbufMod =
nullptr;
9747 int sendbufElements = 0;
9751 sendbufElements = sendcount;
9753 sendbufElements = recvcount;
9756 if(sendtype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == sendbuf)) {
9757 sendtype->createModifiedTypeBuffer(sendbufMod, sendbufElements);
9759 sendbufMod =
reinterpret_cast<typename SENDTYPE::ModifiedType*
>(
const_cast<typename SENDTYPE::Type*
>(sendbuf));
9761 typename RECVTYPE::ModifiedType* recvbufMod =
nullptr;
9762 int recvbufElements = 0;
9768 if(recvtype->isModifiedBufferRequired() ) {
9769 recvtype->createModifiedTypeBuffer(recvbufMod, recvbufElements);
9771 recvbufMod =
reinterpret_cast<typename RECVTYPE::ModifiedType*
>(
const_cast<typename RECVTYPE::Type*
>(recvbuf));
9780 if(sendtype->isModifiedBufferRequired()) {
9782 sendtype->copyIntoModifiedBuffer(sendbuf, 0, sendbufMod, 0, sendcount);
9784 recvtype->copyIntoModifiedBuffer(recvbuf, recvcount *
getCommRank(comm), recvbufMod, recvcount *
getCommRank(comm),
9794 h->
sendbufCount = sendtype->computeActiveElements(sendcount);
9796 h->
sendbufCount = recvtype->computeActiveElements(recvcount);
9801 h->
recvbufCount = recvtype->computeActiveElements(recvcount);
9820 sendtype->getIndices(sendbuf, 0, h->
sendbufIndices, 0, sendcount);
9844 if(!recvtype->isModifiedBufferRequired()) {
9845 recvtype->clearIndices(recvbuf, 0, recvcount *
getCommSize(comm));
9849 rStatus = MPI_Igather(sendbufMod, sendcount, sendtype->getModifiedMpiType(), recvbufMod, recvcount,
9850 recvtype->getModifiedMpiType(), root, comm, &request->
request);
9853 asyncHandle->
sendbuf = sendbuf;
9857 asyncHandle->
recvbuf = recvbuf;
9861 asyncHandle->
root = root;
9862 asyncHandle->
comm = comm;
9864 request->
handle = asyncHandle;
9878 template<
typename SENDTYPE,
typename RECVTYPE>
9885 typename SENDTYPE::ModifiedType* sendbufMod = asyncHandle->
sendbufMod;
9887 SENDTYPE* sendtype = asyncHandle->
sendtype;
9888 typename RECVTYPE::Type* recvbuf = asyncHandle->
recvbuf;
9889 typename RECVTYPE::ModifiedType* recvbufMod = asyncHandle->
recvbufMod;
9891 RECVTYPE* recvtype = asyncHandle->
recvtype;
9892 int root = asyncHandle->
root;
9913 if(adType->isActiveType()) {
9915 adType->addToolAction(h);
9918 if(recvtype->isModifiedBufferRequired()) {
9919 recvtype->copyFromModifiedBuffer(recvbuf, 0, recvbufMod, 0, recvcount *
getCommSize(comm));
9930 adType->stopAssembly(h);
9932 if(sendtype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == sendbuf)) {
9933 sendtype->deleteModifiedTypeBuffer(sendbufMod);
9936 if(recvtype->isModifiedBufferRequired() ) {
9937 recvtype->deleteModifiedTypeBuffer(recvbufMod);
9948#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
9949 template<
typename SENDTYPE,
typename RECVTYPE>
10001 template<
typename SENDTYPE,
typename RECVTYPE>
10018 template<
typename SENDTYPE,
typename RECVTYPE>
10044 template<
typename SENDTYPE,
typename RECVTYPE>
10054 if(adType->isOldPrimalsRequired()) {
10068 template<
typename SENDTYPE,
typename RECVTYPE>
10094 template<
typename SENDTYPE,
typename RECVTYPE>
10113 template<
typename SENDTYPE,
typename RECVTYPE>
10129 if(adType->isOldPrimalsRequired()) {
10144 template<
typename SENDTYPE,
typename RECVTYPE>
10163 template<
typename SENDTYPE,
typename RECVTYPE>
10173 template<
typename SENDTYPE,
typename RECVTYPE>
10185 template<
typename SENDTYPE,
typename RECVTYPE>
10187 template<
typename SENDTYPE,
typename RECVTYPE>
10189 typename RECVTYPE::Type* recvbuf,
const int* recvcounts,
const int* displs, RECVTYPE* recvtype,
int root,
10196 rStatus = MPI_Igatherv(sendbuf, sendcount, sendtype->getMpiType(), recvbuf, recvcounts, displs, recvtype->getMpiType(),
10197 root, comm, &request->
request);
10203 int displsTotalSize = 0;
10204 if(
nullptr != displs) {
10206 if(recvtype->isModifiedBufferRequired()) {
10210 typename SENDTYPE::ModifiedType* sendbufMod =
nullptr;
10211 int sendbufElements = 0;
10215 sendbufElements = sendcount;
10220 if(sendtype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == sendbuf)) {
10221 sendtype->createModifiedTypeBuffer(sendbufMod, sendbufElements);
10223 sendbufMod =
reinterpret_cast<typename SENDTYPE::ModifiedType*
>(
const_cast<typename SENDTYPE::Type*
>(sendbuf));
10225 typename RECVTYPE::ModifiedType* recvbufMod =
nullptr;
10226 int recvbufElements = 0;
10230 recvbufElements = displsTotalSize;
10232 if(recvtype->isModifiedBufferRequired() ) {
10233 recvtype->createModifiedTypeBuffer(recvbufMod, recvbufElements);
10235 recvbufMod =
reinterpret_cast<typename RECVTYPE::ModifiedType*
>(
const_cast<typename RECVTYPE::Type*
>(recvbuf));
10244 if(sendtype->isModifiedBufferRequired()) {
10246 sendtype->copyIntoModifiedBuffer(sendbuf, 0, sendbufMod, 0, sendcount);
10250 recvtype->copyIntoModifiedBuffer(recvbuf, displs[rank], recvbufMod, displsMod[rank], recvcounts[rank]);
10260 h->
sendbufCount = sendtype->computeActiveElements(sendcount);
10263 comm)]) - recvtype->computeActiveElements(displs[
getCommRank(comm)]);
10281 recvtype->getValues(recvbuf, displs[i], h->
recvbufOldPrimals, displsMod[i], recvcounts[i]);
10289 sendtype->getIndices(sendbuf, 0, h->
sendbufIndices, 0, sendcount);
10293 recvtype->getIndices(recvbuf, displs[rank], h->
sendbufIndices, 0, recvcounts[rank]);
10299 recvtype->createIndices(recvbuf, displs[i], h->
recvbufIndices, displsMod[i], recvcounts[i]);
10319 if(!recvtype->isModifiedBufferRequired()) {
10321 recvtype->clearIndices(recvbuf, displs[i], recvcounts[i]);
10326 rStatus = MPI_Igatherv(sendbufMod, sendcount, sendtype->getModifiedMpiType(), recvbufMod, recvcounts, displsMod,
10327 recvtype->getModifiedMpiType(), root, comm, &request->
request);
10330 asyncHandle->
sendbuf = sendbuf;
10334 asyncHandle->
recvbuf = recvbuf;
10338 asyncHandle->
displs = displs;
10340 asyncHandle->
root = root;
10341 asyncHandle->
comm = comm;
10343 request->
handle = asyncHandle;
10357 template<
typename SENDTYPE,
typename RECVTYPE>
10364 typename SENDTYPE::ModifiedType* sendbufMod = asyncHandle->
sendbufMod;
10365 int sendcount = asyncHandle->
sendcount;
10366 SENDTYPE* sendtype = asyncHandle->
sendtype;
10367 typename RECVTYPE::Type* recvbuf = asyncHandle->
recvbuf;
10368 typename RECVTYPE::ModifiedType* recvbufMod = asyncHandle->
recvbufMod;
10369 const int* displsMod = asyncHandle->
displsMod;
10370 const int* recvcounts = asyncHandle->
recvcounts;
10371 const int* displs = asyncHandle->
displs;
10372 RECVTYPE* recvtype = asyncHandle->
recvtype;
10373 int root = asyncHandle->
root;
10394 delete asyncHandle;
10396 if(adType->isActiveType()) {
10398 adType->addToolAction(h);
10401 if(recvtype->isModifiedBufferRequired()) {
10403 recvtype->copyFromModifiedBuffer(recvbuf, displs[i], recvbufMod, displsMod[i], recvcounts[i]);
10417 adType->stopAssembly(h);
10418 if(recvtype->isModifiedBufferRequired()) {
10419 delete [] displsMod;
10422 if(sendtype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == sendbuf)) {
10423 sendtype->deleteModifiedTypeBuffer(sendbufMod);
10426 if(recvtype->isModifiedBufferRequired() ) {
10427 recvtype->deleteModifiedTypeBuffer(recvbufMod);
10438#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
10439 template<
typename DATATYPE>
10484 template<
typename DATATYPE>
10498 template<
typename DATATYPE>
10504 AMPI_Op convOp = adType->convertOperator(h->
op);
10523 template<
typename DATATYPE>
10531 AMPI_Op convOp = adType->convertOperator(h->
op);
10534 if(adType->isOldPrimalsRequired()) {
10546 template<
typename DATATYPE>
10552 AMPI_Op convOp = adType->convertOperator(h->
op);
10571 template<
typename DATATYPE>
10579 AMPI_Op convOp = adType->convertOperator(h->
op);
10589 template<
typename DATATYPE>
10595 AMPI_Op convOp = adType->convertOperator(h->
op);
10606 if(adType->isOldPrimalsRequired()) {
10620 template<
typename DATATYPE>
10628 AMPI_Op convOp = adType->convertOperator(h->
op);
10642 template<
typename DATATYPE>
10651 template<
typename DATATYPE>
10662 template<
typename DATATYPE>
10664 template<
typename DATATYPE>
10674 rStatus = MPI_Ireduce(sendbuf, recvbuf, count, datatype->getMpiType(), convOp.
primalFunction, root, comm,
10680 typename DATATYPE::ModifiedType* sendbufMod =
nullptr;
10681 int sendbufElements = 0;
10685 sendbufElements = count;
10687 sendbufElements = count;
10690 if(datatype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == sendbuf)) {
10691 datatype->createModifiedTypeBuffer(sendbufMod, sendbufElements);
10693 sendbufMod =
reinterpret_cast<typename DATATYPE::ModifiedType*
>(
const_cast<typename DATATYPE::Type*
>(sendbuf));
10695 typename DATATYPE::ModifiedType* recvbufMod =
nullptr;
10696 int recvbufElements = 0;
10700 recvbufElements = count;
10702 if(datatype->isModifiedBufferRequired() ) {
10703 datatype->createModifiedTypeBuffer(recvbufMod, recvbufElements);
10705 recvbufMod =
reinterpret_cast<typename DATATYPE::ModifiedType*
>(
const_cast<typename DATATYPE::Type*
>(recvbuf));
10714 if(datatype->isModifiedBufferRequired()) {
10716 datatype->copyIntoModifiedBuffer(sendbuf, 0, sendbufMod, 0, count);
10718 datatype->copyIntoModifiedBuffer(recvbuf, 0, recvbufMod, 0, count);
10727 h->
sendbufCount = datatype->computeActiveElements(count);
10729 h->
sendbufCount = datatype->computeActiveElements(count);
10734 h->
recvbufCount = datatype->computeActiveElements(count);
10768 datatype->createIndices(recvbuf, 0, h->
recvbufIndices, 0, count);
10785 if(!datatype->isModifiedBufferRequired()) {
10786 datatype->clearIndices(recvbuf, 0, count);
10790 rStatus = MPI_Ireduce(sendbufMod, recvbufMod, count, datatype->getModifiedMpiType(), convOp.
modifiedPrimalFunction,
10791 root, comm, &request->
request);
10794 asyncHandle->
sendbuf = sendbuf;
10796 asyncHandle->
recvbuf = recvbuf;
10798 asyncHandle->
count = count;
10800 asyncHandle->
op = op;
10801 asyncHandle->
root = root;
10802 asyncHandle->
comm = comm;
10804 request->
handle = asyncHandle;
10818 template<
typename DATATYPE>
10825 typename DATATYPE::ModifiedType* sendbufMod = asyncHandle->
sendbufMod;
10826 typename DATATYPE::Type* recvbuf = asyncHandle->
recvbuf;
10827 typename DATATYPE::ModifiedType* recvbufMod = asyncHandle->
recvbufMod;
10828 int count = asyncHandle->
count;
10829 DATATYPE* datatype = asyncHandle->
datatype;
10831 int root = asyncHandle->
root;
10849 delete asyncHandle;
10851 if(adType->isActiveType()) {
10853 AMPI_Op convOp = adType->convertOperator(op);
10855 adType->addToolAction(h);
10858 if(datatype->isModifiedBufferRequired()) {
10859 datatype->copyFromModifiedBuffer(recvbuf, 0, recvbufMod, 0, count);
10879 adType->stopAssembly(h);
10881 if(datatype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == sendbuf)) {
10882 datatype->deleteModifiedTypeBuffer(sendbufMod);
10885 if(datatype->isModifiedBufferRequired() ) {
10886 datatype->deleteModifiedTypeBuffer(recvbufMod);
10897#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
10898 template<
typename SENDTYPE,
typename RECVTYPE>
10944 template<
typename SENDTYPE,
typename RECVTYPE>
10959 template<
typename SENDTYPE,
typename RECVTYPE>
10983 template<
typename SENDTYPE,
typename RECVTYPE>
10995 if(adType->isOldPrimalsRequired()) {
11003 template<
typename SENDTYPE,
typename RECVTYPE>
11027 template<
typename SENDTYPE,
typename RECVTYPE>
11044 template<
typename SENDTYPE,
typename RECVTYPE>
11057 if(adType->isOldPrimalsRequired()) {
11071 template<
typename SENDTYPE,
typename RECVTYPE>
11088 template<
typename SENDTYPE,
typename RECVTYPE>
11100 template<
typename SENDTYPE,
typename RECVTYPE>
11110 template<
typename SENDTYPE,
typename RECVTYPE>
11112 template<
typename SENDTYPE,
typename RECVTYPE>
11113 int AMPI_Iscatter(
const typename SENDTYPE::Type* sendbuf,
int sendcount, SENDTYPE* sendtype,
11114 typename RECVTYPE::Type* recvbuf,
int recvcount, RECVTYPE* recvtype,
int root,
AMPI_Comm comm,
AMPI_Request* request) {
11120 rStatus = MPI_Iscatter(sendbuf, sendcount, sendtype->getMpiType(), recvbuf, recvcount, recvtype->getMpiType(), root,
11126 typename SENDTYPE::ModifiedType* sendbufMod =
nullptr;
11127 int sendbufElements = 0;
11133 if(sendtype->isModifiedBufferRequired() ) {
11134 sendtype->createModifiedTypeBuffer(sendbufMod, sendbufElements);
11136 sendbufMod =
reinterpret_cast<typename SENDTYPE::ModifiedType*
>(
const_cast<typename SENDTYPE::Type*
>(sendbuf));
11139 typename RECVTYPE::ModifiedType* recvbufMod =
nullptr;
11140 int recvbufElements = 0;
11144 recvbufElements = recvcount;
11146 recvbufElements = sendcount;
11149 if(recvtype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == recvbuf)) {
11150 recvtype->createModifiedTypeBuffer(recvbufMod, recvbufElements);
11152 recvbufMod =
reinterpret_cast<typename RECVTYPE::ModifiedType*
>(
const_cast<typename RECVTYPE::Type*
>(recvbuf));
11161 if(sendtype->isModifiedBufferRequired()) {
11162 sendtype->copyIntoModifiedBuffer(sendbuf, 0, sendbufMod, 0, sendcount *
getCommSize(comm));
11171 h->
sendbufCount = sendtype->computeActiveElements(sendcount);
11176 h->
recvbufCount = recvtype->computeActiveElements(recvcount);
11178 h->
recvbufCount = sendtype->computeActiveElements(sendcount);
11201 recvtype->createIndices(recvbuf, 0, h->
recvbufIndices, 0, recvcount);
11203 sendtype->createIndices(
const_cast<typename SENDTYPE::Type*
>(sendbuf), sendcount *
getCommRank(comm), h->
recvbufIndices,
11221 if(!recvtype->isModifiedBufferRequired()) {
11223 recvtype->clearIndices(recvbuf, 0, recvcount);
11225 sendtype->clearIndices(
const_cast<typename SENDTYPE::Type*
>(sendbuf), sendcount *
getCommRank(comm), sendcount);
11229 rStatus = MPI_Iscatter(sendbufMod, sendcount, sendtype->getModifiedMpiType(), recvbufMod, recvcount,
11230 recvtype->getModifiedMpiType(), root, comm, &request->
request);
11233 asyncHandle->
sendbuf = sendbuf;
11237 asyncHandle->
recvbuf = recvbuf;
11241 asyncHandle->
root = root;
11242 asyncHandle->
comm = comm;
11244 request->
handle = asyncHandle;
11258 template<
typename SENDTYPE,
typename RECVTYPE>
11264 const typename SENDTYPE::Type* sendbuf = asyncHandle->
sendbuf;
11265 typename SENDTYPE::ModifiedType* sendbufMod = asyncHandle->
sendbufMod;
11266 int sendcount = asyncHandle->
sendcount;
11267 SENDTYPE* sendtype = asyncHandle->
sendtype;
11268 typename RECVTYPE::Type* recvbuf = asyncHandle->
recvbuf;
11269 typename RECVTYPE::ModifiedType* recvbufMod = asyncHandle->
recvbufMod;
11270 int recvcount = asyncHandle->
recvcount;
11271 RECVTYPE* recvtype = asyncHandle->
recvtype;
11272 int root = asyncHandle->
root;
11291 delete asyncHandle;
11293 if(adType->isActiveType()) {
11295 adType->addToolAction(h);
11297 if(recvtype->isModifiedBufferRequired()) {
11299 recvtype->copyFromModifiedBuffer(recvbuf, 0, recvbufMod, 0, recvcount);
11301 sendtype->copyFromModifiedBuffer(
const_cast<typename SENDTYPE::Type*
>(sendbuf), sendcount *
getCommRank(comm),
11302 sendbufMod, sendcount *
getCommRank(comm), sendcount);
11311 sendtype->registerValue(
const_cast<typename SENDTYPE::Type*
>(sendbuf), sendcount *
getCommRank(comm), h->
recvbufIndices,
11316 adType->stopAssembly(h);
11319 if(sendtype->isModifiedBufferRequired() ) {
11320 sendtype->deleteModifiedTypeBuffer(sendbufMod);
11323 if(recvtype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == recvbuf)) {
11324 recvtype->deleteModifiedTypeBuffer(recvbufMod);
11334#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
11335 template<
typename SENDTYPE,
typename RECVTYPE>
11387 template<
typename SENDTYPE,
typename RECVTYPE>
11404 template<
typename SENDTYPE,
typename RECVTYPE>
11430 template<
typename SENDTYPE,
typename RECVTYPE>
11444 if(adType->isOldPrimalsRequired()) {
11452 template<
typename SENDTYPE,
typename RECVTYPE>
11478 template<
typename SENDTYPE,
typename RECVTYPE>
11497 template<
typename SENDTYPE,
typename RECVTYPE>
11510 if(adType->isOldPrimalsRequired()) {
11526 template<
typename SENDTYPE,
typename RECVTYPE>
11545 template<
typename SENDTYPE,
typename RECVTYPE>
11557 template<
typename SENDTYPE,
typename RECVTYPE>
11567 template<
typename SENDTYPE,
typename RECVTYPE>
11569 template<
typename SENDTYPE,
typename RECVTYPE>
11570 int AMPI_Iscatterv(
const typename SENDTYPE::Type* sendbuf,
const int* sendcounts,
const int* displs, SENDTYPE* sendtype,
11571 typename RECVTYPE::Type* recvbuf,
int recvcount, RECVTYPE* recvtype,
int root,
AMPI_Comm comm,
AMPI_Request* request) {
11577 rStatus = MPI_Iscatterv(sendbuf, sendcounts, displs, sendtype->getMpiType(), recvbuf, recvcount, recvtype->getMpiType(),
11578 root, comm, &request->
request);
11584 int displsTotalSize = 0;
11585 if(
nullptr != displs) {
11587 if(recvtype->isModifiedBufferRequired()) {
11591 typename SENDTYPE::ModifiedType* sendbufMod =
nullptr;
11592 int sendbufElements = 0;
11596 sendbufElements = displsTotalSize;
11598 if(sendtype->isModifiedBufferRequired() ) {
11599 sendtype->createModifiedTypeBuffer(sendbufMod, sendbufElements);
11601 sendbufMod =
reinterpret_cast<typename SENDTYPE::ModifiedType*
>(
const_cast<typename SENDTYPE::Type*
>(sendbuf));
11604 typename RECVTYPE::ModifiedType* recvbufMod =
nullptr;
11605 int recvbufElements = 0;
11609 recvbufElements = recvcount;
11614 if(recvtype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == recvbuf)) {
11615 recvtype->createModifiedTypeBuffer(recvbufMod, recvbufElements);
11617 recvbufMod =
reinterpret_cast<typename RECVTYPE::ModifiedType*
>(
const_cast<typename RECVTYPE::Type*
>(recvbuf));
11626 if(sendtype->isModifiedBufferRequired()) {
11628 sendtype->copyIntoModifiedBuffer(sendbuf, displs[i], sendbufMod, displsMod[i], sendcounts[i]);
11643 h->
recvbufCount = recvtype->computeActiveElements(recvcount);
11646 comm)]) - sendtype->computeActiveElements(displs[
getCommRank(comm)]);
11661 sendtype->getValues(sendbuf, displs[rank], h->
recvbufOldPrimals, 0, sendcounts[rank]);
11669 sendtype->getIndices(sendbuf, displs[i], h->
sendbufIndices, displsMod[i], sendcounts[i]);
11674 recvtype->createIndices(recvbuf, 0, h->
recvbufIndices, 0, recvcount);
11678 sendtype->createIndices(
const_cast<typename SENDTYPE::Type*
>(sendbuf), displs[rank], h->
recvbufIndices, 0,
11698 if(!recvtype->isModifiedBufferRequired()) {
11700 recvtype->clearIndices(recvbuf, 0, recvcount);
11704 sendtype->clearIndices(
const_cast<typename SENDTYPE::Type*
>(sendbuf), displs[rank], sendcounts[rank]);
11709 rStatus = MPI_Iscatterv(sendbufMod, sendcounts, displsMod, sendtype->getModifiedMpiType(), recvbufMod, recvcount,
11710 recvtype->getModifiedMpiType(), root, comm, &request->
request);
11713 asyncHandle->
sendbuf = sendbuf;
11717 asyncHandle->
displs = displs;
11719 asyncHandle->
recvbuf = recvbuf;
11723 asyncHandle->
root = root;
11724 asyncHandle->
comm = comm;
11726 request->
handle = asyncHandle;
11740 template<
typename SENDTYPE,
typename RECVTYPE>
11746 const typename SENDTYPE::Type* sendbuf = asyncHandle->
sendbuf;
11747 typename SENDTYPE::ModifiedType* sendbufMod = asyncHandle->
sendbufMod;
11748 const int* displsMod = asyncHandle->
displsMod;
11749 const int* sendcounts = asyncHandle->
sendcounts;
11750 const int* displs = asyncHandle->
displs;
11751 SENDTYPE* sendtype = asyncHandle->
sendtype;
11752 typename RECVTYPE::Type* recvbuf = asyncHandle->
recvbuf;
11753 typename RECVTYPE::ModifiedType* recvbufMod = asyncHandle->
recvbufMod;
11754 int recvcount = asyncHandle->
recvcount;
11755 RECVTYPE* recvtype = asyncHandle->
recvtype;
11756 int root = asyncHandle->
root;
11777 delete asyncHandle;
11779 if(adType->isActiveType()) {
11781 adType->addToolAction(h);
11783 if(recvtype->isModifiedBufferRequired()) {
11785 recvtype->copyFromModifiedBuffer(recvbuf, 0, recvbufMod, 0, recvcount);
11789 sendtype->copyFromModifiedBuffer(
const_cast<typename SENDTYPE::Type*
>(sendbuf), displs[rank], sendbufMod,
11790 displsMod[rank], sendcounts[rank]);
11802 sendtype->registerValue(
const_cast<typename SENDTYPE::Type*
>(sendbuf), displs[rank], h->
recvbufIndices,
11808 adType->stopAssembly(h);
11809 if(recvtype->isModifiedBufferRequired()) {
11810 delete [] displsMod;
11814 if(sendtype->isModifiedBufferRequired() ) {
11815 sendtype->deleteModifiedTypeBuffer(sendbufMod);
11818 if(recvtype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == recvbuf)) {
11819 recvtype->deleteModifiedTypeBuffer(recvbufMod);
11829#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
11830 template<
typename DATATYPE>
11876 template<
typename DATATYPE>
11882 AMPI_Op convOp = adType->convertOperator(h->
op);
11900 if(adType->isOldPrimalsRequired()) {
11912 template<
typename DATATYPE>
11918 AMPI_Op convOp = adType->convertOperator(h->
op);
11943 template<
typename DATATYPE>
11949 AMPI_Op convOp = adType->convertOperator(h->
op);
11960 if(adType->isOldPrimalsRequired()) {
11984 template<
typename DATATYPE>
11993 template<
typename DATATYPE>
12004 template<
typename DATATYPE>
12014 rStatus = MPI_Reduce(sendbuf, recvbuf, count, datatype->getMpiType(), convOp.
primalFunction, root, comm);
12019 typename DATATYPE::ModifiedType* sendbufMod =
nullptr;
12020 int sendbufElements = 0;
12024 sendbufElements = count;
12026 sendbufElements = count;
12029 if(datatype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == sendbuf)) {
12030 datatype->createModifiedTypeBuffer(sendbufMod, sendbufElements);
12032 sendbufMod =
reinterpret_cast<typename DATATYPE::ModifiedType*
>(
const_cast<typename DATATYPE::Type*
>(sendbuf));
12034 typename DATATYPE::ModifiedType* recvbufMod =
nullptr;
12035 int recvbufElements = 0;
12039 recvbufElements = count;
12041 if(datatype->isModifiedBufferRequired() ) {
12042 datatype->createModifiedTypeBuffer(recvbufMod, recvbufElements);
12044 recvbufMod =
reinterpret_cast<typename DATATYPE::ModifiedType*
>(
const_cast<typename DATATYPE::Type*
>(recvbuf));
12053 if(datatype->isModifiedBufferRequired()) {
12055 datatype->copyIntoModifiedBuffer(sendbuf, 0, sendbufMod, 0, count);
12057 datatype->copyIntoModifiedBuffer(recvbuf, 0, recvbufMod, 0, count);
12066 h->
sendbufCount = datatype->computeActiveElements(count);
12068 h->
sendbufCount = datatype->computeActiveElements(count);
12073 h->
recvbufCount = datatype->computeActiveElements(count);
12107 datatype->createIndices(recvbuf, 0, h->
recvbufIndices, 0, count);
12124 if(!datatype->isModifiedBufferRequired()) {
12125 datatype->clearIndices(recvbuf, 0, count);
12129 rStatus = MPI_Reduce(sendbufMod, recvbufMod, count, datatype->getModifiedMpiType(), convOp.
modifiedPrimalFunction, root,
12134 if(datatype->isModifiedBufferRequired()) {
12135 datatype->copyFromModifiedBuffer(recvbuf, 0, recvbufMod, 0, count);
12157 if(datatype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == sendbuf)) {
12158 datatype->deleteModifiedTypeBuffer(sendbufMod);
12161 if(datatype->isModifiedBufferRequired() ) {
12162 datatype->deleteModifiedTypeBuffer(recvbufMod);
12173#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
12174 template<
typename SENDTYPE,
typename RECVTYPE>
12221 template<
typename SENDTYPE,
typename RECVTYPE>
12246 if(adType->isOldPrimalsRequired()) {
12254 template<
typename SENDTYPE,
typename RECVTYPE>
12284 template<
typename SENDTYPE,
typename RECVTYPE>
12297 if(adType->isOldPrimalsRequired()) {
12317 template<
typename SENDTYPE,
typename RECVTYPE>
12329 template<
typename SENDTYPE,
typename RECVTYPE>
12339 template<
typename SENDTYPE,
typename RECVTYPE>
12341 typename RECVTYPE::Type* recvbuf,
int recvcount, RECVTYPE* recvtype,
int root,
AMPI_Comm comm) {
12347 rStatus = MPI_Scatter(sendbuf, sendcount, sendtype->getMpiType(), recvbuf, recvcount, recvtype->getMpiType(), root,
12353 typename SENDTYPE::ModifiedType* sendbufMod =
nullptr;
12354 int sendbufElements = 0;
12360 if(sendtype->isModifiedBufferRequired() ) {
12361 sendtype->createModifiedTypeBuffer(sendbufMod, sendbufElements);
12363 sendbufMod =
reinterpret_cast<typename SENDTYPE::ModifiedType*
>(
const_cast<typename SENDTYPE::Type*
>(sendbuf));
12366 typename RECVTYPE::ModifiedType* recvbufMod =
nullptr;
12367 int recvbufElements = 0;
12371 recvbufElements = recvcount;
12373 recvbufElements = sendcount;
12376 if(recvtype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == recvbuf)) {
12377 recvtype->createModifiedTypeBuffer(recvbufMod, recvbufElements);
12379 recvbufMod =
reinterpret_cast<typename RECVTYPE::ModifiedType*
>(
const_cast<typename RECVTYPE::Type*
>(recvbuf));
12388 if(sendtype->isModifiedBufferRequired()) {
12389 sendtype->copyIntoModifiedBuffer(sendbuf, 0, sendbufMod, 0, sendcount *
getCommSize(comm));
12398 h->
sendbufCount = sendtype->computeActiveElements(sendcount);
12403 h->
recvbufCount = recvtype->computeActiveElements(recvcount);
12405 h->
recvbufCount = sendtype->computeActiveElements(sendcount);
12428 recvtype->createIndices(recvbuf, 0, h->
recvbufIndices, 0, recvcount);
12430 sendtype->createIndices(
const_cast<typename SENDTYPE::Type*
>(sendbuf), sendcount *
getCommRank(comm), h->
recvbufIndices,
12448 if(!recvtype->isModifiedBufferRequired()) {
12450 recvtype->clearIndices(recvbuf, 0, recvcount);
12452 sendtype->clearIndices(
const_cast<typename SENDTYPE::Type*
>(sendbuf), sendcount *
getCommRank(comm), sendcount);
12456 rStatus = MPI_Scatter(sendbufMod, sendcount, sendtype->getModifiedMpiType(), recvbufMod, recvcount,
12457 recvtype->getModifiedMpiType(), root, comm);
12460 if(recvtype->isModifiedBufferRequired()) {
12462 recvtype->copyFromModifiedBuffer(recvbuf, 0, recvbufMod, 0, recvcount);
12464 sendtype->copyFromModifiedBuffer(
const_cast<typename SENDTYPE::Type*
>(sendbuf), sendcount *
getCommRank(comm),
12465 sendbufMod, sendcount *
getCommRank(comm), sendcount);
12474 sendtype->registerValue(
const_cast<typename SENDTYPE::Type*
>(sendbuf), sendcount *
getCommRank(comm), h->
recvbufIndices,
12482 if(sendtype->isModifiedBufferRequired() ) {
12483 sendtype->deleteModifiedTypeBuffer(sendbufMod);
12486 if(recvtype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == recvbuf)) {
12487 recvtype->deleteModifiedTypeBuffer(recvbufMod);
12497#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
12498 template<
typename SENDTYPE,
typename RECVTYPE>
12551 template<
typename SENDTYPE,
typename RECVTYPE>
12579 if(adType->isOldPrimalsRequired()) {
12587 template<
typename SENDTYPE,
typename RECVTYPE>
12620 template<
typename SENDTYPE,
typename RECVTYPE>
12633 if(adType->isOldPrimalsRequired()) {
12656 template<
typename SENDTYPE,
typename RECVTYPE>
12668 template<
typename SENDTYPE,
typename RECVTYPE>
12678 template<
typename SENDTYPE,
typename RECVTYPE>
12680 SENDTYPE* sendtype,
typename RECVTYPE::Type* recvbuf,
int recvcount, RECVTYPE* recvtype,
int root,
AMPI_Comm comm) {
12686 rStatus = MPI_Scatterv(sendbuf, sendcounts, displs, sendtype->getMpiType(), recvbuf, recvcount, recvtype->getMpiType(),
12693 int displsTotalSize = 0;
12694 if(
nullptr != displs) {
12696 if(recvtype->isModifiedBufferRequired()) {
12700 typename SENDTYPE::ModifiedType* sendbufMod =
nullptr;
12701 int sendbufElements = 0;
12705 sendbufElements = displsTotalSize;
12707 if(sendtype->isModifiedBufferRequired() ) {
12708 sendtype->createModifiedTypeBuffer(sendbufMod, sendbufElements);
12710 sendbufMod =
reinterpret_cast<typename SENDTYPE::ModifiedType*
>(
const_cast<typename SENDTYPE::Type*
>(sendbuf));
12713 typename RECVTYPE::ModifiedType* recvbufMod =
nullptr;
12714 int recvbufElements = 0;
12718 recvbufElements = recvcount;
12723 if(recvtype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == recvbuf)) {
12724 recvtype->createModifiedTypeBuffer(recvbufMod, recvbufElements);
12726 recvbufMod =
reinterpret_cast<typename RECVTYPE::ModifiedType*
>(
const_cast<typename RECVTYPE::Type*
>(recvbuf));
12735 if(sendtype->isModifiedBufferRequired()) {
12737 sendtype->copyIntoModifiedBuffer(sendbuf, displs[i], sendbufMod, displsMod[i], sendcounts[i]);
12752 h->
recvbufCount = recvtype->computeActiveElements(recvcount);
12755 comm)]) - sendtype->computeActiveElements(displs[
getCommRank(comm)]);
12770 sendtype->getValues(sendbuf, displs[rank], h->
recvbufOldPrimals, 0, sendcounts[rank]);
12778 sendtype->getIndices(sendbuf, displs[i], h->
sendbufIndices, displsMod[i], sendcounts[i]);
12783 recvtype->createIndices(recvbuf, 0, h->
recvbufIndices, 0, recvcount);
12787 sendtype->createIndices(
const_cast<typename SENDTYPE::Type*
>(sendbuf), displs[rank], h->
recvbufIndices, 0,
12807 if(!recvtype->isModifiedBufferRequired()) {
12809 recvtype->clearIndices(recvbuf, 0, recvcount);
12813 sendtype->clearIndices(
const_cast<typename SENDTYPE::Type*
>(sendbuf), displs[rank], sendcounts[rank]);
12818 rStatus = MPI_Scatterv(sendbufMod, sendcounts, displsMod, sendtype->getModifiedMpiType(), recvbufMod, recvcount,
12819 recvtype->getModifiedMpiType(), root, comm);
12822 if(recvtype->isModifiedBufferRequired()) {
12824 recvtype->copyFromModifiedBuffer(recvbuf, 0, recvbufMod, 0, recvcount);
12828 sendtype->copyFromModifiedBuffer(
const_cast<typename SENDTYPE::Type*
>(sendbuf), displs[rank], sendbufMod,
12829 displsMod[rank], sendcounts[rank]);
12841 sendtype->registerValue(
const_cast<typename SENDTYPE::Type*
>(sendbuf), displs[rank], h->
recvbufIndices,
12848 if(recvtype->isModifiedBufferRequired()) {
12849 delete [] displsMod;
12853 if(sendtype->isModifiedBufferRequired() ) {
12854 sendtype->deleteModifiedTypeBuffer(sendbufMod);
12857 if(recvtype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == recvbuf)) {
12858 recvtype->deleteModifiedTypeBuffer(recvbufMod);
12869#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
12871 return MPI_Buffer_attach(buffer, size);
12875#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
12877 return MPI_Buffer_detach(buffer_addr, size);
12881#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
12883 return MPI_Cancel(&request->
request);
12887#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
12888 template<
typename DATATYPE>
12890 return MPI_Get_count(status, datatype->getModifiedMpiType(), count);
12894#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
12896 return MPI_Iprobe(source, tag, comm, flag, status);
12900#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
12902 return MPI_Probe(source, tag, comm, status);
12906#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12908 return MPI_Request_get_status(request.
request, flag, status);
12912#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
12914 return MPI_Test_cancelled(status, flag);
12918#if MEDI_MPI_VERSION_3_1 <= MEDI_MPI_TARGET
12920 return MPI_Aint_add(base, disp);
12924#if MEDI_MPI_VERSION_3_1 <= MEDI_MPI_TARGET
12926 return MPI_Aint_diff(addr1, addr2);
12930#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12932 return MPI_Get_address(location, address);
12936#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
12937 template<
typename DATATYPE>
12939 return MPI_Get_elements(status, datatype->getModifiedMpiType(), count);
12943#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
12944 template<
typename DATATYPE>
12946 return MPI_Get_elements_x(status, datatype->getModifiedMpiType(), count);
12950#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12951 template<
typename DATATYPE>
12954 return MPI_Type_get_contents(datatype->getModifiedMpiType(), max_integers, max_addresses, max_datatypes,
12955 array_of_integers, array_of_addresses, array_of_datatypes);
12959#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12960 template<
typename DATATYPE>
12963 return MPI_Type_get_envelope(datatype->getModifiedMpiType(), num_integers, num_addresses, num_datatypes, combiner);
12967#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12968 template<
typename DATATYPE>
12970 return MPI_Type_get_extent(datatype->getModifiedMpiType(), lb, extent);
12974#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
12975 template<
typename DATATYPE>
12977 return MPI_Type_get_extent_x(datatype->getModifiedMpiType(), lb, extent);
12981#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12982 template<
typename DATATYPE>
12984 return MPI_Type_get_true_extent(datatype->getModifiedMpiType(), true_lb, true_extent);
12988#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
12989 template<
typename DATATYPE>
12991 return MPI_Type_get_true_extent_x(datatype->getModifiedMpiType(), true_lb, true_extent);
12995#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
12996 template<
typename DATATYPE>
12998 return MPI_Type_size(datatype->getModifiedMpiType(), size);
13002#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
13003 template<
typename DATATYPE>
13005 return MPI_Type_size_x(datatype->getModifiedMpiType(), size);
13009#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
13011 return MPI_Barrier(comm);
13015#if MEDI_MPI_VERSION_2_2 <= MEDI_MPI_TARGET
13023#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
13025 return MPI_Comm_compare(comm1, comm2, result);
13029#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
13031 return MPI_Comm_create(comm, group, newcomm);
13035#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
13037 return MPI_Comm_create_group(comm, group, tag, newcomm);
13041#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13044 return MPI_Comm_create_keyval(comm_copy_attr_fn, comm_delete_attr_fn, comm_keyval, extra_state);
13048#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13050 return MPI_Comm_delete_attr(comm, comm_keyval);
13054#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
13056 return MPI_Comm_dup(comm, newcomm);
13060#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
13062 return MPI_Comm_dup_with_info(comm, info, newcomm);
13066#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
13068 return MPI_Comm_free(comm);
13072#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13074 return MPI_Comm_free_keyval(comm_keyval);
13078#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13080 return MPI_Comm_get_attr(comm, comm_keyval, attribute_val, flag);
13084#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
13086 return MPI_Comm_get_info(comm, info_used);
13090#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13092 return MPI_Comm_get_name(comm, comm_name, resultlen);
13096#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
13098 return MPI_Comm_group(comm, group);
13102#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
13104 return MPI_Comm_idup(comm, newcomm, &request->
request);
13108#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
13110 return MPI_Comm_rank(comm, rank);
13114#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
13116 return MPI_Comm_remote_group(comm, group);
13120#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
13122 return MPI_Comm_remote_size(comm, size);
13126#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13128 return MPI_Comm_set_attr(comm, comm_keyval, attribute_val);
13132#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
13134 return MPI_Comm_set_info(comm, info);
13138#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13140 return MPI_Comm_set_name(comm, comm_name);
13144#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
13146 return MPI_Comm_size(comm, size);
13150#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
13152 return MPI_Comm_split(comm, color, key, newcomm);
13156#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
13158 return MPI_Comm_split_type(comm, split_type, key, info, newcomm);
13162#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
13164 return MPI_Comm_test_inter(comm, flag);
13168#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
13170 return MPI_Group_compare(group1, group2, result);
13174#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
13176 return MPI_Group_difference(group1, group2, newgroup);
13180#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
13182 return MPI_Group_excl(group, n, ranks, newgroup);
13186#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
13188 return MPI_Group_free(group);
13192#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
13194 return MPI_Group_incl(group, n, ranks, newgroup);
13198#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
13200 return MPI_Group_intersection(group1, group2, newgroup);
13204#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
13206 return MPI_Group_range_excl(group, n, ranges, newgroup);
13210#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
13212 return MPI_Group_range_incl(group, n, ranges, newgroup);
13216#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
13218 return MPI_Group_rank(group, rank);
13222#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
13224 return MPI_Group_size(group, size);
13228#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
13231 return MPI_Group_translate_ranks(group1, n, ranks1, group2, ranks2);
13235#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
13237 return MPI_Group_union(group1, group2, newgroup);
13241#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
13244 return MPI_Intercomm_create(local_comm, local_leader, peer_comm, remote_leader, tag, newintercomm);
13248#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
13250 return MPI_Intercomm_merge(intercomm, high, newintracomm);
13254#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13257 return MPI_Type_create_keyval(type_copy_attr_fn, type_delete_attr_fn, type_keyval, extra_state);
13261#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13262 template<
typename DATATYPE>
13264 return MPI_Type_delete_attr(datatype->getModifiedMpiType(), type_keyval);
13268#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13270 return MPI_Type_free_keyval(type_keyval);
13274#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13275 template<
typename DATATYPE>
13277 return MPI_Type_get_attr(datatype->getModifiedMpiType(), type_keyval, attribute_val, flag);
13281#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13282 template<
typename DATATYPE>
13284 return MPI_Type_get_name(datatype->getModifiedMpiType(), type_name, resultlen);
13288#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13289 template<
typename DATATYPE>
13291 return MPI_Type_set_attr(datatype->getModifiedMpiType(), type_keyval, attribute_val);
13295#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13296 template<
typename DATATYPE>
13298 return MPI_Type_set_name(datatype->getModifiedMpiType(), type_name);
13302#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13305 return MPI_Win_create_keyval(win_copy_attr_fn, win_delete_attr_fn, win_keyval, extra_state);
13309#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13311 return MPI_Win_delete_attr(win, win_keyval);
13315#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13317 return MPI_Win_free_keyval(win_keyval);
13321#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13323 return MPI_Win_get_attr(win, win_keyval, attribute_val, flag);
13327#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13329 return MPI_Win_get_name(win, win_name, resultlen);
13333#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13335 return MPI_Win_set_attr(win, win_keyval, attribute_val);
13339#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13341 return MPI_Win_set_name(win, win_name);
13345#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
13347 return MPI_Cart_coords(comm, rank, maxdims, coords);
13351#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
13354 return MPI_Cart_create(comm_old, ndims, dims, periods, reorder, comm_cart);
13358#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
13360 return MPI_Cart_get(comm, maxdims, dims, periods, coords);
13364#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
13367 return MPI_Cart_map(comm, ndims, dims, periods, newrank);
13371#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
13373 return MPI_Cart_rank(comm, coords, rank);
13377#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
13379 return MPI_Cart_shift(comm, direction, disp, rank_source, rank_dest);
13383#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
13385 return MPI_Cart_sub(comm, remain_dims, newcomm);
13389#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
13391 return MPI_Cartdim_get(comm, ndims);
13395#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
13397 return MPI_Dims_create(nnodes, ndims, dims);
13401#if MEDI_MPI_VERSION_2_2 <= MEDI_MPI_TARGET
13405 return MPI_Dist_graph_create(comm_old, n, sources, degrees, destinations, weights, info, reorder, comm_dist_graph);
13409#if MEDI_MPI_VERSION_2_2 <= MEDI_MPI_TARGET
13413 return MPI_Dist_graph_create_adjacent(comm_old, indegree, sources, sourceweights, outdegree, destinations, destweights,
13414 info, reorder, comm_dist_graph);
13418#if MEDI_MPI_VERSION_2_2 <= MEDI_MPI_TARGET
13420 int maxoutdegree,
int* destinations,
int* destweights) {
13421 return MPI_Dist_graph_neighbors(comm, maxindegree, sources, sourceweights, maxoutdegree, destinations, destweights);
13425#if MEDI_MPI_VERSION_2_2 <= MEDI_MPI_TARGET
13427 return MPI_Dist_graph_neighbors_count(comm, indegree, outdegree, weighted);
13431#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
13434 return MPI_Graph_create(comm_old, nnodes, index, edges, reorder, comm_graph);
13438#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
13440 return MPI_Graph_get(comm, maxindex, maxedges, index, edges);
13444#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
13447 return MPI_Graph_map(comm, nnodes, index, edges, newrank);
13451#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
13453 return MPI_Graph_neighbors(comm, rank, maxneighbors, neighbors);
13457#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
13459 return MPI_Graph_neighbors_count(comm, rank, nneighbors);
13463#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
13465 return MPI_Graphdims_get(comm, nnodes, nedges);
13469#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
13471 return MPI_Topo_test(comm, status);
13475#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
13477 return MPI_Wtick();
13481#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
13483 return MPI_Wtime();
13487#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
13489 return MPI_Abort(comm, errorcode);
13493#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13495 return MPI_Add_error_class(errorclass);
13499#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13501 return MPI_Add_error_code(errorclass, errorcode);
13505#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13507 return MPI_Add_error_string(errorcode,
string);
13511#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13513 return MPI_Alloc_mem(size, info, baseptr);
13517#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13519 return MPI_Comm_call_errhandler(comm, errorcode);
13523#if MEDI_MPI_VERSION_2_2 <= MEDI_MPI_TARGET
13525 return MPI_Comm_create_errhandler(comm_errhandler_fn, errhandler);
13529#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET && MEDI_MPI_TARGET < MEDI_MPI_VERSION_2_2
13531 return MPI_Comm_create_errhandler(comm_errhandler_fn, errhandler);
13535#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13537 return MPI_Comm_get_errhandler(comm, errhandler);
13541#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13543 return MPI_Comm_set_errhandler(comm, errhandler);
13547#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
13549 return MPI_Errhandler_free(errhandler);
13553#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
13555 return MPI_Error_class(errorcode, errorclass);
13559#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
13561 return MPI_Error_string(errorcode,
string, resultlen);
13565#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13567 return MPI_File_call_errhandler(fh, errorcode);
13571#if MEDI_MPI_VERSION_2_2 <= MEDI_MPI_TARGET
13573 return MPI_File_create_errhandler(file_errhandler_fn, errhandler);
13577#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET && MEDI_MPI_TARGET < MEDI_MPI_VERSION_2_2
13579 return MPI_File_create_errhandler(file_errhandler_fn, errhandler);
13583#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13585 return MPI_File_get_errhandler(file, errhandler);
13589#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13591 return MPI_File_set_errhandler(file, errhandler);
13595#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
13597 return MPI_Finalize();
13601#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13603 return MPI_Finalized(flag);
13607#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13609 return MPI_Free_mem(base);
13613#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
13615 return MPI_Get_library_version(version, resultlen);
13619#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
13621 return MPI_Get_processor_name(name, resultlen);
13625#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
13627 return MPI_Get_version(version, subversion);
13631#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
13633 return MPI_Initialized(flag);
13637#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13639 return MPI_Win_call_errhandler(win, errorcode);
13643#if MEDI_MPI_VERSION_2_2 <= MEDI_MPI_TARGET
13645 return MPI_Win_create_errhandler(win_errhandler_fn, errhandler);
13649#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET && MEDI_MPI_TARGET < MEDI_MPI_VERSION_2_2
13651 return MPI_Win_create_errhandler(win_errhandler_fn, errhandler);
13655#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13657 return MPI_Win_get_errhandler(win, errhandler);
13661#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13663 return MPI_Win_set_errhandler(win, errhandler);
13667#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13669 return MPI_Info_create(info);
13673#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13675 return MPI_Info_delete(info, key);
13679#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13681 return MPI_Info_dup(info, newinfo);
13685#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13687 return MPI_Info_free(info);
13691#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13693 return MPI_Info_get(info, key, valuelen, value, flag);
13697#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13699 return MPI_Info_get_nkeys(info, nkeys);
13703#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13705 return MPI_Info_get_nthkey(info, n, key);
13709#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13711 return MPI_Info_get_valuelen(info, key, valuelen, flag);
13715#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13717 return MPI_Info_set(info, key, value);
13721#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13723 return MPI_Close_port(port_name);
13727#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13730 return MPI_Comm_accept(port_name, info, root, comm, newcomm);
13734#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13737 return MPI_Comm_connect(port_name, info, root, comm, newcomm);
13741#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13743 return MPI_Comm_disconnect(comm);
13747#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13749 return MPI_Comm_get_parent(parent);
13753#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13755 return MPI_Comm_join(fd, intercomm);
13759#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13762 return MPI_Comm_spawn(command, argv, maxprocs, info, root, comm, intercomm, array_of_errcodes);
13766#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13769 AMPI_Comm* intercomm,
int* array_of_errcodes) {
13770 return MPI_Comm_spawn_multiple(count, array_of_commands, array_of_argv, array_of_maxprocs, array_of_info, root, comm,
13771 intercomm, array_of_errcodes);
13775#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13777 return MPI_Lookup_name(service_name, info, port_name);
13781#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13783 return MPI_Open_port(info, port_name);
13787#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13790 return MPI_Publish_name(service_name, info, port_name);
13794#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13797 return MPI_Unpublish_name(service_name, info, port_name);
13801#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13803 return MPI_Grequest_complete(request.
request);
13807#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13810 return MPI_Grequest_start(query_fn, free_fn, cancel_fn, extra_state, &request->
request);
13814#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13816 return MPI_Is_thread_main(flag);
13820#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13822 return MPI_Query_thread(provided);
13826#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13828 return MPI_Status_set_cancelled(status, flag);
13832#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13833 template<
typename DATATYPE>
13835 return MPI_Status_set_elements(status, datatype->getModifiedMpiType(), count);
13839#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
13840 template<
typename DATATYPE>
13842 return MPI_Status_set_elements_x(status, datatype->getModifiedMpiType(), count);
13846#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13848 return MPI_File_close(fh);
13852#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13854 return MPI_File_delete(filename, info);
13858#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13860 return MPI_File_get_amode(fh, amode);
13864#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13866 return MPI_File_get_atomicity(fh, flag);
13870#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13872 return MPI_File_get_byte_offset(fh, offset, disp);
13876#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13878 return MPI_File_get_group(fh, group);
13882#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13884 return MPI_File_get_info(fh, info_used);
13888#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13890 return MPI_File_get_position(fh, offset);
13894#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13896 return MPI_File_get_position_shared(fh, offset);
13900#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13902 return MPI_File_get_size(fh, size);
13906#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13907 template<
typename DATATYPE>
13909 return MPI_File_get_type_extent(fh, datatype->getModifiedMpiType(), extent);
13913#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13914 template<
typename ETYPE,
typename FILETYPE>
13916 return MPI_File_get_view(fh, disp, etype->getModifiedMpiType(), filetype->getModifiedMpiType(), datarep);
13920#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13921 template<
typename DATATYPE>
13923 return MPI_File_iread(fh, buf, count, datatype->getModifiedMpiType(), request);
13927#if MEDI_MPI_VERSION_3_1 <= MEDI_MPI_TARGET
13928 template<
typename DATATYPE>
13930 return MPI_File_iread_all(fh, buf, count, datatype->getModifiedMpiType(), &request->
request);
13934#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13935 template<
typename DATATYPE>
13938 return MPI_File_iread_at(fh, offset, buf, count, datatype->getModifiedMpiType(), &request->
request);
13942#if MEDI_MPI_VERSION_3_1 <= MEDI_MPI_TARGET
13943 template<
typename DATATYPE>
13946 return MPI_File_iread_at_all(fh, offset, buf, count, datatype->getModifiedMpiType(), &request->
request);
13950#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13951 template<
typename DATATYPE>
13953 return MPI_File_iread_shared(fh, buf, count, datatype->getModifiedMpiType(), &request->
request);
13957#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13958 template<
typename DATATYPE>
13960 return MPI_File_iwrite(fh, buf, count, datatype->getModifiedMpiType(), &request->
request);
13964#if MEDI_MPI_VERSION_3_1 <= MEDI_MPI_TARGET
13965 template<
typename DATATYPE>
13967 return MPI_File_iwrite_all(fh, buf, count, datatype->getModifiedMpiType(), &request->
request);
13971#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13972 template<
typename DATATYPE>
13975 return MPI_File_iwrite_at(fh, offset, buf, count, datatype->getModifiedMpiType(), &request->
request);
13979#if MEDI_MPI_VERSION_3_1 <= MEDI_MPI_TARGET
13980 template<
typename DATATYPE>
13983 return MPI_File_iwrite_at_all(fh, offset, buf, count, datatype->getModifiedMpiType(), &request->
request);
13987#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13988 template<
typename DATATYPE>
13991 return MPI_File_iwrite_shared(fh, buf, count, datatype->getModifiedMpiType(), &request->
request);
13995#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13998 return MPI_File_open(comm, filename, amode, info, fh);
14002#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
14004 return MPI_File_preallocate(fh, size);
14008#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
14009 template<
typename DATATYPE>
14011 return MPI_File_read(fh, buf, count, datatype->getModifiedMpiType(), status);
14015#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
14016 template<
typename DATATYPE>
14018 return MPI_File_read_all(fh, buf, count, datatype->getModifiedMpiType(), status);
14022#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
14023 template<
typename DATATYPE>
14025 return MPI_File_read_all_begin(fh, buf, count, datatype->getModifiedMpiType());
14029#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
14031 return MPI_File_read_all_end(fh, buf, status);
14035#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
14036 template<
typename DATATYPE>
14039 return MPI_File_read_at(fh, offset, buf, count, datatype->getModifiedMpiType(), status);
14043#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
14044 template<
typename DATATYPE>
14047 return MPI_File_read_at_all(fh, offset, buf, count, datatype->getModifiedMpiType(), status);
14051#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
14052 template<
typename DATATYPE>
14054 return MPI_File_read_at_all_begin(fh, offset, buf, count, datatype->getModifiedMpiType());
14058#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
14060 return MPI_File_read_at_all_end(fh, buf, status);
14064#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
14065 template<
typename DATATYPE>
14067 return MPI_File_read_ordered(fh, buf, count, datatype->getModifiedMpiType(), status);
14071#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
14072 template<
typename DATATYPE>
14074 return MPI_File_read_ordered_begin(fh, buf, count, datatype->getModifiedMpiType());
14078#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
14080 return MPI_File_read_ordered_end(fh, buf, status);
14084#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
14085 template<
typename DATATYPE>
14087 return MPI_File_read_shared(fh, buf, count, datatype->getModifiedMpiType(), status);
14091#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
14093 return MPI_File_seek(fh, offset, whence);
14097#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
14099 return MPI_File_seek_shared(fh, offset, whence);
14103#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
14105 return MPI_File_set_atomicity(fh, flag);
14109#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
14111 return MPI_File_set_info(fh, info);
14115#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
14117 return MPI_File_set_size(fh, size);
14121#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
14122 template<
typename ETYPE,
typename FILETYPE>
14125 return MPI_File_set_view(fh, disp, etype->getModifiedMpiType(), filetype->getModifiedMpiType(), datarep, info);
14129#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
14131 return MPI_File_sync(fh);
14135#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
14136 template<
typename DATATYPE>
14138 return MPI_File_write(fh, buf, count, datatype->getModifiedMpiType(), status);
14142#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
14143 template<
typename DATATYPE>
14145 return MPI_File_write_all(fh, buf, count, datatype->getModifiedMpiType(), status);
14149#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
14150 template<
typename DATATYPE>
14152 return MPI_File_write_all_begin(fh, buf, count, datatype->getModifiedMpiType());
14156#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
14158 return MPI_File_write_all_end(fh, buf, status);
14162#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
14163 template<
typename DATATYPE>
14166 return MPI_File_write_at(fh, offset, buf, count, datatype->getModifiedMpiType(), status);
14170#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
14171 template<
typename DATATYPE>
14174 return MPI_File_write_at_all(fh, offset, buf, count, datatype->getModifiedMpiType(), status);
14178#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
14179 template<
typename DATATYPE>
14181 DATATYPE* datatype) {
14182 return MPI_File_write_at_all_begin(fh, offset, buf, count, datatype->getModifiedMpiType());
14186#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
14188 return MPI_File_write_at_all_end(fh, buf, status);
14192#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
14193 template<
typename DATATYPE>
14195 return MPI_File_write_ordered(fh, buf, count, datatype->getModifiedMpiType(), status);
14199#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
14200 template<
typename DATATYPE>
14202 return MPI_File_write_ordered_begin(fh, buf, count, datatype->getModifiedMpiType());
14206#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
14208 return MPI_File_write_ordered_end(fh, buf, status);
14212#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
14213 template<
typename DATATYPE>
14215 return MPI_File_write_shared(fh, buf, count, datatype->getModifiedMpiType(), status);
14219#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
14223 return MPI_Register_datarep(datarep, read_conversion_fn, write_conversion_fn, dtype_file_extent_fn, extra_state);
14227#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
14229 return MPI_Comm_c2f(comm);
14233#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
14235 return MPI_Comm_f2c(comm);
14239#if MEDI_MPI_VERSION_2_1 <= MEDI_MPI_TARGET
14241 return MPI_Errhandler_c2f(errhandler);
14245#if MEDI_MPI_VERSION_2_1 <= MEDI_MPI_TARGET
14247 return MPI_Errhandler_f2c(errhandler);
14251#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
14253 return MPI_File_c2f(file);
14257#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
14259 return MPI_File_f2c(file);
14263#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
14265 return MPI_Group_c2f(group);
14269#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
14271 return MPI_Group_f2c(group);
14275#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
14277 return MPI_Info_c2f(info);
14281#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
14283 return MPI_Info_f2c(info);
14287#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
14289 return MPI_Status_c2f(c_status, f_status);
14293#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
14295 return MPI_Status_f2c(f_status, c_status);
14299#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
14301 return MPI_Win_c2f(win);
14305#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
14307 return MPI_Win_f2c(win);
14311#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
14313 return MPI_T_category_changed(stamp);
14317#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
14319 return MPI_T_category_get_categories(cat_index, len, indices);
14323#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
14325 return MPI_T_category_get_cvars(cat_index, len, indices);
14329#if MEDI_MPI_VERSION_3_1 <= MEDI_MPI_TARGET
14331 return MPI_T_category_get_index(name, cat_index);
14335#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
14337 int* num_pvars,
int* num_categories) {
14338 return MPI_T_category_get_info(cat_index, name, name_len, desc, desc_len, num_cvars, num_pvars, num_categories);
14342#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
14344 return MPI_T_category_get_num(num_cat);
14348#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
14350 return MPI_T_category_get_pvars(cat_index, len, indices);
14354#if MEDI_MPI_VERSION_3_1 <= MEDI_MPI_TARGET
14356 return MPI_T_cvar_get_index(name, cvar_index);
14360#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
14362 return MPI_T_cvar_get_num(num_cvar);
14366#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
14368 return MPI_T_cvar_handle_alloc(cvar_index, obj_handle, handle, count);
14372#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
14374 return MPI_T_cvar_handle_free(handle);
14378#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
14380 return MPI_T_cvar_read(handle, buf);
14384#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
14386 return MPI_T_cvar_write(handle, buf);
14390#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
14392 return MPI_T_enum_get_info(enumtype, num, name, name_len);
14396#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
14398 return MPI_T_enum_get_item(enumtype, index, value, name, name_len);
14402#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
14404 return MPI_T_finalize();
14408#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
14410 return MPI_T_init_thread(required, provided);
14414#if MEDI_MPI_VERSION_3_1 <= MEDI_MPI_TARGET
14416 return MPI_T_pvar_get_index(name, var_class, pvar_index);
14420#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
14422 return MPI_T_pvar_get_num(num_pvar);
14426#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
14429 return MPI_T_pvar_handle_alloc(session, pvar_index, obj_handle, handle, count);
14433#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
14435 return MPI_T_pvar_handle_free(session, handle);
14439#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
14441 return MPI_T_pvar_read(session, handle, buf);
14445#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
14447 return MPI_T_pvar_readreset(session, handle, buf);
14451#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
14453 return MPI_T_pvar_reset(session, handle);
14457#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
14459 return MPI_T_pvar_session_create(session);
14463#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
14465 return MPI_T_pvar_session_free(session);
14469#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
14471 return MPI_T_pvar_start(session, handle);
14475#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
14477 return MPI_T_pvar_stop(session, handle);
14481#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
14483 return MPI_T_pvar_write(session, handle, buf);
14487#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET && MEDI_MPI_TARGET < MEDI_MPI_VERSION_3_0
14488 inline int AMPI_Address(
void* location,
AMPI_Aint* address) {
14489 return MPI_Address(location, address);
14493#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
14495 return MPI_Attr_delete(comm, keyval);
14499#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
14501 return MPI_Attr_get(comm, keyval, attribute_val, flag);
14505#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
14507 return MPI_Attr_put(comm, keyval, attribute_val);
14511#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
14513 void* extra_state) {
14514 return MPI_Keyval_create(copy_fn, delete_fn, keyval, extra_state);
14518#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
14520 return MPI_Keyval_free(keyval);
14524#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET && MEDI_MPI_TARGET < MEDI_MPI_VERSION_3_0
14525 inline int AMPI_Errhandler_create(AMPI_Handler_function* function,
AMPI_Errhandler* errhandler) {
14526 return MPI_Errhandler_create(function, errhandler);
14530#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET && MEDI_MPI_TARGET < MEDI_MPI_VERSION_3_0
14532 return MPI_Errhandler_get(comm, errhandler);
14536#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET && MEDI_MPI_TARGET < MEDI_MPI_VERSION_3_0
14538 return MPI_Errhandler_set(comm, errhandler);
14542#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET && MEDI_MPI_TARGET < MEDI_MPI_VERSION_3_0
14543 template<
typename DATATYPE>
14544 inline int AMPI_Type_extent(DATATYPE* datatype,
AMPI_Aint* extent) {
14545 return MPI_Type_extent(datatype->getModifiedMpiType(), extent);
14549#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET && MEDI_MPI_TARGET < MEDI_MPI_VERSION_3_0
14550 template<
typename DATATYPE>
14551 inline int AMPI_Type_lb(DATATYPE* datatype,
AMPI_Aint* displacement) {
14552 return MPI_Type_lb(datatype->getModifiedMpiType(), displacement);
14556#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET && MEDI_MPI_TARGET < MEDI_MPI_VERSION_3_0
14557 template<
typename DATATYPE>
14558 inline int AMPI_Type_ub(DATATYPE* datatype,
AMPI_Aint* displacement) {
14559 return MPI_Type_ub(datatype->getModifiedMpiType(), displacement);
14564#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
14565#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:10019
int AMPI_Comm_free_keyval(int *comm_keyval)
Definition ampiFunctions.hpp:13073
int AMPI_T_enum_get_info(MPI_T_enum enumtype, int *num, char *name, int *name_len)
Definition ampiFunctions.hpp:14391
int AMPI_Info_dup(MPI_Info info, MPI_Info *newinfo)
Definition ampiFunctions.hpp:13680
MPI_Comm_errhandler_function AMPI_Comm_errhandler_function
Definition ampiDefinitions.h:848
void AMPI_Ialltoall_iterIn(HandleBase *handle, CallbackFunc func, void *userData)
Definition ampiFunctions.hpp:8414
int AMPI_Errhandler_free(MPI_Errhandler *errhandler)
Definition ampiFunctions.hpp:13548
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:13470
MPI_Win AMPI_Win_f2c(MPI_Fint win)
Definition ampiFunctions.hpp:14306
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:12005
void AMPI_Irsend_d(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:1420
void AMPI_Iscatter_p_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:10984
void AMPI_Alltoallv_iterOut(HandleBase *handle, CallbackFunc func, void *userData)
Definition ampiFunctions.hpp:5805
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:4585
void AMPI_Iscatter_d_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:11028
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:13859
int AMPI_Send_init_postEnd(HandleBase *handle)
Definition ampiFunctions.hpp:3685
void AMPI_Igatherv_b(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:10114
int AMPI_File_create_errhandler(AMPI_File_errhandler_function *file_errhandler_fn, MPI_Errhandler *errhandler)
Definition ampiFunctions.hpp:13572
int AMPI_T_pvar_stop(MPI_T_pvar_session session, MPI_T_pvar_handle handle)
Definition ampiFunctions.hpp:14476
int AMPI_Free_mem(void *base)
Definition ampiFunctions.hpp:13608
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:13808
int AMPI_File_write_all_begin(MPI_File fh, const void *buf, int count, DATATYPE *datatype)
Definition ampiFunctions.hpp:14151
MPI_Datarep_conversion_function AMPI_Datarep_conversion_function
Definition ampiDefinitions.h:878
void AMPI_Irecv_d(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:1123
int AMPI_Group_intersection(MPI_Group group1, MPI_Group group2, MPI_Group *newgroup)
Definition ampiFunctions.hpp:13199
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:13674
int AMPI_Get_elements(const MPI_Status *status, DATATYPE *datatype, int *count)
Definition ampiFunctions.hpp:12938
void AMPI_Igather_d_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:9646
void AMPI_Ibcast_wrap_d(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:9213
void AMPI_Isend_p(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:1671
MPI_Delete_function AMPI_Delete_function
Definition ampiDefinitions.h:884
void AMPI_Reduce_global_b(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:11944
void AMPI_Bcast_wrap_iterIn(HandleBase *handle, CallbackFunc func, void *userData)
Definition ampiFunctions.hpp:6130
void AMPI_Iallreduce_global_p(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:7873
void AMPI_Irsend_iterOut(HandleBase *handle, CallbackFunc func, void *userData)
Definition ampiFunctions.hpp:1486
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:2056
void AMPI_Send_init_iterIn(HandleBase *handle, CallbackFunc func, void *userData)
Definition ampiFunctions.hpp:3494
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:543
int AMPI_File_write_all_end(MPI_File fh, const void *buf, MPI_Status *status)
Definition ampiFunctions.hpp:14157
void AMPI_Gatherv_b(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:6731
int AMPI_Comm_delete_attr(MPI_Comm comm, int comm_keyval)
Definition ampiFunctions.hpp:13049
int AMPI_Type_get_true_extent_x(DATATYPE *datatype, MPI_Count *true_lb, MPI_Count *true_extent)
Definition ampiFunctions.hpp:12990
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:809
int AMPI_Close_port(const char *port_name)
Definition ampiFunctions.hpp:13722
int AMPI_T_pvar_start(MPI_T_pvar_session session, MPI_T_pvar_handle handle)
Definition ampiFunctions.hpp:14470
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:13445
int AMPI_Attr_delete(MPI_Comm comm, int keyval)
Definition ampiFunctions.hpp:14494
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:12919
void AMPI_Iallgatherv_b(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:7519
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:2302
int AMPI_Cart_coords(MPI_Comm comm, int rank, int maxdims, int *coords)
Definition ampiFunctions.hpp:13346
MPI_Aint AMPI_Aint_diff(MPI_Aint addr1, MPI_Aint addr2)
Definition ampiFunctions.hpp:12925
int AMPI_File_read_ordered(MPI_File fh, void *buf, int count, DATATYPE *datatype, MPI_Status *status)
Definition ampiFunctions.hpp:14066
void AMPI_Iscatterv_b_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:11527
int AMPI_Comm_join(int fd, MPI_Comm *intercomm)
Definition ampiFunctions.hpp:13754
int AMPI_T_finalize()
Definition ampiFunctions.hpp:14403
int AMPI_Comm_group(MPI_Comm comm, MPI_Group *group)
Definition ampiFunctions.hpp:13097
void AMPI_Issend_d_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:1998
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:13827
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:8170
int AMPI_T_enum_get_item(MPI_T_enum enumtype, int index, int *value, char *name, int *name_len)
Definition ampiFunctions.hpp:14397
void AMPI_Igather_d(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:9622
void AMPI_Scatter_iterOut(HandleBase *handle, CallbackFunc func, void *userData)
Definition ampiFunctions.hpp:12330
void AMPI_Iallreduce_global_iterOut(HandleBase *handle, CallbackFunc func, void *userData)
Definition ampiFunctions.hpp:8018
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:13500
int AMPI_Open_port(MPI_Info info, char *port_name)
Definition ampiFunctions.hpp:13782
int AMPI_Barrier(MPI_Comm comm)
Definition ampiFunctions.hpp:13010
void AMPI_Send_d(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:3344
void AMPI_Iscatterv_p_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:11431
int AMPI_Info_get_nthkey(MPI_Info info, int n, char *key)
Definition ampiFunctions.hpp:13704
void AMPI_Alltoall_p(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:5396
void AMPI_Bsend_p(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:72
void AMPI_Imrecv_d(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:825
int AMPI_Info_free(MPI_Info *info)
Definition ampiFunctions.hpp:13686
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_Alltoall_iterOut(HandleBase *handle, CallbackFunc func, void *userData)
Definition ampiFunctions.hpp:5490
void AMPI_Alltoallv_p(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:5690
int AMPI_Dist_graph_neighbors_count(MPI_Comm comm, int *indegree, int *outdegree, int *weighted)
Definition ampiFunctions.hpp:13426
void AMPI_Alltoallv_b(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:5759
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:13966
int AMPI_File_iread(MPI_File fh, void *buf, int count, DATATYPE *datatype, AMPI_Request *request)
Definition ampiFunctions.hpp:13922
int AMPI_Type_set_name(DATATYPE *datatype, const char *type_name)
Definition ampiFunctions.hpp:13297
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:13656
void AMPI_Iallgatherv_iterOut(HandleBase *handle, CallbackFunc func, void *userData)
Definition ampiFunctions.hpp:7574
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_Scatterv_iterOut(HandleBase *handle, CallbackFunc func, void *userData)
Definition ampiFunctions.hpp:12669
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:13895
int AMPI_T_pvar_readreset(MPI_T_pvar_session session, MPI_T_pvar_handle handle, void *buf)
Definition ampiFunctions.hpp:14446
void AMPI_Ireduce_global_b(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:10590
int AMPI_Ssend_init_postEnd(HandleBase *handle)
Definition ampiFunctions.hpp:4392
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:3089
int AMPI_Bsend_init_finish(HandleBase *handle)
Definition ampiFunctions.hpp:670
int AMPI_Bsend(const typename DATATYPE::Type *buf, int count, DATATYPE *datatype, int dest, int tag, MPI_Comm comm)
Definition ampiFunctions.hpp:142
int AMPI_Iallgather_finish(HandleBase *handle)
Definition ampiFunctions.hpp:7304
int AMPI_File_get_position(MPI_File fh, MPI_Offset *offset)
Definition ampiFunctions.hpp:13889
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:13352
void AMPI_Ireduce_global_d(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:10547
void AMPI_Gather_p(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:6337
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:5815
int AMPI_Irsend_finish(HandleBase *handle)
Definition ampiFunctions.hpp:1583
int AMPI_Probe(int source, int tag, MPI_Comm comm, MPI_Status *status)
Definition ampiFunctions.hpp:12901
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:14336
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:4884
int AMPI_Ialltoallv_finish(HandleBase *handle)
Definition ampiFunctions.hpp:9033
int AMPI_File_get_size(MPI_File fh, MPI_Offset *size)
Definition ampiFunctions.hpp:13901
int AMPI_Add_error_class(int *errorclass)
Definition ampiFunctions.hpp:13494
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:6454
void AMPI_Issend_p_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:1969
void AMPI_Recv_b(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:2470
void AMPI_Iallgatherv_p(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:7434
int AMPI_Isend_finish(HandleBase *handle)
Definition ampiFunctions.hpp:1863
MPI_File_errhandler_function AMPI_File_errhandler_function
Definition ampiDefinitions.h:854
int AMPI_Keyval_free(int *keyval)
Definition ampiFunctions.hpp:14519
void AMPI_Iallgather_iterIn(HandleBase *handle, CallbackFunc func, void *userData)
Definition ampiFunctions.hpp:7150
int AMPI_Is_thread_main(int *flag)
Definition ampiFunctions.hpp:13815
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:12997
void AMPI_Ialltoallv_d_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:8777
int AMPI_Comm_size(MPI_Comm comm, int *size)
Definition ampiFunctions.hpp:13145
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:13614
int AMPI_Iscatter_finish(HandleBase *handle)
Definition ampiFunctions.hpp:11259
int AMPI_Buffer_attach(void *buffer, int size)
Definition ampiFunctions.hpp:12870
int AMPI_T_pvar_read(MPI_T_pvar_session session, MPI_T_pvar_handle handle, void *buf)
Definition ampiFunctions.hpp:14440
int AMPI_File_set_size(MPI_File fh, MPI_Offset size)
Definition ampiFunctions.hpp:14116
void AMPI_Ssend_init_iterIn(HandleBase *handle, CallbackFunc func, void *userData)
Definition ampiFunctions.hpp:4201
void AMPI_Allgather_b(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:4535
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:9733
int AMPI_Send_init_finish(HandleBase *handle)
Definition ampiFunctions.hpp:3644
int AMPI_Rsend_init_preStart(HandleBase *handle)
Definition ampiFunctions.hpp:3134
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:4224
int AMPI_Get_version(int *version, int *subversion)
Definition ampiFunctions.hpp:13626
void AMPI_Ibcast_wrap_b_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:9278
int AMPI_Cart_rank(MPI_Comm comm, const int *coords, int *rank)
Definition ampiFunctions.hpp:13372
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:11113
int AMPI_File_get_atomicity(MPI_File fh, int *flag)
Definition ampiFunctions.hpp:13865
int AMPI_T_category_get_cvars(int cat_index, int len, int *indices)
Definition ampiFunctions.hpp:14324
int AMPI_Dims_create(int nnodes, int ndims, int *dims)
Definition ampiFunctions.hpp:13396
void AMPI_Ialltoall_d(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:8337
int AMPI_File_seek_shared(MPI_File fh, MPI_Offset offset, int whence)
Definition ampiFunctions.hpp:14098
void AMPI_Gather_b(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:6400
void AMPI_Scatter_d(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:12255
int AMPI_Comm_remote_group(MPI_Comm comm, MPI_Group *group)
Definition ampiFunctions.hpp:13115
int AMPI_Info_set(MPI_Info info, const char *key, const char *value)
Definition ampiFunctions.hpp:13716
int AMPI_Graph_get(MPI_Comm comm, int maxindex, int maxedges, int *index, int *edges)
Definition ampiFunctions.hpp:13439
void AMPI_Bcast_wrap_d(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:6068
int AMPI_File_get_errhandler(MPI_File file, MPI_Errhandler *errhandler)
Definition ampiFunctions.hpp:13584
void AMPI_Imrecv_iterIn(HandleBase *handle, CallbackFunc func, void *userData)
Definition ampiFunctions.hpp:885
int AMPI_Attr_get(MPI_Comm comm, int keyval, void *attribute_val, int *flag)
Definition ampiFunctions.hpp:14500
int AMPI_Igather_finish(HandleBase *handle)
Definition ampiFunctions.hpp:9879
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:13915
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:12679
void AMPI_Sendrecv_p(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:3777
int AMPI_Cartdim_get(MPI_Comm comm, int *ndims)
Definition ampiFunctions.hpp:13390
void AMPI_Ibcast_wrap_p_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:9194
void AMPI_Imrecv_iterOut(HandleBase *handle, CallbackFunc func, void *userData)
Definition ampiFunctions.hpp:893
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:9317
MPI_Comm AMPI_Comm_f2c(MPI_Fint comm)
Definition ampiFunctions.hpp:14234
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:13452
void AMPI_Mrecv_d(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:2245
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:1776
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_Send_init_iterOut(HandleBase *handle, CallbackFunc func, void *userData)
Definition ampiFunctions.hpp:3503
void AMPI_Iscatterv_p(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:11405
int AMPI_File_iread_at(MPI_File fh, MPI_Offset offset, void *buf, int count, DATATYPE *datatype, AMPI_Request *request)
Definition ampiFunctions.hpp:13936
int AMPI_Win_create_errhandler(AMPI_Win_errhandler_function *win_errhandler_fn, MPI_Errhandler *errhandler)
Definition ampiFunctions.hpp:13644
void AMPI_Iscatterv_d_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:11479
void AMPI_Igatherv_iterOut(HandleBase *handle, CallbackFunc func, void *userData)
Definition ampiFunctions.hpp:10174
int AMPI_File_read_at_all_begin(MPI_File fh, MPI_Offset offset, void *buf, int count, DATATYPE *datatype)
Definition ampiFunctions.hpp:14053
void AMPI_Rsend_init_iterIn(HandleBase *handle, CallbackFunc func, void *userData)
Definition ampiFunctions.hpp:3066
int AMPI_File_open(MPI_Comm comm, const char *filename, int amode, MPI_Info info, MPI_File *fh)
Definition ampiFunctions.hpp:13996
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:13004
void AMPI_Ibsend_p_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:282
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_Ssend_iterOut(HandleBase *handle, CallbackFunc func, void *userData)
Definition ampiFunctions.hpp:4095
void AMPI_Mrecv_b(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:2263
void AMPI_Gather_iterOut(HandleBase *handle, CallbackFunc func, void *userData)
Definition ampiFunctions.hpp:6443
void AMPI_Ibcast_wrap_iterIn(HandleBase *handle, CallbackFunc func, void *userData)
Definition ampiFunctions.hpp:9295
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:14045
int AMPI_Comm_set_name(MPI_Comm comm, const char *comm_name)
Definition ampiFunctions.hpp:13139
int AMPI_Igatherv_finish(HandleBase *handle)
Definition ampiFunctions.hpp:10358
int AMPI_Comm_set_info(MPI_Comm comm, MPI_Info info)
Definition ampiFunctions.hpp:13133
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:13255
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:13767
MPI_Fint AMPI_Win_c2f(MPI_Win win)
Definition ampiFunctions.hpp:14300
int AMPI_Win_get_name(MPI_Win win, char *win_name, int *resultlen)
Definition ampiFunctions.hpp:13328
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:14104
int AMPI_T_init_thread(int required, int *provided)
Definition ampiFunctions.hpp:14409
int AMPI_T_category_get_categories(int cat_index, int len, int *indices)
Definition ampiFunctions.hpp:14318
void AMPI_Iallgather_d_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:7094
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:1297
int AMPI_Attr_put(MPI_Comm comm, int keyval, void *attribute_val)
Definition ampiFunctions.hpp:14506
void AMPI_Allreduce_global_d(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:5122
void AMPI_Bsend_init_iterIn(HandleBase *handle, CallbackFunc func, void *userData)
Definition ampiFunctions.hpp:520
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:8436
int AMPI_Group_range_incl(MPI_Group group, int n, ::medi::common::Range *ranges, MPI_Group *newgroup)
Definition ampiFunctions.hpp:13211
int AMPI_File_delete(const char *filename, MPI_Info info)
Definition ampiFunctions.hpp:13853
int AMPI_Group_rank(MPI_Group group, int *rank)
Definition ampiFunctions.hpp:13217
int AMPI_Rsend_init_finish(HandleBase *handle)
Definition ampiFunctions.hpp:3216
void AMPI_Ialltoallv_p_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:8730
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_Scatter_iterIn(HandleBase *handle, CallbackFunc func, void *userData)
Definition ampiFunctions.hpp:12318
void AMPI_Ibcast_wrap_b(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:9252
void AMPI_Irsend_d_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:1438
int AMPI_File_iwrite(MPI_File fh, const void *buf, int count, DATATYPE *datatype, AMPI_Request *request)
Definition ampiFunctions.hpp:13959
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:10069
void AMPI_Ibcast_wrap_p(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:9171
void AMPI_Irecv_p(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:1092
int AMPI_File_set_info(MPI_File fh, MPI_Info info)
Definition ampiFunctions.hpp:14110
int AMPI_Status_set_elements_x(MPI_Status *status, DATATYPE *datatype, MPI_Count count)
Definition ampiFunctions.hpp:13841
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:13303
void AMPI_Isend_iterOut(HandleBase *handle, CallbackFunc func, void *userData)
Definition ampiFunctions.hpp:1766
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
void AMPI_Allreduce_global_iterOut(HandleBase *handle, CallbackFunc func, void *userData)
Definition ampiFunctions.hpp:5194
int AMPI_Comm_test_inter(MPI_Comm comm, int *flag)
Definition ampiFunctions.hpp:13163
int AMPI_Ssend_init_finish(HandleBase *handle)
Definition ampiFunctions.hpp:4351
int AMPI_Cart_map(MPI_Comm comm, int ndims, const int *dims, const int *periods, int *newrank)
Definition ampiFunctions.hpp:13365
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:13989
int AMPI_Comm_idup(MPI_Comm comm, MPI_Comm *newcomm, AMPI_Request *request)
Definition ampiFunctions.hpp:13103
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:13042
int AMPI_Cart_shift(MPI_Comm comm, int direction, int disp, int *rank_source, int *rank_dest)
Definition ampiFunctions.hpp:13378
void AMPI_Isend_b_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:1744
double AMPI_Wtick()
Definition ampiFunctions.hpp:13476
int AMPI_Lookup_name(const char *service_name, MPI_Info info, char *port_name)
Definition ampiFunctions.hpp:13776
int AMPI_T_cvar_get_num(int *num_cvar)
Definition ampiFunctions.hpp:14361
void AMPI_Ssend_init_iterOut(HandleBase *handle, CallbackFunc func, void *userData)
Definition ampiFunctions.hpp:4210
void AMPI_Ialltoallv_iterIn(HandleBase *handle, CallbackFunc func, void *userData)
Definition ampiFunctions.hpp:8843
int AMPI_Comm_get_attr(MPI_Comm comm, int comm_keyval, void *attribute_val, int *flag)
Definition ampiFunctions.hpp:13079
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:13067
int AMPI_Recv_init_finish(HandleBase *handle)
Definition ampiFunctions.hpp:2780
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:1449
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:6097
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:13316
void AMPI_Ireduce_global_iterOut(HandleBase *handle, CallbackFunc func, void *userData)
Definition ampiFunctions.hpp:10652
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:13181
int AMPI_Request_get_status(AMPI_Request request, int *flag, MPI_Status *status)
Definition ampiFunctions.hpp:12907
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:8705
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:7172
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:12889
void AMPI_Iallgatherv_d_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:7502
ADToolInterface const * selectADTool(ADToolInterface const &tool)
Definition adToolInterface.h:363
int AMPI_Status_f2c(const MPI_Fint *f_status, MPI_Status *c_status)
Definition ampiFunctions.hpp:14294
int AMPI_File_set_errhandler(MPI_File file, MPI_Errhandler errhandler)
Definition ampiFunctions.hpp:13590
void(* ForwardFunction)(HandleBase *h, AdjointInterface *a)
Definition typeDefinitions.h:49
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:369
MPI_Group AMPI_Group_f2c(MPI_Fint group)
Definition ampiFunctions.hpp:14270
int AMPI_File_read(MPI_File fh, void *buf, int count, DATATYPE *datatype, MPI_Status *status)
Definition ampiFunctions.hpp:14010
void AMPI_Irecv_b_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:1172
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:12285
int AMPI_Intercomm_merge(MPI_Comm intercomm, int high, MPI_Comm *newintracomm)
Definition ampiFunctions.hpp:13249
int AMPI_File_preallocate(MPI_File fh, MPI_Offset size)
Definition ampiFunctions.hpp:14003
void AMPI_Ssend_d(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:4051
void AMPI_Iallgather_d(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:7072
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:13121
int AMPI_Type_delete_attr(DATATYPE *datatype, int type_keyval)
Definition ampiFunctions.hpp:13263
void AMPI_Ialltoall_iterOut(HandleBase *handle, CallbackFunc func, void *userData)
Definition ampiFunctions.hpp:8424
int AMPI_Status_set_elements(MPI_Status *status, DATATYPE *datatype, int count)
Definition ampiFunctions.hpp:13834
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:7032
int AMPI_Group_size(MPI_Group group, int *size)
Definition ampiFunctions.hpp:13223
void AMPI_Recv_init_iterOut(HandleBase *handle, CallbackFunc func, void *userData)
Definition ampiFunctions.hpp:2628
MPI_Info AMPI_Info_f2c(MPI_Fint info)
Definition ampiFunctions.hpp:14282
void AMPI_Iallgather_iterOut(HandleBase *handle, CallbackFunc func, void *userData)
Definition ampiFunctions.hpp:7160
int AMPI_Info_create(MPI_Info *info)
Definition ampiFunctions.hpp:13668
int AMPI_T_category_get_pvars(int cat_index, int len, int *indices)
Definition ampiFunctions.hpp:14349
void AMPI_Ialltoallv_b_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:8824
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_Mrecv_iterIn(HandleBase *handle, CallbackFunc func, void *userData)
Definition ampiFunctions.hpp:2285
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:8567
int AMPI_Finalize()
Definition ampiFunctions.hpp:13596
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:10188
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:337
int AMPI_Issend_finish(HandleBase *handle)
Definition ampiFunctions.hpp:2143
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:3834
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:13432
void AMPI_Allgather_p(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:4480
int AMPI_Info_get(MPI_Info info, const char *key, int valuelen, char *value, int *flag)
Definition ampiFunctions.hpp:13692
MPI_Fint AMPI_Info_c2f(MPI_Info info)
Definition ampiFunctions.hpp:14276
int AMPI_Win_set_errhandler(MPI_Win win, MPI_Errhandler errhandler)
Definition ampiFunctions.hpp:13662
int AMPI_File_get_group(MPI_File fh, MPI_Group *group)
Definition ampiFunctions.hpp:13877
void AMPI_Bcast_wrap_iterOut(HandleBase *handle, CallbackFunc func, void *userData)
Definition ampiFunctions.hpp:6141
void AMPI_Ialltoallv_iterOut(HandleBase *handle, CallbackFunc func, void *userData)
Definition ampiFunctions.hpp:8853
int AMPI_Comm_set_errhandler(MPI_Comm comm, MPI_Errhandler errhandler)
Definition ampiFunctions.hpp:13542
int AMPI_File_read_shared(MPI_File fh, void *buf, int count, DATATYPE *datatype, MPI_Status *status)
Definition ampiFunctions.hpp:14086
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:14427
void AMPI_Irsend_p_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:1409
void AMPI_Irecv_iterIn(HandleBase *handle, CallbackFunc func, void *userData)
Definition ampiFunctions.hpp:1183
void AMPI_Isend_iterIn(HandleBase *handle, CallbackFunc func, void *userData)
Definition ampiFunctions.hpp:1757
void AMPI_Allgather_iterOut(HandleBase *handle, CallbackFunc func, void *userData)
Definition ampiFunctions.hpp:4575
void AMPI_Igather_p(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:9576
int AMPI_Get_address(const void *location, MPI_Aint *address)
Definition ampiFunctions.hpp:12931
int AMPI_Win_set_attr(MPI_Win win, int win_keyval, void *attribute_val)
Definition ampiFunctions.hpp:13334
void AMPI_Imrecv_b(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:853
int AMPI_Query_thread(int *provided)
Definition ampiFunctions.hpp:13821
int AMPI_File_sync(MPI_File fh)
Definition ampiFunctions.hpp:14130
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:5425
int AMPI_Rsend(const typename DATATYPE::Type *buf, int count, DATATYPE *datatype, int dest, int tag, MPI_Comm comm)
Definition ampiFunctions.hpp:2968
void AMPI_Igather_p_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:9600
void AMPI_Gatherv_iterIn(HandleBase *handle, CallbackFunc func, void *userData)
Definition ampiFunctions.hpp:6769
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:3517
void AMPI_Igather_b(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:9663
int AMPI_Ssend(const typename DATATYPE::Type *buf, int count, DATATYPE *datatype, int dest, int tag, MPI_Comm comm)
Definition ampiFunctions.hpp:4103
int AMPI_T_pvar_reset(MPI_T_pvar_session session, MPI_T_pvar_handle handle)
Definition ampiFunctions.hpp:14452
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:13632
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:7986
void AMPI_Igatherv_d_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:10095
int AMPI_Group_range_excl(MPI_Group group, int n, ::medi::common::Range *ranges, MPI_Group *newgroup)
Definition ampiFunctions.hpp:13205
int AMPI_Type_set_attr(DATATYPE *datatype, int type_keyval, void *attribute_val)
Definition ampiFunctions.hpp:13290
double AMPI_Wtime()
Definition ampiFunctions.hpp:13482
int AMPI_File_set_view(MPI_File fh, MPI_Offset disp, ETYPE *etype, FILETYPE *filetype, const char *datarep, MPI_Info info)
Definition ampiFunctions.hpp:14123
int AMPI_Iprobe(int source, int tag, MPI_Comm comm, int *flag, MPI_Status *status)
Definition ampiFunctions.hpp:12895
void AMPI_Send_b(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:3362
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:11045
void AMPI_Rsend_iterOut(HandleBase *handle, CallbackFunc func, void *userData)
Definition ampiFunctions.hpp:2960
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:14421
void AMPI_Ialltoall_adj(typename SENDTYPE::AdjointType *&sendbufAdjoints, int sendbufSize, int sendcount, SENDTYPE *sendtype, typename RECVTYPE::AdjointType *&recvbufAdjoints, int recvbufSize, int recvcount, RECVTYPE *recvtype, MPI_Comm comm, AMPI_Request *request)
Definition reverseFunctions.hpp:328
void(*)(void *id, void *userData) CallbackFunc
Definition typeDefinitions.h:45
void AMPI_Allgatherv_iterOut(HandleBase *handle, CallbackFunc func, void *userData)
Definition ampiFunctions.hpp:4874
void AMPI_Ssend_iterIn(HandleBase *handle, CallbackFunc func, void *userData)
Definition ampiFunctions.hpp:4086
int AMPI_File_write(MPI_File fh, const void *buf, int count, DATATYPE *datatype, MPI_Status *status)
Definition ampiFunctions.hpp:14137
void AMPI_Iscatter_d(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:11004
int AMPI_Iscatterv_finish(HandleBase *handle)
Definition ampiFunctions.hpp:11741
int AMPI_Dist_graph_neighbors(MPI_Comm comm, int maxindegree, int *sources, int *sourceweights, int maxoutdegree, int *destinations, int *destweights)
Definition ampiFunctions.hpp:13419
void AMPI_Ssend_p(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:4033
int AMPI_Comm_get_name(MPI_Comm comm, char *comm_name, int *resultlen)
Definition ampiFunctions.hpp:13091
void AMPI_Scatterv_b(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:12621
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
void AMPI_Issend_iterIn(HandleBase *handle, CallbackFunc func, void *userData)
Definition ampiFunctions.hpp:2037
int AMPI_T_category_get_index(const char *name, int *cat_index)
Definition ampiFunctions.hpp:14330
void AMPI_Sendrecv_iterOut(HandleBase *handle, CallbackFunc func, void *userData)
Definition ampiFunctions.hpp:3874
void AMPI_Recv_iterOut(HandleBase *handle, CallbackFunc func, void *userData)
Definition ampiFunctions.hpp:2501
void AMPI_Ialltoall_b_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:8399
void AMPI_Gather_d(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:6371
int AMPI_Get_elements_x(const MPI_Status *status, DATATYPE *datatype, MPI_Count *count)
Definition ampiFunctions.hpp:12945
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:14246
int AMPI_Comm_dup(MPI_Comm comm, MPI_Comm *newcomm)
Definition ampiFunctions.hpp:13055
int AMPI_Group_difference(MPI_Group group1, MPI_Group group2, MPI_Group *newgroup)
Definition ampiFunctions.hpp:13175
void AMPI_Iscatter_p(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:10960
void AMPI_Scatterv_iterIn(HandleBase *handle, CallbackFunc func, void *userData)
Definition ampiFunctions.hpp:12657
void AMPI_Ssend_b(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:4069
void AMPI_Alltoall_iterIn(HandleBase *handle, CallbackFunc func, void *userData)
Definition ampiFunctions.hpp:5480
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:13402
int AMPI_Grequest_complete(AMPI_Request request)
Definition ampiFunctions.hpp:13802
void AMPI_Iallgather_b(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:7109
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:13229
void AMPI_Gather_iterIn(HandleBase *handle, CallbackFunc func, void *userData)
Definition ampiFunctions.hpp:6434
int AMPI_Comm_compare(MPI_Comm comm1, MPI_Comm comm2, int *result)
Definition ampiFunctions.hpp:13024
void AMPI_Iallgatherv_iterIn(HandleBase *handle, CallbackFunc func, void *userData)
Definition ampiFunctions.hpp:7564
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:14017
void AMPI_Irsend_iterIn(HandleBase *handle, CallbackFunc func, void *userData)
Definition ampiFunctions.hpp:1477
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:13518
int AMPI_Type_get_extent_x(DATATYPE *datatype, MPI_Count *lb, MPI_Count *extent)
Definition ampiFunctions.hpp:12976
int AMPI_Win_delete_attr(MPI_Win win, int win_keyval)
Definition ampiFunctions.hpp:13310
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:904
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:14252
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:5203
void AMPI_Igather_b_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:9692
MPI_Fint AMPI_Group_c2f(MPI_Group group)
Definition ampiFunctions.hpp:14264
void AMPI_Iscatterv_d(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:11453
void AMPI_Imrecv_d_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:840
int AMPI_T_pvar_session_free(MPI_T_pvar_session *session)
Definition ampiFunctions.hpp:14464
int AMPI_Graph_neighbors_count(MPI_Comm comm, int rank, int *nneighbors)
Definition ampiFunctions.hpp:13458
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:11570
void AMPI_Ibcast_wrap_iterOut(HandleBase *handle, CallbackFunc func, void *userData)
Definition ampiFunctions.hpp:9306
int AMPI_Ibsend_finish(HandleBase *handle)
Definition ampiFunctions.hpp:456
int AMPI_File_write_shared(MPI_File fh, const void *buf, int count, DATATYPE *datatype, MPI_Status *status)
Definition ampiFunctions.hpp:14214
void AMPI_Ireduce_global_iterIn(HandleBase *handle, CallbackFunc func, void *userData)
Definition ampiFunctions.hpp:10643
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:8865
int AMPI_Info_get_valuelen(MPI_Info info, const char *key, int *valuelen, int *flag)
Definition ampiFunctions.hpp:13710
int AMPI_Win_set_name(MPI_Win win, const char *win_name)
Definition ampiFunctions.hpp:13340
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:13410
void AMPI_Irsend_p(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:1391
void AMPI_Recv_init_iterIn(HandleBase *handle, CallbackFunc func, void *userData)
Definition ampiFunctions.hpp:2620
void AMPI_Recv_d(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:2451
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:2643
int AMPI_Comm_split(MPI_Comm comm, int color, int key, MPI_Comm *newcomm)
Definition ampiFunctions.hpp:13151
int AMPI_Type_get_true_extent(DATATYPE *datatype, MPI_Aint *true_lb, MPI_Aint *true_extent)
Definition ampiFunctions.hpp:12983
int AMPI_File_get_byte_offset(MPI_File fh, MPI_Offset offset, MPI_Offset *disp)
Definition ampiFunctions.hpp:13871
int AMPI_Alloc_mem(MPI_Aint size, MPI_Info info, void *baseptr)
Definition ampiFunctions.hpp:13512
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:13620
void AMPI_Rsend_p(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:2898
int AMPI_Comm_create(MPI_Comm comm, MPI_Group group, MPI_Comm *newcomm)
Definition ampiFunctions.hpp:13030
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:13742
int AMPI_Win_call_errhandler(MPI_Win win, int errorcode)
Definition ampiFunctions.hpp:13638
void AMPI_Igatherv_p_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:10045
int AMPI_T_pvar_handle_free(MPI_T_pvar_session session, MPI_T_pvar_handle *handle)
Definition ampiFunctions.hpp:14434
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:13536
int AMPI_Comm_split_type(MPI_Comm comm, int split_type, int key, MPI_Info info, MPI_Comm *newcomm)
Definition ampiFunctions.hpp:13157
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
void AMPI_Bsend_iterOut(HandleBase *handle, CallbackFunc func, void *userData)
Definition ampiFunctions.hpp:134
void AMPI_Iscatterv_iterIn(HandleBase *handle, CallbackFunc func, void *userData)
Definition ampiFunctions.hpp:11546
int AMPI_Add_error_string(int errorcode, const char *string)
Definition ampiFunctions.hpp:13506
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:1202
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:14220
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:2009
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:7054
MPI_Fint AMPI_Errhandler_c2f(MPI_Errhandler errhandler)
Definition ampiFunctions.hpp:14240
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:7586
int AMPI_Comm_get_parent(MPI_Comm *parent)
Definition ampiFunctions.hpp:13748
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:13193
int AMPI_Comm_set_attr(MPI_Comm comm, int comm_keyval, void *attribute_val)
Definition ampiFunctions.hpp:13127
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:4269
void AMPI_Iallgatherv_p_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:7458
void AMPI_Irecv_iterOut(HandleBase *handle, CallbackFunc func, void *userData)
Definition ampiFunctions.hpp:1191
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:13760
int AMPI_Op_commutative(AMPI_Op op, int *commute)
Definition ampiFunctions.hpp:13016
void AMPI_Iscatter_b_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:11072
void AMPI_Allgatherv_b(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:4831
int AMPI_Buffer_detach(void *buffer_addr, int *size)
Definition ampiFunctions.hpp:12876
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:13929
void AMPI_Rsend_d(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:2916
void AMPI_Issend_p(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:1951
void AMPI_Imrecv_p(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:794
int AMPI_Finalized(int *flag)
Definition ampiFunctions.hpp:13602
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:5500
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:14194
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:14037
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:14355
int AMPI_File_read_all_begin(MPI_File fh, void *buf, int count, DATATYPE *datatype)
Definition ampiFunctions.hpp:14024
int AMPI_Bcast_wrap(typename DATATYPE::Type *bufferSend, typename DATATYPE::Type *bufferRecv, int count, DATATYPE *datatype, int root, MPI_Comm comm)
Definition ampiFunctions.hpp:6150
void AMPI_Allgatherv_d(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:4802
void AMPI_Iallreduce_global_d(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:7917
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:13788
void AMPI_Rsend_init_iterOut(HandleBase *handle, CallbackFunc func, void *userData)
Definition ampiFunctions.hpp:3075
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:11498
int AMPI_Imrecv_finish(HandleBase *handle)
Definition ampiFunctions.hpp:995
void AMPI_Isend_b(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:1729
void AMPI_Allreduce_global_p(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:5092
int AMPI_File_get_type_extent(MPI_File fh, DATATYPE *datatype, MPI_Aint *extent)
Definition ampiFunctions.hpp:13908
int AMPI_Recv_init_preStart(HandleBase *handle)
Definition ampiFunctions.hpp:2689
void AMPI_Ialltoall_d_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:8359
void AMPI_Rsend_b(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:2934
void AMPI_Ibsend_d(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:293
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:13795
int AMPI_Bsend_init_postEnd(HandleBase *handle)
Definition ampiFunctions.hpp:711
void AMPI_Ibsend_p(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:264
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:12552
int AMPI_Rsend_init_postEnd(HandleBase *handle)
Definition ampiFunctions.hpp:3257
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:8030
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:6791
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:12588
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:10499
void AMPI_Gatherv_d(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:6698
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:13847
void AMPI_Ibsend_iterOut(HandleBase *handle, CallbackFunc func, void *userData)
Definition ampiFunctions.hpp:359
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:9236
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:9453
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:3807
int AMPI_T_pvar_session_create(MPI_T_pvar_session *session)
Definition ampiFunctions.hpp:14458
int AMPI_Group_union(MPI_Group group1, MPI_Group group2, MPI_Group *newgroup)
Definition ampiFunctions.hpp:13236
void AMPI_Alltoallv_d(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:5726
void AMPI_Send_p(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:3326
void AMPI_Iallreduce_global_iterIn(HandleBase *handle, CallbackFunc func, void *userData)
Definition ampiFunctions.hpp:8008
void AMPI_Reduce_global_d(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:11913
int(* ContinueFunction)(HandleBase *h)
Definition typeDefinitions.h:52
void AMPI_Iscatterv_iterOut(HandleBase *handle, CallbackFunc func, void *userData)
Definition ampiFunctions.hpp:11558
void AMPI_Reduce_global_iterOut(HandleBase *handle, CallbackFunc func, void *userData)
Definition ampiFunctions.hpp:11994
void AMPI_Iallreduce_global_p_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:7897
void AMPI_Alltoallv_iterIn(HandleBase *handle, CallbackFunc func, void *userData)
Definition ampiFunctions.hpp:5795
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:14187
int AMPI_Type_get_extent(DATATYPE *datatype, MPI_Aint *lb, MPI_Aint *extent)
Definition ampiFunctions.hpp:12969
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_Ibsend_iterIn(HandleBase *handle, CallbackFunc func, void *userData)
Definition ampiFunctions.hpp:350
void AMPI_Mrecv_p(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:2225
int AMPI_Test_cancelled(const MPI_Status *status, int *flag)
Definition ampiFunctions.hpp:12913
void AMPI_Iallreduce_global_d_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:7941
void AMPI_Ireduce_global_d_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:10572
void AMPI_Allgatherv_p(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:4770
void AMPI_Rsend_iterIn(HandleBase *handle, CallbackFunc func, void *userData)
Definition ampiFunctions.hpp:2951
void AMPI_Send_iterOut(HandleBase *handle, CallbackFunc func, void *userData)
Definition ampiFunctions.hpp:3388
void AMPI_Iallgather_b_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:7134
void AMPI_Allreduce_global_iterIn(HandleBase *handle, CallbackFunc func, void *userData)
Definition ampiFunctions.hpp:5185
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:13566
int AMPI_File_write_at_all_begin(MPI_File fh, MPI_Offset offset, const void *buf, int count, DATATYPE *datatype)
Definition ampiFunctions.hpp:14180
int AMPI_Type_get_envelope(DATATYPE *datatype, int *num_integers, int *num_addresses, int *num_datatypes, int *combiner)
Definition ampiFunctions.hpp:12961
int AMPI_Group_free(MPI_Group *group)
Definition ampiFunctions.hpp:13187
void AMPI_Ialltoall_b(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:8374
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:6660
void AMPI_Iallgatherv_d(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:7478
void AMPI_Imrecv_b_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:874
int AMPI_Cart_sub(MPI_Comm comm, const int *remain_dims, MPI_Comm *newcomm)
Definition ampiFunctions.hpp:13384
int AMPI_File_read_ordered_begin(MPI_File fh, void *buf, int count, DATATYPE *datatype)
Definition ampiFunctions.hpp:14073
void AMPI_Isend_d(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:1700
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:13883
int AMPI_File_iread_shared(MPI_File fh, void *buf, int count, DATATYPE *datatype, AMPI_Request *request)
Definition ampiFunctions.hpp:13952
int AMPI_Comm_accept(const char *port_name, MPI_Info info, int root, MPI_Comm comm, MPI_Comm *newcomm)
Definition ampiFunctions.hpp:13728
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:14343
void AMPI_Alltoall_b(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:5451
int AMPI_Recv_init_postEnd(HandleBase *handle)
Definition ampiFunctions.hpp:2827
MPI_Fint AMPI_Comm_c2f(MPI_Comm comm)
Definition ampiFunctions.hpp:14228
void AMPI_Issend_b_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:2024
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:13944
void AMPI_Recv_p(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:2429
int AMPI_Send_init_preStart(HandleBase *handle)
Definition ampiFunctions.hpp:3562
void AMPI_Isend_p_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:1689
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:14172
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
void AMPI_Bsend_init_iterOut(HandleBase *handle, CallbackFunc func, void *userData)
Definition ampiFunctions.hpp:529
int AMPI_File_write_ordered_begin(MPI_File fh, const void *buf, int count, DATATYPE *datatype)
Definition ampiFunctions.hpp:14201
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:14288
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
void AMPI_Allgatherv_iterIn(HandleBase *handle, CallbackFunc func, void *userData)
Definition ampiFunctions.hpp:4864
int AMPI_Graphdims_get(MPI_Comm comm, int *nnodes, int *nedges)
Definition ampiFunctions.hpp:13464
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:7546
int AMPI_File_write_all(MPI_File fh, const void *buf, int count, DATATYPE *datatype, MPI_Status *status)
Definition ampiFunctions.hpp:14144
int AMPI_Comm_connect(const char *port_name, MPI_Info info, int root, MPI_Comm comm, MPI_Comm *newcomm)
Definition ampiFunctions.hpp:13735
void AMPI_Bcast_wrap_p(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:6036
int AMPI_Type_get_name(DATATYPE *datatype, char *type_name, int *resultlen)
Definition ampiFunctions.hpp:13283
void AMPI_Ibsend_b(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:322
int AMPI_T_cvar_read(MPI_T_cvar_handle handle, void *buf)
Definition ampiFunctions.hpp:14379
void AMPI_Irecv_b(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:1151
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:13981
int AMPI_File_write_at(MPI_File fh, MPI_Offset offset, const void *buf, int count, DATATYPE *datatype, MPI_Status *status)
Definition ampiFunctions.hpp:14164
void AMPI_Igatherv_b_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:10145
void AMPI_Irecv_p_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:1107
void AMPI_Gatherv_iterOut(HandleBase *handle, CallbackFunc func, void *userData)
Definition ampiFunctions.hpp:6779
int AMPI_T_pvar_get_index(const char *name, int var_class, int *pvar_index)
Definition ampiFunctions.hpp:14415
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:10665
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:13242
int AMPI_Type_get_attr(DATATYPE *datatype, int type_keyval, void *attribute_val, int *flag)
Definition ampiFunctions.hpp:13276
void(* ReverseFunction)(HandleBase *h, AdjointInterface *a)
Definition typeDefinitions.h:48
int AMPI_Type_free_keyval(int *type_keyval)
Definition ampiFunctions.hpp:13269
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:1496
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:13488
void AMPI_Scatter_p(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:12222
int AMPI_File_iwrite_at(MPI_File fh, MPI_Offset offset, const void *buf, int count, DATATYPE *datatype, AMPI_Request *request)
Definition ampiFunctions.hpp:13973
int AMPI_Ireduce_global_finish(HandleBase *handle)
Definition ampiFunctions.hpp:10819
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:14367
int AMPI_Win_get_attr(MPI_Win win, int win_keyval, void *attribute_val, int *flag)
Definition ampiFunctions.hpp:13322
void AMPI_Sendrecv_iterIn(HandleBase *handle, CallbackFunc func, void *userData)
Definition ampiFunctions.hpp:3864
void AMPI_Allreduce_global_b(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:5149
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:2510
int AMPI_Comm_get_info(MPI_Comm comm, MPI_Info *info_used)
Definition ampiFunctions.hpp:13085
int AMPI_Bsend_init_preStart(HandleBase *handle)
Definition ampiFunctions.hpp:588
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:12340
void AMPI_Ialltoall_p_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:8319
int AMPI_Comm_create_group(MPI_Comm comm, MPI_Group group, int tag, MPI_Comm *newcomm)
Definition ampiFunctions.hpp:13036
MPI_File AMPI_File_f2c(MPI_Fint file)
Definition ampiFunctions.hpp:14258
int AMPI_File_read_ordered_end(MPI_File fh, void *buf, MPI_Status *status)
Definition ampiFunctions.hpp:14079
void AMPI_Reduce_global_p(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:11877
void AMPI_Iallreduce_global_b(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:7958
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_Reduce_global_iterIn(HandleBase *handle, CallbackFunc func, void *userData)
Definition ampiFunctions.hpp:11985
void AMPI_Irsend_b_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:1464
int AMPI_Iallgatherv_finish(HandleBase *handle)
Definition ampiFunctions.hpp:7742
void AMPI_Iscatter_iterOut(HandleBase *handle, CallbackFunc func, void *userData)
Definition ampiFunctions.hpp:11101
int AMPI_Error_string(int errorcode, char *string, int *resultlen)
Definition ampiFunctions.hpp:13560
int AMPI_Comm_dup_with_info(MPI_Comm comm, MPI_Info info, MPI_Comm *newcomm)
Definition ampiFunctions.hpp:13061
int AMPI_T_cvar_handle_free(MPI_T_cvar_handle *handle)
Definition ampiFunctions.hpp:14373
int AMPI_Comm_create_errhandler(AMPI_Comm_errhandler_function *comm_errhandler_fn, MPI_Errhandler *errhandler)
Definition ampiFunctions.hpp:13524
int AMPI_File_seek(MPI_File fh, MPI_Offset offset, int whence)
Definition ampiFunctions.hpp:14092
void AMPI_Bsend_iterIn(HandleBase *handle, CallbackFunc func, void *userData)
Definition ampiFunctions.hpp:125
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:12952
void AMPI_Send_iterIn(HandleBase *handle, CallbackFunc func, void *userData)
Definition ampiFunctions.hpp:3379
int AMPI_Cart_get(MPI_Comm comm, int maxdims, int *dims, int *periods, int *coords)
Definition ampiFunctions.hpp:13359
void AMPI_Ialltoallv_d(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:8752
int AMPI_Send(const typename DATATYPE::Type *buf, int count, DATATYPE *datatype, int dest, int tag, MPI_Comm comm)
Definition ampiFunctions.hpp:3396
void AMPI_Issend_d(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:1980
void AMPI_Ireduce_global_p_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:10524
int AMPI_Group_compare(MPI_Group group1, MPI_Group group2, int *result)
Definition ampiFunctions.hpp:13169
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:3884
void AMPI_Ialltoall_p(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:8297
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:14312
void AMPI_Isend_d_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:1718
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:4509
int AMPI_Comm_rank(MPI_Comm comm, int *rank)
Definition ampiFunctions.hpp:13109
int AMPI_Info_get_nkeys(MPI_Info info, int *nkeys)
Definition ampiFunctions.hpp:13698
void AMPI_Mrecv_iterOut(HandleBase *handle, CallbackFunc func, void *userData)
Definition ampiFunctions.hpp:2293
int AMPI_Cancel(AMPI_Request *request)
Definition ampiFunctions.hpp:12882
void AMPI_Allgather_iterIn(HandleBase *handle, CallbackFunc func, void *userData)
Definition ampiFunctions.hpp:4565
void AMPI_Ialltoallv_b(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:8796
void AMPI_Irecv_d_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:1138
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:14059
int AMPI_T_cvar_write(MPI_T_cvar_handle handle, const void *buf)
Definition ampiFunctions.hpp:14385
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:10621
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:14030
void AMPI_Igather_iterIn(HandleBase *handle, CallbackFunc func, void *userData)
Definition ampiFunctions.hpp:9709
void AMPI_Iscatter_iterIn(HandleBase *handle, CallbackFunc func, void *userData)
Definition ampiFunctions.hpp:11089
MPI_Comm_copy_attr_function AMPI_Comm_copy_attr_function
Definition ampiDefinitions.h:830
void AMPI_Issend_iterOut(HandleBase *handle, CallbackFunc func, void *userData)
Definition ampiFunctions.hpp:2046
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
void AMPI_Recv_iterIn(HandleBase *handle, CallbackFunc func, void *userData)
Definition ampiFunctions.hpp:2493
int AMPI_T_pvar_write(MPI_T_pvar_session session, MPI_T_pvar_handle handle, const void *buf)
Definition ampiFunctions.hpp:14482
void AMPI_Igatherv_iterIn(HandleBase *handle, CallbackFunc func, void *userData)
Definition ampiFunctions.hpp:10164
int AMPI_Error_class(int errorcode, int *errorclass)
Definition ampiFunctions.hpp:13554
void AMPI_Ibsend_d_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:311
void AMPI_Igather_iterOut(HandleBase *handle, CallbackFunc func, void *userData)
Definition ampiFunctions.hpp:9719
int AMPI_File_write_ordered_end(MPI_File fh, const void *buf, MPI_Status *status)
Definition ampiFunctions.hpp:14207
int AMPI_Keyval_create(AMPI_Copy_function *copy_fn, AMPI_Delete_function *delete_fn, int *keyval, void *extra_state)
Definition ampiFunctions.hpp:14512
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:4434
int sendbufTotalSize
Definition ampiFunctions.hpp:4435
int recvbufCountVec
Definition ampiFunctions.hpp:4449
RECVTYPE::IndexType * recvbufIndices
Definition ampiFunctions.hpp:4444
RECVTYPE::PrimalType * recvbufPrimals
Definition ampiFunctions.hpp:4445
SENDTYPE::PrimalType * sendbufPrimals
Definition ampiFunctions.hpp:4437
SENDTYPE::IndexType * sendbufIndices
Definition ampiFunctions.hpp:4436
int sendcount
Definition ampiFunctions.hpp:4441
void * recvbufAdjoints
Definition ampiFunctions.hpp:4447
int recvbufTotalSize
Definition ampiFunctions.hpp:4443
void * sendbufAdjoints
Definition ampiFunctions.hpp:4438
int recvbufCount
Definition ampiFunctions.hpp:4448
int recvcount
Definition ampiFunctions.hpp:4450
RECVTYPE::PrimalType * recvbufOldPrimals
Definition ampiFunctions.hpp:4446
~AMPI_Allgather_AdjointHandle()
Definition ampiFunctions.hpp:4454
int sendbufCountVec
Definition ampiFunctions.hpp:4440
int sendbufCount
Definition ampiFunctions.hpp:4439
RECVTYPE * recvtype
Definition ampiFunctions.hpp:4451
MPI_Comm comm
Definition ampiFunctions.hpp:4452
SENDTYPE * sendtype
Definition ampiFunctions.hpp:4442
Definition ampiFunctions.hpp:4718
int * recvbufCount
Definition ampiFunctions.hpp:4732
SENDTYPE::PrimalType * sendbufPrimals
Definition ampiFunctions.hpp:4721
int sendbufTotalSize
Definition ampiFunctions.hpp:4719
void * sendbufAdjoints
Definition ampiFunctions.hpp:4722
SENDTYPE::IndexType * sendbufIndices
Definition ampiFunctions.hpp:4720
MPI_Comm comm
Definition ampiFunctions.hpp:4738
void * recvbufAdjoints
Definition ampiFunctions.hpp:4731
int * recvbufDisplsVec
Definition ampiFunctions.hpp:4734
int * recvbufCountVec
Definition ampiFunctions.hpp:4733
int sendbufCountVec
Definition ampiFunctions.hpp:4724
SENDTYPE * sendtype
Definition ampiFunctions.hpp:4726
int sendcount
Definition ampiFunctions.hpp:4725
int recvbufTotalSize
Definition ampiFunctions.hpp:4727
RECVTYPE::IndexType * recvbufIndices
Definition ampiFunctions.hpp:4728
RECVTYPE * recvtype
Definition ampiFunctions.hpp:4737
~AMPI_Allgatherv_AdjointHandle()
Definition ampiFunctions.hpp:4740
int sendbufCount
Definition ampiFunctions.hpp:4723
const int * recvcounts
Definition ampiFunctions.hpp:4735
RECVTYPE::PrimalType * recvbufOldPrimals
Definition ampiFunctions.hpp:4730
const int * displs
Definition ampiFunctions.hpp:4736
RECVTYPE::PrimalType * recvbufPrimals
Definition ampiFunctions.hpp:4729
Definition ampiFunctions.hpp:5047
~AMPI_Allreduce_global_AdjointHandle()
Definition ampiFunctions.hpp:5066
void * sendbufAdjoints
Definition ampiFunctions.hpp:5051
void * recvbufAdjoints
Definition ampiFunctions.hpp:5058
DATATYPE::PrimalType * recvbufPrimals
Definition ampiFunctions.hpp:5056
DATATYPE * datatype
Definition ampiFunctions.hpp:5062
DATATYPE::IndexType * recvbufIndices
Definition ampiFunctions.hpp:5055
DATATYPE::IndexType * sendbufIndices
Definition ampiFunctions.hpp:5049
int count
Definition ampiFunctions.hpp:5061
int sendbufCountVec
Definition ampiFunctions.hpp:5053
int recvbufCountVec
Definition ampiFunctions.hpp:5060
MPI_Comm comm
Definition ampiFunctions.hpp:5064
int sendbufTotalSize
Definition ampiFunctions.hpp:5048
int sendbufCount
Definition ampiFunctions.hpp:5052
int recvbufTotalSize
Definition ampiFunctions.hpp:5054
DATATYPE::PrimalType * sendbufPrimals
Definition ampiFunctions.hpp:5050
DATATYPE::PrimalType * recvbufOldPrimals
Definition ampiFunctions.hpp:5057
AMPI_Op op
Definition ampiFunctions.hpp:5063
int recvbufCount
Definition ampiFunctions.hpp:5059
Definition ampiFunctions.hpp:5350
void * sendbufAdjoints
Definition ampiFunctions.hpp:5354
RECVTYPE::IndexType * recvbufIndices
Definition ampiFunctions.hpp:5360
int sendbufCount
Definition ampiFunctions.hpp:5355
int sendbufTotalSize
Definition ampiFunctions.hpp:5351
int recvbufCountVec
Definition ampiFunctions.hpp:5365
int sendcount
Definition ampiFunctions.hpp:5357
SENDTYPE * sendtype
Definition ampiFunctions.hpp:5358
int recvcount
Definition ampiFunctions.hpp:5366
RECVTYPE::PrimalType * recvbufPrimals
Definition ampiFunctions.hpp:5361
int recvbufTotalSize
Definition ampiFunctions.hpp:5359
MPI_Comm comm
Definition ampiFunctions.hpp:5368
RECVTYPE * recvtype
Definition ampiFunctions.hpp:5367
int sendbufCountVec
Definition ampiFunctions.hpp:5356
RECVTYPE::PrimalType * recvbufOldPrimals
Definition ampiFunctions.hpp:5362
int recvbufCount
Definition ampiFunctions.hpp:5364
SENDTYPE::PrimalType * sendbufPrimals
Definition ampiFunctions.hpp:5353
~AMPI_Alltoall_AdjointHandle()
Definition ampiFunctions.hpp:5370
void * recvbufAdjoints
Definition ampiFunctions.hpp:5363
SENDTYPE::IndexType * sendbufIndices
Definition ampiFunctions.hpp:5352
Definition ampiFunctions.hpp:5632
const int * rdispls
Definition ampiFunctions.hpp:5652
int * recvbufCount
Definition ampiFunctions.hpp:5648
int * sendbufCount
Definition ampiFunctions.hpp:5637
MPI_Comm comm
Definition ampiFunctions.hpp:5654
~AMPI_Alltoallv_AdjointHandle()
Definition ampiFunctions.hpp:5656
void * recvbufAdjoints
Definition ampiFunctions.hpp:5647
RECVTYPE::IndexType * recvbufIndices
Definition ampiFunctions.hpp:5644
RECVTYPE::PrimalType * recvbufPrimals
Definition ampiFunctions.hpp:5645
SENDTYPE * sendtype
Definition ampiFunctions.hpp:5642
int * recvbufCountVec
Definition ampiFunctions.hpp:5649
const int * sdispls
Definition ampiFunctions.hpp:5641
int * sendbufDisplsVec
Definition ampiFunctions.hpp:5639
SENDTYPE::PrimalType * sendbufPrimals
Definition ampiFunctions.hpp:5635
RECVTYPE::PrimalType * recvbufOldPrimals
Definition ampiFunctions.hpp:5646
const int * sendcounts
Definition ampiFunctions.hpp:5640
void * sendbufAdjoints
Definition ampiFunctions.hpp:5636
int * recvbufDisplsVec
Definition ampiFunctions.hpp:5650
RECVTYPE * recvtype
Definition ampiFunctions.hpp:5653
SENDTYPE::IndexType * sendbufIndices
Definition ampiFunctions.hpp:5634
const int * recvcounts
Definition ampiFunctions.hpp:5651
int sendbufTotalSize
Definition ampiFunctions.hpp:5633
int * sendbufCountVec
Definition ampiFunctions.hpp:5638
int recvbufTotalSize
Definition ampiFunctions.hpp:5643
Definition ampiFunctions.hpp:5991
int bufferRecvCountVec
Definition ampiFunctions.hpp:6004
int bufferSendTotalSize
Definition ampiFunctions.hpp:5992
int bufferRecvCount
Definition ampiFunctions.hpp:6003
DATATYPE::PrimalType * bufferSendPrimals
Definition ampiFunctions.hpp:5994
void * bufferRecvAdjoints
Definition ampiFunctions.hpp:6002
int bufferSendCount
Definition ampiFunctions.hpp:5996
int bufferRecvTotalSize
Definition ampiFunctions.hpp:5998
int root
Definition ampiFunctions.hpp:6007
MPI_Comm comm
Definition ampiFunctions.hpp:6008
DATATYPE::PrimalType * bufferRecvPrimals
Definition ampiFunctions.hpp:6000
int count
Definition ampiFunctions.hpp:6005
void * bufferSendAdjoints
Definition ampiFunctions.hpp:5995
DATATYPE * datatype
Definition ampiFunctions.hpp:6006
int bufferSendCountVec
Definition ampiFunctions.hpp:5997
DATATYPE::PrimalType * bufferRecvOldPrimals
Definition ampiFunctions.hpp:6001
~AMPI_Bcast_wrap_AdjointHandle()
Definition ampiFunctions.hpp:6010
DATATYPE::IndexType * bufferRecvIndices
Definition ampiFunctions.hpp:5999
DATATYPE::IndexType * bufferSendIndices
Definition ampiFunctions.hpp:5993
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:507
AMPI_Request * request
Definition ampiFunctions.hpp:515
DATATYPE::ModifiedType * bufMod
Definition ampiFunctions.hpp:509
int count
Definition ampiFunctions.hpp:510
const DATATYPE::Type * buf
Definition ampiFunctions.hpp:508
int tag
Definition ampiFunctions.hpp:513
DATATYPE * datatype
Definition ampiFunctions.hpp:511
int dest
Definition ampiFunctions.hpp:512
MPI_Comm comm
Definition ampiFunctions.hpp:514
Definition ampiFunctions.hpp:6290
int sendbufCount
Definition ampiFunctions.hpp:6295
SENDTYPE * sendtype
Definition ampiFunctions.hpp:6298
RECVTYPE * recvtype
Definition ampiFunctions.hpp:6307
SENDTYPE::IndexType * sendbufIndices
Definition ampiFunctions.hpp:6292
int sendcount
Definition ampiFunctions.hpp:6297
int sendbufTotalSize
Definition ampiFunctions.hpp:6291
int recvbufCountVec
Definition ampiFunctions.hpp:6305
RECVTYPE::PrimalType * recvbufPrimals
Definition ampiFunctions.hpp:6301
int recvcount
Definition ampiFunctions.hpp:6306
MPI_Comm comm
Definition ampiFunctions.hpp:6309
int sendbufCountVec
Definition ampiFunctions.hpp:6296
int root
Definition ampiFunctions.hpp:6308
int recvbufCount
Definition ampiFunctions.hpp:6304
RECVTYPE::IndexType * recvbufIndices
Definition ampiFunctions.hpp:6300
int recvbufTotalSize
Definition ampiFunctions.hpp:6299
~AMPI_Gather_AdjointHandle()
Definition ampiFunctions.hpp:6311
void * sendbufAdjoints
Definition ampiFunctions.hpp:6294
RECVTYPE::PrimalType * recvbufOldPrimals
Definition ampiFunctions.hpp:6302
SENDTYPE::PrimalType * sendbufPrimals
Definition ampiFunctions.hpp:6293
void * recvbufAdjoints
Definition ampiFunctions.hpp:6303
Definition ampiFunctions.hpp:6607
SENDTYPE * sendtype
Definition ampiFunctions.hpp:6615
int sendcount
Definition ampiFunctions.hpp:6614
RECVTYPE::IndexType * recvbufIndices
Definition ampiFunctions.hpp:6617
const int * recvcounts
Definition ampiFunctions.hpp:6624
RECVTYPE * recvtype
Definition ampiFunctions.hpp:6626
int sendbufCountVec
Definition ampiFunctions.hpp:6613
const int * displs
Definition ampiFunctions.hpp:6625
int root
Definition ampiFunctions.hpp:6627
int * recvbufCountVec
Definition ampiFunctions.hpp:6622
~AMPI_Gatherv_AdjointHandle()
Definition ampiFunctions.hpp:6630
void * recvbufAdjoints
Definition ampiFunctions.hpp:6620
void * sendbufAdjoints
Definition ampiFunctions.hpp:6611
int recvbufTotalSize
Definition ampiFunctions.hpp:6616
int * recvbufCount
Definition ampiFunctions.hpp:6621
RECVTYPE::PrimalType * recvbufOldPrimals
Definition ampiFunctions.hpp:6619
int sendbufCount
Definition ampiFunctions.hpp:6612
SENDTYPE::PrimalType * sendbufPrimals
Definition ampiFunctions.hpp:6610
SENDTYPE::IndexType * sendbufIndices
Definition ampiFunctions.hpp:6609
int * recvbufDisplsVec
Definition ampiFunctions.hpp:6623
int sendbufTotalSize
Definition ampiFunctions.hpp:6608
MPI_Comm comm
Definition ampiFunctions.hpp:6628
RECVTYPE::PrimalType * recvbufPrimals
Definition ampiFunctions.hpp:6618
Definition ampiFunctions.hpp:6973
int recvbufCount
Definition ampiFunctions.hpp:6987
RECVTYPE::IndexType * recvbufIndices
Definition ampiFunctions.hpp:6983
int sendcount
Definition ampiFunctions.hpp:6980
RECVTYPE::PrimalType * recvbufPrimals
Definition ampiFunctions.hpp:6984
int recvcount
Definition ampiFunctions.hpp:6989
int recvbufTotalSize
Definition ampiFunctions.hpp:6982
int recvbufCountVec
Definition ampiFunctions.hpp:6988
RECVTYPE * recvtype
Definition ampiFunctions.hpp:6990
void * sendbufAdjoints
Definition ampiFunctions.hpp:6977
SENDTYPE * sendtype
Definition ampiFunctions.hpp:6981
SENDTYPE::IndexType * sendbufIndices
Definition ampiFunctions.hpp:6975
int sendbufTotalSize
Definition ampiFunctions.hpp:6974
SENDTYPE::PrimalType * sendbufPrimals
Definition ampiFunctions.hpp:6976
int sendbufCount
Definition ampiFunctions.hpp:6978
~AMPI_Iallgather_AdjointHandle()
Definition ampiFunctions.hpp:6993
RECVTYPE::PrimalType * recvbufOldPrimals
Definition ampiFunctions.hpp:6985
int sendbufCountVec
Definition ampiFunctions.hpp:6979
void * recvbufAdjoints
Definition ampiFunctions.hpp:6986
MPI_Comm comm
Definition ampiFunctions.hpp:6991
Definition ampiFunctions.hpp:7018
SENDTYPE::ModifiedType * sendbufMod
Definition ampiFunctions.hpp:7020
SENDTYPE * sendtype
Definition ampiFunctions.hpp:7022
MPI_Comm comm
Definition ampiFunctions.hpp:7027
int sendcount
Definition ampiFunctions.hpp:7021
RECVTYPE * recvtype
Definition ampiFunctions.hpp:7026
int recvcount
Definition ampiFunctions.hpp:7025
const SENDTYPE::Type * sendbuf
Definition ampiFunctions.hpp:7019
RECVTYPE::ModifiedType * recvbufMod
Definition ampiFunctions.hpp:7024
RECVTYPE::Type * recvbuf
Definition ampiFunctions.hpp:7023
AMPI_Request * request
Definition ampiFunctions.hpp:7028
Definition ampiFunctions.hpp:7367
SENDTYPE::PrimalType * sendbufPrimals
Definition ampiFunctions.hpp:7370
int * recvbufCount
Definition ampiFunctions.hpp:7381
MPI_Comm comm
Definition ampiFunctions.hpp:7387
RECVTYPE::PrimalType * recvbufOldPrimals
Definition ampiFunctions.hpp:7379
int * recvbufDisplsVec
Definition ampiFunctions.hpp:7383
const int * displs
Definition ampiFunctions.hpp:7385
int sendcount
Definition ampiFunctions.hpp:7374
void * sendbufAdjoints
Definition ampiFunctions.hpp:7371
int sendbufCountVec
Definition ampiFunctions.hpp:7373
SENDTYPE::IndexType * sendbufIndices
Definition ampiFunctions.hpp:7369
~AMPI_Iallgatherv_AdjointHandle()
Definition ampiFunctions.hpp:7389
SENDTYPE * sendtype
Definition ampiFunctions.hpp:7375
int sendbufTotalSize
Definition ampiFunctions.hpp:7368
void * recvbufAdjoints
Definition ampiFunctions.hpp:7380
int * recvbufCountVec
Definition ampiFunctions.hpp:7382
RECVTYPE * recvtype
Definition ampiFunctions.hpp:7386
RECVTYPE::PrimalType * recvbufPrimals
Definition ampiFunctions.hpp:7378
int sendbufCount
Definition ampiFunctions.hpp:7372
int recvbufTotalSize
Definition ampiFunctions.hpp:7376
const int * recvcounts
Definition ampiFunctions.hpp:7384
RECVTYPE::IndexType * recvbufIndices
Definition ampiFunctions.hpp:7377
Definition ampiFunctions.hpp:7418
SENDTYPE::ModifiedType * sendbufMod
Definition ampiFunctions.hpp:7420
MPI_Comm comm
Definition ampiFunctions.hpp:7429
RECVTYPE * recvtype
Definition ampiFunctions.hpp:7428
SENDTYPE * sendtype
Definition ampiFunctions.hpp:7422
const SENDTYPE::Type * sendbuf
Definition ampiFunctions.hpp:7419
RECVTYPE::ModifiedType * recvbufMod
Definition ampiFunctions.hpp:7424
const int * recvcounts
Definition ampiFunctions.hpp:7426
int sendcount
Definition ampiFunctions.hpp:7421
AMPI_Request * request
Definition ampiFunctions.hpp:7430
RECVTYPE::Type * recvbuf
Definition ampiFunctions.hpp:7423
const int * displsMod
Definition ampiFunctions.hpp:7425
const int * displs
Definition ampiFunctions.hpp:7427
Definition ampiFunctions.hpp:7816
MPI_Comm comm
Definition ampiFunctions.hpp:7833
void * sendbufAdjoints
Definition ampiFunctions.hpp:7820
int recvbufCountVec
Definition ampiFunctions.hpp:7829
int count
Definition ampiFunctions.hpp:7830
~AMPI_Iallreduce_global_AdjointHandle()
Definition ampiFunctions.hpp:7835
DATATYPE::PrimalType * recvbufPrimals
Definition ampiFunctions.hpp:7825
int recvbufTotalSize
Definition ampiFunctions.hpp:7823
DATATYPE::PrimalType * sendbufPrimals
Definition ampiFunctions.hpp:7819
void * recvbufAdjoints
Definition ampiFunctions.hpp:7827
int recvbufCount
Definition ampiFunctions.hpp:7828
DATATYPE::IndexType * sendbufIndices
Definition ampiFunctions.hpp:7818
DATATYPE::PrimalType * recvbufOldPrimals
Definition ampiFunctions.hpp:7826
DATATYPE * datatype
Definition ampiFunctions.hpp:7831
int sendbufTotalSize
Definition ampiFunctions.hpp:7817
int sendbufCountVec
Definition ampiFunctions.hpp:7822
int sendbufCount
Definition ampiFunctions.hpp:7821
AMPI_Op op
Definition ampiFunctions.hpp:7832
DATATYPE::IndexType * recvbufIndices
Definition ampiFunctions.hpp:7824
Definition ampiFunctions.hpp:7860
AMPI_Op op
Definition ampiFunctions.hpp:7867
DATATYPE * datatype
Definition ampiFunctions.hpp:7866
int count
Definition ampiFunctions.hpp:7865
DATATYPE::Type * recvbuf
Definition ampiFunctions.hpp:7863
DATATYPE::ModifiedType * recvbufMod
Definition ampiFunctions.hpp:7864
AMPI_Request * request
Definition ampiFunctions.hpp:7869
const DATATYPE::Type * sendbuf
Definition ampiFunctions.hpp:7861
MPI_Comm comm
Definition ampiFunctions.hpp:7868
DATATYPE::ModifiedType * sendbufMod
Definition ampiFunctions.hpp:7862
Definition ampiFunctions.hpp:8238
RECVTYPE * recvtype
Definition ampiFunctions.hpp:8255
int sendcount
Definition ampiFunctions.hpp:8245
RECVTYPE::IndexType * recvbufIndices
Definition ampiFunctions.hpp:8248
int recvcount
Definition ampiFunctions.hpp:8254
RECVTYPE::PrimalType * recvbufOldPrimals
Definition ampiFunctions.hpp:8250
int recvbufTotalSize
Definition ampiFunctions.hpp:8247
int sendbufTotalSize
Definition ampiFunctions.hpp:8239
RECVTYPE::PrimalType * recvbufPrimals
Definition ampiFunctions.hpp:8249
MPI_Comm comm
Definition ampiFunctions.hpp:8256
SENDTYPE::PrimalType * sendbufPrimals
Definition ampiFunctions.hpp:8241
~AMPI_Ialltoall_AdjointHandle()
Definition ampiFunctions.hpp:8258
int sendbufCountVec
Definition ampiFunctions.hpp:8244
void * sendbufAdjoints
Definition ampiFunctions.hpp:8242
SENDTYPE * sendtype
Definition ampiFunctions.hpp:8246
void * recvbufAdjoints
Definition ampiFunctions.hpp:8251
int sendbufCount
Definition ampiFunctions.hpp:8243
int recvbufCount
Definition ampiFunctions.hpp:8252
int recvbufCountVec
Definition ampiFunctions.hpp:8253
SENDTYPE::IndexType * sendbufIndices
Definition ampiFunctions.hpp:8240
Definition ampiFunctions.hpp:8283
MPI_Comm comm
Definition ampiFunctions.hpp:8292
RECVTYPE::ModifiedType * recvbufMod
Definition ampiFunctions.hpp:8289
const SENDTYPE::Type * sendbuf
Definition ampiFunctions.hpp:8284
RECVTYPE::Type * recvbuf
Definition ampiFunctions.hpp:8288
int sendcount
Definition ampiFunctions.hpp:8286
SENDTYPE::ModifiedType * sendbufMod
Definition ampiFunctions.hpp:8285
AMPI_Request * request
Definition ampiFunctions.hpp:8293
RECVTYPE * recvtype
Definition ampiFunctions.hpp:8291
int recvcount
Definition ampiFunctions.hpp:8290
SENDTYPE * sendtype
Definition ampiFunctions.hpp:8287
Definition ampiFunctions.hpp:8630
int * sendbufCountVec
Definition ampiFunctions.hpp:8636
SENDTYPE * sendtype
Definition ampiFunctions.hpp:8640
SENDTYPE::IndexType * sendbufIndices
Definition ampiFunctions.hpp:8632
const int * sdispls
Definition ampiFunctions.hpp:8639
RECVTYPE::PrimalType * recvbufPrimals
Definition ampiFunctions.hpp:8643
int * recvbufCountVec
Definition ampiFunctions.hpp:8647
~AMPI_Ialltoallv_AdjointHandle()
Definition ampiFunctions.hpp:8654
const int * recvcounts
Definition ampiFunctions.hpp:8649
MPI_Comm comm
Definition ampiFunctions.hpp:8652
int * recvbufDisplsVec
Definition ampiFunctions.hpp:8648
void * recvbufAdjoints
Definition ampiFunctions.hpp:8645
int sendbufTotalSize
Definition ampiFunctions.hpp:8631
RECVTYPE * recvtype
Definition ampiFunctions.hpp:8651
const int * sendcounts
Definition ampiFunctions.hpp:8638
int * sendbufDisplsVec
Definition ampiFunctions.hpp:8637
SENDTYPE::PrimalType * sendbufPrimals
Definition ampiFunctions.hpp:8633
RECVTYPE::PrimalType * recvbufOldPrimals
Definition ampiFunctions.hpp:8644
int recvbufTotalSize
Definition ampiFunctions.hpp:8641
int * sendbufCount
Definition ampiFunctions.hpp:8635
int * recvbufCount
Definition ampiFunctions.hpp:8646
RECVTYPE::IndexType * recvbufIndices
Definition ampiFunctions.hpp:8642
void * sendbufAdjoints
Definition ampiFunctions.hpp:8634
const int * rdispls
Definition ampiFunctions.hpp:8650
Definition ampiFunctions.hpp:8687
RECVTYPE::ModifiedType * recvbufMod
Definition ampiFunctions.hpp:8695
const int * rdisplsMod
Definition ampiFunctions.hpp:8696
const int * rdispls
Definition ampiFunctions.hpp:8698
RECVTYPE::Type * recvbuf
Definition ampiFunctions.hpp:8694
AMPI_Request * request
Definition ampiFunctions.hpp:8701
RECVTYPE * recvtype
Definition ampiFunctions.hpp:8699
SENDTYPE * sendtype
Definition ampiFunctions.hpp:8693
const int * sendcounts
Definition ampiFunctions.hpp:8691
const int * sdisplsMod
Definition ampiFunctions.hpp:8690
SENDTYPE::ModifiedType * sendbufMod
Definition ampiFunctions.hpp:8689
const int * sdispls
Definition ampiFunctions.hpp:8692
const SENDTYPE::Type * sendbuf
Definition ampiFunctions.hpp:8688
const int * recvcounts
Definition ampiFunctions.hpp:8697
MPI_Comm comm
Definition ampiFunctions.hpp:8700
Definition ampiFunctions.hpp:9114
int bufferSendTotalSize
Definition ampiFunctions.hpp:9115
DATATYPE::PrimalType * bufferRecvPrimals
Definition ampiFunctions.hpp:9123
~AMPI_Ibcast_wrap_AdjointHandle()
Definition ampiFunctions.hpp:9133
DATATYPE::PrimalType * bufferSendPrimals
Definition ampiFunctions.hpp:9117
MPI_Comm comm
Definition ampiFunctions.hpp:9131
int bufferSendCountVec
Definition ampiFunctions.hpp:9120
int bufferSendCount
Definition ampiFunctions.hpp:9119
int count
Definition ampiFunctions.hpp:9128
int bufferRecvTotalSize
Definition ampiFunctions.hpp:9121
DATATYPE::IndexType * bufferSendIndices
Definition ampiFunctions.hpp:9116
int root
Definition ampiFunctions.hpp:9130
void * bufferRecvAdjoints
Definition ampiFunctions.hpp:9125
DATATYPE::PrimalType * bufferRecvOldPrimals
Definition ampiFunctions.hpp:9124
DATATYPE * datatype
Definition ampiFunctions.hpp:9129
int bufferRecvCountVec
Definition ampiFunctions.hpp:9127
void * bufferSendAdjoints
Definition ampiFunctions.hpp:9118
DATATYPE::IndexType * bufferRecvIndices
Definition ampiFunctions.hpp:9122
int bufferRecvCount
Definition ampiFunctions.hpp:9126
Definition ampiFunctions.hpp:9158
DATATYPE::Type * bufferRecv
Definition ampiFunctions.hpp:9161
AMPI_Request * request
Definition ampiFunctions.hpp:9167
DATATYPE * datatype
Definition ampiFunctions.hpp:9164
int root
Definition ampiFunctions.hpp:9165
DATATYPE::ModifiedType * bufferSendMod
Definition ampiFunctions.hpp:9160
MPI_Comm comm
Definition ampiFunctions.hpp:9166
DATATYPE::ModifiedType * bufferRecvMod
Definition ampiFunctions.hpp:9162
DATATYPE::Type * bufferSend
Definition ampiFunctions.hpp:9159
int count
Definition ampiFunctions.hpp:9163
Definition ampiFunctions.hpp:226
int dest
Definition ampiFunctions.hpp:235
int bufCount
Definition ampiFunctions.hpp:231
int count
Definition ampiFunctions.hpp:233
DATATYPE::PrimalType * bufPrimals
Definition ampiFunctions.hpp:229
DATATYPE::IndexType * bufIndices
Definition ampiFunctions.hpp:228
int tag
Definition ampiFunctions.hpp:236
~AMPI_Ibsend_AdjointHandle()
Definition ampiFunctions.hpp:239
DATATYPE * datatype
Definition ampiFunctions.hpp:234
void * bufAdjoints
Definition ampiFunctions.hpp:230
MPI_Comm comm
Definition ampiFunctions.hpp:237
int bufTotalSize
Definition ampiFunctions.hpp:227
int bufCountVec
Definition ampiFunctions.hpp:232
Definition ampiFunctions.hpp:252
const DATATYPE::Type * buf
Definition ampiFunctions.hpp:253
int count
Definition ampiFunctions.hpp:255
DATATYPE::ModifiedType * bufMod
Definition ampiFunctions.hpp:254
MPI_Comm comm
Definition ampiFunctions.hpp:259
AMPI_Request * request
Definition ampiFunctions.hpp:260
int dest
Definition ampiFunctions.hpp:257
int tag
Definition ampiFunctions.hpp:258
DATATYPE * datatype
Definition ampiFunctions.hpp:256
Definition ampiFunctions.hpp:9515
SENDTYPE * sendtype
Definition ampiFunctions.hpp:9523
int sendbufTotalSize
Definition ampiFunctions.hpp:9516
int sendbufCount
Definition ampiFunctions.hpp:9520
RECVTYPE::PrimalType * recvbufOldPrimals
Definition ampiFunctions.hpp:9527
SENDTYPE::IndexType * sendbufIndices
Definition ampiFunctions.hpp:9517
int sendbufCountVec
Definition ampiFunctions.hpp:9521
int root
Definition ampiFunctions.hpp:9533
RECVTYPE::PrimalType * recvbufPrimals
Definition ampiFunctions.hpp:9526
int recvbufCount
Definition ampiFunctions.hpp:9529
int recvbufCountVec
Definition ampiFunctions.hpp:9530
void * recvbufAdjoints
Definition ampiFunctions.hpp:9528
RECVTYPE * recvtype
Definition ampiFunctions.hpp:9532
SENDTYPE::PrimalType * sendbufPrimals
Definition ampiFunctions.hpp:9518
~AMPI_Igather_AdjointHandle()
Definition ampiFunctions.hpp:9536
void * sendbufAdjoints
Definition ampiFunctions.hpp:9519
RECVTYPE::IndexType * recvbufIndices
Definition ampiFunctions.hpp:9525
int sendcount
Definition ampiFunctions.hpp:9522
int recvcount
Definition ampiFunctions.hpp:9531
int recvbufTotalSize
Definition ampiFunctions.hpp:9524
MPI_Comm comm
Definition ampiFunctions.hpp:9534
Definition ampiFunctions.hpp:9561
AMPI_Request * request
Definition ampiFunctions.hpp:9572
RECVTYPE::ModifiedType * recvbufMod
Definition ampiFunctions.hpp:9567
SENDTYPE::ModifiedType * sendbufMod
Definition ampiFunctions.hpp:9563
MPI_Comm comm
Definition ampiFunctions.hpp:9571
int sendcount
Definition ampiFunctions.hpp:9564
RECVTYPE * recvtype
Definition ampiFunctions.hpp:9569
int recvcount
Definition ampiFunctions.hpp:9568
int root
Definition ampiFunctions.hpp:9570
const SENDTYPE::Type * sendbuf
Definition ampiFunctions.hpp:9562
RECVTYPE::Type * recvbuf
Definition ampiFunctions.hpp:9566
SENDTYPE * sendtype
Definition ampiFunctions.hpp:9565
Definition ampiFunctions.hpp:9950
RECVTYPE::PrimalType * recvbufOldPrimals
Definition ampiFunctions.hpp:9962
int sendcount
Definition ampiFunctions.hpp:9957
~AMPI_Igatherv_AdjointHandle()
Definition ampiFunctions.hpp:9973
int * recvbufCount
Definition ampiFunctions.hpp:9964
const int * recvcounts
Definition ampiFunctions.hpp:9967
int root
Definition ampiFunctions.hpp:9970
void * sendbufAdjoints
Definition ampiFunctions.hpp:9954
int sendbufCountVec
Definition ampiFunctions.hpp:9956
RECVTYPE::PrimalType * recvbufPrimals
Definition ampiFunctions.hpp:9961
int * recvbufDisplsVec
Definition ampiFunctions.hpp:9966
void * recvbufAdjoints
Definition ampiFunctions.hpp:9963
SENDTYPE::IndexType * sendbufIndices
Definition ampiFunctions.hpp:9952
int sendbufCount
Definition ampiFunctions.hpp:9955
MPI_Comm comm
Definition ampiFunctions.hpp:9971
const int * displs
Definition ampiFunctions.hpp:9968
int recvbufTotalSize
Definition ampiFunctions.hpp:9959
SENDTYPE * sendtype
Definition ampiFunctions.hpp:9958
int sendbufTotalSize
Definition ampiFunctions.hpp:9951
RECVTYPE * recvtype
Definition ampiFunctions.hpp:9969
RECVTYPE::IndexType * recvbufIndices
Definition ampiFunctions.hpp:9960
SENDTYPE::PrimalType * sendbufPrimals
Definition ampiFunctions.hpp:9953
int * recvbufCountVec
Definition ampiFunctions.hpp:9965
Definition ampiFunctions.hpp:10002
MPI_Comm comm
Definition ampiFunctions.hpp:10014
int root
Definition ampiFunctions.hpp:10013
const int * displsMod
Definition ampiFunctions.hpp:10009
RECVTYPE::Type * recvbuf
Definition ampiFunctions.hpp:10007
AMPI_Request * request
Definition ampiFunctions.hpp:10015
int sendcount
Definition ampiFunctions.hpp:10005
RECVTYPE * recvtype
Definition ampiFunctions.hpp:10012
SENDTYPE * sendtype
Definition ampiFunctions.hpp:10006
const int * displs
Definition ampiFunctions.hpp:10011
const int * recvcounts
Definition ampiFunctions.hpp:10010
RECVTYPE::ModifiedType * recvbufMod
Definition ampiFunctions.hpp:10008
const SENDTYPE::Type * sendbuf
Definition ampiFunctions.hpp:10003
SENDTYPE::ModifiedType * sendbufMod
Definition ampiFunctions.hpp:10004
Definition ampiFunctions.hpp:753
void * bufAdjoints
Definition ampiFunctions.hpp:758
DATATYPE::PrimalType * bufOldPrimals
Definition ampiFunctions.hpp:757
int bufCountVec
Definition ampiFunctions.hpp:760
DATATYPE * datatype
Definition ampiFunctions.hpp:762
IrecvAdjCall reverse_send
Definition ampiFunctions.hpp:764
int bufCount
Definition ampiFunctions.hpp:759
int bufTotalSize
Definition ampiFunctions.hpp:754
~AMPI_Imrecv_AdjointHandle()
Definition ampiFunctions.hpp:766
int count
Definition ampiFunctions.hpp:761
DATATYPE::PrimalType * bufPrimals
Definition ampiFunctions.hpp:756
AMPI_Message message
Definition ampiFunctions.hpp:763
DATATYPE::IndexType * bufIndices
Definition ampiFunctions.hpp:755
Definition ampiFunctions.hpp:783
int count
Definition ampiFunctions.hpp:786
DATATYPE::Type * buf
Definition ampiFunctions.hpp:784
DATATYPE::ModifiedType * bufMod
Definition ampiFunctions.hpp:785
DATATYPE * datatype
Definition ampiFunctions.hpp:787
IrecvAdjCall reverse_send
Definition ampiFunctions.hpp:790
AMPI_Request * request
Definition ampiFunctions.hpp:789
AMPI_Message * message
Definition ampiFunctions.hpp:788
Definition ampiFunctions.hpp:1047
int bufCount
Definition ampiFunctions.hpp:1053
DATATYPE::IndexType * bufIndices
Definition ampiFunctions.hpp:1049
int source
Definition ampiFunctions.hpp:1057
IrecvAdjCall reverse_send
Definition ampiFunctions.hpp:1060
int bufTotalSize
Definition ampiFunctions.hpp:1048
DATATYPE::PrimalType * bufOldPrimals
Definition ampiFunctions.hpp:1051
DATATYPE::PrimalType * bufPrimals
Definition ampiFunctions.hpp:1050
int tag
Definition ampiFunctions.hpp:1058
void * bufAdjoints
Definition ampiFunctions.hpp:1052
int bufCountVec
Definition ampiFunctions.hpp:1054
DATATYPE * datatype
Definition ampiFunctions.hpp:1056
MPI_Comm comm
Definition ampiFunctions.hpp:1059
int count
Definition ampiFunctions.hpp:1055
~AMPI_Irecv_AdjointHandle()
Definition ampiFunctions.hpp:1062
Definition ampiFunctions.hpp:1079
int count
Definition ampiFunctions.hpp:1082
int source
Definition ampiFunctions.hpp:1084
DATATYPE::Type * buf
Definition ampiFunctions.hpp:1080
int tag
Definition ampiFunctions.hpp:1085
DATATYPE * datatype
Definition ampiFunctions.hpp:1083
MPI_Comm comm
Definition ampiFunctions.hpp:1086
DATATYPE::ModifiedType * bufMod
Definition ampiFunctions.hpp:1081
IrecvAdjCall reverse_send
Definition ampiFunctions.hpp:1088
AMPI_Request * request
Definition ampiFunctions.hpp:1087
Definition ampiFunctions.hpp:10440
int sendbufCount
Definition ampiFunctions.hpp:10445
~AMPI_Ireduce_global_AdjointHandle()
Definition ampiFunctions.hpp:10460
AMPI_Op op
Definition ampiFunctions.hpp:10456
DATATYPE * datatype
Definition ampiFunctions.hpp:10455
void * recvbufAdjoints
Definition ampiFunctions.hpp:10451
int root
Definition ampiFunctions.hpp:10457
DATATYPE::PrimalType * sendbufPrimals
Definition ampiFunctions.hpp:10443
MPI_Comm comm
Definition ampiFunctions.hpp:10458
int sendbufTotalSize
Definition ampiFunctions.hpp:10441
int count
Definition ampiFunctions.hpp:10454
DATATYPE::PrimalType * recvbufOldPrimals
Definition ampiFunctions.hpp:10450
void * sendbufAdjoints
Definition ampiFunctions.hpp:10444
DATATYPE::IndexType * sendbufIndices
Definition ampiFunctions.hpp:10442
int sendbufCountVec
Definition ampiFunctions.hpp:10446
DATATYPE::PrimalType * recvbufPrimals
Definition ampiFunctions.hpp:10449
int recvbufCountVec
Definition ampiFunctions.hpp:10453
DATATYPE::IndexType * recvbufIndices
Definition ampiFunctions.hpp:10448
int recvbufTotalSize
Definition ampiFunctions.hpp:10447
int recvbufCount
Definition ampiFunctions.hpp:10452
Definition ampiFunctions.hpp:10485
const DATATYPE::Type * sendbuf
Definition ampiFunctions.hpp:10486
DATATYPE * datatype
Definition ampiFunctions.hpp:10491
DATATYPE::ModifiedType * sendbufMod
Definition ampiFunctions.hpp:10487
MPI_Comm comm
Definition ampiFunctions.hpp:10494
AMPI_Request * request
Definition ampiFunctions.hpp:10495
DATATYPE::Type * recvbuf
Definition ampiFunctions.hpp:10488
DATATYPE::ModifiedType * recvbufMod
Definition ampiFunctions.hpp:10489
int root
Definition ampiFunctions.hpp:10493
int count
Definition ampiFunctions.hpp:10490
AMPI_Op op
Definition ampiFunctions.hpp:10492
Definition ampiFunctions.hpp:1353
int bufCountVec
Definition ampiFunctions.hpp:1359
DATATYPE * datatype
Definition ampiFunctions.hpp:1361
int bufCount
Definition ampiFunctions.hpp:1358
MPI_Comm comm
Definition ampiFunctions.hpp:1364
int bufTotalSize
Definition ampiFunctions.hpp:1354
void * bufAdjoints
Definition ampiFunctions.hpp:1357
~AMPI_Irsend_AdjointHandle()
Definition ampiFunctions.hpp:1366
DATATYPE::IndexType * bufIndices
Definition ampiFunctions.hpp:1355
int dest
Definition ampiFunctions.hpp:1362
DATATYPE::PrimalType * bufPrimals
Definition ampiFunctions.hpp:1356
int tag
Definition ampiFunctions.hpp:1363
int count
Definition ampiFunctions.hpp:1360
Definition ampiFunctions.hpp:1379
int dest
Definition ampiFunctions.hpp:1384
AMPI_Request * request
Definition ampiFunctions.hpp:1387
DATATYPE::ModifiedType * bufMod
Definition ampiFunctions.hpp:1381
DATATYPE * datatype
Definition ampiFunctions.hpp:1383
int count
Definition ampiFunctions.hpp:1382
MPI_Comm comm
Definition ampiFunctions.hpp:1386
const DATATYPE::Type * buf
Definition ampiFunctions.hpp:1380
int tag
Definition ampiFunctions.hpp:1385
Definition ampiFunctions.hpp:10899
MPI_Comm comm
Definition ampiFunctions.hpp:10918
void * sendbufAdjoints
Definition ampiFunctions.hpp:10903
RECVTYPE::PrimalType * recvbufOldPrimals
Definition ampiFunctions.hpp:10911
SENDTYPE * sendtype
Definition ampiFunctions.hpp:10907
SENDTYPE::IndexType * sendbufIndices
Definition ampiFunctions.hpp:10901
int sendbufTotalSize
Definition ampiFunctions.hpp:10900
int sendbufCount
Definition ampiFunctions.hpp:10904
RECVTYPE * recvtype
Definition ampiFunctions.hpp:10916
int recvbufCountVec
Definition ampiFunctions.hpp:10914
~AMPI_Iscatter_AdjointHandle()
Definition ampiFunctions.hpp:10920
RECVTYPE::IndexType * recvbufIndices
Definition ampiFunctions.hpp:10909
int recvcount
Definition ampiFunctions.hpp:10915
RECVTYPE::PrimalType * recvbufPrimals
Definition ampiFunctions.hpp:10910
SENDTYPE::PrimalType * sendbufPrimals
Definition ampiFunctions.hpp:10902
int recvbufTotalSize
Definition ampiFunctions.hpp:10908
int root
Definition ampiFunctions.hpp:10917
void * recvbufAdjoints
Definition ampiFunctions.hpp:10912
int sendcount
Definition ampiFunctions.hpp:10906
int recvbufCount
Definition ampiFunctions.hpp:10913
int sendbufCountVec
Definition ampiFunctions.hpp:10905
Definition ampiFunctions.hpp:10945
RECVTYPE::ModifiedType * recvbufMod
Definition ampiFunctions.hpp:10951
int root
Definition ampiFunctions.hpp:10954
RECVTYPE::Type * recvbuf
Definition ampiFunctions.hpp:10950
SENDTYPE::ModifiedType * sendbufMod
Definition ampiFunctions.hpp:10947
const SENDTYPE::Type * sendbuf
Definition ampiFunctions.hpp:10946
SENDTYPE * sendtype
Definition ampiFunctions.hpp:10949
RECVTYPE * recvtype
Definition ampiFunctions.hpp:10953
int sendcount
Definition ampiFunctions.hpp:10948
AMPI_Request * request
Definition ampiFunctions.hpp:10956
int recvcount
Definition ampiFunctions.hpp:10952
MPI_Comm comm
Definition ampiFunctions.hpp:10955
Definition ampiFunctions.hpp:11336
int recvcount
Definition ampiFunctions.hpp:11354
RECVTYPE::IndexType * recvbufIndices
Definition ampiFunctions.hpp:11348
const int * sendcounts
Definition ampiFunctions.hpp:11344
int sendbufTotalSize
Definition ampiFunctions.hpp:11337
int * sendbufCount
Definition ampiFunctions.hpp:11341
SENDTYPE::IndexType * sendbufIndices
Definition ampiFunctions.hpp:11338
int recvbufCountVec
Definition ampiFunctions.hpp:11353
RECVTYPE * recvtype
Definition ampiFunctions.hpp:11355
RECVTYPE::PrimalType * recvbufOldPrimals
Definition ampiFunctions.hpp:11350
int * sendbufCountVec
Definition ampiFunctions.hpp:11342
void * sendbufAdjoints
Definition ampiFunctions.hpp:11340
int * sendbufDisplsVec
Definition ampiFunctions.hpp:11343
SENDTYPE * sendtype
Definition ampiFunctions.hpp:11346
MPI_Comm comm
Definition ampiFunctions.hpp:11357
int root
Definition ampiFunctions.hpp:11356
int recvbufCount
Definition ampiFunctions.hpp:11352
void * recvbufAdjoints
Definition ampiFunctions.hpp:11351
SENDTYPE::PrimalType * sendbufPrimals
Definition ampiFunctions.hpp:11339
int recvbufTotalSize
Definition ampiFunctions.hpp:11347
RECVTYPE::PrimalType * recvbufPrimals
Definition ampiFunctions.hpp:11349
~AMPI_Iscatterv_AdjointHandle()
Definition ampiFunctions.hpp:11359
const int * displs
Definition ampiFunctions.hpp:11345
Definition ampiFunctions.hpp:11388
MPI_Comm comm
Definition ampiFunctions.hpp:11400
int root
Definition ampiFunctions.hpp:11399
RECVTYPE::ModifiedType * recvbufMod
Definition ampiFunctions.hpp:11396
RECVTYPE * recvtype
Definition ampiFunctions.hpp:11398
int recvcount
Definition ampiFunctions.hpp:11397
const int * displsMod
Definition ampiFunctions.hpp:11391
const SENDTYPE::Type * sendbuf
Definition ampiFunctions.hpp:11389
const int * displs
Definition ampiFunctions.hpp:11393
const int * sendcounts
Definition ampiFunctions.hpp:11392
AMPI_Request * request
Definition ampiFunctions.hpp:11401
SENDTYPE::ModifiedType * sendbufMod
Definition ampiFunctions.hpp:11390
RECVTYPE::Type * recvbuf
Definition ampiFunctions.hpp:11395
SENDTYPE * sendtype
Definition ampiFunctions.hpp:11394
Definition ampiFunctions.hpp:1633
int bufCountVec
Definition ampiFunctions.hpp:1639
DATATYPE::PrimalType * bufPrimals
Definition ampiFunctions.hpp:1636
int tag
Definition ampiFunctions.hpp:1643
void * bufAdjoints
Definition ampiFunctions.hpp:1637
int count
Definition ampiFunctions.hpp:1640
~AMPI_Isend_AdjointHandle()
Definition ampiFunctions.hpp:1646
DATATYPE * datatype
Definition ampiFunctions.hpp:1641
int dest
Definition ampiFunctions.hpp:1642
MPI_Comm comm
Definition ampiFunctions.hpp:1644
DATATYPE::IndexType * bufIndices
Definition ampiFunctions.hpp:1635
int bufCount
Definition ampiFunctions.hpp:1638
int bufTotalSize
Definition ampiFunctions.hpp:1634
Definition ampiFunctions.hpp:1659
int count
Definition ampiFunctions.hpp:1662
const DATATYPE::Type * buf
Definition ampiFunctions.hpp:1660
int dest
Definition ampiFunctions.hpp:1664
DATATYPE * datatype
Definition ampiFunctions.hpp:1663
AMPI_Request * request
Definition ampiFunctions.hpp:1667
int tag
Definition ampiFunctions.hpp:1665
MPI_Comm comm
Definition ampiFunctions.hpp:1666
DATATYPE::ModifiedType * bufMod
Definition ampiFunctions.hpp:1661
Definition ampiFunctions.hpp:1913
~AMPI_Issend_AdjointHandle()
Definition ampiFunctions.hpp:1926
int bufCountVec
Definition ampiFunctions.hpp:1919
DATATYPE::PrimalType * bufPrimals
Definition ampiFunctions.hpp:1916
DATATYPE::IndexType * bufIndices
Definition ampiFunctions.hpp:1915
int bufCount
Definition ampiFunctions.hpp:1918
MPI_Comm comm
Definition ampiFunctions.hpp:1924
int tag
Definition ampiFunctions.hpp:1923
int dest
Definition ampiFunctions.hpp:1922
void * bufAdjoints
Definition ampiFunctions.hpp:1917
int bufTotalSize
Definition ampiFunctions.hpp:1914
int count
Definition ampiFunctions.hpp:1920
DATATYPE * datatype
Definition ampiFunctions.hpp:1921
Definition ampiFunctions.hpp:1939
int count
Definition ampiFunctions.hpp:1942
AMPI_Request * request
Definition ampiFunctions.hpp:1947
int tag
Definition ampiFunctions.hpp:1945
int dest
Definition ampiFunctions.hpp:1944
DATATYPE::ModifiedType * bufMod
Definition ampiFunctions.hpp:1941
const DATATYPE::Type * buf
Definition ampiFunctions.hpp:1940
DATATYPE * datatype
Definition ampiFunctions.hpp:1943
MPI_Comm comm
Definition ampiFunctions.hpp:1946
Stores additional information for a MPI_Message.
Definition message.hpp:44
MPI_Message message
Definition message.hpp:45
Definition ampiFunctions.hpp:2193
DATATYPE::PrimalType * bufPrimals
Definition ampiFunctions.hpp:2196
~AMPI_Mrecv_AdjointHandle()
Definition ampiFunctions.hpp:2207
int bufTotalSize
Definition ampiFunctions.hpp:2194
int count
Definition ampiFunctions.hpp:2201
RecvAdjCall reverse_send
Definition ampiFunctions.hpp:2205
int bufCountVec
Definition ampiFunctions.hpp:2200
AMPI_Message message
Definition ampiFunctions.hpp:2203
DATATYPE::PrimalType * bufOldPrimals
Definition ampiFunctions.hpp:2197
DATATYPE * datatype
Definition ampiFunctions.hpp:2202
DATATYPE::IndexType * bufIndices
Definition ampiFunctions.hpp:2195
int bufCount
Definition ampiFunctions.hpp:2199
void * bufAdjoints
Definition ampiFunctions.hpp:2198
MPI_Status * status
Definition ampiFunctions.hpp:2204
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:2396
~AMPI_Recv_AdjointHandle()
Definition ampiFunctions.hpp:2411
DATATYPE::PrimalType * bufPrimals
Definition ampiFunctions.hpp:2399
int count
Definition ampiFunctions.hpp:2404
RecvAdjCall reverse_send
Definition ampiFunctions.hpp:2409
MPI_Comm comm
Definition ampiFunctions.hpp:2408
int source
Definition ampiFunctions.hpp:2406
DATATYPE::PrimalType * bufOldPrimals
Definition ampiFunctions.hpp:2400
int bufCountVec
Definition ampiFunctions.hpp:2403
void * bufAdjoints
Definition ampiFunctions.hpp:2401
int bufTotalSize
Definition ampiFunctions.hpp:2397
int bufCount
Definition ampiFunctions.hpp:2402
DATATYPE * datatype
Definition ampiFunctions.hpp:2405
DATATYPE::IndexType * bufIndices
Definition ampiFunctions.hpp:2398
int tag
Definition ampiFunctions.hpp:2407
Definition ampiFunctions.hpp:2606
MPI_Comm comm
Definition ampiFunctions.hpp:2613
DATATYPE::Type * buf
Definition ampiFunctions.hpp:2607
int count
Definition ampiFunctions.hpp:2609
int tag
Definition ampiFunctions.hpp:2612
AMPI_Request * request
Definition ampiFunctions.hpp:2614
int source
Definition ampiFunctions.hpp:2611
IrecvAdjCall reverse_send
Definition ampiFunctions.hpp:2615
DATATYPE::ModifiedType * bufMod
Definition ampiFunctions.hpp:2608
DATATYPE * datatype
Definition ampiFunctions.hpp:2610
Definition ampiFunctions.hpp:11831
DATATYPE::PrimalType * recvbufOldPrimals
Definition ampiFunctions.hpp:11841
int sendbufTotalSize
Definition ampiFunctions.hpp:11832
int recvbufCountVec
Definition ampiFunctions.hpp:11844
DATATYPE * datatype
Definition ampiFunctions.hpp:11846
int recvbufTotalSize
Definition ampiFunctions.hpp:11838
DATATYPE::PrimalType * sendbufPrimals
Definition ampiFunctions.hpp:11834
int count
Definition ampiFunctions.hpp:11845
DATATYPE::PrimalType * recvbufPrimals
Definition ampiFunctions.hpp:11840
void * sendbufAdjoints
Definition ampiFunctions.hpp:11835
int sendbufCountVec
Definition ampiFunctions.hpp:11837
~AMPI_Reduce_global_AdjointHandle()
Definition ampiFunctions.hpp:11851
DATATYPE::IndexType * sendbufIndices
Definition ampiFunctions.hpp:11833
AMPI_Op op
Definition ampiFunctions.hpp:11847
void * recvbufAdjoints
Definition ampiFunctions.hpp:11842
MPI_Comm comm
Definition ampiFunctions.hpp:11849
int root
Definition ampiFunctions.hpp:11848
int recvbufCount
Definition ampiFunctions.hpp:11843
int sendbufCount
Definition ampiFunctions.hpp:11836
DATATYPE::IndexType * recvbufIndices
Definition ampiFunctions.hpp:11839
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:2871
MPI_Comm comm
Definition ampiFunctions.hpp:2882
int count
Definition ampiFunctions.hpp:2878
int bufCountVec
Definition ampiFunctions.hpp:2877
DATATYPE * datatype
Definition ampiFunctions.hpp:2879
DATATYPE::IndexType * bufIndices
Definition ampiFunctions.hpp:2873
DATATYPE::PrimalType * bufPrimals
Definition ampiFunctions.hpp:2874
~AMPI_Rsend_AdjointHandle()
Definition ampiFunctions.hpp:2884
int tag
Definition ampiFunctions.hpp:2881
int bufTotalSize
Definition ampiFunctions.hpp:2872
int bufCount
Definition ampiFunctions.hpp:2876
void * bufAdjoints
Definition ampiFunctions.hpp:2875
int dest
Definition ampiFunctions.hpp:2880
Definition ampiFunctions.hpp:3053
DATATYPE * datatype
Definition ampiFunctions.hpp:3057
DATATYPE::ModifiedType * bufMod
Definition ampiFunctions.hpp:3055
int tag
Definition ampiFunctions.hpp:3059
const DATATYPE::Type * buf
Definition ampiFunctions.hpp:3054
MPI_Comm comm
Definition ampiFunctions.hpp:3060
AMPI_Request * request
Definition ampiFunctions.hpp:3061
int count
Definition ampiFunctions.hpp:3056
int dest
Definition ampiFunctions.hpp:3058
Definition ampiFunctions.hpp:12175
SENDTYPE::IndexType * sendbufIndices
Definition ampiFunctions.hpp:12177
void * sendbufAdjoints
Definition ampiFunctions.hpp:12179
int recvbufTotalSize
Definition ampiFunctions.hpp:12184
RECVTYPE * recvtype
Definition ampiFunctions.hpp:12192
int sendbufCountVec
Definition ampiFunctions.hpp:12181
RECVTYPE::IndexType * recvbufIndices
Definition ampiFunctions.hpp:12185
RECVTYPE::PrimalType * recvbufOldPrimals
Definition ampiFunctions.hpp:12187
void * recvbufAdjoints
Definition ampiFunctions.hpp:12188
SENDTYPE::PrimalType * sendbufPrimals
Definition ampiFunctions.hpp:12178
int recvbufCountVec
Definition ampiFunctions.hpp:12190
int sendbufTotalSize
Definition ampiFunctions.hpp:12176
SENDTYPE * sendtype
Definition ampiFunctions.hpp:12183
int recvcount
Definition ampiFunctions.hpp:12191
int root
Definition ampiFunctions.hpp:12193
~AMPI_Scatter_AdjointHandle()
Definition ampiFunctions.hpp:12196
int recvbufCount
Definition ampiFunctions.hpp:12189
int sendcount
Definition ampiFunctions.hpp:12182
int sendbufCount
Definition ampiFunctions.hpp:12180
RECVTYPE::PrimalType * recvbufPrimals
Definition ampiFunctions.hpp:12186
MPI_Comm comm
Definition ampiFunctions.hpp:12194
Definition ampiFunctions.hpp:12499
RECVTYPE::PrimalType * recvbufOldPrimals
Definition ampiFunctions.hpp:12513
int root
Definition ampiFunctions.hpp:12519
SENDTYPE::IndexType * sendbufIndices
Definition ampiFunctions.hpp:12501
int recvcount
Definition ampiFunctions.hpp:12517
void * recvbufAdjoints
Definition ampiFunctions.hpp:12514
RECVTYPE::IndexType * recvbufIndices
Definition ampiFunctions.hpp:12511
RECVTYPE * recvtype
Definition ampiFunctions.hpp:12518
~AMPI_Scatterv_AdjointHandle()
Definition ampiFunctions.hpp:12522
const int * sendcounts
Definition ampiFunctions.hpp:12507
SENDTYPE::PrimalType * sendbufPrimals
Definition ampiFunctions.hpp:12502
SENDTYPE * sendtype
Definition ampiFunctions.hpp:12509
int recvbufTotalSize
Definition ampiFunctions.hpp:12510
int recvbufCountVec
Definition ampiFunctions.hpp:12516
int * sendbufCountVec
Definition ampiFunctions.hpp:12505
MPI_Comm comm
Definition ampiFunctions.hpp:12520
int * sendbufDisplsVec
Definition ampiFunctions.hpp:12506
int * sendbufCount
Definition ampiFunctions.hpp:12504
int recvbufCount
Definition ampiFunctions.hpp:12515
int sendbufTotalSize
Definition ampiFunctions.hpp:12500
void * sendbufAdjoints
Definition ampiFunctions.hpp:12503
const int * displs
Definition ampiFunctions.hpp:12508
RECVTYPE::PrimalType * recvbufPrimals
Definition ampiFunctions.hpp:12512
Definition ampiFunctions.hpp:3299
~AMPI_Send_AdjointHandle()
Definition ampiFunctions.hpp:3312
DATATYPE::PrimalType * bufPrimals
Definition ampiFunctions.hpp:3302
void * bufAdjoints
Definition ampiFunctions.hpp:3303
MPI_Comm comm
Definition ampiFunctions.hpp:3310
DATATYPE * datatype
Definition ampiFunctions.hpp:3307
DATATYPE::IndexType * bufIndices
Definition ampiFunctions.hpp:3301
int dest
Definition ampiFunctions.hpp:3308
int bufTotalSize
Definition ampiFunctions.hpp:3300
int count
Definition ampiFunctions.hpp:3306
int bufCount
Definition ampiFunctions.hpp:3304
int bufCountVec
Definition ampiFunctions.hpp:3305
int tag
Definition ampiFunctions.hpp:3309
Definition ampiFunctions.hpp:3481
DATATYPE * datatype
Definition ampiFunctions.hpp:3485
MPI_Comm comm
Definition ampiFunctions.hpp:3488
const DATATYPE::Type * buf
Definition ampiFunctions.hpp:3482
DATATYPE::ModifiedType * bufMod
Definition ampiFunctions.hpp:3483
AMPI_Request * request
Definition ampiFunctions.hpp:3489
int tag
Definition ampiFunctions.hpp:3487
int count
Definition ampiFunctions.hpp:3484
int dest
Definition ampiFunctions.hpp:3486
Definition ampiFunctions.hpp:3727
SENDTYPE::IndexType * sendbufIndices
Definition ampiFunctions.hpp:3729
void * sendbufAdjoints
Definition ampiFunctions.hpp:3731
int sendcount
Definition ampiFunctions.hpp:3734
int recvbufCountVec
Definition ampiFunctions.hpp:3744
SENDTYPE::PrimalType * sendbufPrimals
Definition ampiFunctions.hpp:3730
int source
Definition ampiFunctions.hpp:3747
int recvcount
Definition ampiFunctions.hpp:3745
MPI_Comm comm
Definition ampiFunctions.hpp:3749
RECVTYPE * recvtype
Definition ampiFunctions.hpp:3746
int recvbufTotalSize
Definition ampiFunctions.hpp:3738
~AMPI_Sendrecv_AdjointHandle()
Definition ampiFunctions.hpp:3751
RECVTYPE::IndexType * recvbufIndices
Definition ampiFunctions.hpp:3739
int recvbufCount
Definition ampiFunctions.hpp:3743
int recvtag
Definition ampiFunctions.hpp:3748
SENDTYPE * sendtype
Definition ampiFunctions.hpp:3735
RECVTYPE::PrimalType * recvbufOldPrimals
Definition ampiFunctions.hpp:3741
int sendbufCountVec
Definition ampiFunctions.hpp:3733
int sendbufTotalSize
Definition ampiFunctions.hpp:3728
int sendtag
Definition ampiFunctions.hpp:3737
void * recvbufAdjoints
Definition ampiFunctions.hpp:3742
RECVTYPE::PrimalType * recvbufPrimals
Definition ampiFunctions.hpp:3740
int dest
Definition ampiFunctions.hpp:3736
int sendbufCount
Definition ampiFunctions.hpp:3732
Definition ampiFunctions.hpp:4006
MPI_Comm comm
Definition ampiFunctions.hpp:4017
int count
Definition ampiFunctions.hpp:4013
DATATYPE * datatype
Definition ampiFunctions.hpp:4014
void * bufAdjoints
Definition ampiFunctions.hpp:4010
int tag
Definition ampiFunctions.hpp:4016
int bufCount
Definition ampiFunctions.hpp:4011
DATATYPE::PrimalType * bufPrimals
Definition ampiFunctions.hpp:4009
DATATYPE::IndexType * bufIndices
Definition ampiFunctions.hpp:4008
int bufCountVec
Definition ampiFunctions.hpp:4012
int bufTotalSize
Definition ampiFunctions.hpp:4007
~AMPI_Ssend_AdjointHandle()
Definition ampiFunctions.hpp:4019
int dest
Definition ampiFunctions.hpp:4015
Definition ampiFunctions.hpp:4188
int dest
Definition ampiFunctions.hpp:4193
AMPI_Request * request
Definition ampiFunctions.hpp:4196
int tag
Definition ampiFunctions.hpp:4194
MPI_Comm comm
Definition ampiFunctions.hpp:4195
DATATYPE::ModifiedType * bufMod
Definition ampiFunctions.hpp:4190
DATATYPE * datatype
Definition ampiFunctions.hpp:4192
int count
Definition ampiFunctions.hpp:4191
const DATATYPE::Type * buf
Definition ampiFunctions.hpp:4189
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:57
PrimalFunction funcPrimal
Definition typeDefinitions.h:64
IterateIdsFunction funcIterateOutputIds
Definition typeDefinitions.h:67
IterateIdsFunction funcIterateInputIds
Definition typeDefinitions.h:66
ReverseFunction funcReverse
Definition typeDefinitions.h:62
HandleBase()
Definition typeDefinitions.h:69
ForwardFunction funcForward
Definition typeDefinitions.h:63