43#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
44 template<
typename DATATYPE>
71 template<
typename DATATYPE>
87 template<
typename DATATYPE>
103 template<
typename DATATYPE>
118 template<
typename DATATYPE>
123 if(!datatype->getADTool().isActiveType()) {
125 rStatus = MPI_Bsend(buf, count, datatype->getMpiType(), dest, tag, comm);
130 typename DATATYPE::ModifiedType* bufMod =
nullptr;
136 if(datatype->isModifiedBufferRequired() ) {
137 datatype->createModifiedTypeBuffer(bufMod, bufElements);
139 bufMod =
reinterpret_cast<typename DATATYPE::ModifiedType*
>(
const_cast<typename DATATYPE::Type*
>(buf));
143 if(datatype->getADTool().isHandleRequired()) {
146 datatype->getADTool().startAssembly(h);
147 if(datatype->isModifiedBufferRequired()) {
148 datatype->copyIntoModifiedBuffer(buf, 0, bufMod, 0, count);
155 h->
bufCount = datatype->computeActiveElements(count);
156 h->
bufTotalSize = datatype->computeActiveElements(bufElements);
162 datatype->getIndices(buf, 0, h->
bufIndices, 0, count);
177 rStatus = MPI_Bsend(bufMod, count, datatype->getModifiedMpiType(), dest, tag, comm);
178 datatype->getADTool().addToolAction(h);
185 datatype->getADTool().stopAssembly(h);
187 if(datatype->isModifiedBufferRequired() ) {
188 datatype->deleteModifiedTypeBuffer(bufMod);
198#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
199 template<
typename DATATYPE>
225 template<
typename DATATYPE>
237 template<
typename DATATYPE>
253 template<
typename DATATYPE>
262 template<
typename DATATYPE>
278 template<
typename DATATYPE>
287 template<
typename DATATYPE>
300 template<
typename DATATYPE>
311 template<
typename DATATYPE>
313 template<
typename DATATYPE>
318 if(!datatype->getADTool().isActiveType()) {
320 rStatus = MPI_Ibsend(buf, count, datatype->getMpiType(), dest, tag, comm, &request->
request);
325 typename DATATYPE::ModifiedType* bufMod =
nullptr;
331 if(datatype->isModifiedBufferRequired() ) {
332 datatype->createModifiedTypeBuffer(bufMod, bufElements);
334 bufMod =
reinterpret_cast<typename DATATYPE::ModifiedType*
>(
const_cast<typename DATATYPE::Type*
>(buf));
338 if(datatype->getADTool().isHandleRequired()) {
341 datatype->getADTool().startAssembly(h);
342 if(datatype->isModifiedBufferRequired()) {
343 datatype->copyIntoModifiedBuffer(buf, 0, bufMod, 0, count);
350 h->
bufCount = datatype->computeActiveElements(count);
351 h->
bufTotalSize = datatype->computeActiveElements(bufElements);
357 datatype->getIndices(buf, 0, h->
bufIndices, 0, count);
363 h->
funcPrimal = AMPI_Ibsend_p_finish<DATATYPE>;
372 rStatus = MPI_Ibsend(bufMod, count, datatype->getModifiedMpiType(), dest, tag, comm, &request->
request);
375 asyncHandle->
buf = buf;
376 asyncHandle->
bufMod = bufMod;
377 asyncHandle->
count = count;
379 asyncHandle->
dest = dest;
380 asyncHandle->
tag = tag;
381 asyncHandle->
comm = comm;
383 request->
handle = asyncHandle;
390 datatype->getADTool().addToolAction(waitH);
397 template<
typename DATATYPE>
403 typename DATATYPE::ModifiedType* bufMod = asyncHandle->
bufMod;
404 int count = asyncHandle->
count;
405 DATATYPE* datatype = asyncHandle->
datatype;
406 int dest = asyncHandle->
dest;
407 int tag = asyncHandle->
tag;
423 if(datatype->getADTool().isActiveType()) {
425 datatype->getADTool().addToolAction(h);
432 datatype->getADTool().stopAssembly(h);
434 if(datatype->isModifiedBufferRequired() ) {
435 datatype->deleteModifiedTypeBuffer(bufMod);
445#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
447 template<
typename DATATYPE>
460 template<
typename DATATYPE>
462 template<
typename DATATYPE>
464 template<
typename DATATYPE>
466 template<
typename DATATYPE>
471 if(!datatype->getADTool().isActiveType()) {
473 rStatus = MPI_Bsend_init(buf, count, datatype->getMpiType(), dest, tag, comm, &request->
request);
478 typename DATATYPE::ModifiedType* bufMod =
nullptr;
484 if(datatype->isModifiedBufferRequired() ) {
485 datatype->createModifiedTypeBuffer(bufMod, bufElements);
487 bufMod =
reinterpret_cast<typename DATATYPE::ModifiedType*
>(
const_cast<typename DATATYPE::Type*
>(buf));
490 rStatus = MPI_Bsend_init(bufMod, count, datatype->getModifiedMpiType(), dest, tag, comm, &request->
request);
493 asyncHandle->
buf = buf;
494 asyncHandle->
bufMod = bufMod;
495 asyncHandle->
count = count;
497 asyncHandle->
dest = dest;
498 asyncHandle->
tag = tag;
499 asyncHandle->
comm = comm;
501 request->
handle = asyncHandle;
510 template<
typename DATATYPE>
516 typename DATATYPE::ModifiedType* bufMod = asyncHandle->
bufMod;
517 int count = asyncHandle->
count;
518 DATATYPE* datatype = asyncHandle->
datatype;
519 int dest = asyncHandle->
dest;
520 int tag = asyncHandle->
tag;
535 if(datatype->getADTool().isActiveType()) {
542 if(datatype->getADTool().isHandleRequired()) {
545 datatype->getADTool().startAssembly(h);
546 if(datatype->isModifiedBufferRequired()) {
547 datatype->copyIntoModifiedBuffer(buf, 0, bufMod, 0, count);
554 h->
bufCount = datatype->computeActiveElements(count);
555 h->
bufTotalSize = datatype->computeActiveElements(bufElements);
561 datatype->getIndices(buf, 0, h->
bufIndices, 0, count);
567 h->
funcPrimal = AMPI_Ibsend_p_finish<DATATYPE>;
582 datatype->getADTool().addToolAction(waitH);
589 template<
typename DATATYPE>
595 typename DATATYPE::ModifiedType* bufMod = asyncHandle->
bufMod;
596 int count = asyncHandle->
count;
597 DATATYPE* datatype = asyncHandle->
datatype;
598 int dest = asyncHandle->
dest;
599 int tag = asyncHandle->
tag;
614 if(datatype->getADTool().isActiveType()) {
616 datatype->getADTool().addToolAction(h);
623 datatype->getADTool().stopAssembly(h);
629 template<
typename DATATYPE>
635 typename DATATYPE::ModifiedType* bufMod = asyncHandle->
bufMod;
636 int count = asyncHandle->
count;
637 DATATYPE* datatype = asyncHandle->
datatype;
638 int dest = asyncHandle->
dest;
639 int tag = asyncHandle->
tag;
655 if(datatype->getADTool().isActiveType()) {
658 if(datatype->isModifiedBufferRequired() ) {
659 datatype->deleteModifiedTypeBuffer(bufMod);
669#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
670 template<
typename DATATYPE>
700 template<
typename DATATYPE>
702 typename DATATYPE::Type*
buf;
711 template<
typename DATATYPE>
724 template<
typename DATATYPE>
730 if(h->
datatype->getADTool().isOldPrimalsRequired()) {
738 template<
typename DATATYPE>
751 template<
typename DATATYPE>
762 template<
typename DATATYPE>
772 if(h->
datatype->getADTool().isOldPrimalsRequired()) {
781 template<
typename DATATYPE>
790 template<
typename DATATYPE>
792 template<
typename DATATYPE>
797 if(!datatype->getADTool().isActiveType()) {
799 rStatus = MPI_Imrecv(buf, count, datatype->getMpiType(), &message->
message, &request->
request);
804 typename DATATYPE::ModifiedType* bufMod =
nullptr;
810 if(datatype->isModifiedBufferRequired() ) {
811 datatype->createModifiedTypeBuffer(bufMod, bufElements);
813 bufMod =
reinterpret_cast<typename DATATYPE::ModifiedType*
>(
const_cast<typename DATATYPE::Type*
>(buf));
817 if(datatype->getADTool().isHandleRequired()) {
820 datatype->getADTool().startAssembly(h);
826 h->
bufCount = datatype->computeActiveElements(count);
827 h->
bufTotalSize = datatype->computeActiveElements(bufElements);
833 if(datatype->getADTool().isOldPrimalsRequired()) {
840 datatype->createIndices(buf, 0, h->
bufIndices, 0, count);
845 h->
funcPrimal = AMPI_Imrecv_p_finish<DATATYPE>;
852 if(!datatype->isModifiedBufferRequired()) {
853 datatype->clearIndices(buf, 0, count);
856 rStatus = MPI_Imrecv(bufMod, count, datatype->getModifiedMpiType(), &message->
message, &request->
request);
859 asyncHandle->
buf = buf;
860 asyncHandle->
bufMod = bufMod;
861 asyncHandle->
count = count;
863 asyncHandle->
message = message;
866 request->
handle = asyncHandle;
873 datatype->getADTool().addToolAction(waitH);
880 template<
typename DATATYPE>
885 typename DATATYPE::Type* buf = asyncHandle->
buf;
886 typename DATATYPE::ModifiedType* bufMod = asyncHandle->
bufMod;
887 int count = asyncHandle->
count;
888 DATATYPE* datatype = asyncHandle->
datatype;
904 if(datatype->getADTool().isActiveType()) {
906 datatype->getADTool().addToolAction(h);
908 if(datatype->isModifiedBufferRequired()) {
909 datatype->copyFromModifiedBuffer(buf, 0, bufMod, 0, count);
917 datatype->getADTool().stopAssembly(h);
919 if(datatype->isModifiedBufferRequired() ) {
920 datatype->deleteModifiedTypeBuffer(bufMod);
930#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
931 template<
typename DATATYPE>
963 template<
typename DATATYPE>
965 typename DATATYPE::Type*
buf;
976 template<
typename DATATYPE>
989 template<
typename DATATYPE>
995 if(h->
datatype->getADTool().isOldPrimalsRequired()) {
1003 template<
typename DATATYPE>
1016 template<
typename DATATYPE>
1027 template<
typename DATATYPE>
1037 if(h->
datatype->getADTool().isOldPrimalsRequired()) {
1046 template<
typename DATATYPE>
1055 template<
typename DATATYPE>
1057 template<
typename DATATYPE>
1058 int AMPI_Irecv(
typename DATATYPE::Type* buf,
int count, DATATYPE* datatype,
int source,
int tag,
AMPI_Comm comm,
1062 if(!datatype->getADTool().isActiveType()) {
1064 rStatus = MPI_Irecv(buf, count, datatype->getMpiType(), source, tag, comm, &request->
request);
1069 typename DATATYPE::ModifiedType* bufMod =
nullptr;
1070 int bufElements = 0;
1073 bufElements = count;
1075 if(datatype->isModifiedBufferRequired() ) {
1076 datatype->createModifiedTypeBuffer(bufMod, bufElements);
1078 bufMod =
reinterpret_cast<typename DATATYPE::ModifiedType*
>(
const_cast<typename DATATYPE::Type*
>(buf));
1082 if(datatype->getADTool().isHandleRequired()) {
1085 datatype->getADTool().startAssembly(h);
1091 h->
bufCount = datatype->computeActiveElements(count);
1092 h->
bufTotalSize = datatype->computeActiveElements(bufElements);
1098 if(datatype->getADTool().isOldPrimalsRequired()) {
1105 datatype->createIndices(buf, 0, h->
bufIndices, 0, count);
1110 h->
funcPrimal = AMPI_Irecv_p_finish<DATATYPE>;
1119 if(!datatype->isModifiedBufferRequired()) {
1120 datatype->clearIndices(buf, 0, count);
1123 rStatus = MPI_Irecv(bufMod, count, datatype->getModifiedMpiType(), source, tag, comm, &request->
request);
1126 asyncHandle->
buf = buf;
1127 asyncHandle->
bufMod = bufMod;
1128 asyncHandle->
count = count;
1130 asyncHandle->
source = source;
1131 asyncHandle->
tag = tag;
1132 asyncHandle->
comm = comm;
1135 request->
handle = asyncHandle;
1142 datatype->getADTool().addToolAction(waitH);
1149 template<
typename DATATYPE>
1154 typename DATATYPE::Type* buf = asyncHandle->
buf;
1155 typename DATATYPE::ModifiedType* bufMod = asyncHandle->
bufMod;
1156 int count = asyncHandle->
count;
1157 DATATYPE* datatype = asyncHandle->
datatype;
1158 int source = asyncHandle->
source;
1159 int tag = asyncHandle->
tag;
1177 if(datatype->getADTool().isActiveType()) {
1179 datatype->getADTool().addToolAction(h);
1181 if(datatype->isModifiedBufferRequired()) {
1182 datatype->copyFromModifiedBuffer(buf, 0, bufMod, 0, count);
1190 datatype->getADTool().stopAssembly(h);
1192 if(datatype->isModifiedBufferRequired() ) {
1193 datatype->deleteModifiedTypeBuffer(bufMod);
1203#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
1204 template<
typename DATATYPE>
1230 template<
typename DATATYPE>
1242 template<
typename DATATYPE>
1258 template<
typename DATATYPE>
1267 template<
typename DATATYPE>
1283 template<
typename DATATYPE>
1292 template<
typename DATATYPE>
1305 template<
typename DATATYPE>
1316 template<
typename DATATYPE>
1318 template<
typename DATATYPE>
1323 if(!datatype->getADTool().isActiveType()) {
1325 rStatus = MPI_Irsend(buf, count, datatype->getMpiType(), dest, tag, comm, &request->
request);
1330 typename DATATYPE::ModifiedType* bufMod =
nullptr;
1331 int bufElements = 0;
1334 bufElements = count;
1336 if(datatype->isModifiedBufferRequired() ) {
1337 datatype->createModifiedTypeBuffer(bufMod, bufElements);
1339 bufMod =
reinterpret_cast<typename DATATYPE::ModifiedType*
>(
const_cast<typename DATATYPE::Type*
>(buf));
1343 if(datatype->getADTool().isHandleRequired()) {
1346 datatype->getADTool().startAssembly(h);
1347 if(datatype->isModifiedBufferRequired()) {
1348 datatype->copyIntoModifiedBuffer(buf, 0, bufMod, 0, count);
1355 h->
bufCount = datatype->computeActiveElements(count);
1356 h->
bufTotalSize = datatype->computeActiveElements(bufElements);
1362 datatype->getIndices(buf, 0, h->
bufIndices, 0, count);
1368 h->
funcPrimal = AMPI_Irsend_p_finish<DATATYPE>;
1377 rStatus = MPI_Irsend(bufMod, count, datatype->getModifiedMpiType(), dest, tag, comm, &request->
request);
1380 asyncHandle->
buf = buf;
1381 asyncHandle->
bufMod = bufMod;
1382 asyncHandle->
count = count;
1384 asyncHandle->
dest = dest;
1385 asyncHandle->
tag = tag;
1386 asyncHandle->
comm = comm;
1388 request->
handle = asyncHandle;
1395 datatype->getADTool().addToolAction(waitH);
1402 template<
typename DATATYPE>
1408 typename DATATYPE::ModifiedType* bufMod = asyncHandle->
bufMod;
1409 int count = asyncHandle->
count;
1410 DATATYPE* datatype = asyncHandle->
datatype;
1411 int dest = asyncHandle->
dest;
1412 int tag = asyncHandle->
tag;
1428 if(datatype->getADTool().isActiveType()) {
1430 datatype->getADTool().addToolAction(h);
1437 datatype->getADTool().stopAssembly(h);
1439 if(datatype->isModifiedBufferRequired() ) {
1440 datatype->deleteModifiedTypeBuffer(bufMod);
1450#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
1451 template<
typename DATATYPE>
1477 template<
typename DATATYPE>
1489 template<
typename DATATYPE>
1505 template<
typename DATATYPE>
1514 template<
typename DATATYPE>
1530 template<
typename DATATYPE>
1539 template<
typename DATATYPE>
1552 template<
typename DATATYPE>
1563 template<
typename DATATYPE>
1565 template<
typename DATATYPE>
1570 if(!datatype->getADTool().isActiveType()) {
1572 rStatus = MPI_Isend(buf, count, datatype->getMpiType(), dest, tag, comm, &request->
request);
1577 typename DATATYPE::ModifiedType* bufMod =
nullptr;
1578 int bufElements = 0;
1581 bufElements = count;
1583 if(datatype->isModifiedBufferRequired() ) {
1584 datatype->createModifiedTypeBuffer(bufMod, bufElements);
1586 bufMod =
reinterpret_cast<typename DATATYPE::ModifiedType*
>(
const_cast<typename DATATYPE::Type*
>(buf));
1590 if(datatype->getADTool().isHandleRequired()) {
1593 datatype->getADTool().startAssembly(h);
1594 if(datatype->isModifiedBufferRequired()) {
1595 datatype->copyIntoModifiedBuffer(buf, 0, bufMod, 0, count);
1602 h->
bufCount = datatype->computeActiveElements(count);
1603 h->
bufTotalSize = datatype->computeActiveElements(bufElements);
1609 datatype->getIndices(buf, 0, h->
bufIndices, 0, count);
1615 h->
funcPrimal = AMPI_Isend_p_finish<DATATYPE>;
1624 rStatus = MPI_Isend(bufMod, count, datatype->getModifiedMpiType(), dest, tag, comm, &request->
request);
1627 asyncHandle->
buf = buf;
1628 asyncHandle->
bufMod = bufMod;
1629 asyncHandle->
count = count;
1631 asyncHandle->
dest = dest;
1632 asyncHandle->
tag = tag;
1633 asyncHandle->
comm = comm;
1635 request->
handle = asyncHandle;
1642 datatype->getADTool().addToolAction(waitH);
1649 template<
typename DATATYPE>
1655 typename DATATYPE::ModifiedType* bufMod = asyncHandle->
bufMod;
1656 int count = asyncHandle->
count;
1657 DATATYPE* datatype = asyncHandle->
datatype;
1658 int dest = asyncHandle->
dest;
1659 int tag = asyncHandle->
tag;
1675 if(datatype->getADTool().isActiveType()) {
1677 datatype->getADTool().addToolAction(h);
1684 datatype->getADTool().stopAssembly(h);
1686 if(datatype->isModifiedBufferRequired() ) {
1687 datatype->deleteModifiedTypeBuffer(bufMod);
1697#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
1698 template<
typename DATATYPE>
1724 template<
typename DATATYPE>
1736 template<
typename DATATYPE>
1752 template<
typename DATATYPE>
1761 template<
typename DATATYPE>
1777 template<
typename DATATYPE>
1786 template<
typename DATATYPE>
1799 template<
typename DATATYPE>
1810 template<
typename DATATYPE>
1812 template<
typename DATATYPE>
1817 if(!datatype->getADTool().isActiveType()) {
1819 rStatus = MPI_Issend(buf, count, datatype->getMpiType(), dest, tag, comm, &request->
request);
1824 typename DATATYPE::ModifiedType* bufMod =
nullptr;
1825 int bufElements = 0;
1828 bufElements = count;
1830 if(datatype->isModifiedBufferRequired() ) {
1831 datatype->createModifiedTypeBuffer(bufMod, bufElements);
1833 bufMod =
reinterpret_cast<typename DATATYPE::ModifiedType*
>(
const_cast<typename DATATYPE::Type*
>(buf));
1837 if(datatype->getADTool().isHandleRequired()) {
1840 datatype->getADTool().startAssembly(h);
1841 if(datatype->isModifiedBufferRequired()) {
1842 datatype->copyIntoModifiedBuffer(buf, 0, bufMod, 0, count);
1849 h->
bufCount = datatype->computeActiveElements(count);
1850 h->
bufTotalSize = datatype->computeActiveElements(bufElements);
1856 datatype->getIndices(buf, 0, h->
bufIndices, 0, count);
1862 h->
funcPrimal = AMPI_Issend_p_finish<DATATYPE>;
1871 rStatus = MPI_Issend(bufMod, count, datatype->getModifiedMpiType(), dest, tag, comm, &request->
request);
1874 asyncHandle->
buf = buf;
1875 asyncHandle->
bufMod = bufMod;
1876 asyncHandle->
count = count;
1878 asyncHandle->
dest = dest;
1879 asyncHandle->
tag = tag;
1880 asyncHandle->
comm = comm;
1882 request->
handle = asyncHandle;
1889 datatype->getADTool().addToolAction(waitH);
1896 template<
typename DATATYPE>
1902 typename DATATYPE::ModifiedType* bufMod = asyncHandle->
bufMod;
1903 int count = asyncHandle->
count;
1904 DATATYPE* datatype = asyncHandle->
datatype;
1905 int dest = asyncHandle->
dest;
1906 int tag = asyncHandle->
tag;
1922 if(datatype->getADTool().isActiveType()) {
1924 datatype->getADTool().addToolAction(h);
1931 datatype->getADTool().stopAssembly(h);
1933 if(datatype->isModifiedBufferRequired() ) {
1934 datatype->deleteModifiedTypeBuffer(bufMod);
1944#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
1945 template<
typename DATATYPE>
1977 template<
typename DATATYPE>
1987 if(h->
datatype->getADTool().isOldPrimalsRequired()) {
1995 template<
typename DATATYPE>
2011 template<
typename DATATYPE>
2021 if(h->
datatype->getADTool().isOldPrimalsRequired()) {
2031 template<
typename DATATYPE>
2036 if(!datatype->getADTool().isActiveType()) {
2038 rStatus = MPI_Mrecv(buf, count, datatype->getMpiType(), &message->
message, status);
2043 typename DATATYPE::ModifiedType* bufMod =
nullptr;
2044 int bufElements = 0;
2047 bufElements = count;
2049 if(datatype->isModifiedBufferRequired() ) {
2050 datatype->createModifiedTypeBuffer(bufMod, bufElements);
2052 bufMod =
reinterpret_cast<typename DATATYPE::ModifiedType*
>(
const_cast<typename DATATYPE::Type*
>(buf));
2056 if(datatype->getADTool().isHandleRequired()) {
2059 datatype->getADTool().startAssembly(h);
2065 h->
bufCount = datatype->computeActiveElements(count);
2066 h->
bufTotalSize = datatype->computeActiveElements(bufElements);
2072 if(datatype->getADTool().isOldPrimalsRequired()) {
2079 datatype->createIndices(buf, 0, h->
bufIndices, 0, count);
2092 if(!datatype->isModifiedBufferRequired()) {
2093 datatype->clearIndices(buf, 0, count);
2096 rStatus = MPI_Mrecv(bufMod, count, datatype->getModifiedMpiType(), &message->
message, status);
2097 datatype->getADTool().addToolAction(h);
2099 if(datatype->isModifiedBufferRequired()) {
2100 datatype->copyFromModifiedBuffer(buf, 0, bufMod, 0, count);
2108 datatype->getADTool().stopAssembly(h);
2110 if(datatype->isModifiedBufferRequired() ) {
2111 datatype->deleteModifiedTypeBuffer(bufMod);
2121#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
2122 template<
typename DATATYPE>
2155 template<
typename DATATYPE>
2167 if(h->
datatype->getADTool().isOldPrimalsRequired()) {
2175 template<
typename DATATYPE>
2192 template<
typename DATATYPE>
2203 if(h->
datatype->getADTool().isOldPrimalsRequired()) {
2213 template<
typename DATATYPE>
2214 int AMPI_Recv(
typename DATATYPE::Type* buf,
int count, DATATYPE* datatype,
int source,
int tag,
AMPI_Comm comm,
2218 if(!datatype->getADTool().isActiveType()) {
2220 rStatus = MPI_Recv(buf, count, datatype->getMpiType(), source, tag, comm, status);
2225 typename DATATYPE::ModifiedType* bufMod =
nullptr;
2226 int bufElements = 0;
2229 bufElements = count;
2231 if(datatype->isModifiedBufferRequired() ) {
2232 datatype->createModifiedTypeBuffer(bufMod, bufElements);
2234 bufMod =
reinterpret_cast<typename DATATYPE::ModifiedType*
>(
const_cast<typename DATATYPE::Type*
>(buf));
2238 if(datatype->getADTool().isHandleRequired()) {
2241 datatype->getADTool().startAssembly(h);
2247 h->
bufCount = datatype->computeActiveElements(count);
2248 h->
bufTotalSize = datatype->computeActiveElements(bufElements);
2254 if(datatype->getADTool().isOldPrimalsRequired()) {
2261 datatype->createIndices(buf, 0, h->
bufIndices, 0, count);
2275 if(!datatype->isModifiedBufferRequired()) {
2276 datatype->clearIndices(buf, 0, count);
2279 rStatus = MPI_Recv(bufMod, count, datatype->getModifiedMpiType(), source, tag, comm, status);
2280 datatype->getADTool().addToolAction(h);
2282 if(datatype->isModifiedBufferRequired()) {
2283 datatype->copyFromModifiedBuffer(buf, 0, bufMod, 0, count);
2291 datatype->getADTool().stopAssembly(h);
2293 if(datatype->isModifiedBufferRequired() ) {
2294 datatype->deleteModifiedTypeBuffer(bufMod);
2304#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
2306 template<
typename DATATYPE>
2320 template<
typename DATATYPE>
2322 template<
typename DATATYPE>
2324 template<
typename DATATYPE>
2326 template<
typename DATATYPE>
2331 if(!datatype->getADTool().isActiveType()) {
2333 rStatus = MPI_Recv_init(buf, count, datatype->getMpiType(), source, tag, comm, &request->
request);
2338 typename DATATYPE::ModifiedType* bufMod =
nullptr;
2339 int bufElements = 0;
2342 bufElements = count;
2344 if(datatype->isModifiedBufferRequired() ) {
2345 datatype->createModifiedTypeBuffer(bufMod, bufElements);
2347 bufMod =
reinterpret_cast<typename DATATYPE::ModifiedType*
>(
const_cast<typename DATATYPE::Type*
>(buf));
2350 rStatus = MPI_Recv_init(bufMod, count, datatype->getModifiedMpiType(), source, tag, comm, &request->
request);
2353 asyncHandle->
buf = buf;
2354 asyncHandle->
bufMod = bufMod;
2355 asyncHandle->
count = count;
2357 asyncHandle->
source = source;
2358 asyncHandle->
tag = tag;
2359 asyncHandle->
comm = comm;
2362 request->
handle = asyncHandle;
2371 template<
typename DATATYPE>
2376 typename DATATYPE::Type* buf = asyncHandle->
buf;
2377 typename DATATYPE::ModifiedType* bufMod = asyncHandle->
bufMod;
2378 int count = asyncHandle->
count;
2379 DATATYPE* datatype = asyncHandle->
datatype;
2380 int source = asyncHandle->
source;
2381 int tag = asyncHandle->
tag;
2398 if(datatype->getADTool().isActiveType()) {
2400 int bufElements = 0;
2403 bufElements = count;
2405 if(datatype->getADTool().isHandleRequired()) {
2408 datatype->getADTool().startAssembly(h);
2414 h->
bufCount = datatype->computeActiveElements(count);
2415 h->
bufTotalSize = datatype->computeActiveElements(bufElements);
2421 if(datatype->getADTool().isOldPrimalsRequired()) {
2428 datatype->createIndices(buf, 0, h->
bufIndices, 0, count);
2433 h->
funcPrimal = AMPI_Irecv_p_finish<DATATYPE>;
2442 if(!datatype->isModifiedBufferRequired()) {
2443 datatype->clearIndices(buf, 0, count);
2452 datatype->getADTool().addToolAction(waitH);
2459 template<
typename DATATYPE>
2464 typename DATATYPE::Type* buf = asyncHandle->
buf;
2465 typename DATATYPE::ModifiedType* bufMod = asyncHandle->
bufMod;
2466 int count = asyncHandle->
count;
2467 DATATYPE* datatype = asyncHandle->
datatype;
2468 int source = asyncHandle->
source;
2469 int tag = asyncHandle->
tag;
2486 if(datatype->getADTool().isActiveType()) {
2488 datatype->getADTool().addToolAction(h);
2490 if(datatype->isModifiedBufferRequired()) {
2491 datatype->copyFromModifiedBuffer(buf, 0, bufMod, 0, count);
2499 datatype->getADTool().stopAssembly(h);
2505 template<
typename DATATYPE>
2510 typename DATATYPE::Type* buf = asyncHandle->
buf;
2511 typename DATATYPE::ModifiedType* bufMod = asyncHandle->
bufMod;
2512 int count = asyncHandle->
count;
2513 DATATYPE* datatype = asyncHandle->
datatype;
2514 int source = asyncHandle->
source;
2515 int tag = asyncHandle->
tag;
2533 if(datatype->getADTool().isActiveType()) {
2536 if(datatype->isModifiedBufferRequired() ) {
2537 datatype->deleteModifiedTypeBuffer(bufMod);
2547#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
2548 template<
typename DATATYPE>
2575 template<
typename DATATYPE>
2591 template<
typename DATATYPE>
2607 template<
typename DATATYPE>
2622 template<
typename DATATYPE>
2627 if(!datatype->getADTool().isActiveType()) {
2629 rStatus = MPI_Rsend(buf, count, datatype->getMpiType(), dest, tag, comm);
2634 typename DATATYPE::ModifiedType* bufMod =
nullptr;
2635 int bufElements = 0;
2638 bufElements = count;
2640 if(datatype->isModifiedBufferRequired() ) {
2641 datatype->createModifiedTypeBuffer(bufMod, bufElements);
2643 bufMod =
reinterpret_cast<typename DATATYPE::ModifiedType*
>(
const_cast<typename DATATYPE::Type*
>(buf));
2647 if(datatype->getADTool().isHandleRequired()) {
2650 datatype->getADTool().startAssembly(h);
2651 if(datatype->isModifiedBufferRequired()) {
2652 datatype->copyIntoModifiedBuffer(buf, 0, bufMod, 0, count);
2659 h->
bufCount = datatype->computeActiveElements(count);
2660 h->
bufTotalSize = datatype->computeActiveElements(bufElements);
2666 datatype->getIndices(buf, 0, h->
bufIndices, 0, count);
2681 rStatus = MPI_Rsend(bufMod, count, datatype->getModifiedMpiType(), dest, tag, comm);
2682 datatype->getADTool().addToolAction(h);
2689 datatype->getADTool().stopAssembly(h);
2691 if(datatype->isModifiedBufferRequired() ) {
2692 datatype->deleteModifiedTypeBuffer(bufMod);
2702#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
2704 template<
typename DATATYPE>
2717 template<
typename DATATYPE>
2719 template<
typename DATATYPE>
2721 template<
typename DATATYPE>
2723 template<
typename DATATYPE>
2728 if(!datatype->getADTool().isActiveType()) {
2730 rStatus = MPI_Rsend_init(buf, count, datatype->getMpiType(), dest, tag, comm, &request->
request);
2735 typename DATATYPE::ModifiedType* bufMod =
nullptr;
2736 int bufElements = 0;
2739 bufElements = count;
2741 if(datatype->isModifiedBufferRequired() ) {
2742 datatype->createModifiedTypeBuffer(bufMod, bufElements);
2744 bufMod =
reinterpret_cast<typename DATATYPE::ModifiedType*
>(
const_cast<typename DATATYPE::Type*
>(buf));
2747 rStatus = MPI_Rsend_init(bufMod, count, datatype->getModifiedMpiType(), dest, tag, comm, &request->
request);
2750 asyncHandle->
buf = buf;
2751 asyncHandle->
bufMod = bufMod;
2752 asyncHandle->
count = count;
2754 asyncHandle->
dest = dest;
2755 asyncHandle->
tag = tag;
2756 asyncHandle->
comm = comm;
2758 request->
handle = asyncHandle;
2767 template<
typename DATATYPE>
2773 typename DATATYPE::ModifiedType* bufMod = asyncHandle->
bufMod;
2774 int count = asyncHandle->
count;
2775 DATATYPE* datatype = asyncHandle->
datatype;
2776 int dest = asyncHandle->
dest;
2777 int tag = asyncHandle->
tag;
2792 if(datatype->getADTool().isActiveType()) {
2794 int bufElements = 0;
2797 bufElements = count;
2799 if(datatype->getADTool().isHandleRequired()) {
2802 datatype->getADTool().startAssembly(h);
2803 if(datatype->isModifiedBufferRequired()) {
2804 datatype->copyIntoModifiedBuffer(buf, 0, bufMod, 0, count);
2811 h->
bufCount = datatype->computeActiveElements(count);
2812 h->
bufTotalSize = datatype->computeActiveElements(bufElements);
2818 datatype->getIndices(buf, 0, h->
bufIndices, 0, count);
2824 h->
funcPrimal = AMPI_Irsend_p_finish<DATATYPE>;
2839 datatype->getADTool().addToolAction(waitH);
2846 template<
typename DATATYPE>
2852 typename DATATYPE::ModifiedType* bufMod = asyncHandle->
bufMod;
2853 int count = asyncHandle->
count;
2854 DATATYPE* datatype = asyncHandle->
datatype;
2855 int dest = asyncHandle->
dest;
2856 int tag = asyncHandle->
tag;
2871 if(datatype->getADTool().isActiveType()) {
2873 datatype->getADTool().addToolAction(h);
2880 datatype->getADTool().stopAssembly(h);
2886 template<
typename DATATYPE>
2892 typename DATATYPE::ModifiedType* bufMod = asyncHandle->
bufMod;
2893 int count = asyncHandle->
count;
2894 DATATYPE* datatype = asyncHandle->
datatype;
2895 int dest = asyncHandle->
dest;
2896 int tag = asyncHandle->
tag;
2912 if(datatype->getADTool().isActiveType()) {
2915 if(datatype->isModifiedBufferRequired() ) {
2916 datatype->deleteModifiedTypeBuffer(bufMod);
2926#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
2927 template<
typename DATATYPE>
2954 template<
typename DATATYPE>
2970 template<
typename DATATYPE>
2986 template<
typename DATATYPE>
3001 template<
typename DATATYPE>
3006 if(!datatype->getADTool().isActiveType()) {
3008 rStatus = MPI_Send(buf, count, datatype->getMpiType(), dest, tag, comm);
3013 typename DATATYPE::ModifiedType* bufMod =
nullptr;
3014 int bufElements = 0;
3017 bufElements = count;
3019 if(datatype->isModifiedBufferRequired() ) {
3020 datatype->createModifiedTypeBuffer(bufMod, bufElements);
3022 bufMod =
reinterpret_cast<typename DATATYPE::ModifiedType*
>(
const_cast<typename DATATYPE::Type*
>(buf));
3026 if(datatype->getADTool().isHandleRequired()) {
3029 datatype->getADTool().startAssembly(h);
3030 if(datatype->isModifiedBufferRequired()) {
3031 datatype->copyIntoModifiedBuffer(buf, 0, bufMod, 0, count);
3038 h->
bufCount = datatype->computeActiveElements(count);
3039 h->
bufTotalSize = datatype->computeActiveElements(bufElements);
3045 datatype->getIndices(buf, 0, h->
bufIndices, 0, count);
3060 rStatus = MPI_Send(bufMod, count, datatype->getModifiedMpiType(), dest, tag, comm);
3061 datatype->getADTool().addToolAction(h);
3068 datatype->getADTool().stopAssembly(h);
3070 if(datatype->isModifiedBufferRequired() ) {
3071 datatype->deleteModifiedTypeBuffer(bufMod);
3081#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
3083 template<
typename DATATYPE>
3096 template<
typename DATATYPE>
3098 template<
typename DATATYPE>
3100 template<
typename DATATYPE>
3102 template<
typename DATATYPE>
3107 if(!datatype->getADTool().isActiveType()) {
3109 rStatus = MPI_Send_init(buf, count, datatype->getMpiType(), dest, tag, comm, &request->
request);
3114 typename DATATYPE::ModifiedType* bufMod =
nullptr;
3115 int bufElements = 0;
3118 bufElements = count;
3120 if(datatype->isModifiedBufferRequired() ) {
3121 datatype->createModifiedTypeBuffer(bufMod, bufElements);
3123 bufMod =
reinterpret_cast<typename DATATYPE::ModifiedType*
>(
const_cast<typename DATATYPE::Type*
>(buf));
3126 rStatus = MPI_Send_init(bufMod, count, datatype->getModifiedMpiType(), dest, tag, comm, &request->
request);
3129 asyncHandle->
buf = buf;
3130 asyncHandle->
bufMod = bufMod;
3131 asyncHandle->
count = count;
3133 asyncHandle->
dest = dest;
3134 asyncHandle->
tag = tag;
3135 asyncHandle->
comm = comm;
3137 request->
handle = asyncHandle;
3146 template<
typename DATATYPE>
3152 typename DATATYPE::ModifiedType* bufMod = asyncHandle->
bufMod;
3153 int count = asyncHandle->
count;
3154 DATATYPE* datatype = asyncHandle->
datatype;
3155 int dest = asyncHandle->
dest;
3156 int tag = asyncHandle->
tag;
3171 if(datatype->getADTool().isActiveType()) {
3173 int bufElements = 0;
3176 bufElements = count;
3178 if(datatype->getADTool().isHandleRequired()) {
3181 datatype->getADTool().startAssembly(h);
3182 if(datatype->isModifiedBufferRequired()) {
3183 datatype->copyIntoModifiedBuffer(buf, 0, bufMod, 0, count);
3190 h->
bufCount = datatype->computeActiveElements(count);
3191 h->
bufTotalSize = datatype->computeActiveElements(bufElements);
3197 datatype->getIndices(buf, 0, h->
bufIndices, 0, count);
3203 h->
funcPrimal = AMPI_Isend_p_finish<DATATYPE>;
3218 datatype->getADTool().addToolAction(waitH);
3225 template<
typename DATATYPE>
3231 typename DATATYPE::ModifiedType* bufMod = asyncHandle->
bufMod;
3232 int count = asyncHandle->
count;
3233 DATATYPE* datatype = asyncHandle->
datatype;
3234 int dest = asyncHandle->
dest;
3235 int tag = asyncHandle->
tag;
3250 if(datatype->getADTool().isActiveType()) {
3252 datatype->getADTool().addToolAction(h);
3259 datatype->getADTool().stopAssembly(h);
3265 template<
typename DATATYPE>
3271 typename DATATYPE::ModifiedType* bufMod = asyncHandle->
bufMod;
3272 int count = asyncHandle->
count;
3273 DATATYPE* datatype = asyncHandle->
datatype;
3274 int dest = asyncHandle->
dest;
3275 int tag = asyncHandle->
tag;
3291 if(datatype->getADTool().isActiveType()) {
3294 if(datatype->isModifiedBufferRequired() ) {
3295 datatype->deleteModifiedTypeBuffer(bufMod);
3305#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
3306 template<
typename SENDTYPE,
typename RECVTYPE>
3356 template<
typename SENDTYPE,
typename RECVTYPE>
3376 if(h->
recvtype->getADTool().isOldPrimalsRequired()) {
3384 template<
typename SENDTYPE,
typename RECVTYPE>
3409 template<
typename SENDTYPE,
typename RECVTYPE>
3421 if(h->
recvtype->getADTool().isOldPrimalsRequired()) {
3437 template<
typename SENDTYPE,
typename RECVTYPE>
3439 int sendtag,
typename RECVTYPE::Type* recvbuf,
int recvcount, RECVTYPE* recvtype,
int source,
int recvtag,
3443 if(!recvtype->getADTool().isActiveType()) {
3445 rStatus = MPI_Sendrecv(sendbuf, sendcount, sendtype->getMpiType(), dest, sendtag, recvbuf, recvcount,
3446 recvtype->getMpiType(), source, recvtag, comm, status);
3451 typename SENDTYPE::ModifiedType* sendbufMod =
nullptr;
3452 int sendbufElements = 0;
3455 sendbufElements = sendcount;
3457 if(sendtype->isModifiedBufferRequired() ) {
3458 sendtype->createModifiedTypeBuffer(sendbufMod, sendbufElements);
3460 sendbufMod =
reinterpret_cast<typename SENDTYPE::ModifiedType*
>(
const_cast<typename SENDTYPE::Type*
>(sendbuf));
3462 typename RECVTYPE::ModifiedType* recvbufMod =
nullptr;
3463 int recvbufElements = 0;
3466 recvbufElements = recvcount;
3468 if(recvtype->isModifiedBufferRequired() ) {
3469 recvtype->createModifiedTypeBuffer(recvbufMod, recvbufElements);
3471 recvbufMod =
reinterpret_cast<typename RECVTYPE::ModifiedType*
>(
const_cast<typename RECVTYPE::Type*
>(recvbuf));
3475 if(recvtype->getADTool().isHandleRequired()) {
3478 recvtype->getADTool().startAssembly(h);
3479 if(sendtype->isModifiedBufferRequired()) {
3480 sendtype->copyIntoModifiedBuffer(sendbuf, 0, sendbufMod, 0, sendcount);
3487 h->
sendbufCount = sendtype->computeActiveElements(sendcount);
3490 h->
recvbufCount = recvtype->computeActiveElements(recvcount);
3497 if(recvtype->getADTool().isOldPrimalsRequired()) {
3503 sendtype->getIndices(sendbuf, 0, h->
sendbufIndices, 0, sendcount);
3505 recvtype->createIndices(recvbuf, 0, h->
recvbufIndices, 0, recvcount);
3508 h->
funcReverse = AMPI_Sendrecv_b<SENDTYPE, RECVTYPE>;
3509 h->
funcForward = AMPI_Sendrecv_d<SENDTYPE, RECVTYPE>;
3510 h->
funcPrimal = AMPI_Sendrecv_p<SENDTYPE, RECVTYPE>;
3522 if(!recvtype->isModifiedBufferRequired()) {
3523 recvtype->clearIndices(recvbuf, 0, recvcount);
3526 rStatus = MPI_Sendrecv(sendbufMod, sendcount, sendtype->getModifiedMpiType(), dest, sendtag, recvbufMod, recvcount,
3527 recvtype->getModifiedMpiType(), source, recvtag, comm, status);
3528 recvtype->getADTool().addToolAction(h);
3530 if(recvtype->isModifiedBufferRequired()) {
3531 recvtype->copyFromModifiedBuffer(recvbuf, 0, recvbufMod, 0, recvcount);
3539 recvtype->getADTool().stopAssembly(h);
3541 if(sendtype->isModifiedBufferRequired() ) {
3542 sendtype->deleteModifiedTypeBuffer(sendbufMod);
3544 if(recvtype->isModifiedBufferRequired() ) {
3545 recvtype->deleteModifiedTypeBuffer(recvbufMod);
3555#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
3556 template<
typename DATATYPE>
3583 template<
typename DATATYPE>
3599 template<
typename DATATYPE>
3615 template<
typename DATATYPE>
3630 template<
typename DATATYPE>
3635 if(!datatype->getADTool().isActiveType()) {
3637 rStatus = MPI_Ssend(buf, count, datatype->getMpiType(), dest, tag, comm);
3642 typename DATATYPE::ModifiedType* bufMod =
nullptr;
3643 int bufElements = 0;
3646 bufElements = count;
3648 if(datatype->isModifiedBufferRequired() ) {
3649 datatype->createModifiedTypeBuffer(bufMod, bufElements);
3651 bufMod =
reinterpret_cast<typename DATATYPE::ModifiedType*
>(
const_cast<typename DATATYPE::Type*
>(buf));
3655 if(datatype->getADTool().isHandleRequired()) {
3658 datatype->getADTool().startAssembly(h);
3659 if(datatype->isModifiedBufferRequired()) {
3660 datatype->copyIntoModifiedBuffer(buf, 0, bufMod, 0, count);
3667 h->
bufCount = datatype->computeActiveElements(count);
3668 h->
bufTotalSize = datatype->computeActiveElements(bufElements);
3674 datatype->getIndices(buf, 0, h->
bufIndices, 0, count);
3689 rStatus = MPI_Ssend(bufMod, count, datatype->getModifiedMpiType(), dest, tag, comm);
3690 datatype->getADTool().addToolAction(h);
3697 datatype->getADTool().stopAssembly(h);
3699 if(datatype->isModifiedBufferRequired() ) {
3700 datatype->deleteModifiedTypeBuffer(bufMod);
3710#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
3712 template<
typename DATATYPE>
3725 template<
typename DATATYPE>
3727 template<
typename DATATYPE>
3729 template<
typename DATATYPE>
3731 template<
typename DATATYPE>
3736 if(!datatype->getADTool().isActiveType()) {
3738 rStatus = MPI_Ssend_init(buf, count, datatype->getMpiType(), dest, tag, comm, &request->
request);
3743 typename DATATYPE::ModifiedType* bufMod =
nullptr;
3744 int bufElements = 0;
3747 bufElements = count;
3749 if(datatype->isModifiedBufferRequired() ) {
3750 datatype->createModifiedTypeBuffer(bufMod, bufElements);
3752 bufMod =
reinterpret_cast<typename DATATYPE::ModifiedType*
>(
const_cast<typename DATATYPE::Type*
>(buf));
3755 rStatus = MPI_Ssend_init(bufMod, count, datatype->getModifiedMpiType(), dest, tag, comm, &request->
request);
3758 asyncHandle->
buf = buf;
3759 asyncHandle->
bufMod = bufMod;
3760 asyncHandle->
count = count;
3762 asyncHandle->
dest = dest;
3763 asyncHandle->
tag = tag;
3764 asyncHandle->
comm = comm;
3766 request->
handle = asyncHandle;
3775 template<
typename DATATYPE>
3781 typename DATATYPE::ModifiedType* bufMod = asyncHandle->
bufMod;
3782 int count = asyncHandle->
count;
3783 DATATYPE* datatype = asyncHandle->
datatype;
3784 int dest = asyncHandle->
dest;
3785 int tag = asyncHandle->
tag;
3800 if(datatype->getADTool().isActiveType()) {
3802 int bufElements = 0;
3805 bufElements = count;
3807 if(datatype->getADTool().isHandleRequired()) {
3810 datatype->getADTool().startAssembly(h);
3811 if(datatype->isModifiedBufferRequired()) {
3812 datatype->copyIntoModifiedBuffer(buf, 0, bufMod, 0, count);
3819 h->
bufCount = datatype->computeActiveElements(count);
3820 h->
bufTotalSize = datatype->computeActiveElements(bufElements);
3826 datatype->getIndices(buf, 0, h->
bufIndices, 0, count);
3832 h->
funcPrimal = AMPI_Issend_p_finish<DATATYPE>;
3847 datatype->getADTool().addToolAction(waitH);
3854 template<
typename DATATYPE>
3860 typename DATATYPE::ModifiedType* bufMod = asyncHandle->
bufMod;
3861 int count = asyncHandle->
count;
3862 DATATYPE* datatype = asyncHandle->
datatype;
3863 int dest = asyncHandle->
dest;
3864 int tag = asyncHandle->
tag;
3879 if(datatype->getADTool().isActiveType()) {
3881 datatype->getADTool().addToolAction(h);
3888 datatype->getADTool().stopAssembly(h);
3894 template<
typename DATATYPE>
3900 typename DATATYPE::ModifiedType* bufMod = asyncHandle->
bufMod;
3901 int count = asyncHandle->
count;
3902 DATATYPE* datatype = asyncHandle->
datatype;
3903 int dest = asyncHandle->
dest;
3904 int tag = asyncHandle->
tag;
3920 if(datatype->getADTool().isActiveType()) {
3923 if(datatype->isModifiedBufferRequired() ) {
3924 datatype->deleteModifiedTypeBuffer(bufMod);
3934#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
3935 template<
typename SENDTYPE,
typename RECVTYPE>
3981 template<
typename SENDTYPE,
typename RECVTYPE>
4000 if(h->
recvtype->getADTool().isOldPrimalsRequired()) {
4008 template<
typename SENDTYPE,
typename RECVTYPE>
4032 template<
typename SENDTYPE,
typename RECVTYPE>
4043 if(h->
recvtype->getADTool().isOldPrimalsRequired()) {
4060 template<
typename SENDTYPE,
typename RECVTYPE>
4062 typename RECVTYPE::Type* recvbuf,
int recvcount, RECVTYPE* recvtype,
AMPI_Comm comm) {
4065 if(!recvtype->getADTool().isActiveType()) {
4067 rStatus = MPI_Allgather(sendbuf, sendcount, sendtype->getMpiType(), recvbuf, recvcount, recvtype->getMpiType(), comm);
4072 typename SENDTYPE::ModifiedType* sendbufMod =
nullptr;
4073 int sendbufElements = 0;
4077 sendbufElements = sendcount;
4079 sendbufElements = recvcount;
4082 if(sendtype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == sendbuf)) {
4083 sendtype->createModifiedTypeBuffer(sendbufMod, sendbufElements);
4085 sendbufMod =
reinterpret_cast<typename SENDTYPE::ModifiedType*
>(
const_cast<typename SENDTYPE::Type*
>(sendbuf));
4087 typename RECVTYPE::ModifiedType* recvbufMod =
nullptr;
4088 int recvbufElements = 0;
4093 if(recvtype->isModifiedBufferRequired() ) {
4094 recvtype->createModifiedTypeBuffer(recvbufMod, recvbufElements);
4096 recvbufMod =
reinterpret_cast<typename RECVTYPE::ModifiedType*
>(
const_cast<typename RECVTYPE::Type*
>(recvbuf));
4100 if(recvtype->getADTool().isHandleRequired()) {
4103 recvtype->getADTool().startAssembly(h);
4104 if(sendtype->isModifiedBufferRequired()) {
4106 sendtype->copyIntoModifiedBuffer(sendbuf, 0, sendbufMod, 0, sendcount);
4108 recvtype->copyIntoModifiedBuffer(recvbuf, recvcount *
getCommRank(comm), recvbufMod, recvcount *
getCommRank(comm),
4118 h->
sendbufCount = sendtype->computeActiveElements(sendcount);
4120 h->
sendbufCount = recvtype->computeActiveElements(recvcount);
4124 h->
recvbufCount = recvtype->computeActiveElements(recvcount);
4131 if(recvtype->getADTool().isOldPrimalsRequired()) {
4138 sendtype->getIndices(sendbuf, 0, h->
sendbufIndices, 0, sendcount);
4146 h->
funcReverse = AMPI_Allgather_b<SENDTYPE, RECVTYPE>;
4147 h->
funcForward = AMPI_Allgather_d<SENDTYPE, RECVTYPE>;
4148 h->
funcPrimal = AMPI_Allgather_p<SENDTYPE, RECVTYPE>;
4156 if(!recvtype->isModifiedBufferRequired()) {
4157 recvtype->clearIndices(recvbuf, 0, recvcount *
getCommSize(comm));
4160 rStatus = MPI_Allgather(sendbufMod, sendcount, sendtype->getModifiedMpiType(), recvbufMod, recvcount,
4161 recvtype->getModifiedMpiType(), comm);
4162 recvtype->getADTool().addToolAction(h);
4164 if(recvtype->isModifiedBufferRequired()) {
4165 recvtype->copyFromModifiedBuffer(recvbuf, 0, recvbufMod, 0, recvcount *
getCommSize(comm));
4173 recvtype->getADTool().stopAssembly(h);
4175 if(sendtype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == sendbuf)) {
4176 sendtype->deleteModifiedTypeBuffer(sendbufMod);
4178 if(recvtype->isModifiedBufferRequired() ) {
4179 recvtype->deleteModifiedTypeBuffer(recvbufMod);
4189#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
4190 template<
typename SENDTYPE,
typename RECVTYPE>
4242 template<
typename SENDTYPE,
typename RECVTYPE>
4262 if(h->
recvtype->getADTool().isOldPrimalsRequired()) {
4272 template<
typename SENDTYPE,
typename RECVTYPE>
4299 template<
typename SENDTYPE,
typename RECVTYPE>
4311 if(h->
recvtype->getADTool().isOldPrimalsRequired()) {
4330 template<
typename SENDTYPE,
typename RECVTYPE>
4336 if(!recvtype->getADTool().isActiveType()) {
4338 rStatus = MPI_Allgatherv(sendbuf, sendcount, sendtype->getMpiType(), recvbuf, recvcounts, displs,
4339 recvtype->getMpiType(), comm);
4345 int displsTotalSize = 0;
4346 if(
nullptr != displs) {
4348 if(recvtype->isModifiedBufferRequired()) {
4352 typename SENDTYPE::ModifiedType* sendbufMod =
nullptr;
4353 int sendbufElements = 0;
4357 sendbufElements = sendcount;
4362 if(sendtype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == sendbuf)) {
4363 sendtype->createModifiedTypeBuffer(sendbufMod, sendbufElements);
4365 sendbufMod =
reinterpret_cast<typename SENDTYPE::ModifiedType*
>(
const_cast<typename SENDTYPE::Type*
>(sendbuf));
4367 typename RECVTYPE::ModifiedType* recvbufMod =
nullptr;
4368 int recvbufElements = 0;
4371 recvbufElements = displsTotalSize;
4373 if(recvtype->isModifiedBufferRequired() ) {
4374 recvtype->createModifiedTypeBuffer(recvbufMod, recvbufElements);
4376 recvbufMod =
reinterpret_cast<typename RECVTYPE::ModifiedType*
>(
const_cast<typename RECVTYPE::Type*
>(recvbuf));
4380 if(recvtype->getADTool().isHandleRequired()) {
4383 recvtype->getADTool().startAssembly(h);
4384 if(sendtype->isModifiedBufferRequired()) {
4386 sendtype->copyIntoModifiedBuffer(sendbuf, 0, sendbufMod, 0, sendcount);
4390 recvtype->copyIntoModifiedBuffer(recvbuf, displs[rank], recvbufMod, displsMod[rank], recvcounts[rank]);
4400 h->
sendbufCount = sendtype->computeActiveElements(sendcount);
4403 comm)]) - recvtype->computeActiveElements(displs[
getCommRank(comm)]);
4414 if(recvtype->getADTool().isOldPrimalsRequired()) {
4417 recvtype->getValues(recvbuf, displs[i], h->
recvbufOldPrimals, displsMod[i], recvcounts[i]);
4423 sendtype->getIndices(sendbuf, 0, h->
sendbufIndices, 0, sendcount);
4427 recvtype->getIndices(recvbuf, displs[rank], h->
sendbufIndices, 0, recvcounts[rank]);
4432 recvtype->createIndices(recvbuf, displs[i], h->
recvbufIndices, displsMod[i], recvcounts[i]);
4436 h->
funcReverse = AMPI_Allgatherv_b<SENDTYPE, RECVTYPE>;
4437 h->
funcForward = AMPI_Allgatherv_d<SENDTYPE, RECVTYPE>;
4438 h->
funcPrimal = AMPI_Allgatherv_p<SENDTYPE, RECVTYPE>;
4447 if(!recvtype->isModifiedBufferRequired()) {
4449 recvtype->clearIndices(recvbuf, displs[i], recvcounts[i]);
4453 rStatus = MPI_Allgatherv(sendbufMod, sendcount, sendtype->getModifiedMpiType(), recvbufMod, recvcounts, displsMod,
4454 recvtype->getModifiedMpiType(), comm);
4455 recvtype->getADTool().addToolAction(h);
4457 if(recvtype->isModifiedBufferRequired()) {
4459 recvtype->copyFromModifiedBuffer(recvbuf, displs[i], recvbufMod, displsMod[i], recvcounts[i]);
4470 recvtype->getADTool().stopAssembly(h);
4471 if(recvtype->isModifiedBufferRequired()) {
4472 delete [] displsMod;
4475 if(sendtype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == sendbuf)) {
4476 sendtype->deleteModifiedTypeBuffer(sendbufMod);
4478 if(recvtype->isModifiedBufferRequired() ) {
4479 recvtype->deleteModifiedTypeBuffer(recvbufMod);
4489#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
4490 template<
typename DATATYPE>
4535 template<
typename DATATYPE>
4555 if(h->
datatype->getADTool().isOldPrimalsRequired()) {
4563 template<
typename DATATYPE>
4588 template<
typename DATATYPE>
4601 if(h->
datatype->getADTool().isOldPrimalsRequired()) {
4622 template<
typename DATATYPE>
4626 AMPI_Op convOp = datatype->getADTool().convertOperator(op);
4629 if(!datatype->getADTool().isActiveType()) {
4631 rStatus = MPI_Allreduce(sendbuf, recvbuf, count, datatype->getMpiType(), convOp.
primalFunction, comm);
4636 typename DATATYPE::ModifiedType* sendbufMod =
nullptr;
4637 int sendbufElements = 0;
4641 sendbufElements = count;
4643 sendbufElements = count;
4646 if(datatype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == sendbuf)) {
4647 datatype->createModifiedTypeBuffer(sendbufMod, sendbufElements);
4649 sendbufMod =
reinterpret_cast<typename DATATYPE::ModifiedType*
>(
const_cast<typename DATATYPE::Type*
>(sendbuf));
4651 typename DATATYPE::ModifiedType* recvbufMod =
nullptr;
4652 int recvbufElements = 0;
4655 recvbufElements = count;
4657 if(datatype->isModifiedBufferRequired() ) {
4658 datatype->createModifiedTypeBuffer(recvbufMod, recvbufElements);
4660 recvbufMod =
reinterpret_cast<typename DATATYPE::ModifiedType*
>(
const_cast<typename DATATYPE::Type*
>(recvbuf));
4664 if(datatype->getADTool().isHandleRequired()) {
4667 datatype->getADTool().startAssembly(h);
4668 if(datatype->isModifiedBufferRequired()) {
4670 datatype->copyIntoModifiedBuffer(sendbuf, 0, sendbufMod, 0, count);
4672 datatype->copyIntoModifiedBuffer(recvbuf, 0, recvbufMod, 0, count);
4681 h->
sendbufCount = datatype->computeActiveElements(count);
4683 h->
sendbufCount = datatype->computeActiveElements(count);
4687 h->
recvbufCount = datatype->computeActiveElements(count);
4703 if(datatype->getADTool().isOldPrimalsRequired()) {
4715 datatype->createIndices(recvbuf, 0, h->
recvbufIndices, 0, count);
4718 h->
funcReverse = AMPI_Allreduce_global_b<DATATYPE>;
4719 h->
funcForward = AMPI_Allreduce_global_d<DATATYPE>;
4720 h->
funcPrimal = AMPI_Allreduce_global_p<DATATYPE>;
4727 if(!datatype->isModifiedBufferRequired()) {
4728 datatype->clearIndices(recvbuf, 0, count);
4731 rStatus = MPI_Allreduce(sendbufMod, recvbufMod, count, datatype->getModifiedMpiType(), convOp.
modifiedPrimalFunction,
4733 datatype->getADTool().addToolAction(h);
4735 if(datatype->isModifiedBufferRequired()) {
4736 datatype->copyFromModifiedBuffer(recvbuf, 0, recvbufMod, 0, count);
4749 datatype->getADTool().stopAssembly(h);
4751 if(datatype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == sendbuf)) {
4752 datatype->deleteModifiedTypeBuffer(sendbufMod);
4754 if(datatype->isModifiedBufferRequired() ) {
4755 datatype->deleteModifiedTypeBuffer(recvbufMod);
4765#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
4766 template<
typename SENDTYPE,
typename RECVTYPE>
4812 template<
typename SENDTYPE,
typename RECVTYPE>
4831 if(h->
recvtype->getADTool().isOldPrimalsRequired()) {
4839 template<
typename SENDTYPE,
typename RECVTYPE>
4863 template<
typename SENDTYPE,
typename RECVTYPE>
4874 if(h->
recvtype->getADTool().isOldPrimalsRequired()) {
4890 template<
typename SENDTYPE,
typename RECVTYPE>
4892 typename RECVTYPE::Type* recvbuf,
int recvcount, RECVTYPE* recvtype,
AMPI_Comm comm) {
4895 if(!recvtype->getADTool().isActiveType()) {
4897 rStatus = MPI_Alltoall(sendbuf, sendcount, sendtype->getMpiType(), recvbuf, recvcount, recvtype->getMpiType(), comm);
4902 typename SENDTYPE::ModifiedType* sendbufMod =
nullptr;
4903 int sendbufElements = 0;
4912 if(sendtype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == sendbuf)) {
4913 sendtype->createModifiedTypeBuffer(sendbufMod, sendbufElements);
4915 sendbufMod =
reinterpret_cast<typename SENDTYPE::ModifiedType*
>(
const_cast<typename SENDTYPE::Type*
>(sendbuf));
4917 typename RECVTYPE::ModifiedType* recvbufMod =
nullptr;
4918 int recvbufElements = 0;
4923 if(recvtype->isModifiedBufferRequired() ) {
4924 recvtype->createModifiedTypeBuffer(recvbufMod, recvbufElements);
4926 recvbufMod =
reinterpret_cast<typename RECVTYPE::ModifiedType*
>(
const_cast<typename RECVTYPE::Type*
>(recvbuf));
4930 if(recvtype->getADTool().isHandleRequired()) {
4933 recvtype->getADTool().startAssembly(h);
4934 if(sendtype->isModifiedBufferRequired()) {
4936 sendtype->copyIntoModifiedBuffer(sendbuf, 0, sendbufMod, 0, sendcount *
getCommSize(comm));
4938 recvtype->copyIntoModifiedBuffer(recvbuf, 0, recvbufMod, 0, recvcount *
getCommSize(comm));
4947 h->
sendbufCount = sendtype->computeActiveElements(sendcount);
4949 h->
sendbufCount = recvtype->computeActiveElements(recvcount);
4953 h->
recvbufCount = recvtype->computeActiveElements(recvcount);
4960 if(recvtype->getADTool().isOldPrimalsRequired()) {
4975 h->
funcReverse = AMPI_Alltoall_b<SENDTYPE, RECVTYPE>;
4976 h->
funcForward = AMPI_Alltoall_d<SENDTYPE, RECVTYPE>;
4977 h->
funcPrimal = AMPI_Alltoall_p<SENDTYPE, RECVTYPE>;
4985 if(!recvtype->isModifiedBufferRequired()) {
4986 recvtype->clearIndices(recvbuf, 0, recvcount *
getCommSize(comm));
4989 rStatus = MPI_Alltoall(sendbufMod, sendcount, sendtype->getModifiedMpiType(), recvbufMod, recvcount,
4990 recvtype->getModifiedMpiType(), comm);
4991 recvtype->getADTool().addToolAction(h);
4993 if(recvtype->isModifiedBufferRequired()) {
4994 recvtype->copyFromModifiedBuffer(recvbuf, 0, recvbufMod, 0, recvcount *
getCommSize(comm));
5002 recvtype->getADTool().stopAssembly(h);
5004 if(sendtype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == sendbuf)) {
5005 sendtype->deleteModifiedTypeBuffer(sendbufMod);
5007 if(recvtype->isModifiedBufferRequired() ) {
5008 recvtype->deleteModifiedTypeBuffer(recvbufMod);
5018#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
5019 template<
typename SENDTYPE,
typename RECVTYPE>
5077 template<
typename SENDTYPE,
typename RECVTYPE>
5101 if(h->
recvtype->getADTool().isOldPrimalsRequired()) {
5111 template<
typename SENDTYPE,
typename RECVTYPE>
5142 template<
typename SENDTYPE,
typename RECVTYPE>
5154 if(h->
recvtype->getADTool().isOldPrimalsRequired()) {
5176 template<
typename SENDTYPE,
typename RECVTYPE>
5182 if(!recvtype->getADTool().isActiveType()) {
5184 rStatus = MPI_Alltoallv(sendbuf, sendcounts, sdispls, sendtype->getMpiType(), recvbuf, recvcounts, rdispls,
5185 recvtype->getMpiType(), comm);
5191 int sdisplsTotalSize = 0;
5192 if(
nullptr != sdispls) {
5194 if(recvtype->isModifiedBufferRequired()) {
5199 int rdisplsTotalSize = 0;
5200 if(
nullptr != rdispls) {
5202 if(recvtype->isModifiedBufferRequired()) {
5206 typename SENDTYPE::ModifiedType* sendbufMod =
nullptr;
5207 int sendbufElements = 0;
5211 sendbufElements = sdisplsTotalSize;
5213 sendbufElements = rdisplsTotalSize;
5216 if(sendtype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == sendbuf)) {
5217 sendtype->createModifiedTypeBuffer(sendbufMod, sendbufElements);
5219 sendbufMod =
reinterpret_cast<typename SENDTYPE::ModifiedType*
>(
const_cast<typename SENDTYPE::Type*
>(sendbuf));
5221 typename RECVTYPE::ModifiedType* recvbufMod =
nullptr;
5222 int recvbufElements = 0;
5225 recvbufElements = rdisplsTotalSize;
5227 if(recvtype->isModifiedBufferRequired() ) {
5228 recvtype->createModifiedTypeBuffer(recvbufMod, recvbufElements);
5230 recvbufMod =
reinterpret_cast<typename RECVTYPE::ModifiedType*
>(
const_cast<typename RECVTYPE::Type*
>(recvbuf));
5234 if(recvtype->getADTool().isHandleRequired()) {
5237 recvtype->getADTool().startAssembly(h);
5238 if(sendtype->isModifiedBufferRequired()) {
5241 sendtype->copyIntoModifiedBuffer(sendbuf, sdispls[i], sendbufMod, sdisplsMod[i], sendcounts[i]);
5245 recvtype->copyIntoModifiedBuffer(recvbuf, rdispls[i], recvbufMod, rdisplsMod[i], recvcounts[i]);
5268 if(recvtype->getADTool().isOldPrimalsRequired()) {
5271 recvtype->getValues(recvbuf, rdispls[i], h->
recvbufOldPrimals, rdisplsMod[i], recvcounts[i]);
5278 sendtype->getIndices(sendbuf, sdispls[i], h->
sendbufIndices, sdisplsMod[i], sendcounts[i]);
5282 recvtype->getIndices(recvbuf, rdispls[i], h->
sendbufIndices, rdisplsMod[i], recvcounts[i]);
5287 recvtype->createIndices(recvbuf, rdispls[i], h->
recvbufIndices, rdisplsMod[i], recvcounts[i]);
5291 h->
funcReverse = AMPI_Alltoallv_b<SENDTYPE, RECVTYPE>;
5292 h->
funcForward = AMPI_Alltoallv_d<SENDTYPE, RECVTYPE>;
5293 h->
funcPrimal = AMPI_Alltoallv_p<SENDTYPE, RECVTYPE>;
5303 if(!recvtype->isModifiedBufferRequired()) {
5305 recvtype->clearIndices(recvbuf, rdispls[i], recvcounts[i]);
5309 rStatus = MPI_Alltoallv(sendbufMod, sendcounts, sdisplsMod, sendtype->getModifiedMpiType(), recvbufMod, recvcounts,
5310 rdisplsMod, recvtype->getModifiedMpiType(), comm);
5311 recvtype->getADTool().addToolAction(h);
5313 if(recvtype->isModifiedBufferRequired()) {
5315 recvtype->copyFromModifiedBuffer(recvbuf, rdispls[i], recvbufMod, rdisplsMod[i], recvcounts[i]);
5326 recvtype->getADTool().stopAssembly(h);
5327 if(recvtype->isModifiedBufferRequired()) {
5328 delete [] sdisplsMod;
5330 if(recvtype->isModifiedBufferRequired()) {
5331 delete [] rdisplsMod;
5334 if(sendtype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == sendbuf)) {
5335 sendtype->deleteModifiedTypeBuffer(sendbufMod);
5337 if(recvtype->isModifiedBufferRequired() ) {
5338 recvtype->deleteModifiedTypeBuffer(recvbufMod);
5348#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
5349 template<
typename DATATYPE>
5394 template<
typename DATATYPE>
5416 if(h->
datatype->getADTool().isOldPrimalsRequired()) {
5424 template<
typename DATATYPE>
5451 template<
typename DATATYPE>
5461 if(h->
datatype->getADTool().isOldPrimalsRequired()) {
5482 template<
typename DATATYPE>
5483 int AMPI_Bcast_wrap(
typename DATATYPE::Type* bufferSend,
typename DATATYPE::Type* bufferRecv,
int count,
5484 DATATYPE* datatype,
int root,
AMPI_Comm comm) {
5487 if(!datatype->getADTool().isActiveType()) {
5489 rStatus =
MPI_Bcast_wrap(bufferSend, bufferRecv, count, datatype->getMpiType(), root, comm);
5494 typename DATATYPE::ModifiedType* bufferSendMod =
nullptr;
5495 int bufferSendElements = 0;
5500 bufferSendElements = count;
5502 bufferSendElements = count;
5505 if(datatype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == bufferSend)) {
5506 datatype->createModifiedTypeBuffer(bufferSendMod, bufferSendElements);
5508 bufferSendMod =
reinterpret_cast<typename DATATYPE::ModifiedType*
>(
const_cast<typename DATATYPE::Type*
>(bufferSend));
5511 typename DATATYPE::ModifiedType* bufferRecvMod =
nullptr;
5512 int bufferRecvElements = 0;
5515 bufferRecvElements = count;
5517 if(datatype->isModifiedBufferRequired() ) {
5518 datatype->createModifiedTypeBuffer(bufferRecvMod, bufferRecvElements);
5520 bufferRecvMod =
reinterpret_cast<typename DATATYPE::ModifiedType*
>(
const_cast<typename DATATYPE::Type*
>(bufferRecv));
5524 if(datatype->getADTool().isHandleRequired()) {
5527 datatype->getADTool().startAssembly(h);
5529 if(datatype->isModifiedBufferRequired()) {
5531 datatype->copyIntoModifiedBuffer(bufferSend, 0, bufferSendMod, 0, count);
5533 datatype->copyIntoModifiedBuffer(bufferRecv, 0, bufferRecvMod, 0, count);
5558 if(datatype->getADTool().isOldPrimalsRequired()) {
5584 if(!datatype->isModifiedBufferRequired()) {
5585 datatype->clearIndices(bufferRecv, 0, count);
5588 rStatus =
MPI_Bcast_wrap(bufferSendMod, bufferRecvMod, count, datatype->getModifiedMpiType(), root, comm);
5589 datatype->getADTool().addToolAction(h);
5591 if(datatype->isModifiedBufferRequired()) {
5592 datatype->copyFromModifiedBuffer(bufferRecv, 0, bufferRecvMod, 0, count);
5600 datatype->getADTool().stopAssembly(h);
5603 if(datatype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == bufferSend)) {
5604 datatype->deleteModifiedTypeBuffer(bufferSendMod);
5607 if(datatype->isModifiedBufferRequired() ) {
5608 datatype->deleteModifiedTypeBuffer(bufferRecvMod);
5618#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
5619 template<
typename SENDTYPE,
typename RECVTYPE>
5666 template<
typename SENDTYPE,
typename RECVTYPE>
5686 if(h->
recvtype->getADTool().isOldPrimalsRequired()) {
5698 template<
typename SENDTYPE,
typename RECVTYPE>
5725 template<
typename SENDTYPE,
typename RECVTYPE>
5737 if(h->
recvtype->getADTool().isOldPrimalsRequired()) {
5757 template<
typename SENDTYPE,
typename RECVTYPE>
5759 typename RECVTYPE::Type* recvbuf,
int recvcount, RECVTYPE* recvtype,
int root,
AMPI_Comm comm) {
5762 if(!recvtype->getADTool().isActiveType()) {
5764 rStatus = MPI_Gather(sendbuf, sendcount, sendtype->getMpiType(), recvbuf, recvcount, recvtype->getMpiType(), root,
5770 typename SENDTYPE::ModifiedType* sendbufMod =
nullptr;
5771 int sendbufElements = 0;
5775 sendbufElements = sendcount;
5777 sendbufElements = recvcount;
5780 if(sendtype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == sendbuf)) {
5781 sendtype->createModifiedTypeBuffer(sendbufMod, sendbufElements);
5783 sendbufMod =
reinterpret_cast<typename SENDTYPE::ModifiedType*
>(
const_cast<typename SENDTYPE::Type*
>(sendbuf));
5785 typename RECVTYPE::ModifiedType* recvbufMod =
nullptr;
5786 int recvbufElements = 0;
5792 if(recvtype->isModifiedBufferRequired() ) {
5793 recvtype->createModifiedTypeBuffer(recvbufMod, recvbufElements);
5795 recvbufMod =
reinterpret_cast<typename RECVTYPE::ModifiedType*
>(
const_cast<typename RECVTYPE::Type*
>(recvbuf));
5800 if(recvtype->getADTool().isHandleRequired()) {
5803 recvtype->getADTool().startAssembly(h);
5804 if(sendtype->isModifiedBufferRequired()) {
5806 sendtype->copyIntoModifiedBuffer(sendbuf, 0, sendbufMod, 0, sendcount);
5808 recvtype->copyIntoModifiedBuffer(recvbuf, recvcount *
getCommRank(comm), recvbufMod, recvcount *
getCommRank(comm),
5818 h->
sendbufCount = sendtype->computeActiveElements(sendcount);
5820 h->
sendbufCount = recvtype->computeActiveElements(recvcount);
5825 h->
recvbufCount = recvtype->computeActiveElements(recvcount);
5833 if(recvtype->getADTool().isOldPrimalsRequired()) {
5844 sendtype->getIndices(sendbuf, 0, h->
sendbufIndices, 0, sendcount);
5854 h->
funcReverse = AMPI_Gather_b<SENDTYPE, RECVTYPE>;
5855 h->
funcForward = AMPI_Gather_d<SENDTYPE, RECVTYPE>;
5856 h->
funcPrimal = AMPI_Gather_p<SENDTYPE, RECVTYPE>;
5866 if(!recvtype->isModifiedBufferRequired()) {
5867 recvtype->clearIndices(recvbuf, 0, recvcount *
getCommSize(comm));
5871 rStatus = MPI_Gather(sendbufMod, sendcount, sendtype->getModifiedMpiType(), recvbufMod, recvcount,
5872 recvtype->getModifiedMpiType(), root, comm);
5873 recvtype->getADTool().addToolAction(h);
5876 if(recvtype->isModifiedBufferRequired()) {
5877 recvtype->copyFromModifiedBuffer(recvbuf, 0, recvbufMod, 0, recvcount *
getCommSize(comm));
5888 recvtype->getADTool().stopAssembly(h);
5890 if(sendtype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == sendbuf)) {
5891 sendtype->deleteModifiedTypeBuffer(sendbufMod);
5894 if(recvtype->isModifiedBufferRequired() ) {
5895 recvtype->deleteModifiedTypeBuffer(recvbufMod);
5906#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
5907 template<
typename SENDTYPE,
typename RECVTYPE>
5960 template<
typename SENDTYPE,
typename RECVTYPE>
5982 if(h->
recvtype->getADTool().isOldPrimalsRequired()) {
5996 template<
typename SENDTYPE,
typename RECVTYPE>
6027 template<
typename SENDTYPE,
typename RECVTYPE>
6041 if(h->
recvtype->getADTool().isOldPrimalsRequired()) {
6063 template<
typename SENDTYPE,
typename RECVTYPE>
6065 typename RECVTYPE::Type* recvbuf,
const int* recvcounts,
const int* displs, RECVTYPE* recvtype,
int root,
6069 if(!recvtype->getADTool().isActiveType()) {
6071 rStatus = MPI_Gatherv(sendbuf, sendcount, sendtype->getMpiType(), recvbuf, recvcounts, displs, recvtype->getMpiType(),
6078 int displsTotalSize = 0;
6079 if(
nullptr != displs) {
6081 if(recvtype->isModifiedBufferRequired()) {
6085 typename SENDTYPE::ModifiedType* sendbufMod =
nullptr;
6086 int sendbufElements = 0;
6090 sendbufElements = sendcount;
6095 if(sendtype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == sendbuf)) {
6096 sendtype->createModifiedTypeBuffer(sendbufMod, sendbufElements);
6098 sendbufMod =
reinterpret_cast<typename SENDTYPE::ModifiedType*
>(
const_cast<typename SENDTYPE::Type*
>(sendbuf));
6100 typename RECVTYPE::ModifiedType* recvbufMod =
nullptr;
6101 int recvbufElements = 0;
6105 recvbufElements = displsTotalSize;
6107 if(recvtype->isModifiedBufferRequired() ) {
6108 recvtype->createModifiedTypeBuffer(recvbufMod, recvbufElements);
6110 recvbufMod =
reinterpret_cast<typename RECVTYPE::ModifiedType*
>(
const_cast<typename RECVTYPE::Type*
>(recvbuf));
6115 if(recvtype->getADTool().isHandleRequired()) {
6118 recvtype->getADTool().startAssembly(h);
6119 if(sendtype->isModifiedBufferRequired()) {
6121 sendtype->copyIntoModifiedBuffer(sendbuf, 0, sendbufMod, 0, sendcount);
6125 recvtype->copyIntoModifiedBuffer(recvbuf, displs[rank], recvbufMod, displsMod[rank], recvcounts[rank]);
6135 h->
sendbufCount = sendtype->computeActiveElements(sendcount);
6138 comm)]) - recvtype->computeActiveElements(displs[
getCommRank(comm)]);
6151 if(recvtype->getADTool().isOldPrimalsRequired()) {
6156 recvtype->getValues(recvbuf, displs[i], h->
recvbufOldPrimals, displsMod[i], recvcounts[i]);
6164 sendtype->getIndices(sendbuf, 0, h->
sendbufIndices, 0, sendcount);
6168 recvtype->getIndices(recvbuf, displs[rank], h->
sendbufIndices, 0, recvcounts[rank]);
6174 recvtype->createIndices(recvbuf, displs[i], h->
recvbufIndices, displsMod[i], recvcounts[i]);
6179 h->
funcReverse = AMPI_Gatherv_b<SENDTYPE, RECVTYPE>;
6180 h->
funcForward = AMPI_Gatherv_d<SENDTYPE, RECVTYPE>;
6181 h->
funcPrimal = AMPI_Gatherv_p<SENDTYPE, RECVTYPE>;
6192 if(!recvtype->isModifiedBufferRequired()) {
6194 recvtype->clearIndices(recvbuf, displs[i], recvcounts[i]);
6199 rStatus = MPI_Gatherv(sendbufMod, sendcount, sendtype->getModifiedMpiType(), recvbufMod, recvcounts, displsMod,
6200 recvtype->getModifiedMpiType(), root, comm);
6201 recvtype->getADTool().addToolAction(h);
6204 if(recvtype->isModifiedBufferRequired()) {
6206 recvtype->copyFromModifiedBuffer(recvbuf, displs[i], recvbufMod, displsMod[i], recvcounts[i]);
6220 recvtype->getADTool().stopAssembly(h);
6221 if(recvtype->isModifiedBufferRequired()) {
6222 delete [] displsMod;
6225 if(sendtype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == sendbuf)) {
6226 sendtype->deleteModifiedTypeBuffer(sendbufMod);
6229 if(recvtype->isModifiedBufferRequired() ) {
6230 recvtype->deleteModifiedTypeBuffer(recvbufMod);
6241#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
6242 template<
typename SENDTYPE,
typename RECVTYPE>
6287 template<
typename SENDTYPE,
typename RECVTYPE>
6301 template<
typename SENDTYPE,
typename RECVTYPE>
6321 template<
typename SENDTYPE,
typename RECVTYPE>
6329 if(h->
recvtype->getADTool().isOldPrimalsRequired()) {
6337 template<
typename SENDTYPE,
typename RECVTYPE>
6357 template<
typename SENDTYPE,
typename RECVTYPE>
6370 template<
typename SENDTYPE,
typename RECVTYPE>
6381 if(h->
recvtype->getADTool().isOldPrimalsRequired()) {
6393 template<
typename SENDTYPE,
typename RECVTYPE>
6407 template<
typename SENDTYPE,
typename RECVTYPE>
6409 template<
typename SENDTYPE,
typename RECVTYPE>
6411 typename RECVTYPE::Type* recvbuf,
int recvcount, RECVTYPE* recvtype,
AMPI_Comm comm,
AMPI_Request* request) {
6414 if(!recvtype->getADTool().isActiveType()) {
6416 rStatus = MPI_Iallgather(sendbuf, sendcount, sendtype->getMpiType(), recvbuf, recvcount, recvtype->getMpiType(), comm,
6422 typename SENDTYPE::ModifiedType* sendbufMod =
nullptr;
6423 int sendbufElements = 0;
6427 sendbufElements = sendcount;
6429 sendbufElements = recvcount;
6432 if(sendtype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == sendbuf)) {
6433 sendtype->createModifiedTypeBuffer(sendbufMod, sendbufElements);
6435 sendbufMod =
reinterpret_cast<typename SENDTYPE::ModifiedType*
>(
const_cast<typename SENDTYPE::Type*
>(sendbuf));
6437 typename RECVTYPE::ModifiedType* recvbufMod =
nullptr;
6438 int recvbufElements = 0;
6443 if(recvtype->isModifiedBufferRequired() ) {
6444 recvtype->createModifiedTypeBuffer(recvbufMod, recvbufElements);
6446 recvbufMod =
reinterpret_cast<typename RECVTYPE::ModifiedType*
>(
const_cast<typename RECVTYPE::Type*
>(recvbuf));
6450 if(recvtype->getADTool().isHandleRequired()) {
6453 recvtype->getADTool().startAssembly(h);
6454 if(sendtype->isModifiedBufferRequired()) {
6456 sendtype->copyIntoModifiedBuffer(sendbuf, 0, sendbufMod, 0, sendcount);
6458 recvtype->copyIntoModifiedBuffer(recvbuf, recvcount *
getCommRank(comm), recvbufMod, recvcount *
getCommRank(comm),
6468 h->
sendbufCount = sendtype->computeActiveElements(sendcount);
6470 h->
sendbufCount = recvtype->computeActiveElements(recvcount);
6474 h->
recvbufCount = recvtype->computeActiveElements(recvcount);
6481 if(recvtype->getADTool().isOldPrimalsRequired()) {
6488 sendtype->getIndices(sendbuf, 0, h->
sendbufIndices, 0, sendcount);
6496 h->
funcReverse = AMPI_Iallgather_b<SENDTYPE, RECVTYPE>;
6497 h->
funcForward = AMPI_Iallgather_d_finish<SENDTYPE, RECVTYPE>;
6498 h->
funcPrimal = AMPI_Iallgather_p_finish<SENDTYPE, RECVTYPE>;
6506 if(!recvtype->isModifiedBufferRequired()) {
6507 recvtype->clearIndices(recvbuf, 0, recvcount *
getCommSize(comm));
6510 rStatus = MPI_Iallgather(sendbufMod, sendcount, sendtype->getModifiedMpiType(), recvbufMod, recvcount,
6511 recvtype->getModifiedMpiType(), comm, &request->
request);
6514 asyncHandle->
sendbuf = sendbuf;
6518 asyncHandle->
recvbuf = recvbuf;
6522 asyncHandle->
comm = comm;
6524 request->
handle = asyncHandle;
6531 recvtype->getADTool().addToolAction(waitH);
6538 template<
typename SENDTYPE,
typename RECVTYPE>
6545 typename SENDTYPE::ModifiedType* sendbufMod = asyncHandle->
sendbufMod;
6547 SENDTYPE* sendtype = asyncHandle->
sendtype;
6548 typename RECVTYPE::Type* recvbuf = asyncHandle->
recvbuf;
6549 typename RECVTYPE::ModifiedType* recvbufMod = asyncHandle->
recvbufMod;
6551 RECVTYPE* recvtype = asyncHandle->
recvtype;
6570 if(recvtype->getADTool().isActiveType()) {
6572 recvtype->getADTool().addToolAction(h);
6574 if(recvtype->isModifiedBufferRequired()) {
6575 recvtype->copyFromModifiedBuffer(recvbuf, 0, recvbufMod, 0, recvcount *
getCommSize(comm));
6583 recvtype->getADTool().stopAssembly(h);
6585 if(sendtype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == sendbuf)) {
6586 sendtype->deleteModifiedTypeBuffer(sendbufMod);
6588 if(recvtype->isModifiedBufferRequired() ) {
6589 recvtype->deleteModifiedTypeBuffer(recvbufMod);
6599#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
6600 template<
typename SENDTYPE,
typename RECVTYPE>
6651 template<
typename SENDTYPE,
typename RECVTYPE>
6667 template<
typename SENDTYPE,
typename RECVTYPE>
6689 template<
typename SENDTYPE,
typename RECVTYPE>
6697 if(h->
recvtype->getADTool().isOldPrimalsRequired()) {
6707 template<
typename SENDTYPE,
typename RECVTYPE>
6729 template<
typename SENDTYPE,
typename RECVTYPE>
6744 template<
typename SENDTYPE,
typename RECVTYPE>
6756 if(h->
recvtype->getADTool().isOldPrimalsRequired()) {
6769 template<
typename SENDTYPE,
typename RECVTYPE>
6785 template<
typename SENDTYPE,
typename RECVTYPE>
6787 template<
typename SENDTYPE,
typename RECVTYPE>
6789 typename RECVTYPE::Type* recvbuf,
const int* recvcounts,
const int* displs, RECVTYPE* recvtype,
AMPI_Comm comm,
6793 if(!recvtype->getADTool().isActiveType()) {
6795 rStatus = MPI_Iallgatherv(sendbuf, sendcount, sendtype->getMpiType(), recvbuf, recvcounts, displs,
6796 recvtype->getMpiType(), comm, &request->
request);
6802 int displsTotalSize = 0;
6803 if(
nullptr != displs) {
6805 if(recvtype->isModifiedBufferRequired()) {
6809 typename SENDTYPE::ModifiedType* sendbufMod =
nullptr;
6810 int sendbufElements = 0;
6814 sendbufElements = sendcount;
6819 if(sendtype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == sendbuf)) {
6820 sendtype->createModifiedTypeBuffer(sendbufMod, sendbufElements);
6822 sendbufMod =
reinterpret_cast<typename SENDTYPE::ModifiedType*
>(
const_cast<typename SENDTYPE::Type*
>(sendbuf));
6824 typename RECVTYPE::ModifiedType* recvbufMod =
nullptr;
6825 int recvbufElements = 0;
6828 recvbufElements = displsTotalSize;
6830 if(recvtype->isModifiedBufferRequired() ) {
6831 recvtype->createModifiedTypeBuffer(recvbufMod, recvbufElements);
6833 recvbufMod =
reinterpret_cast<typename RECVTYPE::ModifiedType*
>(
const_cast<typename RECVTYPE::Type*
>(recvbuf));
6837 if(recvtype->getADTool().isHandleRequired()) {
6840 recvtype->getADTool().startAssembly(h);
6841 if(sendtype->isModifiedBufferRequired()) {
6843 sendtype->copyIntoModifiedBuffer(sendbuf, 0, sendbufMod, 0, sendcount);
6847 recvtype->copyIntoModifiedBuffer(recvbuf, displs[rank], recvbufMod, displsMod[rank], recvcounts[rank]);
6857 h->
sendbufCount = sendtype->computeActiveElements(sendcount);
6860 comm)]) - recvtype->computeActiveElements(displs[
getCommRank(comm)]);
6871 if(recvtype->getADTool().isOldPrimalsRequired()) {
6874 recvtype->getValues(recvbuf, displs[i], h->
recvbufOldPrimals, displsMod[i], recvcounts[i]);
6880 sendtype->getIndices(sendbuf, 0, h->
sendbufIndices, 0, sendcount);
6884 recvtype->getIndices(recvbuf, displs[rank], h->
sendbufIndices, 0, recvcounts[rank]);
6889 recvtype->createIndices(recvbuf, displs[i], h->
recvbufIndices, displsMod[i], recvcounts[i]);
6893 h->
funcReverse = AMPI_Iallgatherv_b<SENDTYPE, RECVTYPE>;
6894 h->
funcForward = AMPI_Iallgatherv_d_finish<SENDTYPE, RECVTYPE>;
6895 h->
funcPrimal = AMPI_Iallgatherv_p_finish<SENDTYPE, RECVTYPE>;
6904 if(!recvtype->isModifiedBufferRequired()) {
6906 recvtype->clearIndices(recvbuf, displs[i], recvcounts[i]);
6910 rStatus = MPI_Iallgatherv(sendbufMod, sendcount, sendtype->getModifiedMpiType(), recvbufMod, recvcounts, displsMod,
6911 recvtype->getModifiedMpiType(), comm, &request->
request);
6914 asyncHandle->
sendbuf = sendbuf;
6918 asyncHandle->
recvbuf = recvbuf;
6922 asyncHandle->
displs = displs;
6924 asyncHandle->
comm = comm;
6926 request->
handle = asyncHandle;
6933 recvtype->getADTool().addToolAction(waitH);
6940 template<
typename SENDTYPE,
typename RECVTYPE>
6947 typename SENDTYPE::ModifiedType* sendbufMod = asyncHandle->
sendbufMod;
6949 SENDTYPE* sendtype = asyncHandle->
sendtype;
6950 typename RECVTYPE::Type* recvbuf = asyncHandle->
recvbuf;
6951 typename RECVTYPE::ModifiedType* recvbufMod = asyncHandle->
recvbufMod;
6952 const int* displsMod = asyncHandle->
displsMod;
6953 const int* recvcounts = asyncHandle->
recvcounts;
6954 const int* displs = asyncHandle->
displs;
6955 RECVTYPE* recvtype = asyncHandle->
recvtype;
6976 if(recvtype->getADTool().isActiveType()) {
6978 recvtype->getADTool().addToolAction(h);
6980 if(recvtype->isModifiedBufferRequired()) {
6982 recvtype->copyFromModifiedBuffer(recvbuf, displs[i], recvbufMod, displsMod[i], recvcounts[i]);
6993 recvtype->getADTool().stopAssembly(h);
6994 if(recvtype->isModifiedBufferRequired()) {
6995 delete [] displsMod;
6998 if(sendtype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == sendbuf)) {
6999 sendtype->deleteModifiedTypeBuffer(sendbufMod);
7001 if(recvtype->isModifiedBufferRequired() ) {
7002 recvtype->deleteModifiedTypeBuffer(recvbufMod);
7012#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
7013 template<
typename DATATYPE>
7057 template<
typename DATATYPE>
7070 template<
typename DATATYPE>
7092 template<
typename DATATYPE>
7102 if(h->
datatype->getADTool().isOldPrimalsRequired()) {
7110 template<
typename DATATYPE>
7132 template<
typename DATATYPE>
7147 template<
typename DATATYPE>
7161 if(h->
datatype->getADTool().isOldPrimalsRequired()) {
7173 template<
typename DATATYPE>
7193 template<
typename DATATYPE>
7195 template<
typename DATATYPE>
7199 AMPI_Op convOp = datatype->getADTool().convertOperator(op);
7202 if(!datatype->getADTool().isActiveType()) {
7204 rStatus = MPI_Iallreduce(sendbuf, recvbuf, count, datatype->getMpiType(), convOp.
primalFunction, comm,
7210 typename DATATYPE::ModifiedType* sendbufMod =
nullptr;
7211 int sendbufElements = 0;
7215 sendbufElements = count;
7217 sendbufElements = count;
7220 if(datatype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == sendbuf)) {
7221 datatype->createModifiedTypeBuffer(sendbufMod, sendbufElements);
7223 sendbufMod =
reinterpret_cast<typename DATATYPE::ModifiedType*
>(
const_cast<typename DATATYPE::Type*
>(sendbuf));
7225 typename DATATYPE::ModifiedType* recvbufMod =
nullptr;
7226 int recvbufElements = 0;
7229 recvbufElements = count;
7231 if(datatype->isModifiedBufferRequired() ) {
7232 datatype->createModifiedTypeBuffer(recvbufMod, recvbufElements);
7234 recvbufMod =
reinterpret_cast<typename DATATYPE::ModifiedType*
>(
const_cast<typename DATATYPE::Type*
>(recvbuf));
7238 if(datatype->getADTool().isHandleRequired()) {
7241 datatype->getADTool().startAssembly(h);
7242 if(datatype->isModifiedBufferRequired()) {
7244 datatype->copyIntoModifiedBuffer(sendbuf, 0, sendbufMod, 0, count);
7246 datatype->copyIntoModifiedBuffer(recvbuf, 0, recvbufMod, 0, count);
7255 h->
sendbufCount = datatype->computeActiveElements(count);
7257 h->
sendbufCount = datatype->computeActiveElements(count);
7261 h->
recvbufCount = datatype->computeActiveElements(count);
7277 if(datatype->getADTool().isOldPrimalsRequired()) {
7289 datatype->createIndices(recvbuf, 0, h->
recvbufIndices, 0, count);
7292 h->
funcReverse = AMPI_Iallreduce_global_b<DATATYPE>;
7293 h->
funcForward = AMPI_Iallreduce_global_d_finish<DATATYPE>;
7294 h->
funcPrimal = AMPI_Iallreduce_global_p_finish<DATATYPE>;
7301 if(!datatype->isModifiedBufferRequired()) {
7302 datatype->clearIndices(recvbuf, 0, count);
7305 rStatus = MPI_Iallreduce(sendbufMod, recvbufMod, count, datatype->getModifiedMpiType(), convOp.
modifiedPrimalFunction,
7309 asyncHandle->
sendbuf = sendbuf;
7311 asyncHandle->
recvbuf = recvbuf;
7313 asyncHandle->
count = count;
7315 asyncHandle->
op = op;
7316 asyncHandle->
comm = comm;
7318 request->
handle = asyncHandle;
7325 datatype->getADTool().addToolAction(waitH);
7332 template<
typename DATATYPE>
7339 typename DATATYPE::ModifiedType* sendbufMod = asyncHandle->
sendbufMod;
7340 typename DATATYPE::Type* recvbuf = asyncHandle->
recvbuf;
7341 typename DATATYPE::ModifiedType* recvbufMod = asyncHandle->
recvbufMod;
7342 int count = asyncHandle->
count;
7343 DATATYPE* datatype = asyncHandle->
datatype;
7362 if(datatype->getADTool().isActiveType()) {
7364 AMPI_Op convOp = datatype->getADTool().convertOperator(op);
7366 datatype->getADTool().addToolAction(h);
7368 if(datatype->isModifiedBufferRequired()) {
7369 datatype->copyFromModifiedBuffer(recvbuf, 0, recvbufMod, 0, count);
7382 datatype->getADTool().stopAssembly(h);
7384 if(datatype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == sendbuf)) {
7385 datatype->deleteModifiedTypeBuffer(sendbufMod);
7387 if(datatype->isModifiedBufferRequired() ) {
7388 datatype->deleteModifiedTypeBuffer(recvbufMod);
7398#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
7399 template<
typename SENDTYPE,
typename RECVTYPE>
7444 template<
typename SENDTYPE,
typename RECVTYPE>
7458 template<
typename SENDTYPE,
typename RECVTYPE>
7478 template<
typename SENDTYPE,
typename RECVTYPE>
7486 if(h->
recvtype->getADTool().isOldPrimalsRequired()) {
7494 template<
typename SENDTYPE,
typename RECVTYPE>
7514 template<
typename SENDTYPE,
typename RECVTYPE>
7527 template<
typename SENDTYPE,
typename RECVTYPE>
7538 if(h->
recvtype->getADTool().isOldPrimalsRequired()) {
7550 template<
typename SENDTYPE,
typename RECVTYPE>
7563 template<
typename SENDTYPE,
typename RECVTYPE>
7565 template<
typename SENDTYPE,
typename RECVTYPE>
7567 typename RECVTYPE::Type* recvbuf,
int recvcount, RECVTYPE* recvtype,
AMPI_Comm comm,
AMPI_Request* request) {
7570 if(!recvtype->getADTool().isActiveType()) {
7572 rStatus = MPI_Ialltoall(sendbuf, sendcount, sendtype->getMpiType(), recvbuf, recvcount, recvtype->getMpiType(), comm,
7578 typename SENDTYPE::ModifiedType* sendbufMod =
nullptr;
7579 int sendbufElements = 0;
7588 if(sendtype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == sendbuf)) {
7589 sendtype->createModifiedTypeBuffer(sendbufMod, sendbufElements);
7591 sendbufMod =
reinterpret_cast<typename SENDTYPE::ModifiedType*
>(
const_cast<typename SENDTYPE::Type*
>(sendbuf));
7593 typename RECVTYPE::ModifiedType* recvbufMod =
nullptr;
7594 int recvbufElements = 0;
7599 if(recvtype->isModifiedBufferRequired() ) {
7600 recvtype->createModifiedTypeBuffer(recvbufMod, recvbufElements);
7602 recvbufMod =
reinterpret_cast<typename RECVTYPE::ModifiedType*
>(
const_cast<typename RECVTYPE::Type*
>(recvbuf));
7606 if(recvtype->getADTool().isHandleRequired()) {
7609 recvtype->getADTool().startAssembly(h);
7610 if(sendtype->isModifiedBufferRequired()) {
7612 sendtype->copyIntoModifiedBuffer(sendbuf, 0, sendbufMod, 0, sendcount *
getCommSize(comm));
7614 recvtype->copyIntoModifiedBuffer(recvbuf, 0, recvbufMod, 0, recvcount *
getCommSize(comm));
7623 h->
sendbufCount = sendtype->computeActiveElements(sendcount);
7625 h->
sendbufCount = recvtype->computeActiveElements(recvcount);
7629 h->
recvbufCount = recvtype->computeActiveElements(recvcount);
7636 if(recvtype->getADTool().isOldPrimalsRequired()) {
7651 h->
funcReverse = AMPI_Ialltoall_b<SENDTYPE, RECVTYPE>;
7652 h->
funcForward = AMPI_Ialltoall_d_finish<SENDTYPE, RECVTYPE>;
7653 h->
funcPrimal = AMPI_Ialltoall_p_finish<SENDTYPE, RECVTYPE>;
7661 if(!recvtype->isModifiedBufferRequired()) {
7662 recvtype->clearIndices(recvbuf, 0, recvcount *
getCommSize(comm));
7665 rStatus = MPI_Ialltoall(sendbufMod, sendcount, sendtype->getModifiedMpiType(), recvbufMod, recvcount,
7666 recvtype->getModifiedMpiType(), comm, &request->
request);
7669 asyncHandle->
sendbuf = sendbuf;
7673 asyncHandle->
recvbuf = recvbuf;
7677 asyncHandle->
comm = comm;
7679 request->
handle = asyncHandle;
7686 recvtype->getADTool().addToolAction(waitH);
7693 template<
typename SENDTYPE,
typename RECVTYPE>
7700 typename SENDTYPE::ModifiedType* sendbufMod = asyncHandle->
sendbufMod;
7702 SENDTYPE* sendtype = asyncHandle->
sendtype;
7703 typename RECVTYPE::Type* recvbuf = asyncHandle->
recvbuf;
7704 typename RECVTYPE::ModifiedType* recvbufMod = asyncHandle->
recvbufMod;
7706 RECVTYPE* recvtype = asyncHandle->
recvtype;
7725 if(recvtype->getADTool().isActiveType()) {
7727 recvtype->getADTool().addToolAction(h);
7729 if(recvtype->isModifiedBufferRequired()) {
7730 recvtype->copyFromModifiedBuffer(recvbuf, 0, recvbufMod, 0, recvcount *
getCommSize(comm));
7738 recvtype->getADTool().stopAssembly(h);
7740 if(sendtype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == sendbuf)) {
7741 sendtype->deleteModifiedTypeBuffer(sendbufMod);
7743 if(recvtype->isModifiedBufferRequired() ) {
7744 recvtype->deleteModifiedTypeBuffer(recvbufMod);
7754#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
7755 template<
typename SENDTYPE,
typename RECVTYPE>
7812 template<
typename SENDTYPE,
typename RECVTYPE>
7830 template<
typename SENDTYPE,
typename RECVTYPE>
7853 template<
typename SENDTYPE,
typename RECVTYPE>
7863 if(h->
recvtype->getADTool().isOldPrimalsRequired()) {
7873 template<
typename SENDTYPE,
typename RECVTYPE>
7896 template<
typename SENDTYPE,
typename RECVTYPE>
7913 template<
typename SENDTYPE,
typename RECVTYPE>
7925 if(h->
recvtype->getADTool().isOldPrimalsRequired()) {
7939 template<
typename SENDTYPE,
typename RECVTYPE>
7956 template<
typename SENDTYPE,
typename RECVTYPE>
7958 template<
typename SENDTYPE,
typename RECVTYPE>
7960 SENDTYPE* sendtype,
typename RECVTYPE::Type* recvbuf,
const int* recvcounts,
const int* rdispls, RECVTYPE* recvtype,
7964 if(!recvtype->getADTool().isActiveType()) {
7966 rStatus = MPI_Ialltoallv(sendbuf, sendcounts, sdispls, sendtype->getMpiType(), recvbuf, recvcounts, rdispls,
7967 recvtype->getMpiType(), comm, &request->
request);
7973 int sdisplsTotalSize = 0;
7974 if(
nullptr != sdispls) {
7976 if(recvtype->isModifiedBufferRequired()) {
7981 int rdisplsTotalSize = 0;
7982 if(
nullptr != rdispls) {
7984 if(recvtype->isModifiedBufferRequired()) {
7988 typename SENDTYPE::ModifiedType* sendbufMod =
nullptr;
7989 int sendbufElements = 0;
7993 sendbufElements = sdisplsTotalSize;
7995 sendbufElements = rdisplsTotalSize;
7998 if(sendtype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == sendbuf)) {
7999 sendtype->createModifiedTypeBuffer(sendbufMod, sendbufElements);
8001 sendbufMod =
reinterpret_cast<typename SENDTYPE::ModifiedType*
>(
const_cast<typename SENDTYPE::Type*
>(sendbuf));
8003 typename RECVTYPE::ModifiedType* recvbufMod =
nullptr;
8004 int recvbufElements = 0;
8007 recvbufElements = rdisplsTotalSize;
8009 if(recvtype->isModifiedBufferRequired() ) {
8010 recvtype->createModifiedTypeBuffer(recvbufMod, recvbufElements);
8012 recvbufMod =
reinterpret_cast<typename RECVTYPE::ModifiedType*
>(
const_cast<typename RECVTYPE::Type*
>(recvbuf));
8016 if(recvtype->getADTool().isHandleRequired()) {
8019 recvtype->getADTool().startAssembly(h);
8020 if(sendtype->isModifiedBufferRequired()) {
8023 sendtype->copyIntoModifiedBuffer(sendbuf, sdispls[i], sendbufMod, sdisplsMod[i], sendcounts[i]);
8027 recvtype->copyIntoModifiedBuffer(recvbuf, rdispls[i], recvbufMod, rdisplsMod[i], recvcounts[i]);
8050 if(recvtype->getADTool().isOldPrimalsRequired()) {
8053 recvtype->getValues(recvbuf, rdispls[i], h->
recvbufOldPrimals, rdisplsMod[i], recvcounts[i]);
8060 sendtype->getIndices(sendbuf, sdispls[i], h->
sendbufIndices, sdisplsMod[i], sendcounts[i]);
8064 recvtype->getIndices(recvbuf, rdispls[i], h->
sendbufIndices, rdisplsMod[i], recvcounts[i]);
8069 recvtype->createIndices(recvbuf, rdispls[i], h->
recvbufIndices, rdisplsMod[i], recvcounts[i]);
8073 h->
funcReverse = AMPI_Ialltoallv_b<SENDTYPE, RECVTYPE>;
8074 h->
funcForward = AMPI_Ialltoallv_d_finish<SENDTYPE, RECVTYPE>;
8075 h->
funcPrimal = AMPI_Ialltoallv_p_finish<SENDTYPE, RECVTYPE>;
8085 if(!recvtype->isModifiedBufferRequired()) {
8087 recvtype->clearIndices(recvbuf, rdispls[i], recvcounts[i]);
8091 rStatus = MPI_Ialltoallv(sendbufMod, sendcounts, sdisplsMod, sendtype->getModifiedMpiType(), recvbufMod, recvcounts,
8092 rdisplsMod, recvtype->getModifiedMpiType(), comm, &request->
request);
8095 asyncHandle->
sendbuf = sendbuf;
8099 asyncHandle->
sdispls = sdispls;
8101 asyncHandle->
recvbuf = recvbuf;
8105 asyncHandle->
rdispls = rdispls;
8107 asyncHandle->
comm = comm;
8109 request->
handle = asyncHandle;
8116 recvtype->getADTool().addToolAction(waitH);
8123 template<
typename SENDTYPE,
typename RECVTYPE>
8130 typename SENDTYPE::ModifiedType* sendbufMod = asyncHandle->
sendbufMod;
8131 const int* sdisplsMod = asyncHandle->
sdisplsMod;
8132 const int* sendcounts = asyncHandle->
sendcounts;
8133 const int* sdispls = asyncHandle->
sdispls;
8134 SENDTYPE* sendtype = asyncHandle->
sendtype;
8135 typename RECVTYPE::Type* recvbuf = asyncHandle->
recvbuf;
8136 typename RECVTYPE::ModifiedType* recvbufMod = asyncHandle->
recvbufMod;
8137 const int* rdisplsMod = asyncHandle->
rdisplsMod;
8138 const int* recvcounts = asyncHandle->
recvcounts;
8139 const int* rdispls = asyncHandle->
rdispls;
8140 RECVTYPE* recvtype = asyncHandle->
recvtype;
8163 if(recvtype->getADTool().isActiveType()) {
8165 recvtype->getADTool().addToolAction(h);
8167 if(recvtype->isModifiedBufferRequired()) {
8169 recvtype->copyFromModifiedBuffer(recvbuf, rdispls[i], recvbufMod, rdisplsMod[i], recvcounts[i]);
8180 recvtype->getADTool().stopAssembly(h);
8181 if(recvtype->isModifiedBufferRequired()) {
8182 delete [] sdisplsMod;
8184 if(recvtype->isModifiedBufferRequired()) {
8185 delete [] rdisplsMod;
8188 if(sendtype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == sendbuf)) {
8189 sendtype->deleteModifiedTypeBuffer(sendbufMod);
8191 if(recvtype->isModifiedBufferRequired() ) {
8192 recvtype->deleteModifiedTypeBuffer(recvbufMod);
8202#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
8203 template<
typename DATATYPE>
8247 template<
typename DATATYPE>
8260 template<
typename DATATYPE>
8281 template<
typename DATATYPE>
8290 if(h->
datatype->getADTool().isOldPrimalsRequired()) {
8298 template<
typename DATATYPE>
8319 template<
typename DATATYPE>
8333 template<
typename DATATYPE>
8343 if(h->
datatype->getADTool().isOldPrimalsRequired()) {
8357 template<
typename DATATYPE>
8372 template<
typename DATATYPE>
8374 template<
typename DATATYPE>
8375 int AMPI_Ibcast_wrap(
typename DATATYPE::Type* bufferSend,
typename DATATYPE::Type* bufferRecv,
int count,
8379 if(!datatype->getADTool().isActiveType()) {
8381 rStatus =
MPI_Ibcast_wrap(bufferSend, bufferRecv, count, datatype->getMpiType(), root, comm, &request->
request);
8386 typename DATATYPE::ModifiedType* bufferSendMod =
nullptr;
8387 int bufferSendElements = 0;
8392 bufferSendElements = count;
8394 bufferSendElements = count;
8397 if(datatype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == bufferSend)) {
8398 datatype->createModifiedTypeBuffer(bufferSendMod, bufferSendElements);
8400 bufferSendMod =
reinterpret_cast<typename DATATYPE::ModifiedType*
>(
const_cast<typename DATATYPE::Type*
>(bufferSend));
8403 typename DATATYPE::ModifiedType* bufferRecvMod =
nullptr;
8404 int bufferRecvElements = 0;
8407 bufferRecvElements = count;
8409 if(datatype->isModifiedBufferRequired() ) {
8410 datatype->createModifiedTypeBuffer(bufferRecvMod, bufferRecvElements);
8412 bufferRecvMod =
reinterpret_cast<typename DATATYPE::ModifiedType*
>(
const_cast<typename DATATYPE::Type*
>(bufferRecv));
8416 if(datatype->getADTool().isHandleRequired()) {
8419 datatype->getADTool().startAssembly(h);
8421 if(datatype->isModifiedBufferRequired()) {
8423 datatype->copyIntoModifiedBuffer(bufferSend, 0, bufferSendMod, 0, count);
8425 datatype->copyIntoModifiedBuffer(bufferRecv, 0, bufferRecvMod, 0, count);
8450 if(datatype->getADTool().isOldPrimalsRequired()) {
8468 h->
funcForward = AMPI_Ibcast_wrap_d_finish<DATATYPE>;
8469 h->
funcPrimal = AMPI_Ibcast_wrap_p_finish<DATATYPE>;
8476 if(!datatype->isModifiedBufferRequired()) {
8477 datatype->clearIndices(bufferRecv, 0, count);
8480 rStatus =
MPI_Ibcast_wrap(bufferSendMod, bufferRecvMod, count, datatype->getModifiedMpiType(), root, comm,
8488 asyncHandle->
count = count;
8490 asyncHandle->
root = root;
8491 asyncHandle->
comm = comm;
8493 request->
handle = asyncHandle;
8500 datatype->getADTool().addToolAction(waitH);
8507 template<
typename DATATYPE>
8512 typename DATATYPE::Type* bufferSend = asyncHandle->
bufferSend;
8513 typename DATATYPE::ModifiedType* bufferSendMod = asyncHandle->
bufferSendMod;
8514 typename DATATYPE::Type* bufferRecv = asyncHandle->
bufferRecv;
8515 typename DATATYPE::ModifiedType* bufferRecvMod = asyncHandle->
bufferRecvMod;
8516 int count = asyncHandle->
count;
8517 DATATYPE* datatype = asyncHandle->
datatype;
8518 int root = asyncHandle->
root;
8536 if(datatype->getADTool().isActiveType()) {
8538 datatype->getADTool().addToolAction(h);
8540 if(datatype->isModifiedBufferRequired()) {
8541 datatype->copyFromModifiedBuffer(bufferRecv, 0, bufferRecvMod, 0, count);
8549 datatype->getADTool().stopAssembly(h);
8552 if(datatype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == bufferSend)) {
8553 datatype->deleteModifiedTypeBuffer(bufferSendMod);
8556 if(datatype->isModifiedBufferRequired() ) {
8557 datatype->deleteModifiedTypeBuffer(bufferRecvMod);
8567#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
8568 template<
typename SENDTYPE,
typename RECVTYPE>
8614 template<
typename SENDTYPE,
typename RECVTYPE>
8629 template<
typename SENDTYPE,
typename RECVTYPE>
8651 template<
typename SENDTYPE,
typename RECVTYPE>
8659 if(h->
recvtype->getADTool().isOldPrimalsRequired()) {
8671 template<
typename SENDTYPE,
typename RECVTYPE>
8693 template<
typename SENDTYPE,
typename RECVTYPE>
8708 template<
typename SENDTYPE,
typename RECVTYPE>
8721 if(h->
recvtype->getADTool().isOldPrimalsRequired()) {
8735 template<
typename SENDTYPE,
typename RECVTYPE>
8750 template<
typename SENDTYPE,
typename RECVTYPE>
8752 template<
typename SENDTYPE,
typename RECVTYPE>
8754 typename RECVTYPE::Type* recvbuf,
int recvcount, RECVTYPE* recvtype,
int root,
AMPI_Comm comm,
AMPI_Request* request) {
8757 if(!recvtype->getADTool().isActiveType()) {
8759 rStatus = MPI_Igather(sendbuf, sendcount, sendtype->getMpiType(), recvbuf, recvcount, recvtype->getMpiType(), root,
8765 typename SENDTYPE::ModifiedType* sendbufMod =
nullptr;
8766 int sendbufElements = 0;
8770 sendbufElements = sendcount;
8772 sendbufElements = recvcount;
8775 if(sendtype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == sendbuf)) {
8776 sendtype->createModifiedTypeBuffer(sendbufMod, sendbufElements);
8778 sendbufMod =
reinterpret_cast<typename SENDTYPE::ModifiedType*
>(
const_cast<typename SENDTYPE::Type*
>(sendbuf));
8780 typename RECVTYPE::ModifiedType* recvbufMod =
nullptr;
8781 int recvbufElements = 0;
8787 if(recvtype->isModifiedBufferRequired() ) {
8788 recvtype->createModifiedTypeBuffer(recvbufMod, recvbufElements);
8790 recvbufMod =
reinterpret_cast<typename RECVTYPE::ModifiedType*
>(
const_cast<typename RECVTYPE::Type*
>(recvbuf));
8795 if(recvtype->getADTool().isHandleRequired()) {
8798 recvtype->getADTool().startAssembly(h);
8799 if(sendtype->isModifiedBufferRequired()) {
8801 sendtype->copyIntoModifiedBuffer(sendbuf, 0, sendbufMod, 0, sendcount);
8803 recvtype->copyIntoModifiedBuffer(recvbuf, recvcount *
getCommRank(comm), recvbufMod, recvcount *
getCommRank(comm),
8813 h->
sendbufCount = sendtype->computeActiveElements(sendcount);
8815 h->
sendbufCount = recvtype->computeActiveElements(recvcount);
8820 h->
recvbufCount = recvtype->computeActiveElements(recvcount);
8828 if(recvtype->getADTool().isOldPrimalsRequired()) {
8839 sendtype->getIndices(sendbuf, 0, h->
sendbufIndices, 0, sendcount);
8849 h->
funcReverse = AMPI_Igather_b<SENDTYPE, RECVTYPE>;
8850 h->
funcForward = AMPI_Igather_d_finish<SENDTYPE, RECVTYPE>;
8851 h->
funcPrimal = AMPI_Igather_p_finish<SENDTYPE, RECVTYPE>;
8861 if(!recvtype->isModifiedBufferRequired()) {
8862 recvtype->clearIndices(recvbuf, 0, recvcount *
getCommSize(comm));
8866 rStatus = MPI_Igather(sendbufMod, sendcount, sendtype->getModifiedMpiType(), recvbufMod, recvcount,
8867 recvtype->getModifiedMpiType(), root, comm, &request->
request);
8870 asyncHandle->
sendbuf = sendbuf;
8874 asyncHandle->
recvbuf = recvbuf;
8878 asyncHandle->
root = root;
8879 asyncHandle->
comm = comm;
8881 request->
handle = asyncHandle;
8888 recvtype->getADTool().addToolAction(waitH);
8895 template<
typename SENDTYPE,
typename RECVTYPE>
8902 typename SENDTYPE::ModifiedType* sendbufMod = asyncHandle->
sendbufMod;
8904 SENDTYPE* sendtype = asyncHandle->
sendtype;
8905 typename RECVTYPE::Type* recvbuf = asyncHandle->
recvbuf;
8906 typename RECVTYPE::ModifiedType* recvbufMod = asyncHandle->
recvbufMod;
8908 RECVTYPE* recvtype = asyncHandle->
recvtype;
8909 int root = asyncHandle->
root;
8929 if(recvtype->getADTool().isActiveType()) {
8931 recvtype->getADTool().addToolAction(h);
8934 if(recvtype->isModifiedBufferRequired()) {
8935 recvtype->copyFromModifiedBuffer(recvbuf, 0, recvbufMod, 0, recvcount *
getCommSize(comm));
8946 recvtype->getADTool().stopAssembly(h);
8948 if(sendtype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == sendbuf)) {
8949 sendtype->deleteModifiedTypeBuffer(sendbufMod);
8952 if(recvtype->isModifiedBufferRequired() ) {
8953 recvtype->deleteModifiedTypeBuffer(recvbufMod);
8964#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
8965 template<
typename SENDTYPE,
typename RECVTYPE>
9017 template<
typename SENDTYPE,
typename RECVTYPE>
9034 template<
typename SENDTYPE,
typename RECVTYPE>
9058 template<
typename SENDTYPE,
typename RECVTYPE>
9066 if(h->
recvtype->getADTool().isOldPrimalsRequired()) {
9080 template<
typename SENDTYPE,
typename RECVTYPE>
9104 template<
typename SENDTYPE,
typename RECVTYPE>
9121 template<
typename SENDTYPE,
typename RECVTYPE>
9135 if(h->
recvtype->getADTool().isOldPrimalsRequired()) {
9150 template<
typename SENDTYPE,
typename RECVTYPE>
9167 template<
typename SENDTYPE,
typename RECVTYPE>
9169 template<
typename SENDTYPE,
typename RECVTYPE>
9171 typename RECVTYPE::Type* recvbuf,
const int* recvcounts,
const int* displs, RECVTYPE* recvtype,
int root,
9175 if(!recvtype->getADTool().isActiveType()) {
9177 rStatus = MPI_Igatherv(sendbuf, sendcount, sendtype->getMpiType(), recvbuf, recvcounts, displs, recvtype->getMpiType(),
9178 root, comm, &request->
request);
9184 int displsTotalSize = 0;
9185 if(
nullptr != displs) {
9187 if(recvtype->isModifiedBufferRequired()) {
9191 typename SENDTYPE::ModifiedType* sendbufMod =
nullptr;
9192 int sendbufElements = 0;
9196 sendbufElements = sendcount;
9201 if(sendtype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == sendbuf)) {
9202 sendtype->createModifiedTypeBuffer(sendbufMod, sendbufElements);
9204 sendbufMod =
reinterpret_cast<typename SENDTYPE::ModifiedType*
>(
const_cast<typename SENDTYPE::Type*
>(sendbuf));
9206 typename RECVTYPE::ModifiedType* recvbufMod =
nullptr;
9207 int recvbufElements = 0;
9211 recvbufElements = displsTotalSize;
9213 if(recvtype->isModifiedBufferRequired() ) {
9214 recvtype->createModifiedTypeBuffer(recvbufMod, recvbufElements);
9216 recvbufMod =
reinterpret_cast<typename RECVTYPE::ModifiedType*
>(
const_cast<typename RECVTYPE::Type*
>(recvbuf));
9221 if(recvtype->getADTool().isHandleRequired()) {
9224 recvtype->getADTool().startAssembly(h);
9225 if(sendtype->isModifiedBufferRequired()) {
9227 sendtype->copyIntoModifiedBuffer(sendbuf, 0, sendbufMod, 0, sendcount);
9231 recvtype->copyIntoModifiedBuffer(recvbuf, displs[rank], recvbufMod, displsMod[rank], recvcounts[rank]);
9241 h->
sendbufCount = sendtype->computeActiveElements(sendcount);
9244 comm)]) - recvtype->computeActiveElements(displs[
getCommRank(comm)]);
9257 if(recvtype->getADTool().isOldPrimalsRequired()) {
9262 recvtype->getValues(recvbuf, displs[i], h->
recvbufOldPrimals, displsMod[i], recvcounts[i]);
9270 sendtype->getIndices(sendbuf, 0, h->
sendbufIndices, 0, sendcount);
9274 recvtype->getIndices(recvbuf, displs[rank], h->
sendbufIndices, 0, recvcounts[rank]);
9280 recvtype->createIndices(recvbuf, displs[i], h->
recvbufIndices, displsMod[i], recvcounts[i]);
9285 h->
funcReverse = AMPI_Igatherv_b<SENDTYPE, RECVTYPE>;
9286 h->
funcForward = AMPI_Igatherv_d_finish<SENDTYPE, RECVTYPE>;
9287 h->
funcPrimal = AMPI_Igatherv_p_finish<SENDTYPE, RECVTYPE>;
9298 if(!recvtype->isModifiedBufferRequired()) {
9300 recvtype->clearIndices(recvbuf, displs[i], recvcounts[i]);
9305 rStatus = MPI_Igatherv(sendbufMod, sendcount, sendtype->getModifiedMpiType(), recvbufMod, recvcounts, displsMod,
9306 recvtype->getModifiedMpiType(), root, comm, &request->
request);
9309 asyncHandle->
sendbuf = sendbuf;
9313 asyncHandle->
recvbuf = recvbuf;
9317 asyncHandle->
displs = displs;
9319 asyncHandle->
root = root;
9320 asyncHandle->
comm = comm;
9322 request->
handle = asyncHandle;
9329 recvtype->getADTool().addToolAction(waitH);
9336 template<
typename SENDTYPE,
typename RECVTYPE>
9343 typename SENDTYPE::ModifiedType* sendbufMod = asyncHandle->
sendbufMod;
9345 SENDTYPE* sendtype = asyncHandle->
sendtype;
9346 typename RECVTYPE::Type* recvbuf = asyncHandle->
recvbuf;
9347 typename RECVTYPE::ModifiedType* recvbufMod = asyncHandle->
recvbufMod;
9348 const int* displsMod = asyncHandle->
displsMod;
9349 const int* recvcounts = asyncHandle->
recvcounts;
9350 const int* displs = asyncHandle->
displs;
9351 RECVTYPE* recvtype = asyncHandle->
recvtype;
9352 int root = asyncHandle->
root;
9374 if(recvtype->getADTool().isActiveType()) {
9376 recvtype->getADTool().addToolAction(h);
9379 if(recvtype->isModifiedBufferRequired()) {
9381 recvtype->copyFromModifiedBuffer(recvbuf, displs[i], recvbufMod, displsMod[i], recvcounts[i]);
9395 recvtype->getADTool().stopAssembly(h);
9396 if(recvtype->isModifiedBufferRequired()) {
9397 delete [] displsMod;
9400 if(sendtype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == sendbuf)) {
9401 sendtype->deleteModifiedTypeBuffer(sendbufMod);
9404 if(recvtype->isModifiedBufferRequired() ) {
9405 recvtype->deleteModifiedTypeBuffer(recvbufMod);
9416#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
9417 template<
typename DATATYPE>
9462 template<
typename DATATYPE>
9476 template<
typename DATATYPE>
9499 template<
typename DATATYPE>
9508 if(h->
datatype->getADTool().isOldPrimalsRequired()) {
9520 template<
typename DATATYPE>
9543 template<
typename DATATYPE>
9559 template<
typename DATATYPE>
9574 if(h->
datatype->getADTool().isOldPrimalsRequired()) {
9588 template<
typename DATATYPE>
9608 template<
typename DATATYPE>
9610 template<
typename DATATYPE>
9614 AMPI_Op convOp = datatype->getADTool().convertOperator(op);
9617 if(!datatype->getADTool().isActiveType()) {
9619 rStatus = MPI_Ireduce(sendbuf, recvbuf, count, datatype->getMpiType(), convOp.
primalFunction, root, comm,
9625 typename DATATYPE::ModifiedType* sendbufMod =
nullptr;
9626 int sendbufElements = 0;
9630 sendbufElements = count;
9632 sendbufElements = count;
9635 if(datatype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == sendbuf)) {
9636 datatype->createModifiedTypeBuffer(sendbufMod, sendbufElements);
9638 sendbufMod =
reinterpret_cast<typename DATATYPE::ModifiedType*
>(
const_cast<typename DATATYPE::Type*
>(sendbuf));
9640 typename DATATYPE::ModifiedType* recvbufMod =
nullptr;
9641 int recvbufElements = 0;
9645 recvbufElements = count;
9647 if(datatype->isModifiedBufferRequired() ) {
9648 datatype->createModifiedTypeBuffer(recvbufMod, recvbufElements);
9650 recvbufMod =
reinterpret_cast<typename DATATYPE::ModifiedType*
>(
const_cast<typename DATATYPE::Type*
>(recvbuf));
9655 if(datatype->getADTool().isHandleRequired()) {
9658 datatype->getADTool().startAssembly(h);
9659 if(datatype->isModifiedBufferRequired()) {
9661 datatype->copyIntoModifiedBuffer(sendbuf, 0, sendbufMod, 0, count);
9663 datatype->copyIntoModifiedBuffer(recvbuf, 0, recvbufMod, 0, count);
9672 h->
sendbufCount = datatype->computeActiveElements(count);
9674 h->
sendbufCount = datatype->computeActiveElements(count);
9679 h->
recvbufCount = datatype->computeActiveElements(count);
9696 if(datatype->getADTool().isOldPrimalsRequired()) {
9713 datatype->createIndices(recvbuf, 0, h->
recvbufIndices, 0, count);
9718 h->
funcForward = AMPI_Ireduce_global_d_finish<DATATYPE>;
9719 h->
funcPrimal = AMPI_Ireduce_global_p_finish<DATATYPE>;
9728 if(!datatype->isModifiedBufferRequired()) {
9729 datatype->clearIndices(recvbuf, 0, count);
9733 rStatus = MPI_Ireduce(sendbufMod, recvbufMod, count, datatype->getModifiedMpiType(), convOp.
modifiedPrimalFunction,
9734 root, comm, &request->
request);
9737 asyncHandle->
sendbuf = sendbuf;
9739 asyncHandle->
recvbuf = recvbuf;
9741 asyncHandle->
count = count;
9743 asyncHandle->
op = op;
9744 asyncHandle->
root = root;
9745 asyncHandle->
comm = comm;
9747 request->
handle = asyncHandle;
9754 datatype->getADTool().addToolAction(waitH);
9761 template<
typename DATATYPE>
9768 typename DATATYPE::ModifiedType* sendbufMod = asyncHandle->
sendbufMod;
9769 typename DATATYPE::Type* recvbuf = asyncHandle->
recvbuf;
9770 typename DATATYPE::ModifiedType* recvbufMod = asyncHandle->
recvbufMod;
9771 int count = asyncHandle->
count;
9772 DATATYPE* datatype = asyncHandle->
datatype;
9774 int root = asyncHandle->
root;
9793 if(datatype->getADTool().isActiveType()) {
9795 AMPI_Op convOp = datatype->getADTool().convertOperator(op);
9797 datatype->getADTool().addToolAction(h);
9800 if(datatype->isModifiedBufferRequired()) {
9801 datatype->copyFromModifiedBuffer(recvbuf, 0, recvbufMod, 0, count);
9821 datatype->getADTool().stopAssembly(h);
9823 if(datatype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == sendbuf)) {
9824 datatype->deleteModifiedTypeBuffer(sendbufMod);
9827 if(datatype->isModifiedBufferRequired() ) {
9828 datatype->deleteModifiedTypeBuffer(recvbufMod);
9839#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
9840 template<
typename SENDTYPE,
typename RECVTYPE>
9886 template<
typename SENDTYPE,
typename RECVTYPE>
9901 template<
typename SENDTYPE,
typename RECVTYPE>
9923 template<
typename SENDTYPE,
typename RECVTYPE>
9933 if(h->
recvtype->getADTool().isOldPrimalsRequired()) {
9941 template<
typename SENDTYPE,
typename RECVTYPE>
9963 template<
typename SENDTYPE,
typename RECVTYPE>
9978 template<
typename SENDTYPE,
typename RECVTYPE>
9989 if(h->
recvtype->getADTool().isOldPrimalsRequired()) {
10003 template<
typename SENDTYPE,
typename RECVTYPE>
10018 template<
typename SENDTYPE,
typename RECVTYPE>
10020 template<
typename SENDTYPE,
typename RECVTYPE>
10021 int AMPI_Iscatter(
const typename SENDTYPE::Type* sendbuf,
int sendcount, SENDTYPE* sendtype,
10022 typename RECVTYPE::Type* recvbuf,
int recvcount, RECVTYPE* recvtype,
int root,
AMPI_Comm comm,
AMPI_Request* request) {
10025 if(!recvtype->getADTool().isActiveType()) {
10027 rStatus = MPI_Iscatter(sendbuf, sendcount, sendtype->getMpiType(), recvbuf, recvcount, recvtype->getMpiType(), root,
10033 typename SENDTYPE::ModifiedType* sendbufMod =
nullptr;
10034 int sendbufElements = 0;
10040 if(sendtype->isModifiedBufferRequired() ) {
10041 sendtype->createModifiedTypeBuffer(sendbufMod, sendbufElements);
10043 sendbufMod =
reinterpret_cast<typename SENDTYPE::ModifiedType*
>(
const_cast<typename SENDTYPE::Type*
>(sendbuf));
10046 typename RECVTYPE::ModifiedType* recvbufMod =
nullptr;
10047 int recvbufElements = 0;
10051 recvbufElements = recvcount;
10053 recvbufElements = sendcount;
10056 if(recvtype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == recvbuf)) {
10057 recvtype->createModifiedTypeBuffer(recvbufMod, recvbufElements);
10059 recvbufMod =
reinterpret_cast<typename RECVTYPE::ModifiedType*
>(
const_cast<typename RECVTYPE::Type*
>(recvbuf));
10063 if(recvtype->getADTool().isHandleRequired()) {
10066 recvtype->getADTool().startAssembly(h);
10068 if(sendtype->isModifiedBufferRequired()) {
10069 sendtype->copyIntoModifiedBuffer(sendbuf, 0, sendbufMod, 0, sendcount *
getCommSize(comm));
10078 h->
sendbufCount = sendtype->computeActiveElements(sendcount);
10083 h->
recvbufCount = recvtype->computeActiveElements(recvcount);
10085 h->
recvbufCount = sendtype->computeActiveElements(sendcount);
10093 if(recvtype->getADTool().isOldPrimalsRequired()) {
10108 recvtype->createIndices(recvbuf, 0, h->
recvbufIndices, 0, recvcount);
10110 sendtype->createIndices(
const_cast<typename SENDTYPE::Type*
>(sendbuf), sendcount *
getCommRank(comm), h->
recvbufIndices,
10115 h->
funcReverse = AMPI_Iscatter_b<SENDTYPE, RECVTYPE>;
10116 h->
funcForward = AMPI_Iscatter_d_finish<SENDTYPE, RECVTYPE>;
10117 h->
funcPrimal = AMPI_Iscatter_p_finish<SENDTYPE, RECVTYPE>;
10126 if(!recvtype->isModifiedBufferRequired()) {
10128 recvtype->clearIndices(recvbuf, 0, recvcount);
10130 sendtype->clearIndices(
const_cast<typename SENDTYPE::Type*
>(sendbuf), sendcount *
getCommRank(comm), sendcount);
10134 rStatus = MPI_Iscatter(sendbufMod, sendcount, sendtype->getModifiedMpiType(), recvbufMod, recvcount,
10135 recvtype->getModifiedMpiType(), root, comm, &request->
request);
10138 asyncHandle->
sendbuf = sendbuf;
10142 asyncHandle->
recvbuf = recvbuf;
10146 asyncHandle->
root = root;
10147 asyncHandle->
comm = comm;
10149 request->
handle = asyncHandle;
10156 recvtype->getADTool().addToolAction(waitH);
10163 template<
typename SENDTYPE,
typename RECVTYPE>
10169 const typename SENDTYPE::Type* sendbuf = asyncHandle->
sendbuf;
10170 typename SENDTYPE::ModifiedType* sendbufMod = asyncHandle->
sendbufMod;
10171 int sendcount = asyncHandle->
sendcount;
10172 SENDTYPE* sendtype = asyncHandle->
sendtype;
10173 typename RECVTYPE::Type* recvbuf = asyncHandle->
recvbuf;
10174 typename RECVTYPE::ModifiedType* recvbufMod = asyncHandle->
recvbufMod;
10175 int recvcount = asyncHandle->
recvcount;
10176 RECVTYPE* recvtype = asyncHandle->
recvtype;
10177 int root = asyncHandle->
root;
10195 delete asyncHandle;
10197 if(recvtype->getADTool().isActiveType()) {
10199 recvtype->getADTool().addToolAction(h);
10201 if(recvtype->isModifiedBufferRequired()) {
10203 recvtype->copyFromModifiedBuffer(recvbuf, 0, recvbufMod, 0, recvcount);
10205 sendtype->copyFromModifiedBuffer(
const_cast<typename SENDTYPE::Type*
>(sendbuf), sendcount *
getCommRank(comm),
10206 sendbufMod, sendcount *
getCommRank(comm), sendcount);
10215 sendtype->registerValue(
const_cast<typename SENDTYPE::Type*
>(sendbuf), sendcount *
getCommRank(comm), h->
recvbufIndices,
10220 recvtype->getADTool().stopAssembly(h);
10223 if(sendtype->isModifiedBufferRequired() ) {
10224 sendtype->deleteModifiedTypeBuffer(sendbufMod);
10227 if(recvtype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == recvbuf)) {
10228 recvtype->deleteModifiedTypeBuffer(recvbufMod);
10238#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
10239 template<
typename SENDTYPE,
typename RECVTYPE>
10291 template<
typename SENDTYPE,
typename RECVTYPE>
10308 template<
typename SENDTYPE,
typename RECVTYPE>
10332 template<
typename SENDTYPE,
typename RECVTYPE>
10344 if(h->
recvtype->getADTool().isOldPrimalsRequired()) {
10352 template<
typename SENDTYPE,
typename RECVTYPE>
10376 template<
typename SENDTYPE,
typename RECVTYPE>
10393 template<
typename SENDTYPE,
typename RECVTYPE>
10404 if(h->
recvtype->getADTool().isOldPrimalsRequired()) {
10420 template<
typename SENDTYPE,
typename RECVTYPE>
10437 template<
typename SENDTYPE,
typename RECVTYPE>
10439 template<
typename SENDTYPE,
typename RECVTYPE>
10440 int AMPI_Iscatterv(
const typename SENDTYPE::Type* sendbuf,
const int* sendcounts,
const int* displs, SENDTYPE* sendtype,
10441 typename RECVTYPE::Type* recvbuf,
int recvcount, RECVTYPE* recvtype,
int root,
AMPI_Comm comm,
AMPI_Request* request) {
10444 if(!recvtype->getADTool().isActiveType()) {
10446 rStatus = MPI_Iscatterv(sendbuf, sendcounts, displs, sendtype->getMpiType(), recvbuf, recvcount, recvtype->getMpiType(),
10447 root, comm, &request->
request);
10453 int displsTotalSize = 0;
10454 if(
nullptr != displs) {
10456 if(recvtype->isModifiedBufferRequired()) {
10460 typename SENDTYPE::ModifiedType* sendbufMod =
nullptr;
10461 int sendbufElements = 0;
10465 sendbufElements = displsTotalSize;
10467 if(sendtype->isModifiedBufferRequired() ) {
10468 sendtype->createModifiedTypeBuffer(sendbufMod, sendbufElements);
10470 sendbufMod =
reinterpret_cast<typename SENDTYPE::ModifiedType*
>(
const_cast<typename SENDTYPE::Type*
>(sendbuf));
10473 typename RECVTYPE::ModifiedType* recvbufMod =
nullptr;
10474 int recvbufElements = 0;
10478 recvbufElements = recvcount;
10483 if(recvtype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == recvbuf)) {
10484 recvtype->createModifiedTypeBuffer(recvbufMod, recvbufElements);
10486 recvbufMod =
reinterpret_cast<typename RECVTYPE::ModifiedType*
>(
const_cast<typename RECVTYPE::Type*
>(recvbuf));
10490 if(recvtype->getADTool().isHandleRequired()) {
10493 recvtype->getADTool().startAssembly(h);
10495 if(sendtype->isModifiedBufferRequired()) {
10497 sendtype->copyIntoModifiedBuffer(sendbuf, displs[i], sendbufMod, displsMod[i], sendcounts[i]);
10512 h->
recvbufCount = recvtype->computeActiveElements(recvcount);
10515 comm)]) - sendtype->computeActiveElements(displs[
getCommRank(comm)]);
10523 if(recvtype->getADTool().isOldPrimalsRequired()) {
10530 sendtype->getValues(sendbuf, displs[rank], h->
recvbufOldPrimals, 0, sendcounts[rank]);
10538 sendtype->getIndices(sendbuf, displs[i], h->
sendbufIndices, displsMod[i], sendcounts[i]);
10543 recvtype->createIndices(recvbuf, 0, h->
recvbufIndices, 0, recvcount);
10547 sendtype->createIndices(
const_cast<typename SENDTYPE::Type*
>(sendbuf), displs[rank], h->
recvbufIndices, 0,
10553 h->
funcReverse = AMPI_Iscatterv_b<SENDTYPE, RECVTYPE>;
10554 h->
funcForward = AMPI_Iscatterv_d_finish<SENDTYPE, RECVTYPE>;
10555 h->
funcPrimal = AMPI_Iscatterv_p_finish<SENDTYPE, RECVTYPE>;
10565 if(!recvtype->isModifiedBufferRequired()) {
10567 recvtype->clearIndices(recvbuf, 0, recvcount);
10571 sendtype->clearIndices(
const_cast<typename SENDTYPE::Type*
>(sendbuf), displs[rank], sendcounts[rank]);
10576 rStatus = MPI_Iscatterv(sendbufMod, sendcounts, displsMod, sendtype->getModifiedMpiType(), recvbufMod, recvcount,
10577 recvtype->getModifiedMpiType(), root, comm, &request->
request);
10580 asyncHandle->
sendbuf = sendbuf;
10584 asyncHandle->
displs = displs;
10586 asyncHandle->
recvbuf = recvbuf;
10590 asyncHandle->
root = root;
10591 asyncHandle->
comm = comm;
10593 request->
handle = asyncHandle;
10600 recvtype->getADTool().addToolAction(waitH);
10607 template<
typename SENDTYPE,
typename RECVTYPE>
10613 const typename SENDTYPE::Type* sendbuf = asyncHandle->
sendbuf;
10614 typename SENDTYPE::ModifiedType* sendbufMod = asyncHandle->
sendbufMod;
10615 const int* displsMod = asyncHandle->
displsMod;
10616 const int* sendcounts = asyncHandle->
sendcounts;
10617 const int* displs = asyncHandle->
displs;
10618 SENDTYPE* sendtype = asyncHandle->
sendtype;
10619 typename RECVTYPE::Type* recvbuf = asyncHandle->
recvbuf;
10620 typename RECVTYPE::ModifiedType* recvbufMod = asyncHandle->
recvbufMod;
10621 int recvcount = asyncHandle->
recvcount;
10622 RECVTYPE* recvtype = asyncHandle->
recvtype;
10623 int root = asyncHandle->
root;
10643 delete asyncHandle;
10645 if(recvtype->getADTool().isActiveType()) {
10647 recvtype->getADTool().addToolAction(h);
10649 if(recvtype->isModifiedBufferRequired()) {
10651 recvtype->copyFromModifiedBuffer(recvbuf, 0, recvbufMod, 0, recvcount);
10655 sendtype->copyFromModifiedBuffer(
const_cast<typename SENDTYPE::Type*
>(sendbuf), displs[rank], sendbufMod,
10656 displsMod[rank], sendcounts[rank]);
10668 sendtype->registerValue(
const_cast<typename SENDTYPE::Type*
>(sendbuf), displs[rank], h->
recvbufIndices,
10674 recvtype->getADTool().stopAssembly(h);
10675 if(recvtype->isModifiedBufferRequired()) {
10676 delete [] displsMod;
10680 if(sendtype->isModifiedBufferRequired() ) {
10681 sendtype->deleteModifiedTypeBuffer(sendbufMod);
10684 if(recvtype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == recvbuf)) {
10685 recvtype->deleteModifiedTypeBuffer(recvbufMod);
10695#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
10696 template<
typename DATATYPE>
10742 template<
typename DATATYPE>
10764 if(h->
datatype->getADTool().isOldPrimalsRequired()) {
10776 template<
typename DATATYPE>
10805 template<
typename DATATYPE>
10820 if(h->
datatype->getADTool().isOldPrimalsRequired()) {
10844 template<
typename DATATYPE>
10848 AMPI_Op convOp = datatype->getADTool().convertOperator(op);
10851 if(!datatype->getADTool().isActiveType()) {
10853 rStatus = MPI_Reduce(sendbuf, recvbuf, count, datatype->getMpiType(), convOp.
primalFunction, root, comm);
10858 typename DATATYPE::ModifiedType* sendbufMod =
nullptr;
10859 int sendbufElements = 0;
10863 sendbufElements = count;
10865 sendbufElements = count;
10868 if(datatype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == sendbuf)) {
10869 datatype->createModifiedTypeBuffer(sendbufMod, sendbufElements);
10871 sendbufMod =
reinterpret_cast<typename DATATYPE::ModifiedType*
>(
const_cast<typename DATATYPE::Type*
>(sendbuf));
10873 typename DATATYPE::ModifiedType* recvbufMod =
nullptr;
10874 int recvbufElements = 0;
10878 recvbufElements = count;
10880 if(datatype->isModifiedBufferRequired() ) {
10881 datatype->createModifiedTypeBuffer(recvbufMod, recvbufElements);
10883 recvbufMod =
reinterpret_cast<typename DATATYPE::ModifiedType*
>(
const_cast<typename DATATYPE::Type*
>(recvbuf));
10888 if(datatype->getADTool().isHandleRequired()) {
10891 datatype->getADTool().startAssembly(h);
10892 if(datatype->isModifiedBufferRequired()) {
10894 datatype->copyIntoModifiedBuffer(sendbuf, 0, sendbufMod, 0, count);
10896 datatype->copyIntoModifiedBuffer(recvbuf, 0, recvbufMod, 0, count);
10905 h->
sendbufCount = datatype->computeActiveElements(count);
10907 h->
sendbufCount = datatype->computeActiveElements(count);
10912 h->
recvbufCount = datatype->computeActiveElements(count);
10929 if(datatype->getADTool().isOldPrimalsRequired()) {
10946 datatype->createIndices(recvbuf, 0, h->
recvbufIndices, 0, count);
10952 h->
funcPrimal = AMPI_Reduce_global_p<DATATYPE>;
10961 if(!datatype->isModifiedBufferRequired()) {
10962 datatype->clearIndices(recvbuf, 0, count);
10966 rStatus = MPI_Reduce(sendbufMod, recvbufMod, count, datatype->getModifiedMpiType(), convOp.
modifiedPrimalFunction, root,
10968 datatype->getADTool().addToolAction(h);
10971 if(datatype->isModifiedBufferRequired()) {
10972 datatype->copyFromModifiedBuffer(recvbuf, 0, recvbufMod, 0, count);
10992 datatype->getADTool().stopAssembly(h);
10994 if(datatype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == sendbuf)) {
10995 datatype->deleteModifiedTypeBuffer(sendbufMod);
10998 if(datatype->isModifiedBufferRequired() ) {
10999 datatype->deleteModifiedTypeBuffer(recvbufMod);
11010#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
11011 template<
typename SENDTYPE,
typename RECVTYPE>
11058 template<
typename SENDTYPE,
typename RECVTYPE>
11081 if(h->
recvtype->getADTool().isOldPrimalsRequired()) {
11089 template<
typename SENDTYPE,
typename RECVTYPE>
11117 template<
typename SENDTYPE,
typename RECVTYPE>
11128 if(h->
recvtype->getADTool().isOldPrimalsRequired()) {
11148 template<
typename SENDTYPE,
typename RECVTYPE>
11150 typename RECVTYPE::Type* recvbuf,
int recvcount, RECVTYPE* recvtype,
int root,
AMPI_Comm comm) {
11153 if(!recvtype->getADTool().isActiveType()) {
11155 rStatus = MPI_Scatter(sendbuf, sendcount, sendtype->getMpiType(), recvbuf, recvcount, recvtype->getMpiType(), root,
11161 typename SENDTYPE::ModifiedType* sendbufMod =
nullptr;
11162 int sendbufElements = 0;
11168 if(sendtype->isModifiedBufferRequired() ) {
11169 sendtype->createModifiedTypeBuffer(sendbufMod, sendbufElements);
11171 sendbufMod =
reinterpret_cast<typename SENDTYPE::ModifiedType*
>(
const_cast<typename SENDTYPE::Type*
>(sendbuf));
11174 typename RECVTYPE::ModifiedType* recvbufMod =
nullptr;
11175 int recvbufElements = 0;
11179 recvbufElements = recvcount;
11181 recvbufElements = sendcount;
11184 if(recvtype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == recvbuf)) {
11185 recvtype->createModifiedTypeBuffer(recvbufMod, recvbufElements);
11187 recvbufMod =
reinterpret_cast<typename RECVTYPE::ModifiedType*
>(
const_cast<typename RECVTYPE::Type*
>(recvbuf));
11191 if(recvtype->getADTool().isHandleRequired()) {
11194 recvtype->getADTool().startAssembly(h);
11196 if(sendtype->isModifiedBufferRequired()) {
11197 sendtype->copyIntoModifiedBuffer(sendbuf, 0, sendbufMod, 0, sendcount *
getCommSize(comm));
11206 h->
sendbufCount = sendtype->computeActiveElements(sendcount);
11211 h->
recvbufCount = recvtype->computeActiveElements(recvcount);
11213 h->
recvbufCount = sendtype->computeActiveElements(sendcount);
11221 if(recvtype->getADTool().isOldPrimalsRequired()) {
11236 recvtype->createIndices(recvbuf, 0, h->
recvbufIndices, 0, recvcount);
11238 sendtype->createIndices(
const_cast<typename SENDTYPE::Type*
>(sendbuf), sendcount *
getCommRank(comm), h->
recvbufIndices,
11243 h->
funcReverse = AMPI_Scatter_b<SENDTYPE, RECVTYPE>;
11244 h->
funcForward = AMPI_Scatter_d<SENDTYPE, RECVTYPE>;
11245 h->
funcPrimal = AMPI_Scatter_p<SENDTYPE, RECVTYPE>;
11254 if(!recvtype->isModifiedBufferRequired()) {
11256 recvtype->clearIndices(recvbuf, 0, recvcount);
11258 sendtype->clearIndices(
const_cast<typename SENDTYPE::Type*
>(sendbuf), sendcount *
getCommRank(comm), sendcount);
11262 rStatus = MPI_Scatter(sendbufMod, sendcount, sendtype->getModifiedMpiType(), recvbufMod, recvcount,
11263 recvtype->getModifiedMpiType(), root, comm);
11264 recvtype->getADTool().addToolAction(h);
11266 if(recvtype->isModifiedBufferRequired()) {
11268 recvtype->copyFromModifiedBuffer(recvbuf, 0, recvbufMod, 0, recvcount);
11270 sendtype->copyFromModifiedBuffer(
const_cast<typename SENDTYPE::Type*
>(sendbuf), sendcount *
getCommRank(comm),
11271 sendbufMod, sendcount *
getCommRank(comm), sendcount);
11280 sendtype->registerValue(
const_cast<typename SENDTYPE::Type*
>(sendbuf), sendcount *
getCommRank(comm), h->
recvbufIndices,
11285 recvtype->getADTool().stopAssembly(h);
11288 if(sendtype->isModifiedBufferRequired() ) {
11289 sendtype->deleteModifiedTypeBuffer(sendbufMod);
11292 if(recvtype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == recvbuf)) {
11293 recvtype->deleteModifiedTypeBuffer(recvbufMod);
11303#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
11304 template<
typename SENDTYPE,
typename RECVTYPE>
11357 template<
typename SENDTYPE,
typename RECVTYPE>
11383 if(h->
recvtype->getADTool().isOldPrimalsRequired()) {
11391 template<
typename SENDTYPE,
typename RECVTYPE>
11422 template<
typename SENDTYPE,
typename RECVTYPE>
11433 if(h->
recvtype->getADTool().isOldPrimalsRequired()) {
11456 template<
typename SENDTYPE,
typename RECVTYPE>
11458 SENDTYPE* sendtype,
typename RECVTYPE::Type* recvbuf,
int recvcount, RECVTYPE* recvtype,
int root,
AMPI_Comm comm) {
11461 if(!recvtype->getADTool().isActiveType()) {
11463 rStatus = MPI_Scatterv(sendbuf, sendcounts, displs, sendtype->getMpiType(), recvbuf, recvcount, recvtype->getMpiType(),
11470 int displsTotalSize = 0;
11471 if(
nullptr != displs) {
11473 if(recvtype->isModifiedBufferRequired()) {
11477 typename SENDTYPE::ModifiedType* sendbufMod =
nullptr;
11478 int sendbufElements = 0;
11482 sendbufElements = displsTotalSize;
11484 if(sendtype->isModifiedBufferRequired() ) {
11485 sendtype->createModifiedTypeBuffer(sendbufMod, sendbufElements);
11487 sendbufMod =
reinterpret_cast<typename SENDTYPE::ModifiedType*
>(
const_cast<typename SENDTYPE::Type*
>(sendbuf));
11490 typename RECVTYPE::ModifiedType* recvbufMod =
nullptr;
11491 int recvbufElements = 0;
11495 recvbufElements = recvcount;
11500 if(recvtype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == recvbuf)) {
11501 recvtype->createModifiedTypeBuffer(recvbufMod, recvbufElements);
11503 recvbufMod =
reinterpret_cast<typename RECVTYPE::ModifiedType*
>(
const_cast<typename RECVTYPE::Type*
>(recvbuf));
11507 if(recvtype->getADTool().isHandleRequired()) {
11510 recvtype->getADTool().startAssembly(h);
11512 if(sendtype->isModifiedBufferRequired()) {
11514 sendtype->copyIntoModifiedBuffer(sendbuf, displs[i], sendbufMod, displsMod[i], sendcounts[i]);
11529 h->
recvbufCount = recvtype->computeActiveElements(recvcount);
11532 comm)]) - sendtype->computeActiveElements(displs[
getCommRank(comm)]);
11540 if(recvtype->getADTool().isOldPrimalsRequired()) {
11547 sendtype->getValues(sendbuf, displs[rank], h->
recvbufOldPrimals, 0, sendcounts[rank]);
11555 sendtype->getIndices(sendbuf, displs[i], h->
sendbufIndices, displsMod[i], sendcounts[i]);
11560 recvtype->createIndices(recvbuf, 0, h->
recvbufIndices, 0, recvcount);
11564 sendtype->createIndices(
const_cast<typename SENDTYPE::Type*
>(sendbuf), displs[rank], h->
recvbufIndices, 0,
11570 h->
funcReverse = AMPI_Scatterv_b<SENDTYPE, RECVTYPE>;
11571 h->
funcForward = AMPI_Scatterv_d<SENDTYPE, RECVTYPE>;
11572 h->
funcPrimal = AMPI_Scatterv_p<SENDTYPE, RECVTYPE>;
11582 if(!recvtype->isModifiedBufferRequired()) {
11584 recvtype->clearIndices(recvbuf, 0, recvcount);
11588 sendtype->clearIndices(
const_cast<typename SENDTYPE::Type*
>(sendbuf), displs[rank], sendcounts[rank]);
11593 rStatus = MPI_Scatterv(sendbufMod, sendcounts, displsMod, sendtype->getModifiedMpiType(), recvbufMod, recvcount,
11594 recvtype->getModifiedMpiType(), root, comm);
11595 recvtype->getADTool().addToolAction(h);
11597 if(recvtype->isModifiedBufferRequired()) {
11599 recvtype->copyFromModifiedBuffer(recvbuf, 0, recvbufMod, 0, recvcount);
11603 sendtype->copyFromModifiedBuffer(
const_cast<typename SENDTYPE::Type*
>(sendbuf), displs[rank], sendbufMod,
11604 displsMod[rank], sendcounts[rank]);
11616 sendtype->registerValue(
const_cast<typename SENDTYPE::Type*
>(sendbuf), displs[rank], h->
recvbufIndices,
11622 recvtype->getADTool().stopAssembly(h);
11623 if(recvtype->isModifiedBufferRequired()) {
11624 delete [] displsMod;
11628 if(sendtype->isModifiedBufferRequired() ) {
11629 sendtype->deleteModifiedTypeBuffer(sendbufMod);
11632 if(recvtype->isModifiedBufferRequired() && !(
AMPI_IN_PLACE == recvbuf)) {
11633 recvtype->deleteModifiedTypeBuffer(recvbufMod);
11644#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
11646 return MPI_Buffer_attach(buffer, size);
11650#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
11652 return MPI_Buffer_detach(buffer_addr, size);
11656#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
11658 return MPI_Cancel(&request->
request);
11662#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
11663 template<
typename DATATYPE>
11665 return MPI_Get_count(status, datatype->getModifiedMpiType(), count);
11669#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
11671 return MPI_Iprobe(source, tag, comm, flag, status);
11675#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
11677 return MPI_Probe(source, tag, comm, status);
11681#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
11683 return MPI_Request_get_status(request.
request, flag, status);
11687#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
11689 return MPI_Test_cancelled(status, flag);
11693#if MEDI_MPI_VERSION_3_1 <= MEDI_MPI_TARGET
11695 return MPI_Aint_add(base, disp);
11699#if MEDI_MPI_VERSION_3_1 <= MEDI_MPI_TARGET
11701 return MPI_Aint_diff(addr1, addr2);
11705#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
11707 return MPI_Get_address(location, address);
11711#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
11712 template<
typename DATATYPE>
11714 return MPI_Get_elements(status, datatype->getModifiedMpiType(), count);
11718#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
11719 template<
typename DATATYPE>
11721 return MPI_Get_elements_x(status, datatype->getModifiedMpiType(), count);
11725#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
11726 template<
typename DATATYPE>
11729 return MPI_Type_get_contents(datatype->getModifiedMpiType(), max_integers, max_addresses, max_datatypes,
11730 array_of_integers, array_of_addresses, array_of_datatypes);
11734#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
11735 template<
typename DATATYPE>
11738 return MPI_Type_get_envelope(datatype->getModifiedMpiType(), num_integers, num_addresses, num_datatypes, combiner);
11742#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
11743 template<
typename DATATYPE>
11745 return MPI_Type_get_extent(datatype->getModifiedMpiType(), lb, extent);
11749#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
11750 template<
typename DATATYPE>
11752 return MPI_Type_get_extent_x(datatype->getModifiedMpiType(), lb, extent);
11756#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
11757 template<
typename DATATYPE>
11759 return MPI_Type_get_true_extent(datatype->getModifiedMpiType(), true_lb, true_extent);
11763#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
11764 template<
typename DATATYPE>
11766 return MPI_Type_get_true_extent_x(datatype->getModifiedMpiType(), true_lb, true_extent);
11770#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
11771 template<
typename DATATYPE>
11773 return MPI_Type_size(datatype->getModifiedMpiType(), size);
11777#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
11778 template<
typename DATATYPE>
11780 return MPI_Type_size_x(datatype->getModifiedMpiType(), size);
11784#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
11786 return MPI_Barrier(comm);
11790#if MEDI_MPI_VERSION_2_2 <= MEDI_MPI_TARGET
11798#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
11800 return MPI_Comm_compare(comm1, comm2, result);
11804#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
11806 return MPI_Comm_create(comm, group, newcomm);
11810#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
11812 return MPI_Comm_create_group(comm, group, tag, newcomm);
11816#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
11819 return MPI_Comm_create_keyval(comm_copy_attr_fn, comm_delete_attr_fn, comm_keyval, extra_state);
11823#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
11825 return MPI_Comm_delete_attr(comm, comm_keyval);
11829#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
11831 return MPI_Comm_dup(comm, newcomm);
11835#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
11837 return MPI_Comm_dup_with_info(comm, info, newcomm);
11841#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
11843 return MPI_Comm_free(comm);
11847#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
11849 return MPI_Comm_free_keyval(comm_keyval);
11853#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
11855 return MPI_Comm_get_attr(comm, comm_keyval, attribute_val, flag);
11859#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
11861 return MPI_Comm_get_info(comm, info_used);
11865#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
11867 return MPI_Comm_get_name(comm, comm_name, resultlen);
11871#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
11873 return MPI_Comm_group(comm, group);
11877#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
11879 return MPI_Comm_idup(comm, newcomm, &request->
request);
11883#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
11885 return MPI_Comm_rank(comm, rank);
11889#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
11891 return MPI_Comm_remote_group(comm, group);
11895#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
11897 return MPI_Comm_remote_size(comm, size);
11901#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
11903 return MPI_Comm_set_attr(comm, comm_keyval, attribute_val);
11907#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
11909 return MPI_Comm_set_info(comm, info);
11913#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
11915 return MPI_Comm_set_name(comm, comm_name);
11919#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
11921 return MPI_Comm_size(comm, size);
11925#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
11927 return MPI_Comm_split(comm, color, key, newcomm);
11931#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
11933 return MPI_Comm_split_type(comm, split_type, key, info, newcomm);
11937#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
11939 return MPI_Comm_test_inter(comm, flag);
11943#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
11945 return MPI_Group_compare(group1, group2, result);
11949#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
11951 return MPI_Group_difference(group1, group2, newgroup);
11955#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
11957 return MPI_Group_excl(group, n, ranks, newgroup);
11961#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
11963 return MPI_Group_free(group);
11967#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
11969 return MPI_Group_incl(group, n, ranks, newgroup);
11973#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
11975 return MPI_Group_intersection(group1, group2, newgroup);
11979#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
11981 return MPI_Group_range_excl(group, n, ranges, newgroup);
11985#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
11987 return MPI_Group_range_incl(group, n, ranges, newgroup);
11991#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
11993 return MPI_Group_rank(group, rank);
11997#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
11999 return MPI_Group_size(group, size);
12003#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
12006 return MPI_Group_translate_ranks(group1, n, ranks1, group2, ranks2);
12010#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
12012 return MPI_Group_union(group1, group2, newgroup);
12016#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
12019 return MPI_Intercomm_create(local_comm, local_leader, peer_comm, remote_leader, tag, newintercomm);
12023#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
12025 return MPI_Intercomm_merge(intercomm, high, newintracomm);
12029#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12032 return MPI_Type_create_keyval(type_copy_attr_fn, type_delete_attr_fn, type_keyval, extra_state);
12036#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12037 template<
typename DATATYPE>
12039 return MPI_Type_delete_attr(datatype->getModifiedMpiType(), type_keyval);
12043#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12045 return MPI_Type_free_keyval(type_keyval);
12049#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12050 template<
typename DATATYPE>
12052 return MPI_Type_get_attr(datatype->getModifiedMpiType(), type_keyval, attribute_val, flag);
12056#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12057 template<
typename DATATYPE>
12059 return MPI_Type_get_name(datatype->getModifiedMpiType(), type_name, resultlen);
12063#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12064 template<
typename DATATYPE>
12066 return MPI_Type_set_attr(datatype->getModifiedMpiType(), type_keyval, attribute_val);
12070#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12071 template<
typename DATATYPE>
12073 return MPI_Type_set_name(datatype->getModifiedMpiType(), type_name);
12077#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12080 return MPI_Win_create_keyval(win_copy_attr_fn, win_delete_attr_fn, win_keyval, extra_state);
12084#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12086 return MPI_Win_delete_attr(win, win_keyval);
12090#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12092 return MPI_Win_free_keyval(win_keyval);
12096#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12098 return MPI_Win_get_attr(win, win_keyval, attribute_val, flag);
12102#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12104 return MPI_Win_get_name(win, win_name, resultlen);
12108#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12110 return MPI_Win_set_attr(win, win_keyval, attribute_val);
12114#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12116 return MPI_Win_set_name(win, win_name);
12120#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
12122 return MPI_Cart_coords(comm, rank, maxdims, coords);
12126#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
12129 return MPI_Cart_create(comm_old, ndims, dims, periods, reorder, comm_cart);
12133#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
12135 return MPI_Cart_get(comm, maxdims, dims, periods, coords);
12139#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
12142 return MPI_Cart_map(comm, ndims, dims, periods, newrank);
12146#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
12148 return MPI_Cart_rank(comm, coords, rank);
12152#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
12154 return MPI_Cart_shift(comm, direction, disp, rank_source, rank_dest);
12158#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
12160 return MPI_Cart_sub(comm, remain_dims, newcomm);
12164#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
12166 return MPI_Cartdim_get(comm, ndims);
12170#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
12172 return MPI_Dims_create(nnodes, ndims, dims);
12176#if MEDI_MPI_VERSION_2_2 <= MEDI_MPI_TARGET
12180 return MPI_Dist_graph_create(comm_old, n, sources, degrees, destinations, weights, info, reorder, comm_dist_graph);
12184#if MEDI_MPI_VERSION_2_2 <= MEDI_MPI_TARGET
12188 return MPI_Dist_graph_create_adjacent(comm_old, indegree, sources, sourceweights, outdegree, destinations, destweights,
12189 info, reorder, comm_dist_graph);
12193#if MEDI_MPI_VERSION_2_2 <= MEDI_MPI_TARGET
12195 int maxoutdegree,
int* destinations,
int* destweights) {
12196 return MPI_Dist_graph_neighbors(comm, maxindegree, sources, sourceweights, maxoutdegree, destinations, destweights);
12200#if MEDI_MPI_VERSION_2_2 <= MEDI_MPI_TARGET
12202 return MPI_Dist_graph_neighbors_count(comm, indegree, outdegree, weighted);
12206#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
12209 return MPI_Graph_create(comm_old, nnodes, index, edges, reorder, comm_graph);
12213#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
12215 return MPI_Graph_get(comm, maxindex, maxedges, index, edges);
12219#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
12222 return MPI_Graph_map(comm, nnodes, index, edges, newrank);
12226#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
12228 return MPI_Graph_neighbors(comm, rank, maxneighbors, neighbors);
12232#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
12234 return MPI_Graph_neighbors_count(comm, rank, nneighbors);
12238#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
12240 return MPI_Graphdims_get(comm, nnodes, nedges);
12244#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
12246 return MPI_Topo_test(comm, status);
12250#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
12252 return MPI_Wtick();
12256#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
12258 return MPI_Wtime();
12262#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
12264 return MPI_Abort(comm, errorcode);
12268#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12270 return MPI_Add_error_class(errorclass);
12274#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12276 return MPI_Add_error_code(errorclass, errorcode);
12280#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12282 return MPI_Add_error_string(errorcode,
string);
12286#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12288 return MPI_Alloc_mem(size, info, baseptr);
12292#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12294 return MPI_Comm_call_errhandler(comm, errorcode);
12298#if MEDI_MPI_VERSION_2_2 <= MEDI_MPI_TARGET
12300 return MPI_Comm_create_errhandler(comm_errhandler_fn, errhandler);
12304#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET && MEDI_MPI_TARGET < MEDI_MPI_VERSION_2_2
12306 return MPI_Comm_create_errhandler(comm_errhandler_fn, errhandler);
12310#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12312 return MPI_Comm_get_errhandler(comm, errhandler);
12316#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12318 return MPI_Comm_set_errhandler(comm, errhandler);
12322#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
12324 return MPI_Errhandler_free(errhandler);
12328#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
12330 return MPI_Error_class(errorcode, errorclass);
12334#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
12336 return MPI_Error_string(errorcode,
string, resultlen);
12340#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12342 return MPI_File_call_errhandler(fh, errorcode);
12346#if MEDI_MPI_VERSION_2_2 <= MEDI_MPI_TARGET
12348 return MPI_File_create_errhandler(file_errhandler_fn, errhandler);
12352#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET && MEDI_MPI_TARGET < MEDI_MPI_VERSION_2_2
12354 return MPI_File_create_errhandler(file_errhandler_fn, errhandler);
12358#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12360 return MPI_File_get_errhandler(file, errhandler);
12364#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12366 return MPI_File_set_errhandler(file, errhandler);
12370#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
12372 return MPI_Finalize();
12376#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12378 return MPI_Finalized(flag);
12382#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12384 return MPI_Free_mem(base);
12388#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
12390 return MPI_Get_library_version(version, resultlen);
12394#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
12396 return MPI_Get_processor_name(name, resultlen);
12400#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
12402 return MPI_Get_version(version, subversion);
12406#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
12408 return MPI_Initialized(flag);
12412#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12414 return MPI_Win_call_errhandler(win, errorcode);
12418#if MEDI_MPI_VERSION_2_2 <= MEDI_MPI_TARGET
12420 return MPI_Win_create_errhandler(win_errhandler_fn, errhandler);
12424#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET && MEDI_MPI_TARGET < MEDI_MPI_VERSION_2_2
12426 return MPI_Win_create_errhandler(win_errhandler_fn, errhandler);
12430#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12432 return MPI_Win_get_errhandler(win, errhandler);
12436#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12438 return MPI_Win_set_errhandler(win, errhandler);
12442#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12444 return MPI_Info_create(info);
12448#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12450 return MPI_Info_delete(info, key);
12454#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12456 return MPI_Info_dup(info, newinfo);
12460#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12462 return MPI_Info_free(info);
12466#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12468 return MPI_Info_get(info, key, valuelen, value, flag);
12472#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12474 return MPI_Info_get_nkeys(info, nkeys);
12478#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12480 return MPI_Info_get_nthkey(info, n, key);
12484#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12486 return MPI_Info_get_valuelen(info, key, valuelen, flag);
12490#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12492 return MPI_Info_set(info, key, value);
12496#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12498 return MPI_Close_port(port_name);
12502#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12505 return MPI_Comm_accept(port_name, info, root, comm, newcomm);
12509#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12512 return MPI_Comm_connect(port_name, info, root, comm, newcomm);
12516#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12518 return MPI_Comm_disconnect(comm);
12522#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12524 return MPI_Comm_get_parent(parent);
12528#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12530 return MPI_Comm_join(fd, intercomm);
12534#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12537 return MPI_Comm_spawn(command, argv, maxprocs, info, root, comm, intercomm, array_of_errcodes);
12541#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12544 AMPI_Comm* intercomm,
int* array_of_errcodes) {
12545 return MPI_Comm_spawn_multiple(count, array_of_commands, array_of_argv, array_of_maxprocs, array_of_info, root, comm,
12546 intercomm, array_of_errcodes);
12550#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12552 return MPI_Lookup_name(service_name, info, port_name);
12556#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12558 return MPI_Open_port(info, port_name);
12562#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12565 return MPI_Publish_name(service_name, info, port_name);
12569#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12572 return MPI_Unpublish_name(service_name, info, port_name);
12576#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12578 return MPI_Grequest_complete(request.
request);
12582#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12585 return MPI_Grequest_start(query_fn, free_fn, cancel_fn, extra_state, &request->
request);
12589#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12591 return MPI_Is_thread_main(flag);
12595#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12597 return MPI_Query_thread(provided);
12601#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12603 return MPI_Status_set_cancelled(status, flag);
12607#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12608 template<
typename DATATYPE>
12610 return MPI_Status_set_elements(status, datatype->getModifiedMpiType(), count);
12614#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
12615 template<
typename DATATYPE>
12617 return MPI_Status_set_elements_x(status, datatype->getModifiedMpiType(), count);
12621#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12623 return MPI_File_close(fh);
12627#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12629 return MPI_File_delete(filename, info);
12633#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12635 return MPI_File_get_amode(fh, amode);
12639#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12641 return MPI_File_get_atomicity(fh, flag);
12645#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12647 return MPI_File_get_byte_offset(fh, offset, disp);
12651#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12653 return MPI_File_get_group(fh, group);
12657#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12659 return MPI_File_get_info(fh, info_used);
12663#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12665 return MPI_File_get_position(fh, offset);
12669#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12671 return MPI_File_get_position_shared(fh, offset);
12675#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12677 return MPI_File_get_size(fh, size);
12681#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12682 template<
typename DATATYPE>
12684 return MPI_File_get_type_extent(fh, datatype->getModifiedMpiType(), extent);
12688#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12689 template<
typename ETYPE,
typename FILETYPE>
12691 return MPI_File_get_view(fh, disp, etype->getModifiedMpiType(), filetype->getModifiedMpiType(), datarep);
12695#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12696 template<
typename DATATYPE>
12698 return MPI_File_iread(fh, buf, count, datatype->getModifiedMpiType(), request);
12702#if MEDI_MPI_VERSION_3_1 <= MEDI_MPI_TARGET
12703 template<
typename DATATYPE>
12705 return MPI_File_iread_all(fh, buf, count, datatype->getModifiedMpiType(), &request->
request);
12709#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12710 template<
typename DATATYPE>
12713 return MPI_File_iread_at(fh, offset, buf, count, datatype->getModifiedMpiType(), &request->
request);
12717#if MEDI_MPI_VERSION_3_1 <= MEDI_MPI_TARGET
12718 template<
typename DATATYPE>
12721 return MPI_File_iread_at_all(fh, offset, buf, count, datatype->getModifiedMpiType(), &request->
request);
12725#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12726 template<
typename DATATYPE>
12728 return MPI_File_iread_shared(fh, buf, count, datatype->getModifiedMpiType(), &request->
request);
12732#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12733 template<
typename DATATYPE>
12735 return MPI_File_iwrite(fh, buf, count, datatype->getModifiedMpiType(), &request->
request);
12739#if MEDI_MPI_VERSION_3_1 <= MEDI_MPI_TARGET
12740 template<
typename DATATYPE>
12742 return MPI_File_iwrite_all(fh, buf, count, datatype->getModifiedMpiType(), &request->
request);
12746#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12747 template<
typename DATATYPE>
12750 return MPI_File_iwrite_at(fh, offset, buf, count, datatype->getModifiedMpiType(), &request->
request);
12754#if MEDI_MPI_VERSION_3_1 <= MEDI_MPI_TARGET
12755 template<
typename DATATYPE>
12758 return MPI_File_iwrite_at_all(fh, offset, buf, count, datatype->getModifiedMpiType(), &request->
request);
12762#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12763 template<
typename DATATYPE>
12766 return MPI_File_iwrite_shared(fh, buf, count, datatype->getModifiedMpiType(), &request->
request);
12770#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12773 return MPI_File_open(comm, filename, amode, info, fh);
12777#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12779 return MPI_File_preallocate(fh, size);
12783#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12784 template<
typename DATATYPE>
12786 return MPI_File_read(fh, buf, count, datatype->getModifiedMpiType(), status);
12790#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12791 template<
typename DATATYPE>
12793 return MPI_File_read_all(fh, buf, count, datatype->getModifiedMpiType(), status);
12797#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12798 template<
typename DATATYPE>
12800 return MPI_File_read_all_begin(fh, buf, count, datatype->getModifiedMpiType());
12804#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12806 return MPI_File_read_all_end(fh, buf, status);
12810#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12811 template<
typename DATATYPE>
12814 return MPI_File_read_at(fh, offset, buf, count, datatype->getModifiedMpiType(), status);
12818#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12819 template<
typename DATATYPE>
12822 return MPI_File_read_at_all(fh, offset, buf, count, datatype->getModifiedMpiType(), status);
12826#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12827 template<
typename DATATYPE>
12829 return MPI_File_read_at_all_begin(fh, offset, buf, count, datatype->getModifiedMpiType());
12833#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12835 return MPI_File_read_at_all_end(fh, buf, status);
12839#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12840 template<
typename DATATYPE>
12842 return MPI_File_read_ordered(fh, buf, count, datatype->getModifiedMpiType(), status);
12846#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12847 template<
typename DATATYPE>
12849 return MPI_File_read_ordered_begin(fh, buf, count, datatype->getModifiedMpiType());
12853#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12855 return MPI_File_read_ordered_end(fh, buf, status);
12859#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12860 template<
typename DATATYPE>
12862 return MPI_File_read_shared(fh, buf, count, datatype->getModifiedMpiType(), status);
12866#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12868 return MPI_File_seek(fh, offset, whence);
12872#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12874 return MPI_File_seek_shared(fh, offset, whence);
12878#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12880 return MPI_File_set_atomicity(fh, flag);
12884#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12886 return MPI_File_set_info(fh, info);
12890#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12892 return MPI_File_set_size(fh, size);
12896#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12897 template<
typename ETYPE,
typename FILETYPE>
12900 return MPI_File_set_view(fh, disp, etype->getModifiedMpiType(), filetype->getModifiedMpiType(), datarep, info);
12904#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12906 return MPI_File_sync(fh);
12910#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12911 template<
typename DATATYPE>
12913 return MPI_File_write(fh, buf, count, datatype->getModifiedMpiType(), status);
12917#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12918 template<
typename DATATYPE>
12920 return MPI_File_write_all(fh, buf, count, datatype->getModifiedMpiType(), status);
12924#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12925 template<
typename DATATYPE>
12927 return MPI_File_write_all_begin(fh, buf, count, datatype->getModifiedMpiType());
12931#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12933 return MPI_File_write_all_end(fh, buf, status);
12937#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12938 template<
typename DATATYPE>
12941 return MPI_File_write_at(fh, offset, buf, count, datatype->getModifiedMpiType(), status);
12945#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12946 template<
typename DATATYPE>
12949 return MPI_File_write_at_all(fh, offset, buf, count, datatype->getModifiedMpiType(), status);
12953#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12954 template<
typename DATATYPE>
12956 DATATYPE* datatype) {
12957 return MPI_File_write_at_all_begin(fh, offset, buf, count, datatype->getModifiedMpiType());
12961#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12963 return MPI_File_write_at_all_end(fh, buf, status);
12967#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12968 template<
typename DATATYPE>
12970 return MPI_File_write_ordered(fh, buf, count, datatype->getModifiedMpiType(), status);
12974#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12975 template<
typename DATATYPE>
12977 return MPI_File_write_ordered_begin(fh, buf, count, datatype->getModifiedMpiType());
12981#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12983 return MPI_File_write_ordered_end(fh, buf, status);
12987#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12988 template<
typename DATATYPE>
12990 return MPI_File_write_shared(fh, buf, count, datatype->getModifiedMpiType(), status);
12994#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
12998 return MPI_Register_datarep(datarep, read_conversion_fn, write_conversion_fn, dtype_file_extent_fn, extra_state);
13002#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13004 return MPI_Comm_c2f(comm);
13008#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13010 return MPI_Comm_f2c(comm);
13014#if MEDI_MPI_VERSION_2_1 <= MEDI_MPI_TARGET
13016 return MPI_Errhandler_c2f(errhandler);
13020#if MEDI_MPI_VERSION_2_1 <= MEDI_MPI_TARGET
13022 return MPI_Errhandler_f2c(errhandler);
13026#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13028 return MPI_File_c2f(file);
13032#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13034 return MPI_File_f2c(file);
13038#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13040 return MPI_Group_c2f(group);
13044#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13046 return MPI_Group_f2c(group);
13050#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13052 return MPI_Info_c2f(info);
13056#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13058 return MPI_Info_f2c(info);
13062#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13064 return MPI_Status_c2f(c_status, f_status);
13068#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13070 return MPI_Status_f2c(f_status, c_status);
13074#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13076 return MPI_Win_c2f(win);
13080#if MEDI_MPI_VERSION_2_0 <= MEDI_MPI_TARGET
13082 return MPI_Win_f2c(win);
13086#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
13088 return MPI_T_category_changed(stamp);
13092#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
13094 return MPI_T_category_get_categories(cat_index, len, indices);
13098#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
13100 return MPI_T_category_get_cvars(cat_index, len, indices);
13104#if MEDI_MPI_VERSION_3_1 <= MEDI_MPI_TARGET
13106 return MPI_T_category_get_index(name, cat_index);
13110#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
13112 int* num_pvars,
int* num_categories) {
13113 return MPI_T_category_get_info(cat_index, name, name_len, desc, desc_len, num_cvars, num_pvars, num_categories);
13117#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
13119 return MPI_T_category_get_num(num_cat);
13123#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
13125 return MPI_T_category_get_pvars(cat_index, len, indices);
13129#if MEDI_MPI_VERSION_3_1 <= MEDI_MPI_TARGET
13131 return MPI_T_cvar_get_index(name, cvar_index);
13135#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
13137 return MPI_T_cvar_get_num(num_cvar);
13141#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
13143 return MPI_T_cvar_handle_alloc(cvar_index, obj_handle, handle, count);
13147#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
13149 return MPI_T_cvar_handle_free(handle);
13153#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
13155 return MPI_T_cvar_read(handle, buf);
13159#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
13161 return MPI_T_cvar_write(handle, buf);
13165#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
13167 return MPI_T_enum_get_info(enumtype, num, name, name_len);
13171#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
13173 return MPI_T_enum_get_item(enumtype, index, value, name, name_len);
13177#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
13179 return MPI_T_finalize();
13183#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
13185 return MPI_T_init_thread(required, provided);
13189#if MEDI_MPI_VERSION_3_1 <= MEDI_MPI_TARGET
13191 return MPI_T_pvar_get_index(name, var_class, pvar_index);
13195#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
13197 return MPI_T_pvar_get_num(num_pvar);
13201#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
13204 return MPI_T_pvar_handle_alloc(session, pvar_index, obj_handle, handle, count);
13208#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
13210 return MPI_T_pvar_handle_free(session, handle);
13214#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
13216 return MPI_T_pvar_read(session, handle, buf);
13220#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
13222 return MPI_T_pvar_readreset(session, handle, buf);
13226#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
13228 return MPI_T_pvar_reset(session, handle);
13232#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
13234 return MPI_T_pvar_session_create(session);
13238#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
13240 return MPI_T_pvar_session_free(session);
13244#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
13246 return MPI_T_pvar_start(session, handle);
13250#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
13252 return MPI_T_pvar_stop(session, handle);
13256#if MEDI_MPI_VERSION_3_0 <= MEDI_MPI_TARGET
13258 return MPI_T_pvar_write(session, handle, buf);
13262#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET && MEDI_MPI_TARGET < MEDI_MPI_VERSION_3_0
13263 inline int AMPI_Address(
void* location,
AMPI_Aint* address) {
13264 return MPI_Address(location, address);
13268#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
13270 return MPI_Attr_delete(comm, keyval);
13274#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
13276 return MPI_Attr_get(comm, keyval, attribute_val, flag);
13280#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
13282 return MPI_Attr_put(comm, keyval, attribute_val);
13286#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
13288 void* extra_state) {
13289 return MPI_Keyval_create(copy_fn, delete_fn, keyval, extra_state);
13293#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
13295 return MPI_Keyval_free(keyval);
13299#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET && MEDI_MPI_TARGET < MEDI_MPI_VERSION_3_0
13300 inline int AMPI_Errhandler_create(AMPI_Handler_function* function,
AMPI_Errhandler* errhandler) {
13301 return MPI_Errhandler_create(function, errhandler);
13305#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET && MEDI_MPI_TARGET < MEDI_MPI_VERSION_3_0
13307 return MPI_Errhandler_get(comm, errhandler);
13311#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET && MEDI_MPI_TARGET < MEDI_MPI_VERSION_3_0
13313 return MPI_Errhandler_set(comm, errhandler);
13317#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET && MEDI_MPI_TARGET < MEDI_MPI_VERSION_3_0
13318 template<
typename DATATYPE>
13319 inline int AMPI_Type_extent(DATATYPE* datatype,
AMPI_Aint* extent) {
13320 return MPI_Type_extent(datatype->getModifiedMpiType(), extent);
13324#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET && MEDI_MPI_TARGET < MEDI_MPI_VERSION_3_0
13325 template<
typename DATATYPE>
13326 inline int AMPI_Type_lb(DATATYPE* datatype,
AMPI_Aint* displacement) {
13327 return MPI_Type_lb(datatype->getModifiedMpiType(), displacement);
13331#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET && MEDI_MPI_TARGET < MEDI_MPI_VERSION_3_0
13332 template<
typename DATATYPE>
13333 inline int AMPI_Type_ub(DATATYPE* datatype,
AMPI_Aint* displacement) {
13334 return MPI_Type_ub(datatype->getModifiedMpiType(), displacement);
13339#if MEDI_MPI_VERSION_1_0 <= MEDI_MPI_TARGET
13340#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.
Wrapper interface for MPI types in communications.
Definition typeInterface.hpp:63
#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:9035
int AMPI_Comm_free_keyval(int *comm_keyval)
Definition ampiFunctions.hpp:11848
int AMPI_T_enum_get_info(MPI_T_enum enumtype, int *num, char *name, int *name_len)
Definition ampiFunctions.hpp:13166
int AMPI_Info_dup(MPI_Info info, MPI_Info *newinfo)
Definition ampiFunctions.hpp:12455
MPI_Comm_errhandler_function AMPI_Comm_errhandler_function
Definition ampiDefinitions.h:848
int AMPI_Errhandler_free(MPI_Errhandler *errhandler)
Definition ampiFunctions.hpp:12323
int AMPI_Topo_test(MPI_Comm comm, int *status)
Definition ampiFunctions.hpp:12245
MPI_Win AMPI_Win_f2c(MPI_Fint win)
Definition ampiFunctions.hpp:13081
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:10845
void AMPI_Irsend_d(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:1268
void AMPI_Iscatter_p_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:9924
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:4061
void AMPI_Iscatter_d_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:9964
int AMPI_File_get_amode(MPI_File fh, int *amode)
Definition ampiFunctions.hpp:12634
int AMPI_Send_init_postEnd(HandleBase *handle)
Definition ampiFunctions.hpp:3266
void AMPI_Igatherv_b(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:9122
int AMPI_File_create_errhandler(AMPI_File_errhandler_function *file_errhandler_fn, MPI_Errhandler *errhandler)
Definition ampiFunctions.hpp:12347
int AMPI_T_pvar_stop(MPI_T_pvar_session session, MPI_T_pvar_handle handle)
Definition ampiFunctions.hpp:13251
int AMPI_Free_mem(void *base)
Definition ampiFunctions.hpp:12383
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:12583
int AMPI_File_write_all_begin(MPI_File fh, const void *buf, int count, DATATYPE *datatype)
Definition ampiFunctions.hpp:12926
MPI_Datarep_conversion_function AMPI_Datarep_conversion_function
Definition ampiDefinitions.h:878
void AMPI_Irecv_d(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:1004
int AMPI_Group_intersection(MPI_Group group1, MPI_Group group2, MPI_Group *newgroup)
Definition ampiFunctions.hpp:11974
int AMPI_Info_delete(MPI_Info info, const char *key)
Definition ampiFunctions.hpp:12449
int AMPI_Get_elements(const MPI_Status *status, DATATYPE *datatype, int *count)
Definition ampiFunctions.hpp:11713
void AMPI_Igather_d_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:8694
void AMPI_Ibcast_wrap_d(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:8299
void AMPI_Isend_p(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:1490
MPI_Delete_function AMPI_Delete_function
Definition ampiDefinitions.h:884
void AMPI_Reduce_global_b(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:10806
void AMPI_Iallreduce_global_p(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:7071
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:1813
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:467
int AMPI_File_write_all_end(MPI_File fh, const void *buf, MPI_Status *status)
Definition ampiFunctions.hpp:12932
void AMPI_Gatherv_b(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:6028
int AMPI_Comm_delete_attr(MPI_Comm comm, int comm_keyval)
Definition ampiFunctions.hpp:11824
int AMPI_Type_get_true_extent_x(DATATYPE *datatype, MPI_Count *true_lb, MPI_Count *true_extent)
Definition ampiFunctions.hpp:11765
void AMPI_Imrecv_p_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:725
int AMPI_Close_port(const char *port_name)
Definition ampiFunctions.hpp:12497
int AMPI_T_pvar_start(MPI_T_pvar_session session, MPI_T_pvar_handle handle)
Definition ampiFunctions.hpp:13245
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:12220
int AMPI_Attr_delete(MPI_Comm comm, int keyval)
Definition ampiFunctions.hpp:13269
MPI_Aint AMPI_Aint_add(MPI_Aint base, MPI_Aint disp)
Definition ampiFunctions.hpp:11694
void AMPI_Iallgatherv_b(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:6745
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:2032
int AMPI_Cart_coords(MPI_Comm comm, int rank, int maxdims, int *coords)
Definition ampiFunctions.hpp:12121
MPI_Aint AMPI_Aint_diff(MPI_Aint addr1, MPI_Aint addr2)
Definition ampiFunctions.hpp:11700
int AMPI_File_read_ordered(MPI_File fh, void *buf, int count, DATATYPE *datatype, MPI_Status *status)
Definition ampiFunctions.hpp:12841
void AMPI_Iscatterv_b_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:10421
int AMPI_Comm_join(int fd, MPI_Comm *intercomm)
Definition ampiFunctions.hpp:12529
int AMPI_T_finalize()
Definition ampiFunctions.hpp:13178
int AMPI_Comm_group(MPI_Comm comm, MPI_Group *group)
Definition ampiFunctions.hpp:11872
void AMPI_Issend_d_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:1778
void AMPI_Bsend_d(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:88
int AMPI_Status_set_cancelled(MPI_Status *status, int flag)
Definition ampiFunctions.hpp:12602
int AMPI_Iallreduce_global_finish(HandleBase *handle)
Definition ampiFunctions.hpp:7333
int AMPI_T_enum_get_item(MPI_T_enum enumtype, int index, int *value, char *name, int *name_len)
Definition ampiFunctions.hpp:13172
void AMPI_Igather_d(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:8672
int AMPI_Add_error_code(int errorclass, int *errorcode)
Definition ampiFunctions.hpp:12275
int AMPI_Open_port(MPI_Info info, char *port_name)
Definition ampiFunctions.hpp:12557
int AMPI_Barrier(MPI_Comm comm)
Definition ampiFunctions.hpp:11785
void AMPI_Send_d(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:2971
void AMPI_Iscatterv_p_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:10333
int AMPI_Info_get_nthkey(MPI_Info info, int n, char *key)
Definition ampiFunctions.hpp:12479
void AMPI_Alltoall_p(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:4813
void AMPI_Bsend_p(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:72
void AMPI_Imrecv_d(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:739
int AMPI_Info_free(MPI_Info *info)
Definition ampiFunctions.hpp:12461
void AMPI_Alltoallv_p(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:5078
int AMPI_Dist_graph_neighbors_count(MPI_Comm comm, int *indegree, int *outdegree, int *weighted)
Definition ampiFunctions.hpp:12201
void AMPI_Alltoallv_b(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:5143
int AMPI_File_iwrite_all(MPI_File fh, const void *buf, int count, DATATYPE *datatype, AMPI_Request *request)
Definition ampiFunctions.hpp:12741
int AMPI_File_iread(MPI_File fh, void *buf, int count, DATATYPE *datatype, AMPI_Request *request)
Definition ampiFunctions.hpp:12697
int AMPI_Type_set_name(DATATYPE *datatype, const char *type_name)
Definition ampiFunctions.hpp:12072
int AMPI_Win_get_errhandler(MPI_Win win, MPI_Errhandler *errhandler)
Definition ampiFunctions.hpp:12431
int AMPI_File_get_position_shared(MPI_File fh, MPI_Offset *offset)
Definition ampiFunctions.hpp:12670
int AMPI_T_pvar_readreset(MPI_T_pvar_session session, MPI_T_pvar_handle handle, void *buf)
Definition ampiFunctions.hpp:13221
void AMPI_Ireduce_global_b(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:9560
int AMPI_Ssend_init_postEnd(HandleBase *handle)
Definition ampiFunctions.hpp:3895
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:2724
int AMPI_Bsend_init_finish(HandleBase *handle)
Definition ampiFunctions.hpp:590
int AMPI_Bsend(const typename DATATYPE::Type *buf, int count, DATATYPE *datatype, int dest, int tag, MPI_Comm comm)
Definition ampiFunctions.hpp:119
int AMPI_Iallgather_finish(HandleBase *handle)
Definition ampiFunctions.hpp:6539
int AMPI_File_get_position(MPI_File fh, MPI_Offset *offset)
Definition ampiFunctions.hpp:12664
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:12127
void AMPI_Ireduce_global_d(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:9521
void AMPI_Gather_p(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:5667
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:5177
int AMPI_Irsend_finish(HandleBase *handle)
Definition ampiFunctions.hpp:1403
int AMPI_Probe(int source, int tag, MPI_Comm comm, MPI_Status *status)
Definition ampiFunctions.hpp:11676
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:13111
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:4331
int AMPI_Ialltoallv_finish(HandleBase *handle)
Definition ampiFunctions.hpp:8124
int AMPI_File_get_size(MPI_File fh, MPI_Offset *size)
Definition ampiFunctions.hpp:12676
int AMPI_Add_error_class(int *errorclass)
Definition ampiFunctions.hpp:12269
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:5758
void AMPI_Issend_p_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:1753
void AMPI_Recv_b(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:2193
void AMPI_Iallgatherv_p(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:6668
int AMPI_Isend_finish(HandleBase *handle)
Definition ampiFunctions.hpp:1650
MPI_File_errhandler_function AMPI_File_errhandler_function
Definition ampiDefinitions.h:854
int AMPI_Keyval_free(int *keyval)
Definition ampiFunctions.hpp:13294
int AMPI_Is_thread_main(int *flag)
Definition ampiFunctions.hpp:12590
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:11772
void AMPI_Ialltoallv_d_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:7897
int AMPI_Comm_size(MPI_Comm comm, int *size)
Definition ampiFunctions.hpp:11920
int AMPI_Get_library_version(char *version, int *resultlen)
Definition ampiFunctions.hpp:12389
int AMPI_Iscatter_finish(HandleBase *handle)
Definition ampiFunctions.hpp:10164
int AMPI_Buffer_attach(void *buffer, int size)
Definition ampiFunctions.hpp:11645
int AMPI_T_pvar_read(MPI_T_pvar_session session, MPI_T_pvar_handle handle, void *buf)
Definition ampiFunctions.hpp:13215
int AMPI_File_set_size(MPI_File fh, MPI_Offset size)
Definition ampiFunctions.hpp:12891
void AMPI_Allgather_b(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:4033
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:8753
int AMPI_Send_init_finish(HandleBase *handle)
Definition ampiFunctions.hpp:3226
int AMPI_Rsend_init_preStart(HandleBase *handle)
Definition ampiFunctions.hpp:2768
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:3732
int AMPI_Get_version(int *version, int *subversion)
Definition ampiFunctions.hpp:12401
void AMPI_Ibcast_wrap_b_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:8358
int AMPI_Cart_rank(MPI_Comm comm, const int *coords, int *rank)
Definition ampiFunctions.hpp:12147
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:10021
int AMPI_File_get_atomicity(MPI_File fh, int *flag)
Definition ampiFunctions.hpp:12640
int AMPI_T_category_get_cvars(int cat_index, int len, int *indices)
Definition ampiFunctions.hpp:13099
int AMPI_Dims_create(int nnodes, int ndims, int *dims)
Definition ampiFunctions.hpp:12171
void AMPI_Ialltoall_d(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:7495
int AMPI_File_seek_shared(MPI_File fh, MPI_Offset offset, int whence)
Definition ampiFunctions.hpp:12873
void AMPI_Gather_b(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:5726
void AMPI_Scatter_d(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:11090
int AMPI_Comm_remote_group(MPI_Comm comm, MPI_Group *group)
Definition ampiFunctions.hpp:11890
int AMPI_Info_set(MPI_Info info, const char *key, const char *value)
Definition ampiFunctions.hpp:12491
int AMPI_Graph_get(MPI_Comm comm, int maxindex, int maxedges, int *index, int *edges)
Definition ampiFunctions.hpp:12214
void AMPI_Bcast_wrap_d(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:5425
int AMPI_File_get_errhandler(MPI_File file, MPI_Errhandler *errhandler)
Definition ampiFunctions.hpp:12359
int AMPI_Attr_get(MPI_Comm comm, int keyval, void *attribute_val, int *flag)
Definition ampiFunctions.hpp:13275
int AMPI_Igather_finish(HandleBase *handle)
Definition ampiFunctions.hpp:8896
int AMPI_File_get_view(MPI_File fh, MPI_Offset *disp, ETYPE *etype, FILETYPE *filetype, char *datarep)
Definition ampiFunctions.hpp:12690
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:11457
void AMPI_Sendrecv_p(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:3357
int AMPI_Cartdim_get(MPI_Comm comm, int *ndims)
Definition ampiFunctions.hpp:12165
void AMPI_Ibcast_wrap_p_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:8282
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:8375
MPI_Comm AMPI_Comm_f2c(MPI_Fint comm)
Definition ampiFunctions.hpp:13009
int AMPI_Graph_neighbors(MPI_Comm comm, int rank, int maxneighbors, int *neighbors)
Definition ampiFunctions.hpp:12227
void AMPI_Mrecv_d(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:1996
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:1566
void AMPI_Iscatterv_p(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:10309
int AMPI_File_iread_at(MPI_File fh, MPI_Offset offset, void *buf, int count, DATATYPE *datatype, AMPI_Request *request)
Definition ampiFunctions.hpp:12711
int AMPI_Win_create_errhandler(AMPI_Win_errhandler_function *win_errhandler_fn, MPI_Errhandler *errhandler)
Definition ampiFunctions.hpp:12419
void AMPI_Iscatterv_d_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:10377
int AMPI_File_read_at_all_begin(MPI_File fh, MPI_Offset offset, void *buf, int count, DATATYPE *datatype)
Definition ampiFunctions.hpp:12828
int AMPI_File_open(MPI_Comm comm, const char *filename, int amode, MPI_Info info, MPI_File *fh)
Definition ampiFunctions.hpp:12771
int AMPI_Type_size_x(DATATYPE *datatype, MPI_Count *size)
Definition ampiFunctions.hpp:11779
void AMPI_Ibsend_p_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:254
void AMPI_Mrecv_b(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:2012
IrecvAdjCall
Definition enums.hpp:40
int AMPI_File_read_at_all(MPI_File fh, MPI_Offset offset, void *buf, int count, DATATYPE *datatype, MPI_Status *status)
Definition ampiFunctions.hpp:12820
int AMPI_Comm_set_name(MPI_Comm comm, const char *comm_name)
Definition ampiFunctions.hpp:11914
int AMPI_Igatherv_finish(HandleBase *handle)
Definition ampiFunctions.hpp:9337
int AMPI_Comm_set_info(MPI_Comm comm, MPI_Info info)
Definition ampiFunctions.hpp:11908
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:12030
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:12542
MPI_Fint AMPI_Win_c2f(MPI_Win win)
Definition ampiFunctions.hpp:13075
int AMPI_Win_get_name(MPI_Win win, char *win_name, int *resultlen)
Definition ampiFunctions.hpp:12103
int AMPI_File_set_atomicity(MPI_File fh, int flag)
Definition ampiFunctions.hpp:12879
int AMPI_T_init_thread(int required, int *provided)
Definition ampiFunctions.hpp:13184
int AMPI_T_category_get_categories(int cat_index, int len, int *indices)
Definition ampiFunctions.hpp:13093
void AMPI_Iallgather_d_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:6358
int AMPI_Irecv_finish(HandleBase *handle)
Definition ampiFunctions.hpp:1150
int AMPI_Attr_put(MPI_Comm comm, int keyval, void *attribute_val)
Definition ampiFunctions.hpp:13281
void AMPI_Allreduce_global_d(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:4564
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:7566
int AMPI_Group_range_incl(MPI_Group group, int n, ::medi::common::Range *ranges, MPI_Group *newgroup)
Definition ampiFunctions.hpp:11986
int AMPI_File_delete(const char *filename, MPI_Info info)
Definition ampiFunctions.hpp:12628
int AMPI_Group_rank(MPI_Group group, int *rank)
Definition ampiFunctions.hpp:11992
int AMPI_Rsend_init_finish(HandleBase *handle)
Definition ampiFunctions.hpp:2847
void AMPI_Ialltoallv_p_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:7854
void AMPI_Ibcast_wrap_b(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:8334
void AMPI_Irsend_d_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:1284
int AMPI_File_iwrite(MPI_File fh, const void *buf, int count, DATATYPE *datatype, AMPI_Request *request)
Definition ampiFunctions.hpp:12734
void AMPI_Igatherv_d(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:9081
void AMPI_Ibcast_wrap_p(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:8261
void AMPI_Irecv_p(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:977
int AMPI_File_set_info(MPI_File fh, MPI_Info info)
Definition ampiFunctions.hpp:12885
int AMPI_Status_set_elements_x(MPI_Status *status, DATATYPE *datatype, MPI_Count count)
Definition ampiFunctions.hpp:12616
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:12078
int computeDisplacementsTotalSize(const int *counts, int ranks)
Compute the total size of a message that has a different size on each rank.
Definition displacementTools.hpp:105
int AMPI_Comm_test_inter(MPI_Comm comm, int *flag)
Definition ampiFunctions.hpp:11938
int AMPI_Ssend_init_finish(HandleBase *handle)
Definition ampiFunctions.hpp:3855
int AMPI_Cart_map(MPI_Comm comm, int ndims, const int *dims, const int *periods, int *newrank)
Definition ampiFunctions.hpp:12140
int AMPI_File_iwrite_shared(MPI_File fh, const void *buf, int count, DATATYPE *datatype, AMPI_Request *request)
Definition ampiFunctions.hpp:12764
int AMPI_Comm_idup(MPI_Comm comm, MPI_Comm *newcomm, AMPI_Request *request)
Definition ampiFunctions.hpp:11878
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:11817
int AMPI_Cart_shift(MPI_Comm comm, int direction, int disp, int *rank_source, int *rank_dest)
Definition ampiFunctions.hpp:12153
void AMPI_Isend_b_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:1553
double AMPI_Wtick()
Definition ampiFunctions.hpp:12251
int AMPI_Lookup_name(const char *service_name, MPI_Info info, char *port_name)
Definition ampiFunctions.hpp:12551
int AMPI_T_cvar_get_num(int *num_cvar)
Definition ampiFunctions.hpp:13136
int AMPI_Comm_get_attr(MPI_Comm comm, int comm_keyval, void *attribute_val, int *flag)
Definition ampiFunctions.hpp:11854
int AMPI_Comm_free(MPI_Comm *comm)
Definition ampiFunctions.hpp:11842
int AMPI_Recv_init_finish(HandleBase *handle)
Definition ampiFunctions.hpp:2460
RecvAdjCall
Definition enums.hpp:44
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:1293
void AMPI_Bcast_wrap_b(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:5452
int AMPI_Win_free_keyval(int *win_keyval)
Definition ampiFunctions.hpp:12091
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:11956
int AMPI_Request_get_status(AMPI_Request request, int *flag, MPI_Status *status)
Definition ampiFunctions.hpp:11682
void AMPI_Ialltoallv_p(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:7831
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:6410
int AMPI_Get_count(const MPI_Status *status, DATATYPE *datatype, int *count)
Definition ampiFunctions.hpp:11664
void AMPI_Iallgatherv_d_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:6730
int AMPI_Status_f2c(const MPI_Fint *f_status, MPI_Status *c_status)
Definition ampiFunctions.hpp:13069
int AMPI_File_set_errhandler(MPI_File file, MPI_Errhandler errhandler)
Definition ampiFunctions.hpp:12365
void(* ForwardFunction)(HandleBase *h, AdjointInterface *a)
Definition typeDefinitions.h:46
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:314
MPI_Group AMPI_Group_f2c(MPI_Fint group)
Definition ampiFunctions.hpp:13045
int AMPI_File_read(MPI_File fh, void *buf, int count, DATATYPE *datatype, MPI_Status *status)
Definition ampiFunctions.hpp:12785
void AMPI_Irecv_b_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:1047
void AMPI_Scatter_b(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:11118
int AMPI_Intercomm_merge(MPI_Comm intercomm, int high, MPI_Comm *newintracomm)
Definition ampiFunctions.hpp:12024
int AMPI_File_preallocate(MPI_File fh, MPI_Offset size)
Definition ampiFunctions.hpp:12778
void AMPI_Ssend_d(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:3600
void AMPI_Iallgather_d(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:6338
int AMPI_Comm_remote_size(MPI_Comm comm, int *size)
Definition ampiFunctions.hpp:11896
int AMPI_Type_delete_attr(DATATYPE *datatype, int type_keyval)
Definition ampiFunctions.hpp:12038
int AMPI_Status_set_elements(MPI_Status *status, DATATYPE *datatype, int count)
Definition ampiFunctions.hpp:12609
void AMPI_Iallgather_p(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:6302
int AMPI_Group_size(MPI_Group group, int *size)
Definition ampiFunctions.hpp:11998
MPI_Info AMPI_Info_f2c(MPI_Fint info)
Definition ampiFunctions.hpp:13057
int AMPI_Info_create(MPI_Info *info)
Definition ampiFunctions.hpp:12443
int AMPI_T_category_get_pvars(int cat_index, int len, int *indices)
Definition ampiFunctions.hpp:13124
void AMPI_Ialltoallv_b_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:7940
MPI_Win_delete_attr_function AMPI_Win_delete_attr_function
Definition ampiDefinitions.h:839
int AMPI_Ialltoall_finish(HandleBase *handle)
Definition ampiFunctions.hpp:7694
int AMPI_Finalize()
Definition ampiFunctions.hpp:12371
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:9170
void AMPI_Ibsend_b_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:301
int AMPI_Issend_finish(HandleBase *handle)
Definition ampiFunctions.hpp:1897
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:3410
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:12207
void AMPI_Allgather_p(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:3982
int AMPI_Info_get(MPI_Info info, const char *key, int valuelen, char *value, int *flag)
Definition ampiFunctions.hpp:12467
MPI_Fint AMPI_Info_c2f(MPI_Info info)
Definition ampiFunctions.hpp:13051
int AMPI_Win_set_errhandler(MPI_Win win, MPI_Errhandler errhandler)
Definition ampiFunctions.hpp:12437
int AMPI_File_get_group(MPI_File fh, MPI_Group *group)
Definition ampiFunctions.hpp:12652
int AMPI_Comm_set_errhandler(MPI_Comm comm, MPI_Errhandler errhandler)
Definition ampiFunctions.hpp:12317
int AMPI_File_read_shared(MPI_File fh, void *buf, int count, DATATYPE *datatype, MPI_Status *status)
Definition ampiFunctions.hpp:12861
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:13202
void AMPI_Irsend_p_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:1259
void AMPI_Igather_p(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:8630
int AMPI_Get_address(const void *location, MPI_Aint *address)
Definition ampiFunctions.hpp:11706
int AMPI_Win_set_attr(MPI_Win win, int win_keyval, void *attribute_val)
Definition ampiFunctions.hpp:12109
void AMPI_Imrecv_b(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:763
int AMPI_Query_thread(int *provided)
Definition ampiFunctions.hpp:12596
int AMPI_File_sync(MPI_File fh)
Definition ampiFunctions.hpp:12905
void AMPI_Alltoall_d(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:4840
int AMPI_Rsend(const typename DATATYPE::Type *buf, int count, DATATYPE *datatype, int dest, int tag, MPI_Comm comm)
Definition ampiFunctions.hpp:2623
void AMPI_Igather_p_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:8652
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:3103
void AMPI_Igather_b(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:8709
int AMPI_Ssend(const typename DATATYPE::Type *buf, int count, DATATYPE *datatype, int dest, int tag, MPI_Comm comm)
Definition ampiFunctions.hpp:3631
int AMPI_T_pvar_reset(MPI_T_pvar_session session, MPI_T_pvar_handle handle)
Definition ampiFunctions.hpp:13227
int AMPI_Initialized(int *flag)
Definition ampiFunctions.hpp:12407
void AMPI_Iallreduce_global_b_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:7174
void AMPI_Igatherv_d_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:9105
int AMPI_Group_range_excl(MPI_Group group, int n, ::medi::common::Range *ranges, MPI_Group *newgroup)
Definition ampiFunctions.hpp:11980
int AMPI_Type_set_attr(DATATYPE *datatype, int type_keyval, void *attribute_val)
Definition ampiFunctions.hpp:12065
double AMPI_Wtime()
Definition ampiFunctions.hpp:12257
int AMPI_File_set_view(MPI_File fh, MPI_Offset disp, ETYPE *etype, FILETYPE *filetype, const char *datarep, MPI_Info info)
Definition ampiFunctions.hpp:12898
int AMPI_Iprobe(int source, int tag, MPI_Comm comm, int *flag, MPI_Status *status)
Definition ampiFunctions.hpp:11670
void AMPI_Send_b(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:2987
MPI_Grequest_cancel_function AMPI_Grequest_cancel_function
Definition ampiDefinitions.h:872
void AMPI_Iscatter_b(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:9979
int AMPI_T_pvar_get_num(int *num_pvar)
Definition ampiFunctions.hpp:13196
int AMPI_File_write(MPI_File fh, const void *buf, int count, DATATYPE *datatype, MPI_Status *status)
Definition ampiFunctions.hpp:12912
void AMPI_Iscatter_d(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:9942
int AMPI_Iscatterv_finish(HandleBase *handle)
Definition ampiFunctions.hpp:10608
int AMPI_Dist_graph_neighbors(MPI_Comm comm, int maxindegree, int *sources, int *sourceweights, int maxoutdegree, int *destinations, int *destweights)
Definition ampiFunctions.hpp:12194
void AMPI_Ssend_p(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:3584
int AMPI_Comm_get_name(MPI_Comm comm, char *comm_name, int *resultlen)
Definition ampiFunctions.hpp:11866
void AMPI_Scatterv_b(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:11423
int AMPI_T_category_get_index(const char *name, int *cat_index)
Definition ampiFunctions.hpp:13105
void AMPI_Ialltoall_b_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:7551
void AMPI_Gather_d(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:5699
int AMPI_Get_elements_x(const MPI_Status *status, DATATYPE *datatype, MPI_Count *count)
Definition ampiFunctions.hpp:11720
MPI_Errhandler AMPI_Errhandler_f2c(MPI_Fint errhandler)
Definition ampiFunctions.hpp:13021
int AMPI_Comm_dup(MPI_Comm comm, MPI_Comm *newcomm)
Definition ampiFunctions.hpp:11830
int AMPI_Group_difference(MPI_Group group1, MPI_Group group2, MPI_Group *newgroup)
Definition ampiFunctions.hpp:11950
void AMPI_Iscatter_p(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:9902
void AMPI_Ssend_b(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:3616
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:12177
int AMPI_Grequest_complete(AMPI_Request request)
Definition ampiFunctions.hpp:12577
void AMPI_Iallgather_b(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:6371
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:12004
int AMPI_Comm_compare(MPI_Comm comm1, MPI_Comm comm2, int *result)
Definition ampiFunctions.hpp:11799
int AMPI_File_read_all(MPI_File fh, void *buf, int count, DATATYPE *datatype, MPI_Status *status)
Definition ampiFunctions.hpp:12792
int AMPI_Comm_call_errhandler(MPI_Comm comm, int errorcode)
Definition ampiFunctions.hpp:12293
int AMPI_Type_get_extent_x(DATATYPE *datatype, MPI_Count *lb, MPI_Count *extent)
Definition ampiFunctions.hpp:11751
int AMPI_Win_delete_attr(MPI_Win win, int win_keyval)
Definition ampiFunctions.hpp:12085
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:793
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:13027
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:4623
void AMPI_Igather_b_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:8736
MPI_Fint AMPI_Group_c2f(MPI_Group group)
Definition ampiFunctions.hpp:13039
void AMPI_Iscatterv_d(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:10353
void AMPI_Imrecv_d_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:752
int AMPI_T_pvar_session_free(MPI_T_pvar_session *session)
Definition ampiFunctions.hpp:13239
int AMPI_Graph_neighbors_count(MPI_Comm comm, int rank, int *nneighbors)
Definition ampiFunctions.hpp:12233
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:10440
int AMPI_Ibsend_finish(HandleBase *handle)
Definition ampiFunctions.hpp:398
int AMPI_File_write_shared(MPI_File fh, const void *buf, int count, DATATYPE *datatype, MPI_Status *status)
Definition ampiFunctions.hpp:12989
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:7959
int AMPI_Info_get_valuelen(MPI_Info info, const char *key, int *valuelen, int *flag)
Definition ampiFunctions.hpp:12485
int AMPI_Win_set_name(MPI_Win win, const char *win_name)
Definition ampiFunctions.hpp:12115
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:12185
void AMPI_Irsend_p(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:1243
void AMPI_Recv_d(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:2176
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:2327
int AMPI_Comm_split(MPI_Comm comm, int color, int key, MPI_Comm *newcomm)
Definition ampiFunctions.hpp:11926
int AMPI_Type_get_true_extent(DATATYPE *datatype, MPI_Aint *true_lb, MPI_Aint *true_extent)
Definition ampiFunctions.hpp:11758
int AMPI_File_get_byte_offset(MPI_File fh, MPI_Offset offset, MPI_Offset *disp)
Definition ampiFunctions.hpp:12646
int AMPI_Alloc_mem(MPI_Aint size, MPI_Info info, void *baseptr)
Definition ampiFunctions.hpp:12287
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:12395
void AMPI_Rsend_p(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:2576
int AMPI_Comm_create(MPI_Comm comm, MPI_Group group, MPI_Comm *newcomm)
Definition ampiFunctions.hpp:11805
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
int AMPI_Comm_disconnect(MPI_Comm *comm)
Definition ampiFunctions.hpp:12517
int AMPI_Win_call_errhandler(MPI_Win win, int errorcode)
Definition ampiFunctions.hpp:12413
void AMPI_Igatherv_p_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:9059
int AMPI_T_pvar_handle_free(MPI_T_pvar_session session, MPI_T_pvar_handle *handle)
Definition ampiFunctions.hpp:13209
int AMPI_Comm_get_errhandler(MPI_Comm comm, MPI_Errhandler *errhandler)
Definition ampiFunctions.hpp:12311
int AMPI_Comm_split_type(MPI_Comm comm, int split_type, int key, MPI_Info info, MPI_Comm *newcomm)
Definition ampiFunctions.hpp:11932
int AMPI_Add_error_string(int errorcode, const char *string)
Definition ampiFunctions.hpp:12281
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:1058
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:12995
void AMPI_Issend_b(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:1787
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:6322
MPI_Fint AMPI_Errhandler_c2f(MPI_Errhandler errhandler)
Definition ampiFunctions.hpp:13015
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:6788
int AMPI_Comm_get_parent(MPI_Comm *parent)
Definition ampiFunctions.hpp:12523
int AMPI_Group_incl(MPI_Group group, int n, const int *ranks, MPI_Group *newgroup)
Definition ampiFunctions.hpp:11968
int AMPI_Comm_set_attr(MPI_Comm comm, int comm_keyval, void *attribute_val)
Definition ampiFunctions.hpp:11902
int AMPI_Ssend_init_preStart(HandleBase *handle)
Definition ampiFunctions.hpp:3776
void AMPI_Iallgatherv_p_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:6690
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:12535
int AMPI_Op_commutative(AMPI_Op op, int *commute)
Definition ampiFunctions.hpp:11791
void AMPI_Iscatter_b_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:10004
void AMPI_Allgatherv_b(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:4300
int AMPI_Buffer_detach(void *buffer_addr, int *size)
Definition ampiFunctions.hpp:11651
int AMPI_File_iread_all(MPI_File fh, void *buf, int count, DATATYPE *datatype, AMPI_Request *request)
Definition ampiFunctions.hpp:12704
void AMPI_Rsend_d(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:2592
void AMPI_Issend_p(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:1737
void AMPI_Imrecv_p(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:712
int AMPI_Finalized(int *flag)
Definition ampiFunctions.hpp:12377
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:4891
int AMPI_File_write_ordered(MPI_File fh, const void *buf, int count, DATATYPE *datatype, MPI_Status *status)
Definition ampiFunctions.hpp:12969
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:12812
int AMPI_T_cvar_get_index(const char *name, int *cvar_index)
Definition ampiFunctions.hpp:13130
int AMPI_File_read_all_begin(MPI_File fh, void *buf, int count, DATATYPE *datatype)
Definition ampiFunctions.hpp:12799
int AMPI_Bcast_wrap(typename DATATYPE::Type *bufferSend, typename DATATYPE::Type *bufferRecv, int count, DATATYPE *datatype, int root, MPI_Comm comm)
Definition ampiFunctions.hpp:5483
void AMPI_Allgatherv_d(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:4273
void AMPI_Iallreduce_global_d(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:7111
int AMPI_Publish_name(const char *service_name, MPI_Info info, const char *port_name)
Definition ampiFunctions.hpp:12563
void AMPI_Iscatterv_b(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:10394
int AMPI_Imrecv_finish(HandleBase *handle)
Definition ampiFunctions.hpp:881
void AMPI_Isend_b(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:1540
void AMPI_Allreduce_global_p(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:4536
int AMPI_File_get_type_extent(MPI_File fh, DATATYPE *datatype, MPI_Aint *extent)
Definition ampiFunctions.hpp:12683
int AMPI_Recv_init_preStart(HandleBase *handle)
Definition ampiFunctions.hpp:2372
void AMPI_Ialltoall_d_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:7515
void AMPI_Rsend_b(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:2608
void AMPI_Ibsend_d(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:263
int AMPI_Unpublish_name(const char *service_name, MPI_Info info, const char *port_name)
Definition ampiFunctions.hpp:12570
int AMPI_Bsend_init_postEnd(HandleBase *handle)
Definition ampiFunctions.hpp:630
void AMPI_Ibsend_p(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:238
void AMPI_Scatterv_p(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:11358
int AMPI_Rsend_init_postEnd(HandleBase *handle)
Definition ampiFunctions.hpp:2887
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:7196
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:6064
void AMPI_Scatterv_d(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:11392
void AMPI_Ireduce_global_p(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:9477
void AMPI_Gatherv_d(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:5997
int AMPI_File_close(MPI_File *fh)
Definition ampiFunctions.hpp:12622
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:8320
void AMPI_Bsend_b(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:104
int AMPI_Ibcast_wrap_finish(HandleBase *handle)
Definition ampiFunctions.hpp:8508
void AMPI_Sendrecv_d(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:3385
int AMPI_T_pvar_session_create(MPI_T_pvar_session *session)
Definition ampiFunctions.hpp:13233
int AMPI_Group_union(MPI_Group group1, MPI_Group group2, MPI_Group *newgroup)
Definition ampiFunctions.hpp:12011
void AMPI_Alltoallv_d(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:5112
void AMPI_Send_p(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:2955
void AMPI_Reduce_global_d(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:10777
int(* ContinueFunction)(HandleBase *h)
Definition typeDefinitions.h:48
void AMPI_Iallreduce_global_p_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:7093
int AMPI_File_write_at_all_end(MPI_File fh, const void *buf, MPI_Status *status)
Definition ampiFunctions.hpp:12962
int AMPI_Type_get_extent(DATATYPE *datatype, MPI_Aint *lb, MPI_Aint *extent)
Definition ampiFunctions.hpp:11744
void AMPI_Mrecv_p(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:1978
int AMPI_Test_cancelled(const MPI_Status *status, int *flag)
Definition ampiFunctions.hpp:11688
void AMPI_Iallreduce_global_d_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:7133
void AMPI_Ireduce_global_d_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:9544
void AMPI_Allgatherv_p(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:4243
void AMPI_Iallgather_b_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:6394
int AMPI_File_call_errhandler(MPI_File fh, int errorcode)
Definition ampiFunctions.hpp:12341
int AMPI_File_write_at_all_begin(MPI_File fh, MPI_Offset offset, const void *buf, int count, DATATYPE *datatype)
Definition ampiFunctions.hpp:12955
int AMPI_Type_get_envelope(DATATYPE *datatype, int *num_integers, int *num_addresses, int *num_datatypes, int *combiner)
Definition ampiFunctions.hpp:11736
int AMPI_Group_free(MPI_Group *group)
Definition ampiFunctions.hpp:11962
void AMPI_Ialltoall_b(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:7528
void AMPI_Gatherv_p(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:5961
void AMPI_Iallgatherv_d(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:6708
void AMPI_Imrecv_b_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:782
int AMPI_Cart_sub(MPI_Comm comm, const int *remain_dims, MPI_Comm *newcomm)
Definition ampiFunctions.hpp:12159
int AMPI_File_read_ordered_begin(MPI_File fh, void *buf, int count, DATATYPE *datatype)
Definition ampiFunctions.hpp:12848
void AMPI_Isend_d(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:1515
int AMPI_File_get_info(MPI_File fh, MPI_Info *info_used)
Definition ampiFunctions.hpp:12658
int AMPI_File_iread_shared(MPI_File fh, void *buf, int count, DATATYPE *datatype, AMPI_Request *request)
Definition ampiFunctions.hpp:12727
int AMPI_Comm_accept(const char *port_name, MPI_Info info, int root, MPI_Comm comm, MPI_Comm *newcomm)
Definition ampiFunctions.hpp:12503
int AMPI_T_category_get_num(int *num_cat)
Definition ampiFunctions.hpp:13118
void AMPI_Alltoall_b(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:4864
int AMPI_Recv_init_postEnd(HandleBase *handle)
Definition ampiFunctions.hpp:2506
MPI_Fint AMPI_Comm_c2f(MPI_Comm comm)
Definition ampiFunctions.hpp:13003
void AMPI_Issend_b_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:1800
int AMPI_File_iread_at_all(MPI_File fh, MPI_Offset offset, void *buf, int count, DATATYPE *datatype, AMPI_Request *request)
Definition ampiFunctions.hpp:12719
void AMPI_Recv_p(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:2156
int AMPI_Send_init_preStart(HandleBase *handle)
Definition ampiFunctions.hpp:3147
void AMPI_Isend_p_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:1506
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:12947
int AMPI_File_write_ordered_begin(MPI_File fh, const void *buf, int count, DATATYPE *datatype)
Definition ampiFunctions.hpp:12976
int AMPI_Status_c2f(const MPI_Status *c_status, MPI_Fint *f_status)
Definition ampiFunctions.hpp:13063
int AMPI_Graphdims_get(MPI_Comm comm, int *nnodes, int *nedges)
Definition ampiFunctions.hpp:12239
void AMPI_Iallgatherv_b_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:6770
int AMPI_File_write_all(MPI_File fh, const void *buf, int count, DATATYPE *datatype, MPI_Status *status)
Definition ampiFunctions.hpp:12919
int AMPI_Comm_connect(const char *port_name, MPI_Info info, int root, MPI_Comm comm, MPI_Comm *newcomm)
Definition ampiFunctions.hpp:12510
void AMPI_Bcast_wrap_p(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:5395
int AMPI_Type_get_name(DATATYPE *datatype, char *type_name, int *resultlen)
Definition ampiFunctions.hpp:12058
void AMPI_Ibsend_b(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:288
int AMPI_T_cvar_read(MPI_T_cvar_handle handle, void *buf)
Definition ampiFunctions.hpp:13154
void AMPI_Irecv_b(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:1028
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:12756
int AMPI_File_write_at(MPI_File fh, MPI_Offset offset, const void *buf, int count, DATATYPE *datatype, MPI_Status *status)
Definition ampiFunctions.hpp:12939
void AMPI_Igatherv_b_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:9151
void AMPI_Irecv_p_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:990
int AMPI_T_pvar_get_index(const char *name, int var_class, int *pvar_index)
Definition ampiFunctions.hpp:13190
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:9611
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:12017
int AMPI_Type_get_attr(DATATYPE *datatype, int type_keyval, void *attribute_val, int *flag)
Definition ampiFunctions.hpp:12051
void(* ReverseFunction)(HandleBase *h, AdjointInterface *a)
Definition typeDefinitions.h:45
int AMPI_Type_free_keyval(int *type_keyval)
Definition ampiFunctions.hpp:12044
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:1319
int AMPI_Abort(MPI_Comm comm, int errorcode)
Definition ampiFunctions.hpp:12263
void AMPI_Scatter_p(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:11059
int AMPI_File_iwrite_at(MPI_File fh, MPI_Offset offset, const void *buf, int count, DATATYPE *datatype, AMPI_Request *request)
Definition ampiFunctions.hpp:12748
int AMPI_Ireduce_global_finish(HandleBase *handle)
Definition ampiFunctions.hpp:9762
int AMPI_T_cvar_handle_alloc(int cvar_index, void *obj_handle, MPI_T_cvar_handle *handle, int *count)
Definition ampiFunctions.hpp:13142
int AMPI_Win_get_attr(MPI_Win win, int win_keyval, void *attribute_val, int *flag)
Definition ampiFunctions.hpp:12097
void AMPI_Allreduce_global_b(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:4589
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:2214
int AMPI_Comm_get_info(MPI_Comm comm, MPI_Info *info_used)
Definition ampiFunctions.hpp:11860
int AMPI_Bsend_init_preStart(HandleBase *handle)
Definition ampiFunctions.hpp:511
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:11149
void AMPI_Ialltoall_p_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:7479
int AMPI_Comm_create_group(MPI_Comm comm, MPI_Group group, int tag, MPI_Comm *newcomm)
Definition ampiFunctions.hpp:11811
MPI_File AMPI_File_f2c(MPI_Fint file)
Definition ampiFunctions.hpp:13033
int AMPI_File_read_ordered_end(MPI_File fh, void *buf, MPI_Status *status)
Definition ampiFunctions.hpp:12854
void AMPI_Reduce_global_p(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:10743
void AMPI_Iallreduce_global_b(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:7148
void AMPI_Irsend_b_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:1306
int AMPI_Iallgatherv_finish(HandleBase *handle)
Definition ampiFunctions.hpp:6941
int AMPI_Error_string(int errorcode, char *string, int *resultlen)
Definition ampiFunctions.hpp:12335
int AMPI_Comm_dup_with_info(MPI_Comm comm, MPI_Info info, MPI_Comm *newcomm)
Definition ampiFunctions.hpp:11836
int AMPI_T_cvar_handle_free(MPI_T_cvar_handle *handle)
Definition ampiFunctions.hpp:13148
int AMPI_Comm_create_errhandler(AMPI_Comm_errhandler_function *comm_errhandler_fn, MPI_Errhandler *errhandler)
Definition ampiFunctions.hpp:12299
int AMPI_File_seek(MPI_File fh, MPI_Offset offset, int whence)
Definition ampiFunctions.hpp:12867
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:11727
int AMPI_Cart_get(MPI_Comm comm, int maxdims, int *dims, int *periods, int *coords)
Definition ampiFunctions.hpp:12134
void AMPI_Ialltoallv_d(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:7874
int AMPI_Send(const typename DATATYPE::Type *buf, int count, DATATYPE *datatype, int dest, int tag, MPI_Comm comm)
Definition ampiFunctions.hpp:3002
void AMPI_Issend_d(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:1762
void AMPI_Ireduce_global_p_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:9500
int AMPI_Group_compare(MPI_Group group1, MPI_Group group2, int *result)
Definition ampiFunctions.hpp:11944
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:3438
void AMPI_Ialltoall_p(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:7459
int AMPI_T_category_changed(int *stamp)
Definition ampiFunctions.hpp:13087
void AMPI_Isend_d_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:1531
void AMPI_Allgather_d(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:4009
int AMPI_Comm_rank(MPI_Comm comm, int *rank)
Definition ampiFunctions.hpp:11884
int AMPI_Info_get_nkeys(MPI_Info info, int *nkeys)
Definition ampiFunctions.hpp:12473
int AMPI_Cancel(AMPI_Request *request)
Definition ampiFunctions.hpp:11657
void AMPI_Ialltoallv_b(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:7914
void AMPI_Irecv_d_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:1017
int AMPI_File_read_at_all_end(MPI_File fh, void *buf, MPI_Status *status)
Definition ampiFunctions.hpp:12834
int AMPI_T_cvar_write(MPI_T_cvar_handle handle, const void *buf)
Definition ampiFunctions.hpp:13160
MPI_Comm_delete_attr_function AMPI_Comm_delete_attr_function
Definition ampiDefinitions.h:833
void AMPI_Ireduce_global_b_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:9589
int AMPI_File_read_all_end(MPI_File fh, void *buf, MPI_Status *status)
Definition ampiFunctions.hpp:12805
MPI_Comm_copy_attr_function AMPI_Comm_copy_attr_function
Definition ampiDefinitions.h:830
int AMPI_T_pvar_write(MPI_T_pvar_session session, MPI_T_pvar_handle handle, const void *buf)
Definition ampiFunctions.hpp:13257
int AMPI_Error_class(int errorcode, int *errorclass)
Definition ampiFunctions.hpp:12329
void AMPI_Ibsend_d_finish(HandleBase *handle, AdjointInterface *adjointInterface)
Definition ampiFunctions.hpp:279
int AMPI_File_write_ordered_end(MPI_File fh, const void *buf, MPI_Status *status)
Definition ampiFunctions.hpp:12982
int AMPI_Keyval_create(AMPI_Copy_function *copy_fn, AMPI_Delete_function *delete_fn, int *keyval, void *extra_state)
Definition ampiFunctions.hpp:13287
Definition ampiFunctions.hpp:3936
int sendbufTotalSize
Definition ampiFunctions.hpp:3937
int recvbufCountVec
Definition ampiFunctions.hpp:3951
RECVTYPE::IndexType * recvbufIndices
Definition ampiFunctions.hpp:3946
RECVTYPE::PrimalType * recvbufPrimals
Definition ampiFunctions.hpp:3947
SENDTYPE::PrimalType * sendbufPrimals
Definition ampiFunctions.hpp:3939
SENDTYPE::IndexType * sendbufIndices
Definition ampiFunctions.hpp:3938
int sendcount
Definition ampiFunctions.hpp:3943
void * recvbufAdjoints
Definition ampiFunctions.hpp:3949
int recvbufTotalSize
Definition ampiFunctions.hpp:3945
void * sendbufAdjoints
Definition ampiFunctions.hpp:3940
int recvbufCount
Definition ampiFunctions.hpp:3950
int recvcount
Definition ampiFunctions.hpp:3952
RECVTYPE::PrimalType * recvbufOldPrimals
Definition ampiFunctions.hpp:3948
~AMPI_Allgather_AdjointHandle()
Definition ampiFunctions.hpp:3956
int sendbufCountVec
Definition ampiFunctions.hpp:3942
int sendbufCount
Definition ampiFunctions.hpp:3941
RECVTYPE * recvtype
Definition ampiFunctions.hpp:3953
MPI_Comm comm
Definition ampiFunctions.hpp:3954
SENDTYPE * sendtype
Definition ampiFunctions.hpp:3944
Definition ampiFunctions.hpp:4191
int * recvbufCount
Definition ampiFunctions.hpp:4205
SENDTYPE::PrimalType * sendbufPrimals
Definition ampiFunctions.hpp:4194
int sendbufTotalSize
Definition ampiFunctions.hpp:4192
void * sendbufAdjoints
Definition ampiFunctions.hpp:4195
SENDTYPE::IndexType * sendbufIndices
Definition ampiFunctions.hpp:4193
MPI_Comm comm
Definition ampiFunctions.hpp:4211
void * recvbufAdjoints
Definition ampiFunctions.hpp:4204
int * recvbufDisplsVec
Definition ampiFunctions.hpp:4207
int * recvbufCountVec
Definition ampiFunctions.hpp:4206
int sendbufCountVec
Definition ampiFunctions.hpp:4197
SENDTYPE * sendtype
Definition ampiFunctions.hpp:4199
int sendcount
Definition ampiFunctions.hpp:4198
int recvbufTotalSize
Definition ampiFunctions.hpp:4200
RECVTYPE::IndexType * recvbufIndices
Definition ampiFunctions.hpp:4201
RECVTYPE * recvtype
Definition ampiFunctions.hpp:4210
~AMPI_Allgatherv_AdjointHandle()
Definition ampiFunctions.hpp:4213
int sendbufCount
Definition ampiFunctions.hpp:4196
const int * recvcounts
Definition ampiFunctions.hpp:4208
RECVTYPE::PrimalType * recvbufOldPrimals
Definition ampiFunctions.hpp:4203
const int * displs
Definition ampiFunctions.hpp:4209
RECVTYPE::PrimalType * recvbufPrimals
Definition ampiFunctions.hpp:4202
Definition ampiFunctions.hpp:4491
~AMPI_Allreduce_global_AdjointHandle()
Definition ampiFunctions.hpp:4510
void * sendbufAdjoints
Definition ampiFunctions.hpp:4495
void * recvbufAdjoints
Definition ampiFunctions.hpp:4502
DATATYPE::PrimalType * recvbufPrimals
Definition ampiFunctions.hpp:4500
DATATYPE * datatype
Definition ampiFunctions.hpp:4506
DATATYPE::IndexType * recvbufIndices
Definition ampiFunctions.hpp:4499
DATATYPE::IndexType * sendbufIndices
Definition ampiFunctions.hpp:4493
int count
Definition ampiFunctions.hpp:4505
int sendbufCountVec
Definition ampiFunctions.hpp:4497
int recvbufCountVec
Definition ampiFunctions.hpp:4504
MPI_Comm comm
Definition ampiFunctions.hpp:4508
int sendbufTotalSize
Definition ampiFunctions.hpp:4492
int sendbufCount
Definition ampiFunctions.hpp:4496
int recvbufTotalSize
Definition ampiFunctions.hpp:4498
DATATYPE::PrimalType * sendbufPrimals
Definition ampiFunctions.hpp:4494
DATATYPE::PrimalType * recvbufOldPrimals
Definition ampiFunctions.hpp:4501
AMPI_Op op
Definition ampiFunctions.hpp:4507
int recvbufCount
Definition ampiFunctions.hpp:4503
Definition ampiFunctions.hpp:4767
void * sendbufAdjoints
Definition ampiFunctions.hpp:4771
RECVTYPE::IndexType * recvbufIndices
Definition ampiFunctions.hpp:4777
int sendbufCount
Definition ampiFunctions.hpp:4772
int sendbufTotalSize
Definition ampiFunctions.hpp:4768
int recvbufCountVec
Definition ampiFunctions.hpp:4782
int sendcount
Definition ampiFunctions.hpp:4774
SENDTYPE * sendtype
Definition ampiFunctions.hpp:4775
int recvcount
Definition ampiFunctions.hpp:4783
RECVTYPE::PrimalType * recvbufPrimals
Definition ampiFunctions.hpp:4778
int recvbufTotalSize
Definition ampiFunctions.hpp:4776
MPI_Comm comm
Definition ampiFunctions.hpp:4785
RECVTYPE * recvtype
Definition ampiFunctions.hpp:4784
int sendbufCountVec
Definition ampiFunctions.hpp:4773
RECVTYPE::PrimalType * recvbufOldPrimals
Definition ampiFunctions.hpp:4779
int recvbufCount
Definition ampiFunctions.hpp:4781
SENDTYPE::PrimalType * sendbufPrimals
Definition ampiFunctions.hpp:4770
~AMPI_Alltoall_AdjointHandle()
Definition ampiFunctions.hpp:4787
void * recvbufAdjoints
Definition ampiFunctions.hpp:4780
SENDTYPE::IndexType * sendbufIndices
Definition ampiFunctions.hpp:4769
Definition ampiFunctions.hpp:5020
const int * rdispls
Definition ampiFunctions.hpp:5040
int * recvbufCount
Definition ampiFunctions.hpp:5036
int * sendbufCount
Definition ampiFunctions.hpp:5025
MPI_Comm comm
Definition ampiFunctions.hpp:5042
~AMPI_Alltoallv_AdjointHandle()
Definition ampiFunctions.hpp:5044
void * recvbufAdjoints
Definition ampiFunctions.hpp:5035
RECVTYPE::IndexType * recvbufIndices
Definition ampiFunctions.hpp:5032
RECVTYPE::PrimalType * recvbufPrimals
Definition ampiFunctions.hpp:5033
SENDTYPE * sendtype
Definition ampiFunctions.hpp:5030
int * recvbufCountVec
Definition ampiFunctions.hpp:5037
const int * sdispls
Definition ampiFunctions.hpp:5029
int * sendbufDisplsVec
Definition ampiFunctions.hpp:5027
SENDTYPE::PrimalType * sendbufPrimals
Definition ampiFunctions.hpp:5023
RECVTYPE::PrimalType * recvbufOldPrimals
Definition ampiFunctions.hpp:5034
const int * sendcounts
Definition ampiFunctions.hpp:5028
void * sendbufAdjoints
Definition ampiFunctions.hpp:5024
int * recvbufDisplsVec
Definition ampiFunctions.hpp:5038
RECVTYPE * recvtype
Definition ampiFunctions.hpp:5041
SENDTYPE::IndexType * sendbufIndices
Definition ampiFunctions.hpp:5022
const int * recvcounts
Definition ampiFunctions.hpp:5039
int sendbufTotalSize
Definition ampiFunctions.hpp:5021
int * sendbufCountVec
Definition ampiFunctions.hpp:5026
int recvbufTotalSize
Definition ampiFunctions.hpp:5031
Definition ampiFunctions.hpp:5350
int bufferRecvCountVec
Definition ampiFunctions.hpp:5363
int bufferSendTotalSize
Definition ampiFunctions.hpp:5351
int bufferRecvCount
Definition ampiFunctions.hpp:5362
DATATYPE::PrimalType * bufferSendPrimals
Definition ampiFunctions.hpp:5353
void * bufferRecvAdjoints
Definition ampiFunctions.hpp:5361
int bufferSendCount
Definition ampiFunctions.hpp:5355
int bufferRecvTotalSize
Definition ampiFunctions.hpp:5357
int root
Definition ampiFunctions.hpp:5366
MPI_Comm comm
Definition ampiFunctions.hpp:5367
DATATYPE::PrimalType * bufferRecvPrimals
Definition ampiFunctions.hpp:5359
int count
Definition ampiFunctions.hpp:5364
void * bufferSendAdjoints
Definition ampiFunctions.hpp:5354
DATATYPE * datatype
Definition ampiFunctions.hpp:5365
int bufferSendCountVec
Definition ampiFunctions.hpp:5356
DATATYPE::PrimalType * bufferRecvOldPrimals
Definition ampiFunctions.hpp:5360
~AMPI_Bcast_wrap_AdjointHandle()
Definition ampiFunctions.hpp:5369
DATATYPE::IndexType * bufferRecvIndices
Definition ampiFunctions.hpp:5358
DATATYPE::IndexType * bufferSendIndices
Definition ampiFunctions.hpp:5352
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:448
AMPI_Request * request
Definition ampiFunctions.hpp:456
DATATYPE::ModifiedType * bufMod
Definition ampiFunctions.hpp:450
int count
Definition ampiFunctions.hpp:451
const DATATYPE::Type * buf
Definition ampiFunctions.hpp:449
int tag
Definition ampiFunctions.hpp:454
DATATYPE * datatype
Definition ampiFunctions.hpp:452
int dest
Definition ampiFunctions.hpp:453
MPI_Comm comm
Definition ampiFunctions.hpp:455
Definition ampiFunctions.hpp:5620
int sendbufCount
Definition ampiFunctions.hpp:5625
SENDTYPE * sendtype
Definition ampiFunctions.hpp:5628
RECVTYPE * recvtype
Definition ampiFunctions.hpp:5637
SENDTYPE::IndexType * sendbufIndices
Definition ampiFunctions.hpp:5622
int sendcount
Definition ampiFunctions.hpp:5627
int sendbufTotalSize
Definition ampiFunctions.hpp:5621
int recvbufCountVec
Definition ampiFunctions.hpp:5635
RECVTYPE::PrimalType * recvbufPrimals
Definition ampiFunctions.hpp:5631
int recvcount
Definition ampiFunctions.hpp:5636
MPI_Comm comm
Definition ampiFunctions.hpp:5639
int sendbufCountVec
Definition ampiFunctions.hpp:5626
int root
Definition ampiFunctions.hpp:5638
int recvbufCount
Definition ampiFunctions.hpp:5634
RECVTYPE::IndexType * recvbufIndices
Definition ampiFunctions.hpp:5630
int recvbufTotalSize
Definition ampiFunctions.hpp:5629
~AMPI_Gather_AdjointHandle()
Definition ampiFunctions.hpp:5641
void * sendbufAdjoints
Definition ampiFunctions.hpp:5624
RECVTYPE::PrimalType * recvbufOldPrimals
Definition ampiFunctions.hpp:5632
SENDTYPE::PrimalType * sendbufPrimals
Definition ampiFunctions.hpp:5623
void * recvbufAdjoints
Definition ampiFunctions.hpp:5633
Definition ampiFunctions.hpp:5908
SENDTYPE * sendtype
Definition ampiFunctions.hpp:5916
int sendcount
Definition ampiFunctions.hpp:5915
RECVTYPE::IndexType * recvbufIndices
Definition ampiFunctions.hpp:5918
const int * recvcounts
Definition ampiFunctions.hpp:5925
RECVTYPE * recvtype
Definition ampiFunctions.hpp:5927
int sendbufCountVec
Definition ampiFunctions.hpp:5914
const int * displs
Definition ampiFunctions.hpp:5926
int root
Definition ampiFunctions.hpp:5928
int * recvbufCountVec
Definition ampiFunctions.hpp:5923
~AMPI_Gatherv_AdjointHandle()
Definition ampiFunctions.hpp:5931
void * recvbufAdjoints
Definition ampiFunctions.hpp:5921
void * sendbufAdjoints
Definition ampiFunctions.hpp:5912
int recvbufTotalSize
Definition ampiFunctions.hpp:5917
int * recvbufCount
Definition ampiFunctions.hpp:5922
RECVTYPE::PrimalType * recvbufOldPrimals
Definition ampiFunctions.hpp:5920
int sendbufCount
Definition ampiFunctions.hpp:5913
SENDTYPE::PrimalType * sendbufPrimals
Definition ampiFunctions.hpp:5911
SENDTYPE::IndexType * sendbufIndices
Definition ampiFunctions.hpp:5910
int * recvbufDisplsVec
Definition ampiFunctions.hpp:5924
int sendbufTotalSize
Definition ampiFunctions.hpp:5909
MPI_Comm comm
Definition ampiFunctions.hpp:5929
RECVTYPE::PrimalType * recvbufPrimals
Definition ampiFunctions.hpp:5919
Definition ampiFunctions.hpp:6243
int recvbufCount
Definition ampiFunctions.hpp:6257
RECVTYPE::IndexType * recvbufIndices
Definition ampiFunctions.hpp:6253
int sendcount
Definition ampiFunctions.hpp:6250
RECVTYPE::PrimalType * recvbufPrimals
Definition ampiFunctions.hpp:6254
int recvcount
Definition ampiFunctions.hpp:6259
int recvbufTotalSize
Definition ampiFunctions.hpp:6252
int recvbufCountVec
Definition ampiFunctions.hpp:6258
RECVTYPE * recvtype
Definition ampiFunctions.hpp:6260
void * sendbufAdjoints
Definition ampiFunctions.hpp:6247
SENDTYPE * sendtype
Definition ampiFunctions.hpp:6251
SENDTYPE::IndexType * sendbufIndices
Definition ampiFunctions.hpp:6245
int sendbufTotalSize
Definition ampiFunctions.hpp:6244
SENDTYPE::PrimalType * sendbufPrimals
Definition ampiFunctions.hpp:6246
int sendbufCount
Definition ampiFunctions.hpp:6248
~AMPI_Iallgather_AdjointHandle()
Definition ampiFunctions.hpp:6263
RECVTYPE::PrimalType * recvbufOldPrimals
Definition ampiFunctions.hpp:6255
int sendbufCountVec
Definition ampiFunctions.hpp:6249
void * recvbufAdjoints
Definition ampiFunctions.hpp:6256
MPI_Comm comm
Definition ampiFunctions.hpp:6261
Definition ampiFunctions.hpp:6288
SENDTYPE::ModifiedType * sendbufMod
Definition ampiFunctions.hpp:6290
SENDTYPE * sendtype
Definition ampiFunctions.hpp:6292
MPI_Comm comm
Definition ampiFunctions.hpp:6297
int sendcount
Definition ampiFunctions.hpp:6291
RECVTYPE * recvtype
Definition ampiFunctions.hpp:6296
int recvcount
Definition ampiFunctions.hpp:6295
const SENDTYPE::Type * sendbuf
Definition ampiFunctions.hpp:6289
RECVTYPE::ModifiedType * recvbufMod
Definition ampiFunctions.hpp:6294
RECVTYPE::Type * recvbuf
Definition ampiFunctions.hpp:6293
AMPI_Request * request
Definition ampiFunctions.hpp:6298
Definition ampiFunctions.hpp:6601
SENDTYPE::PrimalType * sendbufPrimals
Definition ampiFunctions.hpp:6604
int * recvbufCount
Definition ampiFunctions.hpp:6615
MPI_Comm comm
Definition ampiFunctions.hpp:6621
RECVTYPE::PrimalType * recvbufOldPrimals
Definition ampiFunctions.hpp:6613
int * recvbufDisplsVec
Definition ampiFunctions.hpp:6617
const int * displs
Definition ampiFunctions.hpp:6619
int sendcount
Definition ampiFunctions.hpp:6608
void * sendbufAdjoints
Definition ampiFunctions.hpp:6605
int sendbufCountVec
Definition ampiFunctions.hpp:6607
SENDTYPE::IndexType * sendbufIndices
Definition ampiFunctions.hpp:6603
~AMPI_Iallgatherv_AdjointHandle()
Definition ampiFunctions.hpp:6623
SENDTYPE * sendtype
Definition ampiFunctions.hpp:6609
int sendbufTotalSize
Definition ampiFunctions.hpp:6602
void * recvbufAdjoints
Definition ampiFunctions.hpp:6614
int * recvbufCountVec
Definition ampiFunctions.hpp:6616
RECVTYPE * recvtype
Definition ampiFunctions.hpp:6620
RECVTYPE::PrimalType * recvbufPrimals
Definition ampiFunctions.hpp:6612
int sendbufCount
Definition ampiFunctions.hpp:6606
int recvbufTotalSize
Definition ampiFunctions.hpp:6610
const int * recvcounts
Definition ampiFunctions.hpp:6618
RECVTYPE::IndexType * recvbufIndices
Definition ampiFunctions.hpp:6611
Definition ampiFunctions.hpp:6652
SENDTYPE::ModifiedType * sendbufMod
Definition ampiFunctions.hpp:6654
MPI_Comm comm
Definition ampiFunctions.hpp:6663
RECVTYPE * recvtype
Definition ampiFunctions.hpp:6662
SENDTYPE * sendtype
Definition ampiFunctions.hpp:6656
const SENDTYPE::Type * sendbuf
Definition ampiFunctions.hpp:6653
RECVTYPE::ModifiedType * recvbufMod
Definition ampiFunctions.hpp:6658
const int * recvcounts
Definition ampiFunctions.hpp:6660
int sendcount
Definition ampiFunctions.hpp:6655
AMPI_Request * request
Definition ampiFunctions.hpp:6664
RECVTYPE::Type * recvbuf
Definition ampiFunctions.hpp:6657
const int * displsMod
Definition ampiFunctions.hpp:6659
const int * displs
Definition ampiFunctions.hpp:6661
Definition ampiFunctions.hpp:7014
MPI_Comm comm
Definition ampiFunctions.hpp:7031
void * sendbufAdjoints
Definition ampiFunctions.hpp:7018
int recvbufCountVec
Definition ampiFunctions.hpp:7027
int count
Definition ampiFunctions.hpp:7028
~AMPI_Iallreduce_global_AdjointHandle()
Definition ampiFunctions.hpp:7033
DATATYPE::PrimalType * recvbufPrimals
Definition ampiFunctions.hpp:7023
int recvbufTotalSize
Definition ampiFunctions.hpp:7021
DATATYPE::PrimalType * sendbufPrimals
Definition ampiFunctions.hpp:7017
void * recvbufAdjoints
Definition ampiFunctions.hpp:7025
int recvbufCount
Definition ampiFunctions.hpp:7026
DATATYPE::IndexType * sendbufIndices
Definition ampiFunctions.hpp:7016
DATATYPE::PrimalType * recvbufOldPrimals
Definition ampiFunctions.hpp:7024
DATATYPE * datatype
Definition ampiFunctions.hpp:7029
int sendbufTotalSize
Definition ampiFunctions.hpp:7015
int sendbufCountVec
Definition ampiFunctions.hpp:7020
int sendbufCount
Definition ampiFunctions.hpp:7019
AMPI_Op op
Definition ampiFunctions.hpp:7030
DATATYPE::IndexType * recvbufIndices
Definition ampiFunctions.hpp:7022
Definition ampiFunctions.hpp:7058
AMPI_Op op
Definition ampiFunctions.hpp:7065
DATATYPE * datatype
Definition ampiFunctions.hpp:7064
int count
Definition ampiFunctions.hpp:7063
DATATYPE::Type * recvbuf
Definition ampiFunctions.hpp:7061
DATATYPE::ModifiedType * recvbufMod
Definition ampiFunctions.hpp:7062
AMPI_Request * request
Definition ampiFunctions.hpp:7067
const DATATYPE::Type * sendbuf
Definition ampiFunctions.hpp:7059
MPI_Comm comm
Definition ampiFunctions.hpp:7066
DATATYPE::ModifiedType * sendbufMod
Definition ampiFunctions.hpp:7060
Definition ampiFunctions.hpp:7400
RECVTYPE * recvtype
Definition ampiFunctions.hpp:7417
int sendcount
Definition ampiFunctions.hpp:7407
RECVTYPE::IndexType * recvbufIndices
Definition ampiFunctions.hpp:7410
int recvcount
Definition ampiFunctions.hpp:7416
RECVTYPE::PrimalType * recvbufOldPrimals
Definition ampiFunctions.hpp:7412
int recvbufTotalSize
Definition ampiFunctions.hpp:7409
int sendbufTotalSize
Definition ampiFunctions.hpp:7401
RECVTYPE::PrimalType * recvbufPrimals
Definition ampiFunctions.hpp:7411
MPI_Comm comm
Definition ampiFunctions.hpp:7418
SENDTYPE::PrimalType * sendbufPrimals
Definition ampiFunctions.hpp:7403
~AMPI_Ialltoall_AdjointHandle()
Definition ampiFunctions.hpp:7420
int sendbufCountVec
Definition ampiFunctions.hpp:7406
void * sendbufAdjoints
Definition ampiFunctions.hpp:7404
SENDTYPE * sendtype
Definition ampiFunctions.hpp:7408
void * recvbufAdjoints
Definition ampiFunctions.hpp:7413
int sendbufCount
Definition ampiFunctions.hpp:7405
int recvbufCount
Definition ampiFunctions.hpp:7414
int recvbufCountVec
Definition ampiFunctions.hpp:7415
SENDTYPE::IndexType * sendbufIndices
Definition ampiFunctions.hpp:7402
Definition ampiFunctions.hpp:7445
MPI_Comm comm
Definition ampiFunctions.hpp:7454
RECVTYPE::ModifiedType * recvbufMod
Definition ampiFunctions.hpp:7451
const SENDTYPE::Type * sendbuf
Definition ampiFunctions.hpp:7446
RECVTYPE::Type * recvbuf
Definition ampiFunctions.hpp:7450
int sendcount
Definition ampiFunctions.hpp:7448
SENDTYPE::ModifiedType * sendbufMod
Definition ampiFunctions.hpp:7447
AMPI_Request * request
Definition ampiFunctions.hpp:7455
RECVTYPE * recvtype
Definition ampiFunctions.hpp:7453
int recvcount
Definition ampiFunctions.hpp:7452
SENDTYPE * sendtype
Definition ampiFunctions.hpp:7449
Definition ampiFunctions.hpp:7756
int * sendbufCountVec
Definition ampiFunctions.hpp:7762
SENDTYPE * sendtype
Definition ampiFunctions.hpp:7766
SENDTYPE::IndexType * sendbufIndices
Definition ampiFunctions.hpp:7758
const int * sdispls
Definition ampiFunctions.hpp:7765
RECVTYPE::PrimalType * recvbufPrimals
Definition ampiFunctions.hpp:7769
int * recvbufCountVec
Definition ampiFunctions.hpp:7773
~AMPI_Ialltoallv_AdjointHandle()
Definition ampiFunctions.hpp:7780
const int * recvcounts
Definition ampiFunctions.hpp:7775
MPI_Comm comm
Definition ampiFunctions.hpp:7778
int * recvbufDisplsVec
Definition ampiFunctions.hpp:7774
void * recvbufAdjoints
Definition ampiFunctions.hpp:7771
int sendbufTotalSize
Definition ampiFunctions.hpp:7757
RECVTYPE * recvtype
Definition ampiFunctions.hpp:7777
const int * sendcounts
Definition ampiFunctions.hpp:7764
int * sendbufDisplsVec
Definition ampiFunctions.hpp:7763
SENDTYPE::PrimalType * sendbufPrimals
Definition ampiFunctions.hpp:7759
RECVTYPE::PrimalType * recvbufOldPrimals
Definition ampiFunctions.hpp:7770
int recvbufTotalSize
Definition ampiFunctions.hpp:7767
int * sendbufCount
Definition ampiFunctions.hpp:7761
int * recvbufCount
Definition ampiFunctions.hpp:7772
RECVTYPE::IndexType * recvbufIndices
Definition ampiFunctions.hpp:7768
void * sendbufAdjoints
Definition ampiFunctions.hpp:7760
const int * rdispls
Definition ampiFunctions.hpp:7776
Definition ampiFunctions.hpp:7813
RECVTYPE::ModifiedType * recvbufMod
Definition ampiFunctions.hpp:7821
const int * rdisplsMod
Definition ampiFunctions.hpp:7822
const int * rdispls
Definition ampiFunctions.hpp:7824
RECVTYPE::Type * recvbuf
Definition ampiFunctions.hpp:7820
AMPI_Request * request
Definition ampiFunctions.hpp:7827
RECVTYPE * recvtype
Definition ampiFunctions.hpp:7825
SENDTYPE * sendtype
Definition ampiFunctions.hpp:7819
const int * sendcounts
Definition ampiFunctions.hpp:7817
const int * sdisplsMod
Definition ampiFunctions.hpp:7816
SENDTYPE::ModifiedType * sendbufMod
Definition ampiFunctions.hpp:7815
const int * sdispls
Definition ampiFunctions.hpp:7818
const SENDTYPE::Type * sendbuf
Definition ampiFunctions.hpp:7814
const int * recvcounts
Definition ampiFunctions.hpp:7823
MPI_Comm comm
Definition ampiFunctions.hpp:7826
Definition ampiFunctions.hpp:8204
int bufferSendTotalSize
Definition ampiFunctions.hpp:8205
DATATYPE::PrimalType * bufferRecvPrimals
Definition ampiFunctions.hpp:8213
~AMPI_Ibcast_wrap_AdjointHandle()
Definition ampiFunctions.hpp:8223
DATATYPE::PrimalType * bufferSendPrimals
Definition ampiFunctions.hpp:8207
MPI_Comm comm
Definition ampiFunctions.hpp:8221
int bufferSendCountVec
Definition ampiFunctions.hpp:8210
int bufferSendCount
Definition ampiFunctions.hpp:8209
int count
Definition ampiFunctions.hpp:8218
int bufferRecvTotalSize
Definition ampiFunctions.hpp:8211
DATATYPE::IndexType * bufferSendIndices
Definition ampiFunctions.hpp:8206
int root
Definition ampiFunctions.hpp:8220
void * bufferRecvAdjoints
Definition ampiFunctions.hpp:8215
DATATYPE::PrimalType * bufferRecvOldPrimals
Definition ampiFunctions.hpp:8214
DATATYPE * datatype
Definition ampiFunctions.hpp:8219
int bufferRecvCountVec
Definition ampiFunctions.hpp:8217
void * bufferSendAdjoints
Definition ampiFunctions.hpp:8208
DATATYPE::IndexType * bufferRecvIndices
Definition ampiFunctions.hpp:8212
int bufferRecvCount
Definition ampiFunctions.hpp:8216
Definition ampiFunctions.hpp:8248
DATATYPE::Type * bufferRecv
Definition ampiFunctions.hpp:8251
AMPI_Request * request
Definition ampiFunctions.hpp:8257
DATATYPE * datatype
Definition ampiFunctions.hpp:8254
int root
Definition ampiFunctions.hpp:8255
DATATYPE::ModifiedType * bufferSendMod
Definition ampiFunctions.hpp:8250
MPI_Comm comm
Definition ampiFunctions.hpp:8256
DATATYPE::ModifiedType * bufferRecvMod
Definition ampiFunctions.hpp:8252
DATATYPE::Type * bufferSend
Definition ampiFunctions.hpp:8249
int count
Definition ampiFunctions.hpp:8253
Definition ampiFunctions.hpp:200
int dest
Definition ampiFunctions.hpp:209
int bufCount
Definition ampiFunctions.hpp:205
int count
Definition ampiFunctions.hpp:207
DATATYPE::PrimalType * bufPrimals
Definition ampiFunctions.hpp:203
DATATYPE::IndexType * bufIndices
Definition ampiFunctions.hpp:202
int tag
Definition ampiFunctions.hpp:210
~AMPI_Ibsend_AdjointHandle()
Definition ampiFunctions.hpp:213
DATATYPE * datatype
Definition ampiFunctions.hpp:208
void * bufAdjoints
Definition ampiFunctions.hpp:204
MPI_Comm comm
Definition ampiFunctions.hpp:211
int bufTotalSize
Definition ampiFunctions.hpp:201
int bufCountVec
Definition ampiFunctions.hpp:206
Definition ampiFunctions.hpp:226
const DATATYPE::Type * buf
Definition ampiFunctions.hpp:227
int count
Definition ampiFunctions.hpp:229
DATATYPE::ModifiedType * bufMod
Definition ampiFunctions.hpp:228
MPI_Comm comm
Definition ampiFunctions.hpp:233
AMPI_Request * request
Definition ampiFunctions.hpp:234
int dest
Definition ampiFunctions.hpp:231
int tag
Definition ampiFunctions.hpp:232
DATATYPE * datatype
Definition ampiFunctions.hpp:230
Definition ampiFunctions.hpp:8569
SENDTYPE * sendtype
Definition ampiFunctions.hpp:8577
int sendbufTotalSize
Definition ampiFunctions.hpp:8570
int sendbufCount
Definition ampiFunctions.hpp:8574
RECVTYPE::PrimalType * recvbufOldPrimals
Definition ampiFunctions.hpp:8581
SENDTYPE::IndexType * sendbufIndices
Definition ampiFunctions.hpp:8571
int sendbufCountVec
Definition ampiFunctions.hpp:8575
int root
Definition ampiFunctions.hpp:8587
RECVTYPE::PrimalType * recvbufPrimals
Definition ampiFunctions.hpp:8580
int recvbufCount
Definition ampiFunctions.hpp:8583
int recvbufCountVec
Definition ampiFunctions.hpp:8584
void * recvbufAdjoints
Definition ampiFunctions.hpp:8582
RECVTYPE * recvtype
Definition ampiFunctions.hpp:8586
SENDTYPE::PrimalType * sendbufPrimals
Definition ampiFunctions.hpp:8572
~AMPI_Igather_AdjointHandle()
Definition ampiFunctions.hpp:8590
void * sendbufAdjoints
Definition ampiFunctions.hpp:8573
RECVTYPE::IndexType * recvbufIndices
Definition ampiFunctions.hpp:8579
int sendcount
Definition ampiFunctions.hpp:8576
int recvcount
Definition ampiFunctions.hpp:8585
int recvbufTotalSize
Definition ampiFunctions.hpp:8578
MPI_Comm comm
Definition ampiFunctions.hpp:8588
Definition ampiFunctions.hpp:8615
AMPI_Request * request
Definition ampiFunctions.hpp:8626
RECVTYPE::ModifiedType * recvbufMod
Definition ampiFunctions.hpp:8621
SENDTYPE::ModifiedType * sendbufMod
Definition ampiFunctions.hpp:8617
MPI_Comm comm
Definition ampiFunctions.hpp:8625
int sendcount
Definition ampiFunctions.hpp:8618
RECVTYPE * recvtype
Definition ampiFunctions.hpp:8623
int recvcount
Definition ampiFunctions.hpp:8622
int root
Definition ampiFunctions.hpp:8624
const SENDTYPE::Type * sendbuf
Definition ampiFunctions.hpp:8616
RECVTYPE::Type * recvbuf
Definition ampiFunctions.hpp:8620
SENDTYPE * sendtype
Definition ampiFunctions.hpp:8619
Definition ampiFunctions.hpp:8966
RECVTYPE::PrimalType * recvbufOldPrimals
Definition ampiFunctions.hpp:8978
int sendcount
Definition ampiFunctions.hpp:8973
~AMPI_Igatherv_AdjointHandle()
Definition ampiFunctions.hpp:8989
int * recvbufCount
Definition ampiFunctions.hpp:8980
const int * recvcounts
Definition ampiFunctions.hpp:8983
int root
Definition ampiFunctions.hpp:8986
void * sendbufAdjoints
Definition ampiFunctions.hpp:8970
int sendbufCountVec
Definition ampiFunctions.hpp:8972
RECVTYPE::PrimalType * recvbufPrimals
Definition ampiFunctions.hpp:8977
int * recvbufDisplsVec
Definition ampiFunctions.hpp:8982
void * recvbufAdjoints
Definition ampiFunctions.hpp:8979
SENDTYPE::IndexType * sendbufIndices
Definition ampiFunctions.hpp:8968
int sendbufCount
Definition ampiFunctions.hpp:8971
MPI_Comm comm
Definition ampiFunctions.hpp:8987
const int * displs
Definition ampiFunctions.hpp:8984
int recvbufTotalSize
Definition ampiFunctions.hpp:8975
SENDTYPE * sendtype
Definition ampiFunctions.hpp:8974
int sendbufTotalSize
Definition ampiFunctions.hpp:8967
RECVTYPE * recvtype
Definition ampiFunctions.hpp:8985
RECVTYPE::IndexType * recvbufIndices
Definition ampiFunctions.hpp:8976
SENDTYPE::PrimalType * sendbufPrimals
Definition ampiFunctions.hpp:8969
int * recvbufCountVec
Definition ampiFunctions.hpp:8981
Definition ampiFunctions.hpp:9018
MPI_Comm comm
Definition ampiFunctions.hpp:9030
int root
Definition ampiFunctions.hpp:9029
const int * displsMod
Definition ampiFunctions.hpp:9025
RECVTYPE::Type * recvbuf
Definition ampiFunctions.hpp:9023
AMPI_Request * request
Definition ampiFunctions.hpp:9031
int sendcount
Definition ampiFunctions.hpp:9021
RECVTYPE * recvtype
Definition ampiFunctions.hpp:9028
SENDTYPE * sendtype
Definition ampiFunctions.hpp:9022
const int * displs
Definition ampiFunctions.hpp:9027
const int * recvcounts
Definition ampiFunctions.hpp:9026
RECVTYPE::ModifiedType * recvbufMod
Definition ampiFunctions.hpp:9024
const SENDTYPE::Type * sendbuf
Definition ampiFunctions.hpp:9019
SENDTYPE::ModifiedType * sendbufMod
Definition ampiFunctions.hpp:9020
Definition ampiFunctions.hpp:671
void * bufAdjoints
Definition ampiFunctions.hpp:676
DATATYPE::PrimalType * bufOldPrimals
Definition ampiFunctions.hpp:675
int bufCountVec
Definition ampiFunctions.hpp:678
DATATYPE * datatype
Definition ampiFunctions.hpp:680
IrecvAdjCall reverse_send
Definition ampiFunctions.hpp:682
int bufCount
Definition ampiFunctions.hpp:677
int bufTotalSize
Definition ampiFunctions.hpp:672
~AMPI_Imrecv_AdjointHandle()
Definition ampiFunctions.hpp:684
int count
Definition ampiFunctions.hpp:679
DATATYPE::PrimalType * bufPrimals
Definition ampiFunctions.hpp:674
AMPI_Message message
Definition ampiFunctions.hpp:681
DATATYPE::IndexType * bufIndices
Definition ampiFunctions.hpp:673
Definition ampiFunctions.hpp:701
int count
Definition ampiFunctions.hpp:704
DATATYPE::Type * buf
Definition ampiFunctions.hpp:702
DATATYPE::ModifiedType * bufMod
Definition ampiFunctions.hpp:703
DATATYPE * datatype
Definition ampiFunctions.hpp:705
IrecvAdjCall reverse_send
Definition ampiFunctions.hpp:708
AMPI_Request * request
Definition ampiFunctions.hpp:707
AMPI_Message * message
Definition ampiFunctions.hpp:706
Definition ampiFunctions.hpp:932
int bufCount
Definition ampiFunctions.hpp:938
DATATYPE::IndexType * bufIndices
Definition ampiFunctions.hpp:934
int source
Definition ampiFunctions.hpp:942
IrecvAdjCall reverse_send
Definition ampiFunctions.hpp:945
int bufTotalSize
Definition ampiFunctions.hpp:933
DATATYPE::PrimalType * bufOldPrimals
Definition ampiFunctions.hpp:936
DATATYPE::PrimalType * bufPrimals
Definition ampiFunctions.hpp:935
int tag
Definition ampiFunctions.hpp:943
void * bufAdjoints
Definition ampiFunctions.hpp:937
int bufCountVec
Definition ampiFunctions.hpp:939
DATATYPE * datatype
Definition ampiFunctions.hpp:941
MPI_Comm comm
Definition ampiFunctions.hpp:944
int count
Definition ampiFunctions.hpp:940
~AMPI_Irecv_AdjointHandle()
Definition ampiFunctions.hpp:947
Definition ampiFunctions.hpp:964
int count
Definition ampiFunctions.hpp:967
int source
Definition ampiFunctions.hpp:969
DATATYPE::Type * buf
Definition ampiFunctions.hpp:965
int tag
Definition ampiFunctions.hpp:970
DATATYPE * datatype
Definition ampiFunctions.hpp:968
MPI_Comm comm
Definition ampiFunctions.hpp:971
DATATYPE::ModifiedType * bufMod
Definition ampiFunctions.hpp:966
IrecvAdjCall reverse_send
Definition ampiFunctions.hpp:973
AMPI_Request * request
Definition ampiFunctions.hpp:972
Definition ampiFunctions.hpp:9418
int sendbufCount
Definition ampiFunctions.hpp:9423
~AMPI_Ireduce_global_AdjointHandle()
Definition ampiFunctions.hpp:9438
AMPI_Op op
Definition ampiFunctions.hpp:9434
DATATYPE * datatype
Definition ampiFunctions.hpp:9433
void * recvbufAdjoints
Definition ampiFunctions.hpp:9429
int root
Definition ampiFunctions.hpp:9435
DATATYPE::PrimalType * sendbufPrimals
Definition ampiFunctions.hpp:9421
MPI_Comm comm
Definition ampiFunctions.hpp:9436
int sendbufTotalSize
Definition ampiFunctions.hpp:9419
int count
Definition ampiFunctions.hpp:9432
DATATYPE::PrimalType * recvbufOldPrimals
Definition ampiFunctions.hpp:9428
void * sendbufAdjoints
Definition ampiFunctions.hpp:9422
DATATYPE::IndexType * sendbufIndices
Definition ampiFunctions.hpp:9420
int sendbufCountVec
Definition ampiFunctions.hpp:9424
DATATYPE::PrimalType * recvbufPrimals
Definition ampiFunctions.hpp:9427
int recvbufCountVec
Definition ampiFunctions.hpp:9431
DATATYPE::IndexType * recvbufIndices
Definition ampiFunctions.hpp:9426
int recvbufTotalSize
Definition ampiFunctions.hpp:9425
int recvbufCount
Definition ampiFunctions.hpp:9430
Definition ampiFunctions.hpp:9463
const DATATYPE::Type * sendbuf
Definition ampiFunctions.hpp:9464
DATATYPE * datatype
Definition ampiFunctions.hpp:9469
DATATYPE::ModifiedType * sendbufMod
Definition ampiFunctions.hpp:9465
MPI_Comm comm
Definition ampiFunctions.hpp:9472
AMPI_Request * request
Definition ampiFunctions.hpp:9473
DATATYPE::Type * recvbuf
Definition ampiFunctions.hpp:9466
DATATYPE::ModifiedType * recvbufMod
Definition ampiFunctions.hpp:9467
int root
Definition ampiFunctions.hpp:9471
int count
Definition ampiFunctions.hpp:9468
AMPI_Op op
Definition ampiFunctions.hpp:9470
Definition ampiFunctions.hpp:1205
int bufCountVec
Definition ampiFunctions.hpp:1211
DATATYPE * datatype
Definition ampiFunctions.hpp:1213
int bufCount
Definition ampiFunctions.hpp:1210
MPI_Comm comm
Definition ampiFunctions.hpp:1216
int bufTotalSize
Definition ampiFunctions.hpp:1206
void * bufAdjoints
Definition ampiFunctions.hpp:1209
~AMPI_Irsend_AdjointHandle()
Definition ampiFunctions.hpp:1218
DATATYPE::IndexType * bufIndices
Definition ampiFunctions.hpp:1207
int dest
Definition ampiFunctions.hpp:1214
DATATYPE::PrimalType * bufPrimals
Definition ampiFunctions.hpp:1208
int tag
Definition ampiFunctions.hpp:1215
int count
Definition ampiFunctions.hpp:1212
Definition ampiFunctions.hpp:1231
int dest
Definition ampiFunctions.hpp:1236
AMPI_Request * request
Definition ampiFunctions.hpp:1239
DATATYPE::ModifiedType * bufMod
Definition ampiFunctions.hpp:1233
DATATYPE * datatype
Definition ampiFunctions.hpp:1235
int count
Definition ampiFunctions.hpp:1234
MPI_Comm comm
Definition ampiFunctions.hpp:1238
const DATATYPE::Type * buf
Definition ampiFunctions.hpp:1232
int tag
Definition ampiFunctions.hpp:1237
Definition ampiFunctions.hpp:9841
MPI_Comm comm
Definition ampiFunctions.hpp:9860
void * sendbufAdjoints
Definition ampiFunctions.hpp:9845
RECVTYPE::PrimalType * recvbufOldPrimals
Definition ampiFunctions.hpp:9853
SENDTYPE * sendtype
Definition ampiFunctions.hpp:9849
SENDTYPE::IndexType * sendbufIndices
Definition ampiFunctions.hpp:9843
int sendbufTotalSize
Definition ampiFunctions.hpp:9842
int sendbufCount
Definition ampiFunctions.hpp:9846
RECVTYPE * recvtype
Definition ampiFunctions.hpp:9858
int recvbufCountVec
Definition ampiFunctions.hpp:9856
~AMPI_Iscatter_AdjointHandle()
Definition ampiFunctions.hpp:9862
RECVTYPE::IndexType * recvbufIndices
Definition ampiFunctions.hpp:9851
int recvcount
Definition ampiFunctions.hpp:9857
RECVTYPE::PrimalType * recvbufPrimals
Definition ampiFunctions.hpp:9852
SENDTYPE::PrimalType * sendbufPrimals
Definition ampiFunctions.hpp:9844
int recvbufTotalSize
Definition ampiFunctions.hpp:9850
int root
Definition ampiFunctions.hpp:9859
void * recvbufAdjoints
Definition ampiFunctions.hpp:9854
int sendcount
Definition ampiFunctions.hpp:9848
int recvbufCount
Definition ampiFunctions.hpp:9855
int sendbufCountVec
Definition ampiFunctions.hpp:9847
Definition ampiFunctions.hpp:9887
RECVTYPE::ModifiedType * recvbufMod
Definition ampiFunctions.hpp:9893
int root
Definition ampiFunctions.hpp:9896
RECVTYPE::Type * recvbuf
Definition ampiFunctions.hpp:9892
SENDTYPE::ModifiedType * sendbufMod
Definition ampiFunctions.hpp:9889
const SENDTYPE::Type * sendbuf
Definition ampiFunctions.hpp:9888
SENDTYPE * sendtype
Definition ampiFunctions.hpp:9891
RECVTYPE * recvtype
Definition ampiFunctions.hpp:9895
int sendcount
Definition ampiFunctions.hpp:9890
AMPI_Request * request
Definition ampiFunctions.hpp:9898
int recvcount
Definition ampiFunctions.hpp:9894
MPI_Comm comm
Definition ampiFunctions.hpp:9897
Definition ampiFunctions.hpp:10240
int recvcount
Definition ampiFunctions.hpp:10258
RECVTYPE::IndexType * recvbufIndices
Definition ampiFunctions.hpp:10252
const int * sendcounts
Definition ampiFunctions.hpp:10248
int sendbufTotalSize
Definition ampiFunctions.hpp:10241
int * sendbufCount
Definition ampiFunctions.hpp:10245
SENDTYPE::IndexType * sendbufIndices
Definition ampiFunctions.hpp:10242
int recvbufCountVec
Definition ampiFunctions.hpp:10257
RECVTYPE * recvtype
Definition ampiFunctions.hpp:10259
RECVTYPE::PrimalType * recvbufOldPrimals
Definition ampiFunctions.hpp:10254
int * sendbufCountVec
Definition ampiFunctions.hpp:10246
void * sendbufAdjoints
Definition ampiFunctions.hpp:10244
int * sendbufDisplsVec
Definition ampiFunctions.hpp:10247
SENDTYPE * sendtype
Definition ampiFunctions.hpp:10250
MPI_Comm comm
Definition ampiFunctions.hpp:10261
int root
Definition ampiFunctions.hpp:10260
int recvbufCount
Definition ampiFunctions.hpp:10256
void * recvbufAdjoints
Definition ampiFunctions.hpp:10255
SENDTYPE::PrimalType * sendbufPrimals
Definition ampiFunctions.hpp:10243
int recvbufTotalSize
Definition ampiFunctions.hpp:10251
RECVTYPE::PrimalType * recvbufPrimals
Definition ampiFunctions.hpp:10253
~AMPI_Iscatterv_AdjointHandle()
Definition ampiFunctions.hpp:10263
const int * displs
Definition ampiFunctions.hpp:10249
Definition ampiFunctions.hpp:10292
MPI_Comm comm
Definition ampiFunctions.hpp:10304
int root
Definition ampiFunctions.hpp:10303
RECVTYPE::ModifiedType * recvbufMod
Definition ampiFunctions.hpp:10300
RECVTYPE * recvtype
Definition ampiFunctions.hpp:10302
int recvcount
Definition ampiFunctions.hpp:10301
const int * displsMod
Definition ampiFunctions.hpp:10295
const SENDTYPE::Type * sendbuf
Definition ampiFunctions.hpp:10293
const int * displs
Definition ampiFunctions.hpp:10297
const int * sendcounts
Definition ampiFunctions.hpp:10296
AMPI_Request * request
Definition ampiFunctions.hpp:10305
SENDTYPE::ModifiedType * sendbufMod
Definition ampiFunctions.hpp:10294
RECVTYPE::Type * recvbuf
Definition ampiFunctions.hpp:10299
SENDTYPE * sendtype
Definition ampiFunctions.hpp:10298
Definition ampiFunctions.hpp:1452
int bufCountVec
Definition ampiFunctions.hpp:1458
DATATYPE::PrimalType * bufPrimals
Definition ampiFunctions.hpp:1455
int tag
Definition ampiFunctions.hpp:1462
void * bufAdjoints
Definition ampiFunctions.hpp:1456
int count
Definition ampiFunctions.hpp:1459
~AMPI_Isend_AdjointHandle()
Definition ampiFunctions.hpp:1465
DATATYPE * datatype
Definition ampiFunctions.hpp:1460
int dest
Definition ampiFunctions.hpp:1461
MPI_Comm comm
Definition ampiFunctions.hpp:1463
DATATYPE::IndexType * bufIndices
Definition ampiFunctions.hpp:1454
int bufCount
Definition ampiFunctions.hpp:1457
int bufTotalSize
Definition ampiFunctions.hpp:1453
Definition ampiFunctions.hpp:1478
int count
Definition ampiFunctions.hpp:1481
const DATATYPE::Type * buf
Definition ampiFunctions.hpp:1479
int dest
Definition ampiFunctions.hpp:1483
DATATYPE * datatype
Definition ampiFunctions.hpp:1482
AMPI_Request * request
Definition ampiFunctions.hpp:1486
int tag
Definition ampiFunctions.hpp:1484
MPI_Comm comm
Definition ampiFunctions.hpp:1485
DATATYPE::ModifiedType * bufMod
Definition ampiFunctions.hpp:1480
Definition ampiFunctions.hpp:1699
~AMPI_Issend_AdjointHandle()
Definition ampiFunctions.hpp:1712
int bufCountVec
Definition ampiFunctions.hpp:1705
DATATYPE::PrimalType * bufPrimals
Definition ampiFunctions.hpp:1702
DATATYPE::IndexType * bufIndices
Definition ampiFunctions.hpp:1701
int bufCount
Definition ampiFunctions.hpp:1704
MPI_Comm comm
Definition ampiFunctions.hpp:1710
int tag
Definition ampiFunctions.hpp:1709
int dest
Definition ampiFunctions.hpp:1708
void * bufAdjoints
Definition ampiFunctions.hpp:1703
int bufTotalSize
Definition ampiFunctions.hpp:1700
int count
Definition ampiFunctions.hpp:1706
DATATYPE * datatype
Definition ampiFunctions.hpp:1707
Definition ampiFunctions.hpp:1725
int count
Definition ampiFunctions.hpp:1728
AMPI_Request * request
Definition ampiFunctions.hpp:1733
int tag
Definition ampiFunctions.hpp:1731
int dest
Definition ampiFunctions.hpp:1730
DATATYPE::ModifiedType * bufMod
Definition ampiFunctions.hpp:1727
const DATATYPE::Type * buf
Definition ampiFunctions.hpp:1726
DATATYPE * datatype
Definition ampiFunctions.hpp:1729
MPI_Comm comm
Definition ampiFunctions.hpp:1732
Stores additional information for a MPI_Message.
Definition message.hpp:44
MPI_Message message
Definition message.hpp:45
Definition ampiFunctions.hpp:1946
DATATYPE::PrimalType * bufPrimals
Definition ampiFunctions.hpp:1949
~AMPI_Mrecv_AdjointHandle()
Definition ampiFunctions.hpp:1960
int bufTotalSize
Definition ampiFunctions.hpp:1947
int count
Definition ampiFunctions.hpp:1954
RecvAdjCall reverse_send
Definition ampiFunctions.hpp:1958
int bufCountVec
Definition ampiFunctions.hpp:1953
AMPI_Message message
Definition ampiFunctions.hpp:1956
DATATYPE::PrimalType * bufOldPrimals
Definition ampiFunctions.hpp:1950
DATATYPE * datatype
Definition ampiFunctions.hpp:1955
DATATYPE::IndexType * bufIndices
Definition ampiFunctions.hpp:1948
int bufCount
Definition ampiFunctions.hpp:1952
void * bufAdjoints
Definition ampiFunctions.hpp:1951
MPI_Status * status
Definition ampiFunctions.hpp:1957
Structure for the special handling of the MPI_Op structure.
Definition op.hpp:50
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:2123
~AMPI_Recv_AdjointHandle()
Definition ampiFunctions.hpp:2138
DATATYPE::PrimalType * bufPrimals
Definition ampiFunctions.hpp:2126
int count
Definition ampiFunctions.hpp:2131
RecvAdjCall reverse_send
Definition ampiFunctions.hpp:2136
MPI_Comm comm
Definition ampiFunctions.hpp:2135
int source
Definition ampiFunctions.hpp:2133
DATATYPE::PrimalType * bufOldPrimals
Definition ampiFunctions.hpp:2127
int bufCountVec
Definition ampiFunctions.hpp:2130
void * bufAdjoints
Definition ampiFunctions.hpp:2128
int bufTotalSize
Definition ampiFunctions.hpp:2124
int bufCount
Definition ampiFunctions.hpp:2129
DATATYPE * datatype
Definition ampiFunctions.hpp:2132
DATATYPE::IndexType * bufIndices
Definition ampiFunctions.hpp:2125
int tag
Definition ampiFunctions.hpp:2134
Definition ampiFunctions.hpp:2307
MPI_Comm comm
Definition ampiFunctions.hpp:2314
DATATYPE::Type * buf
Definition ampiFunctions.hpp:2308
int count
Definition ampiFunctions.hpp:2310
int tag
Definition ampiFunctions.hpp:2313
AMPI_Request * request
Definition ampiFunctions.hpp:2315
int source
Definition ampiFunctions.hpp:2312
IrecvAdjCall reverse_send
Definition ampiFunctions.hpp:2316
DATATYPE::ModifiedType * bufMod
Definition ampiFunctions.hpp:2309
DATATYPE * datatype
Definition ampiFunctions.hpp:2311
Definition ampiFunctions.hpp:10697
DATATYPE::PrimalType * recvbufOldPrimals
Definition ampiFunctions.hpp:10707
int sendbufTotalSize
Definition ampiFunctions.hpp:10698
int recvbufCountVec
Definition ampiFunctions.hpp:10710
DATATYPE * datatype
Definition ampiFunctions.hpp:10712
int recvbufTotalSize
Definition ampiFunctions.hpp:10704
DATATYPE::PrimalType * sendbufPrimals
Definition ampiFunctions.hpp:10700
int count
Definition ampiFunctions.hpp:10711
DATATYPE::PrimalType * recvbufPrimals
Definition ampiFunctions.hpp:10706
void * sendbufAdjoints
Definition ampiFunctions.hpp:10701
int sendbufCountVec
Definition ampiFunctions.hpp:10703
~AMPI_Reduce_global_AdjointHandle()
Definition ampiFunctions.hpp:10717
DATATYPE::IndexType * sendbufIndices
Definition ampiFunctions.hpp:10699
AMPI_Op op
Definition ampiFunctions.hpp:10713
void * recvbufAdjoints
Definition ampiFunctions.hpp:10708
MPI_Comm comm
Definition ampiFunctions.hpp:10715
int root
Definition ampiFunctions.hpp:10714
int recvbufCount
Definition ampiFunctions.hpp:10709
int sendbufCount
Definition ampiFunctions.hpp:10702
DATATYPE::IndexType * recvbufIndices
Definition ampiFunctions.hpp:10705
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:2549
MPI_Comm comm
Definition ampiFunctions.hpp:2560
int count
Definition ampiFunctions.hpp:2556
int bufCountVec
Definition ampiFunctions.hpp:2555
DATATYPE * datatype
Definition ampiFunctions.hpp:2557
DATATYPE::IndexType * bufIndices
Definition ampiFunctions.hpp:2551
DATATYPE::PrimalType * bufPrimals
Definition ampiFunctions.hpp:2552
~AMPI_Rsend_AdjointHandle()
Definition ampiFunctions.hpp:2562
int tag
Definition ampiFunctions.hpp:2559
int bufTotalSize
Definition ampiFunctions.hpp:2550
int bufCount
Definition ampiFunctions.hpp:2554
void * bufAdjoints
Definition ampiFunctions.hpp:2553
int dest
Definition ampiFunctions.hpp:2558
Definition ampiFunctions.hpp:2705
DATATYPE * datatype
Definition ampiFunctions.hpp:2709
DATATYPE::ModifiedType * bufMod
Definition ampiFunctions.hpp:2707
int tag
Definition ampiFunctions.hpp:2711
const DATATYPE::Type * buf
Definition ampiFunctions.hpp:2706
MPI_Comm comm
Definition ampiFunctions.hpp:2712
AMPI_Request * request
Definition ampiFunctions.hpp:2713
int count
Definition ampiFunctions.hpp:2708
int dest
Definition ampiFunctions.hpp:2710
Definition ampiFunctions.hpp:11012
SENDTYPE::IndexType * sendbufIndices
Definition ampiFunctions.hpp:11014
void * sendbufAdjoints
Definition ampiFunctions.hpp:11016
int recvbufTotalSize
Definition ampiFunctions.hpp:11021
RECVTYPE * recvtype
Definition ampiFunctions.hpp:11029
int sendbufCountVec
Definition ampiFunctions.hpp:11018
RECVTYPE::IndexType * recvbufIndices
Definition ampiFunctions.hpp:11022
RECVTYPE::PrimalType * recvbufOldPrimals
Definition ampiFunctions.hpp:11024
void * recvbufAdjoints
Definition ampiFunctions.hpp:11025
SENDTYPE::PrimalType * sendbufPrimals
Definition ampiFunctions.hpp:11015
int recvbufCountVec
Definition ampiFunctions.hpp:11027
int sendbufTotalSize
Definition ampiFunctions.hpp:11013
SENDTYPE * sendtype
Definition ampiFunctions.hpp:11020
int recvcount
Definition ampiFunctions.hpp:11028
int root
Definition ampiFunctions.hpp:11030
~AMPI_Scatter_AdjointHandle()
Definition ampiFunctions.hpp:11033
int recvbufCount
Definition ampiFunctions.hpp:11026
int sendcount
Definition ampiFunctions.hpp:11019
int sendbufCount
Definition ampiFunctions.hpp:11017
RECVTYPE::PrimalType * recvbufPrimals
Definition ampiFunctions.hpp:11023
MPI_Comm comm
Definition ampiFunctions.hpp:11031
Definition ampiFunctions.hpp:11305
RECVTYPE::PrimalType * recvbufOldPrimals
Definition ampiFunctions.hpp:11319
int root
Definition ampiFunctions.hpp:11325
SENDTYPE::IndexType * sendbufIndices
Definition ampiFunctions.hpp:11307
int recvcount
Definition ampiFunctions.hpp:11323
void * recvbufAdjoints
Definition ampiFunctions.hpp:11320
RECVTYPE::IndexType * recvbufIndices
Definition ampiFunctions.hpp:11317
RECVTYPE * recvtype
Definition ampiFunctions.hpp:11324
~AMPI_Scatterv_AdjointHandle()
Definition ampiFunctions.hpp:11328
const int * sendcounts
Definition ampiFunctions.hpp:11313
SENDTYPE::PrimalType * sendbufPrimals
Definition ampiFunctions.hpp:11308
SENDTYPE * sendtype
Definition ampiFunctions.hpp:11315
int recvbufTotalSize
Definition ampiFunctions.hpp:11316
int recvbufCountVec
Definition ampiFunctions.hpp:11322
int * sendbufCountVec
Definition ampiFunctions.hpp:11311
MPI_Comm comm
Definition ampiFunctions.hpp:11326
int * sendbufDisplsVec
Definition ampiFunctions.hpp:11312
int * sendbufCount
Definition ampiFunctions.hpp:11310
int recvbufCount
Definition ampiFunctions.hpp:11321
int sendbufTotalSize
Definition ampiFunctions.hpp:11306
void * sendbufAdjoints
Definition ampiFunctions.hpp:11309
const int * displs
Definition ampiFunctions.hpp:11314
RECVTYPE::PrimalType * recvbufPrimals
Definition ampiFunctions.hpp:11318
Definition ampiFunctions.hpp:2928
~AMPI_Send_AdjointHandle()
Definition ampiFunctions.hpp:2941
DATATYPE::PrimalType * bufPrimals
Definition ampiFunctions.hpp:2931
void * bufAdjoints
Definition ampiFunctions.hpp:2932
MPI_Comm comm
Definition ampiFunctions.hpp:2939
DATATYPE * datatype
Definition ampiFunctions.hpp:2936
DATATYPE::IndexType * bufIndices
Definition ampiFunctions.hpp:2930
int dest
Definition ampiFunctions.hpp:2937
int bufTotalSize
Definition ampiFunctions.hpp:2929
int count
Definition ampiFunctions.hpp:2935
int bufCount
Definition ampiFunctions.hpp:2933
int bufCountVec
Definition ampiFunctions.hpp:2934
int tag
Definition ampiFunctions.hpp:2938
Definition ampiFunctions.hpp:3084
DATATYPE * datatype
Definition ampiFunctions.hpp:3088
MPI_Comm comm
Definition ampiFunctions.hpp:3091
const DATATYPE::Type * buf
Definition ampiFunctions.hpp:3085
DATATYPE::ModifiedType * bufMod
Definition ampiFunctions.hpp:3086
AMPI_Request * request
Definition ampiFunctions.hpp:3092
int tag
Definition ampiFunctions.hpp:3090
int count
Definition ampiFunctions.hpp:3087
int dest
Definition ampiFunctions.hpp:3089
Definition ampiFunctions.hpp:3307
SENDTYPE::IndexType * sendbufIndices
Definition ampiFunctions.hpp:3309
void * sendbufAdjoints
Definition ampiFunctions.hpp:3311
int sendcount
Definition ampiFunctions.hpp:3314
int recvbufCountVec
Definition ampiFunctions.hpp:3324
SENDTYPE::PrimalType * sendbufPrimals
Definition ampiFunctions.hpp:3310
int source
Definition ampiFunctions.hpp:3327
int recvcount
Definition ampiFunctions.hpp:3325
MPI_Comm comm
Definition ampiFunctions.hpp:3329
RECVTYPE * recvtype
Definition ampiFunctions.hpp:3326
int recvbufTotalSize
Definition ampiFunctions.hpp:3318
~AMPI_Sendrecv_AdjointHandle()
Definition ampiFunctions.hpp:3331
RECVTYPE::IndexType * recvbufIndices
Definition ampiFunctions.hpp:3319
int recvbufCount
Definition ampiFunctions.hpp:3323
int recvtag
Definition ampiFunctions.hpp:3328
SENDTYPE * sendtype
Definition ampiFunctions.hpp:3315
RECVTYPE::PrimalType * recvbufOldPrimals
Definition ampiFunctions.hpp:3321
int sendbufCountVec
Definition ampiFunctions.hpp:3313
int sendbufTotalSize
Definition ampiFunctions.hpp:3308
int sendtag
Definition ampiFunctions.hpp:3317
void * recvbufAdjoints
Definition ampiFunctions.hpp:3322
RECVTYPE::PrimalType * recvbufPrimals
Definition ampiFunctions.hpp:3320
int dest
Definition ampiFunctions.hpp:3316
int sendbufCount
Definition ampiFunctions.hpp:3312
Definition ampiFunctions.hpp:3557
MPI_Comm comm
Definition ampiFunctions.hpp:3568
int count
Definition ampiFunctions.hpp:3564
DATATYPE * datatype
Definition ampiFunctions.hpp:3565
void * bufAdjoints
Definition ampiFunctions.hpp:3561
int tag
Definition ampiFunctions.hpp:3567
int bufCount
Definition ampiFunctions.hpp:3562
DATATYPE::PrimalType * bufPrimals
Definition ampiFunctions.hpp:3560
DATATYPE::IndexType * bufIndices
Definition ampiFunctions.hpp:3559
int bufCountVec
Definition ampiFunctions.hpp:3563
int bufTotalSize
Definition ampiFunctions.hpp:3558
~AMPI_Ssend_AdjointHandle()
Definition ampiFunctions.hpp:3570
int dest
Definition ampiFunctions.hpp:3566
Definition ampiFunctions.hpp:3713
int dest
Definition ampiFunctions.hpp:3718
AMPI_Request * request
Definition ampiFunctions.hpp:3721
int tag
Definition ampiFunctions.hpp:3719
MPI_Comm comm
Definition ampiFunctions.hpp:3720
DATATYPE::ModifiedType * bufMod
Definition ampiFunctions.hpp:3715
DATATYPE * datatype
Definition ampiFunctions.hpp:3717
int count
Definition ampiFunctions.hpp:3716
const DATATYPE::Type * buf
Definition ampiFunctions.hpp:3714
AMPI_Request requestReverse
Definition async.hpp:95
AsyncAdjointHandle * toolHandle
Definition async.hpp:103
Definition typeDefinitions.h:53
PrimalFunction funcPrimal
Definition typeDefinitions.h:56
ReverseFunction funcReverse
Definition typeDefinitions.h:54
ForwardFunction funcForward
Definition typeDefinitions.h:55