38 #ifndef Foam_UPstreamWrapping_H 39 #define Foam_UPstreamWrapping_H 44 #ifndef MPICH_SKIP_MPICXX 45 #define MPICH_SKIP_MPICXX 47 #ifndef OMPI_SKIP_MPICXX 48 #define OMPI_SKIP_MPICXX 56 namespace PstreamDetail
63 template<
typename Type = MPI_Request>
64 static typename std::enable_if<std::is_pointer<Type>::value, Type>
::type 67 return reinterpret_cast<Type
>(req.value());
71 template<
typename Type = MPI_Request>
72 static typename std::enable_if<std::is_integral<Type>::value, Type>
::type 75 return static_cast<Type
>(req.value());
86 MPI_Datatype datatype,
96 MPI_Datatype datatype,
107 MPI_Datatype datatype,
111 label* requestID =
nullptr 121 MPI_Datatype datatype,
124 label* requestID =
nullptr 132 const Type* sendData,
140 MPI_Datatype datatype,
143 label* requestID =
nullptr 153 MPI_Datatype datatype,
165 MPI_Datatype datatype,
175 const Type* sendData,
178 MPI_Datatype datatype,
181 label* requestID =
nullptr 189 const Type* sendData,
192 MPI_Datatype datatype,
195 label* requestID =
nullptr 203 const Type* sendData,
210 MPI_Datatype datatype,
213 label* requestID =
nullptr 221 const Type* sendData,
228 MPI_Datatype datatype,
231 label* requestID =
nullptr 242 MPI_Datatype datatype,
245 label* requestID =
nullptr 256 #include "UPstreamWrapping.txx" void allGather(Type *allData, int count, 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 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.
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.
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)
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 allToAll(const UList< Type > &sendData, UList< Type > &recvData, MPI_Datatype datatype, const label comm, UPstream::Request *req=nullptr, label *requestID=nullptr)
void broadcast0(Type *values, int count, MPI_Datatype datatype, const label comm)
void allToAllConsensus(const UList< Type > &sendData, UList< Type > &recvData, MPI_Datatype datatype, const int tag, const label comm)
void reduce0(Type *values, int count, MPI_Datatype datatype, MPI_Op optype, 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)
A HashTable to objects of type <T> with a label key.
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)