dune-common
2.5.1
|
A buffered communicator where the amount of data sent does not have to be known a priori. More...
#include <dune/common/parallel/variablesizecommunicator.hh>
Public Types | |
typedef std::map< int, std::pair < InterfaceInformation, InterfaceInformation > , std::less< int >, typename Allocator::template rebind < std::pair< const int, std::pair < InterfaceInformation, InterfaceInformation > > >::other > | InterfaceMap |
The type of the map form process number to InterfaceInformation for sending and receiving to and from it. More... | |
Public Member Functions | |
VariableSizeCommunicator (MPI_Comm comm, const InterfaceMap &inf) | |
Creates a communicator with the default maximum buffer size. More... | |
VariableSizeCommunicator (const Interface &inf) | |
Creates a communicator with the default maximum buffer size. More... | |
VariableSizeCommunicator (MPI_Comm comm, const InterfaceMap &inf, std::size_t max_buffer_size) | |
Creates a communicator with a specific maximum buffer size. More... | |
VariableSizeCommunicator (const Interface &inf, std::size_t max_buffer_size) | |
Creates a communicator with a specific maximum buffer size. More... | |
~VariableSizeCommunicator () | |
template<class DataHandle > | |
void | forward (DataHandle &handle) |
Communicate forward. More... | |
template<class DataHandle > | |
void | backward (DataHandle &handle) |
Communicate backwards. More... | |
A buffered communicator where the amount of data sent does not have to be known a priori.
In contrast to BufferedCommunicator the amount of data is determined by the container whose entries are sent and not known at the receiving side a priori.
typedef std::map<int,std::pair<InterfaceInformation,InterfaceInformation>, std::less<int>, typename Allocator::template rebind<std::pair<const int,std::pair<InterfaceInformation,InterfaceInformation> > >::other> Dune::VariableSizeCommunicator< Allocator >::InterfaceMap |
The type of the map form process number to InterfaceInformation for sending and receiving to and from it.
|
inline |
Creates a communicator with the default maximum buffer size.
The default size ist either what the macro DUNE_MAX_COMMUNICATION_BUFFER_SIZE is set to or 32768 if is not set.
|
inline |
Creates a communicator with the default maximum buffer size.
inf | The communication interface. |
|
inline |
Creates a communicator with a specific maximum buffer size.
comm | The MPI communicator to use. |
inf | The communication interface. |
max_buffer_size | The maximum buffer size allowed. |
|
inline |
Creates a communicator with a specific maximum buffer size.
inf | The communication interface. |
max_buffer_size | The maximum buffer size allowed. |
|
inline |
|
inline |
Communicate backwards.
DataHandle | The type of the handle describing the data. This type has to adhere to the following interface: * // returns whether the number of data items per entry is fixed
* bool fixedsize();
* // get the number of data items for an entry with index i
* std::size_t size(std::size_t i);
* // gather the data at index i
* template<class MessageBuffer>
* void gather(MessageBuffer& buf, std::size_t i);
* // scatter the n data items to index i
* template<class MessageBuffer>
* void scatter(MessageBuffer& buf, std::size_t i, std::size_t n);
*
|
handle | A handle responsible for describing the data, gathering, and scattering it. |
|
inline |
Communicate forward.
DataHandle | The type of the handle describing the data. This type has to adhere to the following interface: * // returns whether the number of data items per entry is fixed
* bool fixedsize();
* // get the number of data items for an entry with index i
* std::size_t size(std::size_t i);
* // gather the data at index i
* template<class MessageBuffer>
* void gather(MessageBuffer& buf, std::size_t i);
* // scatter the n data items to index i
* template<class MessageBuffer>
* void scatter(MessageBuffer& buf, std::size_t i, std::size_t n);
*
|
handle | A handle responsible for describing the data, gathering, and scattering it. |