Reference documentation for deal.II version 9.4.0
\(\newcommand{\dealvcentcolon}{\mathrel{\mathop{:}}}\) \(\newcommand{\dealcoloneq}{\dealvcentcolon\mathrel{\mkern-1.2mu}=}\) \(\newcommand{\jump}[1]{\left[\!\left[ #1 \right]\!\right]}\) \(\newcommand{\average}[1]{\left\{\!\left\{ #1 \right\}\!\right\}}\)
Public Member Functions | List of all members
Utilities::MPI::ConsensusAlgorithms::Process< RequestType, AnswerType > Class Template Referenceabstract

#include <deal.II/base/mpi_consensus_algorithms.h>

Inheritance diagram for Utilities::MPI::ConsensusAlgorithms::Process< RequestType, AnswerType >:
[legend]

Public Member Functions

virtual ~Process ()=default
 
virtual std::vector< unsigned intcompute_targets ()=0
 
virtual void create_request (const unsigned int other_rank, RequestType &send_buffer)
 
virtual void answer_request (const unsigned int other_rank, const RequestType &buffer_recv, AnswerType &request_buffer)
 
virtual void read_answer (const unsigned int other_rank, const AnswerType &recv_buffer)
 

Detailed Description

template<typename RequestType, typename AnswerType>
class Utilities::MPI::ConsensusAlgorithms::Process< RequestType, AnswerType >

A base class for concrete implementations of classes that provide the information that the algorithms derived from the ConsensusAlgorithms::Interface base class require. The main functionality of this class is to return a list of process ranks this process wants data from and to deal with the optional payload of the messages sent/received by the ConsensusAlgorithm classes.

There are two kinds of messages:

Template Parameters
RequestTypeThe type of the elements of the vector to sent.
AnswerTypeThe type of the elements of the vector to received.
Note
Since the payloads of the messages are optional, users have to deal with buffers themselves. The ConsensusAlgorithm classes (1) deliver only references to empty vectors (of size 0) the data to be sent can be inserted to or read from, and (2) communicate these vectors blindly.

Definition at line 158 of file mpi_consensus_algorithms.h.

Constructor & Destructor Documentation

◆ ~Process()

template<typename RequestType , typename AnswerType >
virtual Utilities::MPI::ConsensusAlgorithms::Process< RequestType, AnswerType >::~Process ( )
virtualdefault

Destructor. Made virtual to ensure that one can work with derived classes.

Member Function Documentation

◆ compute_targets()

template<typename RequestType , typename AnswerType >
virtual std::vector< unsigned int > Utilities::MPI::ConsensusAlgorithms::Process< RequestType, AnswerType >::compute_targets ( )
pure virtual
Returns
A vector of ranks this process wants to send a request to.
Note
This is the only method which has to be implemented since the payloads of the messages are optional.

Implemented in Utilities::MPI::internal::ComputeIndexOwner::DictionaryPayLoad, Utilities::MPI::internal::ComputeIndexOwner::ConsensusAlgorithmsPayload, and Utilities::MPI::ConsensusAlgorithms::AnonymousProcess< RequestType, AnswerType >.

◆ create_request()

template<typename RequestType , typename AnswerType >
virtual void Utilities::MPI::ConsensusAlgorithms::Process< RequestType, AnswerType >::create_request ( const unsigned int  other_rank,
RequestType &  send_buffer 
)
virtual

Add a payload to the request to the process with the specified rank.

Parameters
[in]other_rankRank of the process.
[out]send_bufferdata to be sent part of the request (optional).
Note
The buffer is empty. Before using it, you have to set its size.

Reimplemented in Utilities::MPI::ConsensusAlgorithms::AnonymousProcess< RequestType, AnswerType >, Utilities::MPI::internal::ComputeIndexOwner::DictionaryPayLoad, and Utilities::MPI::internal::ComputeIndexOwner::ConsensusAlgorithmsPayload.

◆ answer_request()

template<typename RequestType , typename AnswerType >
virtual void Utilities::MPI::ConsensusAlgorithms::Process< RequestType, AnswerType >::answer_request ( const unsigned int  other_rank,
const RequestType &  buffer_recv,
AnswerType &  request_buffer 
)
virtual

Prepare the buffer where the payload of the answer of the request to the process with the specified rank is saved in.

Parameters
[in]other_rankRank of the process.
[in]buffer_recvReceived payload (optional).
[out]request_bufferPayload to be sent as part of the request (optional).
Note
The request_buffer is empty. Before using it, you have to set its size.

Reimplemented in Utilities::MPI::ConsensusAlgorithms::AnonymousProcess< RequestType, AnswerType >, Utilities::MPI::internal::ComputeIndexOwner::DictionaryPayLoad, and Utilities::MPI::internal::ComputeIndexOwner::ConsensusAlgorithmsPayload.

◆ read_answer()

template<typename RequestType , typename AnswerType >
virtual void Utilities::MPI::ConsensusAlgorithms::Process< RequestType, AnswerType >::read_answer ( const unsigned int  other_rank,
const AnswerType &  recv_buffer 
)
virtual

Process the payload of the answer of the request to the process with the specified rank.

Parameters
[in]other_rankrank of the process
[in]recv_bufferdata to be sent part of the request (optional)

Reimplemented in Utilities::MPI::ConsensusAlgorithms::AnonymousProcess< RequestType, AnswerType >, and Utilities::MPI::internal::ComputeIndexOwner::ConsensusAlgorithmsPayload.


The documentation for this class was generated from the following file: