deal.II version GIT relicensing-2289-g1e5549a87a 2024-12-21 21:30:00+00:00
\(\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\}}\)
Loading...
Searching...
No Matches
Public Member Functions | List of all members
Utilities::MPI::ConsensusAlgorithms::Interface< RequestType, AnswerType > Class Template Referenceabstract

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

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

Public Member Functions

 Interface ()=default
 
virtual ~Interface ()=default
 
std::vector< unsigned intrun (Process< RequestType, AnswerType > &process, const MPI_Comm comm)
 
virtual std::vector< unsigned intrun (const std::vector< unsigned int > &targets, const std::function< RequestType(const unsigned int)> &create_request, const std::function< AnswerType(const unsigned int, const RequestType &)> &answer_request, const std::function< void(const unsigned int, const AnswerType &)> &process_answer, const MPI_Comm comm)=0
 

Detailed Description

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

A base class for algorithms that implement consensus algorithms, see the documentation of the surrounding namespace for more information.

This base class only introduces a basic interface to achieve these goals, while derived classes implement different algorithms to actually compute such communication patterns and perform the communication.

Template Parameters
RequestTypeThe type of the elements of the vector to be sent.
AnswerTypeThe type of the elements of the vector to be received.

Definition at line 236 of file mpi_consensus_algorithms.h.

Constructor & Destructor Documentation

◆ Interface()

template<typename RequestType , typename AnswerType >
Utilities::MPI::ConsensusAlgorithms::Interface< RequestType, AnswerType >::Interface ( )
default

Default constructor.

◆ ~Interface()

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

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

Member Function Documentation

◆ run() [1/2]

template<typename RequestType , typename AnswerType >
std::vector< unsigned int > Utilities::MPI::ConsensusAlgorithms::Interface< RequestType, AnswerType >::run ( Process< RequestType, AnswerType > &  process,
const MPI_Comm  comm 
)

Run the consensus algorithm and return a vector of process ranks that have requested answers from the current process.

This version of the run() function simply unpacks the functions packaged in process and calls the version of the run() function that takes a number of std::function arguments.

Deprecated:
Instead of deriving a class from the Process base class and providing a corresponding object to this function, use the other run() function in this class that takes function objects as arguments.

◆ run() [2/2]

template<typename RequestType , typename AnswerType >
virtual std::vector< unsigned int > Utilities::MPI::ConsensusAlgorithms::Interface< RequestType, AnswerType >::run ( const std::vector< unsigned int > &  targets,
const std::function< RequestType(const unsigned int)> &  create_request,
const std::function< AnswerType(const unsigned int, const RequestType &)> &  answer_request,
const std::function< void(const unsigned int, const AnswerType &)> &  process_answer,
const MPI_Comm  comm 
)
pure virtual

Run the consensus algorithm and return a vector of process ranks that have requested answers from the current process.

Parameters
[in]targetsA vector that contains the ranks of processes to which requests should be sent and from which answers need to be received.
[in]create_requestA function object that takes the rank of a target process as argument and returns the message that forms the request to this target.
[in]answer_requestA function that takes as arguments the rank of the process that has sent a request to us, along with the message of the request, and returns the message that forms the answer that should be sent back to the requesting process.
[in]process_answerA function object that takes as argument the rank of a process from which we have received an answer to a previously sent request, along with the message that forms this answer. This function is used to describe what the caller of the consensus algorithm wants to do with the received answer.
[in]commThe MPI communicator on which the whole algorithm is to be performed.

Implemented in Utilities::MPI::ConsensusAlgorithms::NBX< RequestType, AnswerType >, Utilities::MPI::ConsensusAlgorithms::PEX< RequestType, AnswerType >, Utilities::MPI::ConsensusAlgorithms::Serial< RequestType, AnswerType >, and Utilities::MPI::ConsensusAlgorithms::Selector< RequestType, AnswerType >.


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