version 3.11-dev
Loading...
Searching...
No Matches

Files for communication of parallel solvers. More...

Description

Classes

class  Dumux::ScotchPartitioner< IndexType >
 A reordering backend using the scotch library. More...
class  Dumux::VectorCommDataHandle< Mapper, Vector, entityCodim, ScatterOperator, DataT >
 A data handle class to exchange entries of a vector. More...
class  Dumux::MultiCodimVectorCommDataHandle< Mapper, Vector, dim, ScatterOperator, DataT >
 A data handle class to exchange entries of a vector for multiple codims in one communication call. More...

Functions

constexpr bool Dumux::Multithreading::isSerial ()
 Checking whether the backend is serial.
template<class Communication>
std::vector< char > Dumux::Detail::exchangeSparse (const Communication &comm, std::vector< std::vector< char > > &sendBufs, int tag=7373)
 Exchange variable-sized byte messages with a sparse set of peer processes.
template<class FunctorType>
void Dumux::parallelFor (const std::size_t count, const FunctorType &functor)
 A parallel for loop (multithreading).

Files

file  multithreading.hh
 Multithreading in Dumux.
file  nonblockingsparseexchange.hh
 A dynamic sparse data exchange (DSDE) of byte messages between processes.
file  packing.hh
 Helpers to (de)serialize trivially-copyable values into a byte buffer (e.g. for point-to-point or collective MPI communication).
file  parallel_for.hh
 Parallel for loop (multithreading).
file  scotchpartitioner.hh
 An interface to the Scotch library for graph partitioning.
file  vectorcommdatahandle.hh
 Contains a class to exchange entries of a vector.

Function Documentation

◆ exchangeSparse()

template<class Communication>
std::vector< char > Dumux::Detail::exchangeSparse ( const Communication & comm,
std::vector< std::vector< char > > & sendBufs,
int tag = 7373 )
Parameters
comma Dune communicator (convertible to an MPI_Comm when built with MPI)
sendBufsone byte buffer per destination rank; an empty buffer means "no message for that rank". A buffer addressed to the calling rank is ignored.
tagthe MPI message tag to use; it must not clash with other communication in flight on the same communicator while this exchange runs.
Returns
the concatenation, in unspecified order, of all messages addressed to this rank
Note
Collective over comm. Each rank only needs to know its own destinations; who sends to it (and how much) is discovered on the fly, so there is no O(number of ranks) memory or all-to-all collective involved.

◆ isSerial()

bool Dumux::Multithreading::isSerial ( )
inlineconstexpr

◆ parallelFor()

template<class FunctorType>
void Dumux::parallelFor ( const std::size_t count,
const FunctorType & functor )
inline
Parameters
countthe number of work tasks to perform
functorfunctor executed for each task (get task number as argument)