Teuchos_Comm.hpp
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 #ifndef TEUCHOS_COMM_HPP
00030 #define TEUCHOS_COMM_HPP
00031
00032 #include "Teuchos_ReductionOp.hpp"
00033 #include "Teuchos_ArrayRCP.hpp"
00034
00035 namespace Teuchos {
00036
00037
00039 class CommRequest : public Teuchos::Describable {};
00040
00041
00058 template<typename Ordinal>
00059 class Comm : virtual public Describable {
00060 public:
00061
00063
00064
00071 virtual int getRank() const = 0;
00072
00079 virtual int getSize() const = 0;
00080
00082
00084
00085
00089 virtual void barrier() const = 0;
00090
00105 virtual void broadcast(
00106 const int rootRank, const Ordinal bytes, char buffer[]
00107 ) const = 0;
00108
00131 virtual void gatherAll(
00132 const Ordinal sendBytes, const char sendBuffer[]
00133 ,const Ordinal recvBytes, char recvBuffer[]
00134 ) const = 0;
00135
00149 virtual void reduceAll(
00150 const ValueTypeReductionOp<Ordinal,char> &reductOp
00151 ,const Ordinal bytes, const char sendBuffer[], char globalReducts[]
00152 ) const = 0;
00153
00177 virtual void reduceAllAndScatter(
00178 const ValueTypeReductionOp<Ordinal,char> &reductOp
00179 ,const Ordinal sendBytes, const char sendBuffer[]
00180 ,const Ordinal recvCounts[], char myGlobalReducts[]
00181 ) const = 0;
00182
00196 virtual void scan(
00197 const ValueTypeReductionOp<Ordinal,char> &reductOp
00198 ,const Ordinal bytes, const char sendBuffer[], char scanReducts[]
00199 ) const = 0;
00200
00202
00203
00220 virtual void send(
00221 const Ordinal bytes, const char sendBuffer[], const int destRank
00222 ) const = 0;
00223
00244 virtual int receive(
00245 const int sourceRank, const Ordinal bytes, char recvBuffer[]
00246 ) const = 0;
00247
00248
00260 virtual void readySend(
00261 const ArrayView<const char> &sendBuffer,
00262 const int destRank
00263 ) const = 0;
00264
00265
00267
00268
00270
00271
00272
00284 virtual RCP<CommRequest> isend(
00285 const ArrayView<const char> &sendBuffer,
00286 const int destRank
00287 ) const = 0;
00288
00289
00304 virtual RCP<CommRequest> ireceive(
00305 const ArrayView<char> &recvBuffer,
00306 const int sourceRank
00307 ) const = 0;
00308
00309
00320 virtual void waitAll(
00321 const ArrayView<RCP<CommRequest> > &requests
00322 ) const = 0;
00323
00324
00335 virtual void wait(
00336 const Ptr<RCP<CommRequest> > &request
00337 ) const = 0;
00338
00339
00341
00342 };
00343
00344 }
00345
00346 #endif // TEUCHOS_COMM_HPP