42#ifndef TEUCHOS_COMM_HELPERS_HPP
43#define TEUCHOS_COMM_HELPERS_HPP
57#ifdef HAVE_TEUCHOS_MPI
69#ifdef HAVE_TEUCHOS_MPI
78std::string getMpiErrorString (
const int errCode);
87template<
typename Ordinal>
94template<
typename Ordinal>
101template<
typename Ordinal>
108template<
typename Ordinal,
typename Packet>
119template<
typename Ordinal,
typename Packet>
130template<
typename Ordinal,
typename Packet>
140template<
typename Ordinal,
typename Packet>
150template<
typename Ordinal,
typename Packet>
160template<
typename Ordinal,
typename Packet>
171template<
typename Ordinal,
typename Packet,
typename Serializer>
183template<
typename Ordinal,
typename Packet>
196template<
typename Ordinal,
typename Packet>
211template<
typename Ordinal,
typename Packet>
223template<
typename Ordinal,
typename Packet>
235template<
typename Ordinal,
typename Packet,
typename Serializer>
269template<
typename Ordinal,
typename Packet>
282 (
true, std::logic_error,
"Teuchos::scatter<" <<
284 <<
">: Generic version is not yet implemented. This function currently "
285 "only has an implementtion for Ordinal = int and Packet = int. "
286 "See Bug 6375 and Bug 6336.");
316template<
typename Ordinal,
typename Packet>
347template<
typename Ordinal,
typename Packet>
358template<
typename Ordinal,
typename Packet>
369template<
typename Ordinal,
typename Packet>
380template<
typename Ordinal,
typename Packet>
392template<
typename Ordinal,
typename Packet,
typename Serializer>
405template<
typename Ordinal,
typename Packet,
typename Serializer>
418template<
typename Ordinal,
typename Packet>
429template<
typename Ordinal,
typename Packet>
440template<
typename Ordinal,
typename Packet>
451template<
typename Ordinal,
typename Packet>
463template<
typename Ordinal,
typename Packet,
typename Serializer>
476template<
typename Ordinal,
typename Packet,
typename Serializer>
488template<
typename Ordinal,
typename Packet>
495template<
typename Ordinal,
typename Packet>
507template<
typename Ordinal,
typename Packet>
514template<
typename Ordinal,
typename Packet>
526template<
typename Ordinal,
typename Packet>
536template<
typename Ordinal,
typename Packet>
548template<
typename Ordinal,
typename Packet>
559template<
typename Ordinal,
typename Packet,
typename Serializer>
570template<
typename Ordinal,
typename Packet>
580template<
typename Ordinal,
typename Packet>
590template<
typename Ordinal,
typename Packet>
601template<
typename Ordinal,
typename Packet,
typename Serializer>
613template<
typename Ordinal,
typename Packet>
621template<
typename Ordinal,
typename Packet>
633template<
typename Ordinal,
typename Packet>
645template<
typename Ordinal,
typename Packet,
typename Serializer>
657template<
typename Ordinal,
typename Packet>
665template<
typename Ordinal,
typename Packet>
676template<
typename Ordinal,
typename Packet>
688template<
typename Ordinal,
typename Packet,
typename Serializer>
709template<
typename Ordinal,
typename Packet>
717template<
typename Ordinal,
typename Packet>
735template<
typename Ordinal,
typename Packet>
747template<
typename Ordinal,
typename Packet,
typename Serializer>
766template<
typename Ordinal>
801template<
typename Ordinal>
830template<
typename Ordinal>
843template<
typename Ordinal,
typename Packet>
864template<
typename Ordinal,
typename Packet>
885template<
typename Ordinal,
typename Packet>
902template<
typename Ordinal,
typename Packet>
924namespace MixMaxUtilities {
927template<
bool isComparable,
typename Ordinal,
typename Packet>
931template<
typename Ordinal,
typename Packet>
940 for(
int i = 0;
i < count; ++
i )
946template<
typename Ordinal,
typename Packet>
956 true,std::logic_error,
958 <<
" does not support comparison operations!"
964template<
bool isComparable,
typename Ordinal,
typename Packet>
968template<
typename Ordinal,
typename Packet>
977 for(
int i = 0;
i < count; ++
i )
983template<
typename Ordinal,
typename Packet>
993 true,std::logic_error,
995 <<
" does not support comparison operations!"
1001template<
bool isComparable,
typename Ordinal,
typename Packet>
1005template<
typename Ordinal,
typename Packet>
1009 const Ordinal count,
1014 for(
int i = 0;
i < count; ++
i )
1020template<
typename Ordinal,
typename Packet>
1030 true,std::logic_error,
1032 <<
" does not support logical AND operations!"
1041template<
typename Ordinal,
typename Packet>
1043 const Ordinal count,
1048 for(
int i = 0;
i < count; ++
i )
1053template<
typename Ordinal,
typename Packet>
1055 const Ordinal count,
1065template<
typename Ordinal,
typename Packet>
1067 const Ordinal count,
1077template<
typename Ordinal,
typename Packet>
1079 const Ordinal count,
1115template<
typename Ordinal,
typename Packet>
1116ValueTypeReductionOp<Ordinal,Packet>*
1125 if (ST::isComparable) {
1130 (! ST::isComparable, std::invalid_argument,
"Teuchos::createOp"
1132 <<
" is not less-than comparable, so it does not make sense to do a "
1133 "MIN reduction with it.");
1137 if (ST::isComparable) {
1142 (! ST::isComparable, std::invalid_argument,
"Teuchos::createOp"
1144 <<
" is not less-than comparable, so it does not make sense to do a "
1145 "MAX reduction with it.");
1153 true, std::invalid_argument,
"Teuchos::createOp(EReductionType): "
1154 "Invalid EReductionType value " <<
reductType <<
". Valid values "
1155 "include REDUCE_SUM, REDUCE_MIN, REDUCE_MAX, and REDUCE_AND.");
1168template<
typename Ordinal>
1169int Teuchos::rank(
const Comm<Ordinal>& comm)
1171 return comm.getRank();
1175template<
typename Ordinal>
1176int Teuchos::size(
const Comm<Ordinal>& comm)
1178 return comm.getSize();
1182template<
typename Ordinal>
1183void Teuchos::barrier(
const Comm<Ordinal>& comm)
1186 "Teuchos::CommHelpers: barrier<"
1187 <<OrdinalTraits<Ordinal>::name()
1194template<
typename Ordinal,
typename Packet>
1195void Teuchos::broadcast(
1196 const Comm<Ordinal>& comm,
1197 const int rootRank,
const Ordinal count, Packet buffer[]
1201 "Teuchos::CommHelpers: broadcast<"
1202 <<OrdinalTraits<Ordinal>::name()<<
","<<TypeNameTraits<Packet>::name()
1205 ValueTypeSerializationBuffer<Ordinal,Packet>
1206 charBuffer(count,buffer);
1208 rootRank,charBuffer.getBytes(),charBuffer.getCharBuffer()
1213template<
typename Ordinal,
typename Packet>
1214void Teuchos::broadcast(
1215 const Comm<Ordinal>& comm,
1217 const ArrayView<Packet> &buffer
1220 broadcast<Ordinal, Packet>(comm, rootRank, buffer.size(), buffer.getRawPtr() );
1224template<
typename Ordinal,
typename Packet>
1225void Teuchos::broadcast(
1226 const Comm<Ordinal>& comm,
1227 const int rootRank, Packet *
object
1230 broadcast<Ordinal,Packet>(comm,rootRank,1,
object);
1234template<
typename Ordinal,
typename Packet>
1235void Teuchos::broadcast(
1236 const Comm<Ordinal>& comm,
1237 const int rootRank,
const Ptr<Packet> &
object
1240 broadcast<Ordinal,Packet>(comm,rootRank,1,
object.getRawPtr());
1244template<
typename Ordinal,
typename Packet>
1245void Teuchos::broadcast(
1246 const Comm<Ordinal>& comm,
const Serializer<Ordinal,Packet> &serializer,
1247 const int rootRank,
const Ordinal count, Packet*
const buffer[]
1251 "Teuchos::CommHelpers: broadcast<"
1252 <<OrdinalTraits<Ordinal>::name()<<
","<<TypeNameTraits<Packet>::name()
1253 <<
">( reference type )"
1255 ReferenceTypeSerializationBuffer<Ordinal,Packet>
1256 charBuffer(serializer, count, buffer);
1258 rootRank,charBuffer.getBytes(),charBuffer.getCharBuffer()
1263template<
typename Ordinal,
typename Packet>
1264void Teuchos::broadcast(
1265 const Comm<Ordinal>& comm,
const Serializer<Ordinal,Packet> &serializer,
1266 const int rootRank,
const ArrayView<
const Ptr<Packet> > &buffer
1269 Array<Packet*> bufferPtrArray;
1270 for (
int i = 0; i < buffer.size(); ++i) {
1271 bufferPtrArray.push_back(buffer[i].getRawPtr());
1273 broadcast<Ordinal,Packet>(comm, serializer, rootRank,
1274 buffer.size(), bufferPtrArray.getRawPtr());
1277template<
typename Ordinal,
typename Packet,
typename Serializer>
1278void Teuchos::broadcast(
1279 const Comm<Ordinal>& comm,
1280 const Serializer& serializer,
1281 const int rootRank,
const Ordinal count, Packet buffer[]
1285 "Teuchos::CommHelpers: broadcast<"
1286 <<OrdinalTraits<Ordinal>::name()<<
","<<TypeNameTraits<Packet>::name()
1289 ValueTypeSerializationBuffer<Ordinal,Packet,Serializer>
1290 charBuffer(count,buffer,rcp(&serializer,
false));
1292 rootRank,charBuffer.getBytes(),charBuffer.getCharBuffer()
1297template<
typename Ordinal,
typename Packet>
1298void Teuchos::gatherAll(
1299 const Comm<Ordinal>& comm,
1300 const Ordinal sendCount,
const Packet sendBuffer[],
1301 const Ordinal recvCount, Packet recvBuffer[]
1305 "Teuchos::CommHelpers: gatherAll<"
1306 <<OrdinalTraits<Ordinal>::name()<<
","<<TypeNameTraits<Packet>::name()
1309 ConstValueTypeSerializationBuffer<Ordinal,Packet>
1310 charSendBuffer(sendCount,sendBuffer);
1311 ValueTypeSerializationBuffer<Ordinal,Packet>
1312 charRecvBuffer(recvCount,recvBuffer);
1314 charSendBuffer.getBytes(),charSendBuffer.getCharBuffer()
1315 ,charRecvBuffer.getBytes(),charRecvBuffer.getCharBuffer()
1319template<
typename Ordinal,
typename Packet>
1321Teuchos::gather (
const Packet sendBuf[],
1322 const Ordinal sendCount,
1324 const Ordinal recvCount,
1326 const Comm<Ordinal>& comm)
1329 "Teuchos::CommHelpers: gather<"
1330 <<OrdinalTraits<Ordinal>::name()<<
","<<TypeNameTraits<Packet>::name()
1333 ConstValueTypeSerializationBuffer<Ordinal,Packet>
1334 charSendBuffer (sendCount, sendBuf);
1335 ValueTypeSerializationBuffer<Ordinal,Packet>
1336 charRecvBuffer (recvCount, recvBuf);
1337 comm.gather (charSendBuffer.getBytes (),
1338 charSendBuffer.getCharBuffer (),
1339 charRecvBuffer.getBytes (),
1340 charRecvBuffer.getCharBuffer (),
1344template<
typename Ordinal,
typename Packet>
1346Teuchos::gatherv (
const Packet sendBuf[],
1347 const Ordinal sendCount,
1349 const Ordinal recvCounts[],
1350 const Ordinal displs[],
1352 const Comm<Ordinal>& comm)
1375 "Teuchos::gatherv: The general case is not implemented.");
1378template<
typename Ordinal,
typename Packet>
1379void Teuchos::gatherAll(
1380 const Comm<Ordinal>& comm,
const Serializer<Ordinal,Packet> &serializer,
1381 const Ordinal sendCount,
const Packet*
const sendBuffer[],
1382 const Ordinal recvCount, Packet*
const recvBuffer[]
1388template<
typename Ordinal,
typename Packet,
typename Serializer>
1389void Teuchos::gatherAll(
1390 const Comm<Ordinal>& comm,
1391 const Serializer& serializer,
1392 const Ordinal sendCount,
const Packet sendBuffer[],
1393 const Ordinal recvCount, Packet recvBuffer[]
1397 "Teuchos::CommHelpers: gatherAll<"
1398 <<OrdinalTraits<Ordinal>::name()<<
","<<TypeNameTraits<Packet>::name()
1401 ConstValueTypeSerializationBuffer<Ordinal,Packet,Serializer>
1402 charSendBuffer(sendCount,sendBuffer,rcp(&serializer,
false));
1403 ValueTypeSerializationBuffer<Ordinal,Packet,Serializer>
1404 charRecvBuffer(recvCount,recvBuffer,rcp(&serializer,
false));
1406 charSendBuffer.getBytes(),charSendBuffer.getCharBuffer()
1407 ,charRecvBuffer.getBytes(),charRecvBuffer.getCharBuffer()
1412template<
typename Ordinal,
typename Packet>
1414Teuchos::reduce (
const Packet sendBuf[],
1416 const Ordinal count,
1417 const EReductionType reductType,
1419 const Comm<Ordinal>& comm)
1425 (
true, std::logic_error,
"Teuchos::reduce<" <<
1426 TypeNameTraits<Ordinal>::name () <<
"," << TypeNameTraits<Packet>::name ()
1427 <<
">: Generic version not implemented. We only implement this function "
1428 "for Ordinal = int and Packet = specific types.");
1432template<
typename Ordinal,
typename Packet>
1433void Teuchos::reduceAll(
1434 const Comm<Ordinal>& comm,
const ValueTypeReductionOp<Ordinal,Packet> &reductOp
1435 ,
const Ordinal count,
const Packet sendBuffer[], Packet globalReducts[]
1439 "Teuchos::CommHelpers: reduceAll<"
1440 <<OrdinalTraits<Ordinal>::name()<<
","<<TypeNameTraits<Packet>::name()
1441 <<
">( value type, user-defined op )"
1443 ConstValueTypeSerializationBuffer<Ordinal,Packet>
1444 charSendBuffer(count,sendBuffer);
1445 ValueTypeSerializationBuffer<Ordinal,Packet>
1446 charGlobalReducts(count,globalReducts);
1447 CharToValueTypeReductionOp<Ordinal,Packet>
1448 charReductOp(rcp(&reductOp,
false));
1450 charReductOp,charSendBuffer.getBytes(),charSendBuffer.getCharBuffer()
1451 ,charGlobalReducts.getCharBuffer()
1456template<
typename Ordinal,
typename Packet>
1457void Teuchos::reduceAll(
1458 const Comm<Ordinal>& comm,
const EReductionType reductType,
1459 const Ordinal count,
const Packet sendBuffer[], Packet globalReducts[]
1463 "Teuchos::CommHelpers: reduceAll<"
1464 <<OrdinalTraits<Ordinal>::name()<<
","<<TypeNameTraits<Packet>::name()
1465 <<
">( value type, "<<
toString(reductType)<<
" )"
1468 ValueTypeReductionOp<Ordinal,Packet>* reductOp =
1469 createOp<Ordinal, Packet> (reductType);
1471 reduceAll(comm,*reductOp,count,sendBuffer,globalReducts);
1473 catch (std::exception& e) {
1489#ifdef HAVE_TEUCHOS_COMPLEX
1493reduceAll<int, std::complex<double> > (
const Comm<int>& comm,
1494 const EReductionType reductType,
1496 const std::complex<double> sendBuffer[],
1497 std::complex<double> globalReducts[]);
1500ireceive<int, std::complex<double> > (
const Comm<int>& comm,
1501 const ArrayRCP<std::complex<double> >& recvBuffer,
1502 const int sourceRank);
1505ireceive<int, std::complex<double> > (
const ArrayRCP<std::complex<double> > &recvBuffer,
1506 const int sourceRank,
1508 const Comm<int>& comm);
1511send<int, std::complex<double> > (
const Comm<int>& comm,
1513 const std::complex<double> sendBuffer[],
1514 const int destRank);
1517send<int, std::complex<double> > (
const std::complex<double> sendBuffer[],
1521 const Comm<int>& comm);
1524isend<int, std::complex<double> > (
const ArrayRCP<const std::complex<double> >& sendBuffer,
1527 const Comm<int>& comm);
1532reduceAll<int, std::complex<float> > (
const Comm<int>& comm,
1533 const EReductionType reductType,
1535 const std::complex<float> sendBuffer[],
1536 std::complex<float> globalReducts[]);
1539ireceive<int, std::complex<float> > (
const Comm<int>& comm,
1540 const ArrayRCP<std::complex<float> >& recvBuffer,
1541 const int sourceRank);
1544ireceive<int, std::complex<float> > (
const ArrayRCP<std::complex<float> > &recvBuffer,
1545 const int sourceRank,
1547 const Comm<int>& comm);
1550send<int, std::complex<float> > (
const Comm<int>& comm,
1552 const std::complex<float> sendBuffer[],
1553 const int destRank);
1556send<int, std::complex<float> > (
const std::complex<float> sendBuffer[],
1560 const Comm<int>& comm);
1563isend<int, std::complex<float> > (
const ArrayRCP<const std::complex<float> >& sendBuffer,
1566 const Comm<int>& comm);
1574 const EReductionType reductType,
1576 const double sendBuffer[],
1577 double globalReducts[]);
1581 const ArrayRCP<double>& recvBuffer,
1582 const int sourceRank);
1586 const int sourceRank,
1588 const Comm<int>& comm);
1593 const double sendBuffer[],
1594 const int destRank);
1601 const Comm<int>& comm);
2110template<
typename Ordinal,
typename Packet>
2111void Teuchos::reduceAll(
2112 const Comm<Ordinal>& comm,
const EReductionType reductType
2113 ,
const Packet &send,
const Ptr<Packet> &globalReduct
2118 reduceAll<Ordinal,Packet>(comm, reductType, 1, &send, &*globalReduct);
2122template<
typename Ordinal,
typename Packet>
2123void Teuchos::reduceAll(
2124 const Comm<Ordinal>& comm,
const Serializer<Ordinal,Packet> &serializer,
2125 const ReferenceTypeReductionOp<Ordinal,Packet> &reductOp,
2126 const Ordinal count,
const Packet*
const sendBuffer[], Packet*
const globalReducts[]
2130 "Teuchos::CommHelpers: reduceAll<"
2131 <<OrdinalTraits<Ordinal>::name()<<
","<<TypeNameTraits<Packet>::name()
2132 <<
">( reference type )"
2134 ConstReferenceTypeSerializationBuffer<Ordinal,Packet>
2135 charSendBuffer(serializer,count,sendBuffer);
2136 ReferenceTypeSerializationBuffer<Ordinal,Packet>
2137 charGlobalReducts(serializer,count,globalReducts);
2138 CharToReferenceTypeReductionOp<Ordinal,Packet>
2139 charReductOp(rcp(&serializer,
false),rcp(&reductOp,
false));
2141 charReductOp,charSendBuffer.getBytes(),charSendBuffer.getCharBuffer()
2142 ,charGlobalReducts.getCharBuffer()
2146template<
typename Ordinal,
typename Packet,
typename Serializer>
2147void Teuchos::reduceAll(
2148 const Comm<Ordinal>& comm,
2149 const Serializer& serializer,
2150 const ValueTypeReductionOp<Ordinal,Packet> &reductOp,
2151 const Ordinal count,
const Packet sendBuffer[], Packet globalReducts[]
2155 "Teuchos::CommHelpers: reduceAll<"
2156 <<OrdinalTraits<Ordinal>::name()<<
","<<TypeNameTraits<Packet>::name()
2157 <<
">( value type, user-defined op )"
2159 ConstValueTypeSerializationBuffer<Ordinal,Packet,Serializer>
2160 charSendBuffer(count,sendBuffer,rcp(&serializer,
false));
2161 ValueTypeSerializationBuffer<Ordinal,Packet,Serializer>
2162 charGlobalReducts(count,globalReducts,rcp(&serializer,
false));
2163 CharToValueTypeReductionOp<Ordinal,Packet,Serializer>
2164 charReductOp(rcp(&reductOp,
false),rcp(&serializer,
false));
2166 charReductOp,charSendBuffer.getBytes(),charSendBuffer.getCharBuffer()
2167 ,charGlobalReducts.getCharBuffer()
2172template<
typename Ordinal,
typename Packet,
typename Serializer>
2173void Teuchos::reduceAll(
2174 const Comm<Ordinal>& comm,
2175 const Serializer& serializer,
2176 const EReductionType reductType,
2177 const Ordinal count,
const Packet sendBuffer[], Packet globalReducts[]
2181 "Teuchos::CommHelpers: reduceAll<"
2182 <<OrdinalTraits<Ordinal>::name()<<
","<<TypeNameTraits<Packet>::name()
2183 <<
">( value type, "<<
toString(reductType)<<
" )"
2186 ValueTypeReductionOp<Ordinal,Packet>* reductOp =
2187 createOp<Ordinal, Packet> (reductType);
2189 reduceAll(comm,serializer,*reductOp,count,sendBuffer,globalReducts);
2191 catch (std::exception& e) {
2199template<
typename Ordinal,
typename Packet>
2201 const Comm<Ordinal>& comm,
const ValueTypeReductionOp<Ordinal,Packet> &reductOp,
2202 const Ordinal count,
const Packet sendBuffer[], Packet scanReducts[]
2206 "Teuchos::CommHelpers: scan<"
2207 <<OrdinalTraits<Ordinal>::name()<<
","<<TypeNameTraits<Packet>::name()
2208 <<
">( value type, user-defined op )"
2210 ConstValueTypeSerializationBuffer<Ordinal,Packet>
2211 charSendBuffer(count,sendBuffer);
2212 ValueTypeSerializationBuffer<Ordinal,Packet>
2213 charScanReducts(count,scanReducts);
2214 CharToValueTypeReductionOp<Ordinal,Packet>
2215 charReductOp(rcp(&reductOp,
false));
2217 charReductOp,charSendBuffer.getBytes(),charSendBuffer.getCharBuffer()
2218 ,charScanReducts.getCharBuffer()
2223template<
typename Ordinal,
typename Packet>
2225 const Comm<Ordinal>& comm,
const EReductionType reductType,
2226 const Ordinal count,
const Packet sendBuffer[], Packet scanReducts[]
2230 "Teuchos::CommHelpers: scan<"
2231 <<OrdinalTraits<Ordinal>::name()<<
","<<TypeNameTraits<Packet>::name()
2232 <<
">( value type, "<<
toString(reductType)<<
" )"
2235 ValueTypeReductionOp<Ordinal,Packet>* reductOp =
2236 createOp<Ordinal, Packet> (reductType);
2238 scan(comm,*reductOp,count,sendBuffer,scanReducts);
2240 catch (std::exception& e) {
2248template<
typename Ordinal,
typename Packet>
2250 const Comm<Ordinal>& comm,
const EReductionType reductType,
2251 const Packet &send,
const Ptr<Packet> &scanReduct
2254 scan<Ordinal,Packet>(comm, reductType, 1, &send, &*scanReduct);
2258template<
typename Ordinal,
typename Packet>
2260 const Comm<Ordinal>& comm,
const Serializer<Ordinal,Packet> &serializer,
2261 const ReferenceTypeReductionOp<Ordinal,Packet> &reductOp,
2262 const Ordinal count,
const Packet*
const sendBuffer[], Packet*
const scanReducts[]
2268template<
typename Ordinal,
typename Packet,
typename Serializer>
2270 const Comm<Ordinal>& comm,
2271 const Serializer& serializer,
2272 const ValueTypeReductionOp<Ordinal,Packet> &reductOp,
2273 const Ordinal count,
const Packet sendBuffer[], Packet scanReducts[]
2277 "Teuchos::CommHelpers: scan<"
2278 <<OrdinalTraits<Ordinal>::name()<<
","<<TypeNameTraits<Packet>::name()
2279 <<
">( value type, user-defined op )"
2281 ConstValueTypeSerializationBuffer<Ordinal,Packet,Serializer>
2282 charSendBuffer(count,sendBuffer,rcp(&serializer,
false));
2283 ValueTypeSerializationBuffer<Ordinal,Packet,Serializer>
2284 charScanReducts(count,scanReducts,rcp(&serializer,
false));
2285 CharToValueTypeReductionOp<Ordinal,Packet,Serializer>
2286 charReductOp(rcp(&reductOp,
false),rcp(&serializer,
false));
2288 charReductOp,charSendBuffer.getBytes(),charSendBuffer.getCharBuffer()
2289 ,charScanReducts.getCharBuffer()
2294template<
typename Ordinal,
typename Packet,
typename Serializer>
2296 const Comm<Ordinal>& comm,
2297 const Serializer& serializer,
2298 const EReductionType reductType,
2299 const Ordinal count,
const Packet sendBuffer[], Packet scanReducts[]
2303 "Teuchos::CommHelpers: scan<"
2304 <<OrdinalTraits<Ordinal>::name()<<
","<<TypeNameTraits<Packet>::name()
2305 <<
">( value type, "<<
toString(reductType)<<
" )"
2308 ValueTypeReductionOp<Ordinal,Packet>* reductOp =
2309 createOp<Ordinal, Packet> (reductType);
2311 scan(comm,serializer,*reductOp,count,sendBuffer,scanReducts);
2313 catch (std::exception& e) {
2320template<
typename Ordinal,
typename Packet>
2322 const Comm<Ordinal>& comm,
2323 const Ordinal count,
const Packet sendBuffer[],
const int destRank
2327 "Teuchos::CommHelpers: send<"
2328 <<OrdinalTraits<Ordinal>::name()<<
","<<TypeNameTraits<Packet>::name()
2331 ConstValueTypeSerializationBuffer<Ordinal,Packet>
2332 charSendBuffer(count,sendBuffer);
2334 charSendBuffer.getBytes(),charSendBuffer.getCharBuffer()
2339template<
typename Ordinal,
typename Packet>
2342 const Ordinal count,
2348 "Teuchos::CommHelpers: send<"
2356template<
typename Ordinal,
typename Packet>
2358 const Comm<Ordinal>& comm,
2359 const Ordinal count,
const Packet sendBuffer[],
const int destRank
2363 "Teuchos::CommHelpers: ssend<"
2364 <<OrdinalTraits<Ordinal>::name()<<
","<<TypeNameTraits<Packet>::name()
2367 ConstValueTypeSerializationBuffer<Ordinal,Packet>
2368 charSendBuffer(count,sendBuffer);
2370 charSendBuffer.getBytes(),charSendBuffer.getCharBuffer()
2375template<
typename Ordinal,
typename Packet>
2378 const Ordinal count,
2384 "Teuchos::CommHelpers: ssend<"
2395template<
typename Ordinal,
typename Packet>
2397 const Comm<Ordinal>& comm,
2398 const Packet &send,
const int destRank
2404template<
typename Ordinal,
typename Packet>
2406 const Comm<Ordinal>& comm,
2407 const Packet &send,
const int destRank
2413template<
typename Ordinal,
typename Packet>
2415 const Comm<Ordinal>& comm,
const Serializer<Ordinal,Packet> &serializer,
2416 const Ordinal count,
const Packet*
const sendBuffer[],
const int destRank
2422template<
typename Ordinal,
typename Packet,
typename Serializer>
2424 const Comm<Ordinal>& comm,
2425 const Serializer& serializer,
2426 const Ordinal count,
const Packet sendBuffer[],
const int destRank
2430 "Teuchos::CommHelpers: send<"
2431 <<OrdinalTraits<Ordinal>::name()<<
","<<TypeNameTraits<Packet>::name()
2434 ConstValueTypeSerializationBuffer<Ordinal,Packet,Serializer>
2435 charSendBuffer(count,sendBuffer,rcp(&serializer,
false));
2437 charSendBuffer.getBytes(),charSendBuffer.getCharBuffer()
2442template<
typename Ordinal,
typename Packet>
2443int Teuchos::receive(
2444 const Comm<Ordinal>& comm,
2445 const int sourceRank,
const Ordinal count, Packet recvBuffer[]
2449 "Teuchos::CommHelpers: receive<"
2450 <<OrdinalTraits<Ordinal>::name()<<
","<<TypeNameTraits<Packet>::name()
2453 ValueTypeSerializationBuffer<Ordinal,Packet>
2454 charRecvBuffer(count,recvBuffer);
2455 return comm.receive(
2457 ,charRecvBuffer.getBytes(),charRecvBuffer.getCharBuffer()
2462template<
typename Ordinal,
typename Packet>
2463int Teuchos::receive(
2464 const Comm<Ordinal>& comm,
2465 const int sourceRank, Packet *recv
2472template<
typename Ordinal,
typename Packet>
2473int Teuchos::receive(
2474 const Comm<Ordinal>& comm,
const Serializer<Ordinal,Packet> &serializer,
2475 const int sourceRank,
const Ordinal count, Packet*
const recvBuffer[]
2481template<
typename Ordinal,
typename Packet,
typename Serializer>
2482int Teuchos::receive(
2483 const Comm<Ordinal>& comm,
2484 const Serializer& serializer,
2485 const int sourceRank,
const Ordinal count, Packet recvBuffer[]
2489 "Teuchos::CommHelpers: receive<"
2490 <<OrdinalTraits<Ordinal>::name()<<
","<<TypeNameTraits<Packet>::name()
2493 ValueTypeSerializationBuffer<Ordinal,Packet,Serializer>
2494 charRecvBuffer(count,recvBuffer,rcp(&serializer,
false));
2495 return comm.receive(
2497 ,charRecvBuffer.getBytes(),charRecvBuffer.getCharBuffer()
2501template<
typename Ordinal,
typename Packet>
2503 const Comm<Ordinal>& comm,
2504 const ArrayView<const Packet> &sendBuffer,
2509 "Teuchos::CommHelpers: readySend<"
2510 <<OrdinalTraits<Ordinal>::name()<<
","<<TypeNameTraits<Packet>::name()
2513 ConstValueTypeSerializationBuffer<Ordinal,Packet>
2514 charSendBuffer(sendBuffer.size(), sendBuffer.getRawPtr());
2515 comm.readySend( charSendBuffer.getCharBufferView(), destRank );
2518template<
typename Ordinal,
typename Packet>
2521 const Ordinal count,
2527 "Teuchos::CommHelpers: readySend<"
2538template<
typename Ordinal,
typename Packet>
2540 const Comm<Ordinal>& comm,
2545 readySend<Ordinal, Packet>( comm, arrayView(&send,1), destRank );
2548template<
typename Ordinal,
typename Packet,
typename Serializer>
2550 const Comm<Ordinal>& comm,
2551 const Serializer& serializer,
2552 const ArrayView<const Packet> &sendBuffer,
2557 "Teuchos::CommHelpers: readySend<"
2558 <<OrdinalTraits<Ordinal>::name()<<
","<<TypeNameTraits<Packet>::name()
2561 ConstValueTypeSerializationBuffer<Ordinal,Packet,Serializer>
2562 charSendBuffer(sendBuffer.size(), sendBuffer.getRawPtr(), serializer);
2563 comm.readySend( charSendBuffer.getCharBufferView(), destRank );
2566template<
typename Ordinal,
typename Packet>
2569 const Comm<Ordinal>& comm,
2570 const ArrayRCP<const Packet> &sendBuffer,
2575 "Teuchos::CommHelpers: isend<"
2576 <<OrdinalTraits<Ordinal>::name()<<
","<<TypeNameTraits<Packet>::name()
2579 ConstValueTypeSerializationBuffer<Ordinal,Packet>
2580 charSendBuffer(sendBuffer.size(), sendBuffer.getRawPtr());
2581 RCP<CommRequest<Ordinal> > commRequest = comm.isend(
2582 charSendBuffer.getCharBufferView(), destRank );
2583 set_extra_data( sendBuffer,
"buffer", inOutArg(commRequest) );
2587template<
typename Ordinal,
typename Packet>
2592 const Comm<Ordinal>& comm)
2595 "Teuchos::isend<" << OrdinalTraits<Ordinal>::name () <<
","
2596 << TypeNameTraits<Packet>::name () <<
">");
2597 ConstValueTypeSerializationBuffer<Ordinal,Packet>
2598 charSendBuffer (sendBuffer.size (), sendBuffer.getRawPtr ());
2599 RCP<CommRequest<Ordinal> > commRequest =
2600 comm.isend (charSendBuffer.getCharBufferView (), destRank, tag);
2601 set_extra_data (sendBuffer,
"buffer", inOutArg (commRequest));
2605template<
typename Ordinal,
typename Packet>
2608 const Comm<Ordinal>& comm,
2609 const RCP<const Packet> &send,
2613 const ArrayRCP<const Packet> sendBuffer =
2614 arcpWithEmbeddedObj( send.get(), 0, 1, send,
false );
2617 return isend<Ordinal, Packet>( comm, sendBuffer, destRank );
2620template<
typename Ordinal,
typename Packet,
typename Serializer>
2623 const Comm<Ordinal>& comm,
2624 const Serializer& serializer,
2625 const ArrayRCP<const Packet> &sendBuffer,
2630 "Teuchos::CommHelpers: isend<"
2631 <<OrdinalTraits<Ordinal>::name()<<
","<<TypeNameTraits<Packet>::name()
2634 ConstValueTypeSerializationBuffer<Ordinal,Packet,Serializer>
2635 charSendBuffer(sendBuffer.size(), sendBuffer.getRawPtr(), serializer);
2636 RCP<CommRequest<Ordinal> > commRequest = comm.isend(
2637 charSendBuffer.getCharBufferView(), destRank );
2638 set_extra_data( sendBuffer,
"buffer", inOutArg(commRequest) );
2642template<
typename Ordinal,
typename Packet>
2645 const Comm<Ordinal>& comm,
2646 const ArrayRCP<Packet> &recvBuffer,
2647 const int sourceRank
2651 "Teuchos::ireceive<int, " <<
"," << TypeNameTraits<Packet>::name () <<
">");
2652 ValueTypeSerializationBuffer<Ordinal,Packet>
2653 charRecvBuffer(recvBuffer.size(), recvBuffer.getRawPtr());
2654 RCP<CommRequest<Ordinal> > commRequest = comm.ireceive(
2655 charRecvBuffer.getCharBufferView(), sourceRank );
2656 set_extra_data( recvBuffer,
"buffer", inOutArg(commRequest) );
2660template<
typename Ordinal,
typename Packet>
2663 const int sourceRank,
2668 "Teuchos::ireceive<int, " <<
"," << TypeNameTraits<Packet>::name () <<
">");
2669 ValueTypeSerializationBuffer<int, Packet>
2670 charRecvBuffer (recvBuffer.
size (), recvBuffer.getRawPtr ());
2671 RCP<CommRequest<int> > commRequest =
2672 comm.
ireceive (charRecvBuffer.getCharBufferView (), sourceRank, tag);
2673 set_extra_data (recvBuffer,
"buffer", inOutArg (commRequest));
2677template<
typename Ordinal,
typename Packet>
2680 const Comm<Ordinal>& comm,
2681 const RCP<Packet> &recv,
2682 const int sourceRank
2685 const ArrayRCP<Packet> recvBuffer =
2686 arcpWithEmbeddedObj( recv.get(), 0, 1, recv,
false );
2689 return ireceive<Ordinal, Packet>( comm, recvBuffer, sourceRank );
2692template<
typename Ordinal,
typename Packet,
typename Serializer>
2695 const Comm<Ordinal>& comm,
2696 const Serializer& serializer,
2697 const ArrayRCP<Packet> &recvBuffer,
2698 const int sourceRank
2702 "Teuchos::CommHelpers: ireceive<"
2703 <<OrdinalTraits<Ordinal>::name()<<
","<<TypeNameTraits<Packet>::name()
2706 ValueTypeSerializationBuffer<Ordinal,Packet,Serializer>
2707 charRecvBuffer(recvBuffer.size(), recvBuffer.getRawPtr(), serializer);
2708 RCP<CommRequest<Ordinal> > commRequest = comm.ireceive(
2709 charRecvBuffer.getCharBufferView(), sourceRank );
2710 set_extra_data( recvBuffer,
"buffer", inOutArg(commRequest) );
2714template<
typename Ordinal>
2715void Teuchos::waitAll(
2716 const Comm<Ordinal>& comm,
2717 const ArrayView<RCP<CommRequest<Ordinal> > > &requests
2720 comm.waitAll(requests);
2724template<
typename Ordinal>
2726Teuchos::waitAll (
const Comm<Ordinal>& comm,
2727 const ArrayView<RCP<CommRequest<Ordinal> > >& requests,
2728 const ArrayView<RCP<CommStatus<Ordinal> > >& statuses)
2730 comm.waitAll (requests, statuses);
2734template<
typename Ordinal>
2736Teuchos::wait (
const Comm<Ordinal>& comm,
2737 const Ptr<RCP<CommRequest<Ordinal> > > &request)
2739 return comm.
wait (request);
Templated array class derived from the STL std::vector.
#define TEUCHOS_COMM_TIME_MONITOR(FUNCNAME)
#define TEUCHOS_MIN(x, y)
#define TEUCHOS_MAX(x, y)
#define TEUCHOSCOMM_LIB_DLL_EXPORT
Implementation of Teuchos wrappers for MPI.
Declaration of Teuchos::EReductionType enum, and related functions.
Defines basic traits for the ordinal field type.
Defines basic traits for the scalar field type.
Defines basic traits returning the name of a type in a portable and readable way.
Definition of Teuchos::as, for conversions between types.
Standard logical AND operator for booleans.
void reduce(const Ordinal count, const Packet inBuffer[], Packet inoutBuffer[]) const
void ssend(const Comm< Ordinal > &comm, const Packet &send, const int destRank)
Synchronously send a single object that use values semantics to another process.
RCP< CommRequest< Ordinal > > ireceive(const Comm< Ordinal > &comm, const ArrayRCP< Packet > &recvBuffer, const int sourceRank)
Receive one or more objects (that use values semantics) from another process.
void scan(const Comm< Ordinal > &comm, const Serializer &serializer, const EReductionType reductType, const Ordinal count, const Packet sendBuffer[], Packet scanReducts[])
Scan/Reduce array of objects using value semantics using a predefined reduction type and customized s...
void scan(const Comm< Ordinal > &comm, const ValueTypeReductionOp< Ordinal, Packet > &reductOp, const Ordinal count, const Packet sendBuffer[], Packet scanReducts[])
Scan/Reduce array of objects that use value semantics using a user-defined reduction operator.
void waitAll(const Comm< Ordinal > &comm, const ArrayView< RCP< CommRequest< Ordinal > > > &requests)
Wait for an array of Teuchos::CommRequest objects.
void reduceAll(const Comm< Ordinal > &comm, const ValueTypeReductionOp< Ordinal, Packet > &reductOp, const Ordinal count, const Packet sendBuffer[], Packet globalReducts[])
Wrapper for MPI_Allreduce that takes a custom reduction operator.
int receive(const Comm< Ordinal > &comm, const int sourceRank, Packet *recv)
Receive a single object that use values semantics from another process.
void gatherv(const Packet sendBuf[], const Ordinal sendCount, Packet recvBuf[], const Ordinal recvCounts[], const Ordinal displs[], const int root, const Comm< Ordinal > &comm)
Gather arrays of possibly different lengths from each process to the root process.
void scan(const Comm< Ordinal > &comm, const EReductionType reductType, const Packet &send, const Ptr< Packet > &scanReduct)
Scan/Reduce single object using value semantics using a predefined reduction type.
int receive(const Comm< Ordinal > &comm, const Serializer< Ordinal, Packet > &serializer, const int sourceRank, const Ordinal count, Packet *const recvBuffer[])
Receive objects that use reference semantics from another process.
void readySend(const Comm< Ordinal > &comm, const Serializer &serializer, const ArrayView< const Packet > &sendBuffer, const int destRank)
Ready-Send an array of objects that use values semantics to another process using customized serializ...
void reduceAll(const Comm< Ordinal > &comm, const Serializer &serializer, const ValueTypeReductionOp< Ordinal, Packet > &reductOp, const Ordinal count, const Packet sendBuffer[], Packet globalReducts[])
Collective reduce all of array of objects using value semantics using a user-defined reduction operat...
void gatherAll(const Comm< Ordinal > &comm, const Serializer &serializer, const Ordinal sendCount, const Packet sendBuffer[], const Ordinal recvCount, Packet recvBuffer[])
Gather array of objects that use value semantics from every process to every process using customized...
int size(const Comm< Ordinal > &comm)
Get the number of processes in the communicator.
int rank(const Comm< Ordinal > &comm)
Get the process rank.
void reduce(const Packet sendBuf[], Packet recvBuf[], const Ordinal count, const EReductionType reductType, const Ordinal root, const Comm< Ordinal > &comm)
Wrapper for MPI_Reduce; reduction to one process, using a built-in reduction operator selected by enu...
void reduceAll(const Comm< Ordinal > &comm, const Serializer &serializer, const EReductionType reductType, const Ordinal count, const Packet sendBuffer[], Packet globalReducts[])
Collective reduce all of array of objects using value semantics using a pre-defined reduction type an...
int receive(const Comm< Ordinal > &comm, const Serializer &serializer, const int sourceRank, const Ordinal count, Packet recvBuffer[])
Receive objects that use values semantics from another process using customized serializer.
void gatherAll(const Comm< Ordinal > &comm, const Ordinal sendCount, const Packet sendBuffer[], const Ordinal recvCount, Packet recvBuffer[])
Gather array of objects that use value semantics from every process to every process.
void broadcast(const Comm< Ordinal > &comm, const int rootRank, Packet *object)
Broadcast single object that use value semantics.
void send(const Comm< Ordinal > &comm, const Ordinal count, const Packet sendBuffer[], const int destRank)
Send objects that use values semantics to another process.
void reduceAll(const Comm< Ordinal > &comm, const EReductionType reductType, const Packet &send, const Ptr< Packet > &globalReduct)
Collective reduce all for single object using value semantics using a pre-defined reduction type.
void broadcast(const Comm< Ordinal > &comm, const int rootRank, const Ordinal count, Packet buffer[])
Broadcast array of objects that use value semantics.
void waitAll(const Comm< Ordinal > &comm, const ArrayView< RCP< CommRequest< Ordinal > > > &requests, const ArrayView< RCP< CommStatus< Ordinal > > > &statuses)
Wait on one or more communication requests, and return their statuses.
void ssend(const Comm< Ordinal > &comm, const Ordinal count, const Packet sendBuffer[], const int destRank)
Synchronously send objects that use values semantics to another process.
void barrier(const Comm< Ordinal > &comm)
Barrier.
void send(const Comm< Ordinal > &comm, const Serializer &serializer, const Ordinal count, const Packet sendBuffer[], const int destRank)
Send objects that use values semantics to another process using customized serializer.
void reduceAll(const Comm< Ordinal > &comm, const EReductionType reductType, const Ordinal count, const Packet sendBuffer[], Packet globalReducts[])
Collective reduce all of array of objects using value semantics using a pre-defined reduction type.
void gather(const Packet sendBuf[], const Ordinal sendCount, Packet recvBuf[], const Ordinal recvCount, const int root, const Comm< Ordinal > &comm)
Gather values from each process to the root process.
void broadcast(const Comm< Ordinal > &comm, const Serializer< Ordinal, Packet > &serializer, const int rootRank, const Ordinal count, Packet *const buffer[])
Broadcast array of objects that use reference semantics.
RCP< CommStatus< Ordinal > > wait(const Comm< Ordinal > &comm, const Ptr< RCP< CommRequest< Ordinal > > > &request)
Wait on a single communication request, and return its status.
void readySend(const Comm< Ordinal > &comm, const ArrayView< const Packet > &sendBuffer, const int destRank)
Ready-Send an array of objects that use values semantics to another process.
void scatter(const Packet sendBuf[], const Ordinal sendCount, Packet recvBuf[], const Ordinal recvCount, const Ordinal root, const Comm< Ordinal > &comm)
Wrapper for MPI_Scatter; scatter collective.
void gatherAll(const Comm< Ordinal > &comm, const Serializer< Ordinal, Packet > &serializer, const Ordinal sendCount, const Packet *const sendBuffer[], const Ordinal recvCount, Packet *const recvBuffer[])
Gather array of objects that use reference semantics from every process to every process.
RCP< CommRequest< Ordinal > > ireceive(const Comm< Ordinal > &comm, const RCP< Packet > &recv, const int sourceRank)
Receive one object (that uses values semantics) from another process.
RCP< CommRequest< Ordinal > > isend(const Comm< Ordinal > &comm, const Serializer &serializer, const ArrayRCP< const Packet > &sendBuffer, const int destRank)
Send objects that use values semantics to another process using customized serializer.
void scan(const Comm< Ordinal > &comm, const EReductionType reductType, const Ordinal count, const Packet sendBuffer[], Packet scanReducts[])
Scan/Reduce array of objects using value semantics using a predefined reduction type.
void broadcast(const Comm< Ordinal > &comm, const Serializer &serializer, const int rootRank, const Ordinal count, Packet buffer[])
Broadcast array of objects that use value semantics using customized serializer.
RCP< CommRequest< Ordinal > > isend(const Comm< Ordinal > &comm, const RCP< const Packet > &send, const int destRank)
Send a single object that use values semantics to another process.
void reduceAll(const Comm< Ordinal > &comm, const Serializer< Ordinal, Packet > &serializer, const ReferenceTypeReductionOp< Ordinal, Packet > &reductOp, const Ordinal count, const Packet *const sendBuffer[], Packet *const globalReducts[])
Collective reduce all for array of objects using reference semantics.
void broadcast(const Comm< Ordinal > &comm, const Serializer< Ordinal, Packet > &serializer, const int rootRank, const ArrayView< const Ptr< Packet > > &buffer)
Broadcast array of objects that use reference semantics.
RCP< CommRequest< Ordinal > > isend(const Comm< Ordinal > &comm, const ArrayRCP< const Packet > &sendBuffer, const int destRank)
Send objects that use values semantics to another process.
RCP< CommRequest< Ordinal > > ireceive(const Comm< Ordinal > &comm, const Serializer &serializer, const ArrayRCP< Packet > &recvBuffer, const int sourceRank)
Send objects that use values semantics to another process using customized serializer.
void scan(const Comm< Ordinal > &comm, const Serializer &serializer, const ValueTypeReductionOp< Ordinal, Packet > &reductOp, const Ordinal count, const Packet sendBuffer[], Packet scanReducts[])
Scan/Reduce array of objects that use value semantics using a user-defined reduction operator and cus...
void broadcast(const Comm< Ordinal > &comm, const int rootRank, const ArrayView< Packet > &buffer)
Broadcast array of objects that use value semantics.
void broadcast(const Comm< Ordinal > &comm, const int rootRank, const Ptr< Packet > &object)
Broadcast single object that use value semantics.
EReductionType
Predefined reduction operations that Teuchos::Comm understands.
void send(const Comm< Ordinal > &comm, const Serializer< Ordinal, Packet > &serializer, const Ordinal count, const Packet *const sendBuffer[], const int destRank)
Send objects that use reference semantics to another process.
int receive(const Comm< Ordinal > &comm, const int sourceRank, const Ordinal count, Packet recvBuffer[])
Receive objects that use values semantics from another process.
void scan(const Comm< Ordinal > &comm, const Serializer< Ordinal, Packet > &serializer, const ReferenceTypeReductionOp< Ordinal, Packet > &reductOp, const Ordinal count, const Packet *const sendBuffer[], Packet *const scanReducts[])
Scan/Reduce array of objects that use reference semantics using a user-defined reduction operator.
void readySend(const Comm< Ordinal > &comm, const Packet &send, const int destRank)
Ready-Send a single object that use values semantics to another process.
void send(const Comm< Ordinal > &comm, const Packet &send, const int destRank)
Send a single object that use values semantics to another process.
Standard Max operator for types with value semantics.
void reduce(const Ordinal count, const Packet inBuffer[], Packet inoutBuffer[]) const
Standard min operator for types with value semantics.
void reduce(const Ordinal count, const Packet inBuffer[], Packet inoutBuffer[]) const
static void andOp(const Ordinal, const Packet[], Packet[])
static void andOp(const Ordinal count, const Packet inBuffer[], Packet inoutBuffer[])
static void max(const Ordinal, const Packet[], Packet[])
static void max(const Ordinal count, const Packet inBuffer[], Packet inoutBuffer[])
static void min(const Ordinal, const Packet[], Packet[])
static void min(const Ordinal count, const Packet inBuffer[], Packet inoutBuffer[])
Simple wrapper class for raw pointers to single objects where no persisting relationship exists.
Smart reference counting pointer class for automatic garbage collection.
Concrete serial communicator subclass.
virtual RCP< CommRequest< Ordinal > > ireceive(const ArrayView< char > &Buffer, const int sourceRank) const
virtual void readySend(const ArrayView< const char > &sendBuffer, const int destRank) const
virtual void send(const Ordinal bytes, const char sendBuffer[], const int destRank) const
virtual RCP< CommStatus< Ordinal > > wait(const Ptr< RCP< CommRequest< Ordinal > > > &request) const
virtual void ssend(const Ordinal bytes, const char sendBuffer[], const int destRank) const
Strategy interface for the indirect serializing and deserializing objects of a given type handled usi...
Standard summation operator for types with value semantics.
void reduce(const Ordinal count, const Packet inBuffer[], Packet inoutBuffer[]) const
Default traits class that just returns typeid(T).name().
Base interface class for user-defined reduction operations for objects that use value semantics.
#define TEUCHOS_TEST_FOR_EXCEPT(throw_exception_test)
This macro is designed to be a short version of TEUCHOS_TEST_FOR_EXCEPTION() that is easier to call.
#define TEUCHOS_TEST_FOR_EXCEPTION(throw_exception_test, Exception, msg)
Macro for throwing an exception with breakpointing to ease debugging.
Namespace of implementation details.
void gather< int, long long >(const long long sendBuf[], const int sendCount, long long recvBuf[], const int recvCount, const int root, const Comm< int > &comm)
void send< int, unsigned long long >(const Comm< int > &comm, const int count, const unsigned long long sendBuffer[], const int destRank)
void reduceAll< int, unsigned int >(const Comm< int > &comm, const EReductionType reductType, const int count, const unsigned int sendBuffer[], unsigned int globalReducts[])
RCP< Teuchos::CommRequest< int > > ireceive< int, double >(const Comm< int > &comm, const ArrayRCP< double > &recvBuffer, const int sourceRank)
void ssend(const Packet sendBuffer[], const Ordinal count, const int destRank, const int tag, const Comm< Ordinal > &comm)
Variant of ssend() that takes a tag (and restores the correct order of arguments).
void gather< int, unsigned long >(const unsigned long sendBuf[], const int sendCount, unsigned long recvBuf[], const int recvCount, const int root, const Comm< int > &comm)
void gatherv< int, unsigned long >(const unsigned long sendBuf[], const int sendCount, unsigned long recvBuf[], const int recvCounts[], const int displs[], const int root, const Comm< int > &comm)
void gather< int, int >(const int sendBuf[], const int sendCount, int recvBuf[], const int recvCount, const int root, const Comm< int > &comm)
void send< int, double >(const Comm< int > &comm, const int count, const double sendBuffer[], const int destRank)
void gather< int, unsigned int >(const unsigned int sendBuf[], const int sendCount, unsigned int recvBuf[], const int recvCount, const int root, const Comm< int > &comm)
void send< int, float >(const Comm< int > &comm, const int count, const float sendBuffer[], const int destRank)
void reduceAll< int, unsigned long >(const Comm< int > &comm, const EReductionType reductType, const int count, const unsigned long sendBuffer[], unsigned long globalReducts[])
TEUCHOSCOMM_LIB_DLL_EXPORT RCP< CommRequest< int > > isend< int, float >(const ArrayRCP< const float > &sendBuffer, const int destRank, const int tag, const Comm< int > &comm)
void reduceAll< int, long long >(const Comm< int > &comm, const EReductionType reductType, const int count, const long long sendBuffer[], long long globalReducts[])
void reduceAll< int, double >(const Comm< int > &comm, const EReductionType reductType, const int count, const double sendBuffer[], double globalReducts[])
void readySend(const Packet sendBuffer[], const Ordinal count, const int destRank, const int tag, const Comm< Ordinal > &comm)
Variant of readySend() that accepts a message tag.
TEUCHOSCOMM_LIB_DLL_EXPORT RCP< CommRequest< int > > isend< int, double >(const ArrayRCP< const double > &sendBuffer, const int destRank, const int tag, const Comm< int > &comm)
RCP< Teuchos::CommRequest< int > > isend(const ArrayRCP< const double > &sendBuffer, const int destRank, const int tag, const Comm< int > &comm)
void send< int, unsigned int >(const Comm< int > &comm, const int count, const unsigned int sendBuffer[], const int destRank)
void reduce< int, int >(const int sendBuf[], int recvBuf[], const int count, const EReductionType reductType, const int root, const Comm< int > &comm)
RCP< Teuchos::CommRequest< int > > ireceive< int, unsigned int >(const Comm< int > &comm, const ArrayRCP< unsigned int > &recvBuffer, const int sourceRank)
TEUCHOSCOMM_LIB_DLL_EXPORT void scatter(const int sendBuf[], const int sendCount, int recvBuf[], const int recvCount, const int root, const Comm< int > &comm)
void reduce< int, long >(const long sendBuf[], long recvBuf[], const int count, const EReductionType reductType, const int root, const Comm< int > &comm)
void reduceAll< int, unsigned long long >(const Comm< int > &comm, const EReductionType reductType, const int count, const unsigned long long sendBuffer[], unsigned long long globalReducts[])
TEUCHOSCOMM_LIB_DLL_EXPORT RCP< CommRequest< int > > isend< int, unsigned long long >(const ArrayRCP< const unsigned long long > &sendBuffer, const int destRank, const int tag, const Comm< int > &comm)
RCP< CommRequest< Ordinal > > ireceive(const ArrayRCP< Packet > &recvBuffer, const int sourceRank, const int tag, const Comm< Ordinal > &comm)
Variant of ireceive that takes a tag argument (and restores the correct order of arguments).
void reduceAll< int, long >(const Comm< int > &comm, const EReductionType reductType, const int count, const long sendBuffer[], long globalReducts[])
void send< int, long >(const Comm< int > &comm, const int count, const long sendBuffer[], const int destRank)
void reduceAll< int, float >(const Comm< int > &comm, const EReductionType reductType, const int count, const float sendBuffer[], float globalReducts[])
RCP< Teuchos::CommRequest< int > > ireceive< int, unsigned long >(const Comm< int > &comm, const ArrayRCP< unsigned long > &recvBuffer, const int sourceRank)
RCP< Teuchos::CommRequest< int > > ireceive< int, long >(const Comm< int > &comm, const ArrayRCP< long > &recvBuffer, const int sourceRank)
void reduce< int, unsigned long >(const unsigned long sendBuf[], unsigned long recvBuf[], const int count, const EReductionType reductType, const int root, const Comm< int > &comm)
void reduceAll< int, int >(const Comm< int > &comm, const EReductionType reductType, const int count, const int sendBuffer[], int globalReducts[])
RCP< Teuchos::CommRequest< int > > ireceive< int, unsigned long long >(const Comm< int > &comm, const ArrayRCP< unsigned long long > &recvBuffer, const int sourceRank)
void gatherv< int, long >(const long sendBuf[], const int sendCount, long recvBuf[], const int recvCounts[], const int displs[], const int root, const Comm< int > &comm)
TEUCHOSCOMM_LIB_DLL_EXPORT RCP< CommRequest< int > > isend< int, unsigned long >(const ArrayRCP< const unsigned long > &sendBuffer, const int destRank, const int tag, const Comm< int > &comm)
void reduceAll< int, short >(const Comm< int > &comm, const EReductionType reductType, const int count, const short sendBuffer[], short globalReducts[])
void reduce< int, double >(const double sendBuf[], double recvBuf[], const int count, const EReductionType reductType, const int root, const Comm< int > &comm)
std::string toString(const HashSet< Key > &h)
void gatherv< int, unsigned long long >(const unsigned long long sendBuf[], const int sendCount, unsigned long long recvBuf[], const int recvCounts[], const int displs[], const int root, const Comm< int > &comm)
TEUCHOSCOMM_LIB_DLL_EXPORT RCP< CommRequest< int > > isend< int, long >(const ArrayRCP< const long > &sendBuffer, const int destRank, const int tag, const Comm< int > &comm)
void gather< int, unsigned long long >(const unsigned long long sendBuf[], const int sendCount, unsigned long long recvBuf[], const int recvCount, const int root, const Comm< int > &comm)
TEUCHOSCOMM_LIB_DLL_EXPORT RCP< CommRequest< int > > isend< int, unsigned int >(const ArrayRCP< const unsigned int > &sendBuffer, const int destRank, const int tag, const Comm< int > &comm)
void gatherv< int, long long >(const long long sendBuf[], const int sendCount, long long recvBuf[], const int recvCounts[], const int displs[], const int root, const Comm< int > &comm)
void reduce< int, unsigned long long >(const unsigned long long sendBuf[], unsigned long long recvBuf[], const int count, const EReductionType reductType, const int root, const Comm< int > &comm)
void gather< int, short >(const short sendBuf[], const int sendCount, short recvBuf[], const int recvCount, const int root, const Comm< int > &comm)
void gather< int, long >(const long sendBuf[], const int sendCount, long recvBuf[], const int recvCount, const int root, const Comm< int > &comm)
RCP< Teuchos::CommRequest< int > > ireceive< int, short >(const Comm< int > &comm, const ArrayRCP< short > &recvBuffer, const int sourceRank)
void send< int, unsigned long >(const Comm< int > &comm, const int count, const unsigned long sendBuffer[], const int destRank)
ValueTypeReductionOp< Ordinal, Packet > * createOp(const EReductionType reductType)
void send< int, int >(const Comm< int > &comm, const int count, const int sendBuffer[], const int destRank)
void send< int, short >(const Comm< int > &comm, const int count, const short sendBuffer[], const int destRank)
TEUCHOSCOMM_LIB_DLL_EXPORT RCP< CommRequest< int > > isend< int, long long >(const ArrayRCP< const long long > &sendBuffer, const int destRank, const int tag, const Comm< int > &comm)
RCP< Teuchos::CommRequest< int > > ireceive< int, long long >(const Comm< int > &comm, const ArrayRCP< long long > &recvBuffer, const int sourceRank)
void send(const Packet sendBuffer[], const Ordinal count, const int destRank, const int tag, const Comm< Ordinal > &comm)
Variant of send() that takes a tag (and restores the correct order of arguments).
RCP< Teuchos::CommRequest< int > > ireceive< int, float >(const Comm< int > &comm, const ArrayRCP< float > &recvBuffer, const int sourceRank)
void send< int, long long >(const Comm< int > &comm, const int count, const long long sendBuffer[], const int destRank)
TEUCHOSCOMM_LIB_DLL_EXPORT RCP< CommRequest< int > > isend< int, short >(const ArrayRCP< const short > &sendBuffer, const int destRank, const int tag, const Comm< int > &comm)
TEUCHOSCOMM_LIB_DLL_EXPORT RCP< CommRequest< int > > isend< int, int >(const ArrayRCP< const int > &sendBuffer, const int destRank, const int tag, const Comm< int > &comm)
void gatherv< int, short >(const short sendBuf[], const int sendCount, short recvBuf[], const int recvCounts[], const int displs[], const int root, const Comm< int > &comm)
void gatherv< int, unsigned int >(const unsigned int sendBuf[], const int sendCount, unsigned int recvBuf[], const int recvCounts[], const int displs[], const int root, const Comm< int > &comm)
RCP< Teuchos::CommRequest< int > > ireceive< int, int >(const Comm< int > &comm, const ArrayRCP< int > &recvBuffer, const int sourceRank)
void gatherv< int, int >(const int sendBuf[], const int sendCount, int recvBuf[], const int recvCounts[], const int displs[], const int root, const Comm< int > &comm)
This structure defines some basic traits for the ordinal field type.