38 #ifndef Foam_UPstreamWrapping_H 39 #define Foam_UPstreamWrapping_H 48 namespace PstreamDetail
55 template<
typename Type = MPI_Request>
56 static typename std::enable_if<std::is_pointer<Type>::value, Type>
::type 59 return reinterpret_cast<Type
>(req.value());
63 template<
typename Type = MPI_Request>
64 static typename std::enable_if<std::is_integral<Type>::value, Type>
::type 67 return static_cast<Type
>(req.value());
78 MPI_Datatype datatype,
88 MPI_Datatype datatype,
99 MPI_Datatype datatype,
103 label* requestID =
nullptr 113 MPI_Datatype datatype,
116 label* requestID =
nullptr 124 const Type* sendData,
132 MPI_Datatype datatype,
135 label* requestID =
nullptr 145 MPI_Datatype datatype,
157 MPI_Datatype datatype,
167 const Type* sendData,
170 MPI_Datatype datatype,
173 label* requestID =
nullptr 181 const Type* sendData,
184 MPI_Datatype datatype,
187 label* requestID =
nullptr 195 const Type* sendData,
202 MPI_Datatype datatype,
205 label* requestID =
nullptr 213 const Type* sendData,
220 MPI_Datatype datatype,
223 label* requestID =
nullptr 234 MPI_Datatype datatype,
237 label* requestID =
nullptr
void broadcast0(Type *values, int count, MPI_Datatype datatype, const label comm)
void allReduce(Type *values, int count, MPI_Datatype datatype, MPI_Op optype, const label comm, UPstream::Request *req=nullptr, label *requestID=nullptr)
void gather(const Type *sendData, Type *recvData, int count, MPI_Datatype datatype, const label comm, UPstream::Request *req=nullptr, label *requestID=nullptr)
List< T > values(const HashTable< T, Key, Hash > &tbl, const bool doSort=false)
List of values from HashTable, optionally sorted.
void allToAllConsensus(const UList< Type > &sendData, UList< Type > &recvData, MPI_Datatype datatype, const int tag, const label comm)
fileName::Type type(const fileName &name, const bool followLink=true)
Return the file type: DIRECTORY or FILE, normally following symbolic links.
unsigned int count(const UList< bool > &bools, const bool val=true)
Count number of 'true' entries.
An opaque wrapper for MPI_Request with a vendor-independent representation independent of any <mpi...
void scatter(const Type *sendData, Type *recvData, int count, MPI_Datatype datatype, const label comm, UPstream::Request *req=nullptr, label *requestID=nullptr)
void allGather(Type *allData, int count, MPI_Datatype datatype, const label comm, UPstream::Request *req=nullptr, label *requestID=nullptr)
void allToAllv(const Type *sendData, const UList< int > &sendCounts, const UList< int > &sendOffsets, Type *recvData, const UList< int > &recvCounts, const UList< int > &recvOffsets, MPI_Datatype datatype, const label comm, UPstream::Request *req=nullptr, label *requestID=nullptr)
void gatherv(const Type *sendData, int sendCount, Type *recvData, const UList< int > &recvCounts, const UList< int > &recvOffsets, MPI_Datatype datatype, const label comm, UPstream::Request *req=nullptr, label *requestID=nullptr)
void allToAll(const UList< Type > &sendData, UList< Type > &recvData, MPI_Datatype datatype, const label comm, UPstream::Request *req=nullptr, label *requestID=nullptr)
void reduce0(Type *values, int count, MPI_Datatype datatype, MPI_Op optype, const label comm)
A HashTable to objects of type <T> with a label key.
void scatterv(const Type *sendData, const UList< int > &sendCounts, const UList< int > &sendOffsets, Type *recvData, int recvCount, MPI_Datatype datatype, const label comm, UPstream::Request *req=nullptr, label *requestID=nullptr)