Loading...
Searching...
No Matches
Foam::PstreamDetail Namespace Reference

Implementation details for UPstream/Pstream/MPI etc. More...

Functions

template<class IntType>
void reduce_offsetRange (Foam::OffsetRange< IntType > &range, const int communicator)
template<class IntType, std::size_t... Is, class... OffsetRanges>
void reduce_offsetRanges (const int communicator, std::index_sequence< Is... >, OffsetRanges &... items)
template<class Type>
bool broadcast (Type *values, int count, MPI_Datatype datatype, const int communicator, const int root=0)
template<class Type>
void reduce (const Type *sendData, Type *values, int count, MPI_Datatype datatype, MPI_Op optype, const int communicator, UPstream::Request *req=nullptr)
template<class Type>
void allReduce (Type *values, int count, MPI_Datatype datatype, MPI_Op optype, const int communicator, UPstream::Request *req=nullptr)
template<class Type>
void scanReduce (const Type *sendData, Type *recvData, int count, MPI_Datatype datatype, MPI_Op optype, const int communicator, const int exclusive)
template<class Type>
void allToAll (const UList< Type > &sendData, UList< Type > &recvData, MPI_Datatype datatype, const int communicator, UPstream::Request *req=nullptr)
template<class Type>
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 int communicator, UPstream::Request *req=nullptr)
template<class Type>
void allToAllConsensus (const UList< Type > &sendData, UList< Type > &recvData, MPI_Datatype datatype, const int tag, const int communicator)
template<class Type>
void allToAllConsensus (const Map< Type > &sendData, Map< Type > &recvData, MPI_Datatype datatype, const int tag, const int communicator)
template<class Type>
void gather (const Type *sendData, Type *recvData, int count, MPI_Datatype datatype, const int communicator, UPstream::Request *req=nullptr)
template<class Type>
void scatter (const Type *sendData, Type *recvData, int count, MPI_Datatype datatype, const int communicator, UPstream::Request *req=nullptr)
template<class Type>
void gatherv (const Type *sendData, int sendCount, Type *recvData, const UList< int > &recvCounts, const UList< int > &recvOffsets, MPI_Datatype datatype, const int communicator, UPstream::Request *req=nullptr)
template<class Type>
void scatterv (const Type *sendData, const UList< int > &sendCounts, const UList< int > &sendOffsets, Type *recvData, int recvCount, MPI_Datatype datatype, const int communicator, UPstream::Request *req=nullptr)
template<class Type>
void allGather (Type *allData, int count, MPI_Datatype datatype, const int communicator, UPstream::Request *req=nullptr)

Detailed Description

Implementation details for UPstream/Pstream/MPI etc.

Function Documentation

◆ reduce_offsetRange()

template<class IntType>
void reduce_offsetRange ( Foam::OffsetRange< IntType > & range,
const int communicator )

Definition at line 56 of file UPstreamReduceOffsets.H.

References UPstream::broadcast, UPstream::is_parallel(), UPstream::mpiExscan_sum(), UPstream::nProcs(), and range.

Referenced by Foam::reduceOffset(), and Foam::reduceOffsets().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ reduce_offsetRanges()

template<class IntType, std::size_t... Is, class... OffsetRanges>
void reduce_offsetRanges ( const int communicator,
std::index_sequence< Is... > ,
OffsetRanges &... items )

Definition at line 94 of file UPstreamReduceOffsets.H.

References UPstream::broadcast, UPstream::is_parallel(), UPstream::mpiExscan_sum(), UPstream::myProcNo(), and UPstream::nProcs().

Referenced by Foam::reduceOffsets().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ broadcast()

template<class Type>
bool broadcast ( Type * values,
int count,
MPI_Datatype datatype,
const int communicator,
const int root = 0 )

◆ reduce()

template<class Type>
void reduce ( const Type * sendData,
Type * values,
int count,
MPI_Datatype datatype,
MPI_Op optype,
const int communicator,
UPstream::Request * req = nullptr )

◆ allReduce()

template<class Type>
void allReduce ( Type * values,
int count,
MPI_Datatype datatype,
MPI_Op optype,
const int communicator,
UPstream::Request * req = nullptr )

◆ scanReduce()

template<class Type>
void scanReduce ( const Type * sendData,
Type * recvData,
int count,
MPI_Datatype datatype,
MPI_Op optype,
const int communicator,
const int exclusive )

◆ allToAll()

template<class Type>
void allToAll ( const UList< Type > & sendData,
UList< Type > & recvData,
MPI_Datatype datatype,
const int communicator,
UPstream::Request * req = nullptr )

◆ allToAllv()

template<class Type>
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 int communicator,
UPstream::Request * req = nullptr )

◆ allToAllConsensus() [1/2]

template<class Type>
void allToAllConsensus ( const UList< Type > & sendData,
UList< Type > & recvData,
MPI_Datatype datatype,
const int tag,
const int communicator )

◆ allToAllConsensus() [2/2]

template<class Type>
void allToAllConsensus ( const Map< Type > & sendData,
Map< Type > & recvData,
MPI_Datatype datatype,
const int tag,
const int communicator )

◆ gather()

template<class Type>
void gather ( const Type * sendData,
Type * recvData,
int count,
MPI_Datatype datatype,
const int communicator,
UPstream::Request * req = nullptr )

◆ scatter()

template<class Type>
void scatter ( const Type * sendData,
Type * recvData,
int count,
MPI_Datatype datatype,
const int communicator,
UPstream::Request * req = nullptr )

◆ gatherv()

template<class Type>
void gatherv ( const Type * sendData,
int sendCount,
Type * recvData,
const UList< int > & recvCounts,
const UList< int > & recvOffsets,
MPI_Datatype datatype,
const int communicator,
UPstream::Request * req = nullptr )

◆ scatterv()

template<class Type>
void scatterv ( const Type * sendData,
const UList< int > & sendCounts,
const UList< int > & sendOffsets,
Type * recvData,
int recvCount,
MPI_Datatype datatype,
const int communicator,
UPstream::Request * req = nullptr )

◆ allGather()

template<class Type>
void allGather ( Type * allData,
int count,
MPI_Datatype datatype,
const int communicator,
UPstream::Request * req = nullptr )