Reference documentation for deal.II version 9.3.3
|
#include <deal.II/base/mpi_consensus_algorithms.h>
Public Member Functions | |
NBX (Process< T1, T2 > &process, const MPI_Comm &comm) | |
virtual | ~NBX ()=default |
virtual std::vector< unsigned int > | run () override |
Protected Attributes | |
Process< T1, T2 > & | process |
const MPI_Comm & | comm |
const bool | job_supports_mpi |
const unsigned int | my_rank |
const unsigned int | n_procs |
Private Member Functions | |
bool | check_own_state () |
void | signal_finish () |
bool | check_global_state () |
void | answer_requests () |
void | start_communication () |
void | clean_up_and_end_communication () |
Private Attributes | |
std::vector< unsigned int > | targets |
std::vector< std::vector< T1 > > | send_buffers |
std::vector< MPI_Request > | send_requests |
std::vector< std::vector< T2 > > | recv_buffers |
std::vector< MPI_Request > | recv_requests |
std::vector< std::unique_ptr< std::vector< T2 > > > | request_buffers |
std::vector< std::unique_ptr< MPI_Request > > | request_requests |
MPI_Request | barrier_request |
std::set< unsigned int > | requesting_processes |
This class implements a concrete algorithm for the ConsensusAlgorithms::Interface base class, using only point-to-point communications and a single IBarrier.
T1 | The type of the elements of the vector to be sent. |
T2 | The type of the elements of the vector to be received. |
Definition at line 225 of file mpi_consensus_algorithms.h.
Utilities::MPI::ConsensusAlgorithms::NBX< T1, T2 >::NBX | ( | Process< T1, T2 > & | process, |
const MPI_Comm & | comm | ||
) |
|
virtualdefault |
Destructor.
|
overridevirtual |
Run consensus algorithm and return the requesting processes.
Implements Utilities::MPI::ConsensusAlgorithms::Interface< T1, T2 >.
|
private |
Check if all request answers have been received by this rank.
|
private |
Signal to all other ranks that this rank has received all request answers via entering IBarrier.
|
private |
Check if all ranks have received all their request answers, i.e. all ranks have reached the IBarrier.
|
private |
A request message from another rank has been received: process the request and send an answer.
|
private |
Start to send all requests via ISend and post IRecvs for the incoming answer messages.
|
private |
After all rank has received all answers, the MPI data structures can be freed and the received answers can be processed.
|
private |
List of processes this process wants to send requests to.
Definition at line 252 of file mpi_consensus_algorithms.h.
|
private |
Buffers for sending requests.
Definition at line 257 of file mpi_consensus_algorithms.h.
|
private |
Requests for sending requests.
Definition at line 262 of file mpi_consensus_algorithms.h.
|
private |
Buffers for receiving answers to requests.
Definition at line 267 of file mpi_consensus_algorithms.h.
|
private |
Requests for receiving answers to requests.
Definition at line 273 of file mpi_consensus_algorithms.h.
|
private |
Buffers for sending answers to requests.
Definition at line 278 of file mpi_consensus_algorithms.h.
|
private |
Requests for sending answers to requests.
Definition at line 283 of file mpi_consensus_algorithms.h.
|
private |
Definition at line 286 of file mpi_consensus_algorithms.h.
|
private |
List of processes who have made a request to this process.
Definition at line 292 of file mpi_consensus_algorithms.h.
|
protectedinherited |
Reference to the process provided by the user.
Definition at line 186 of file mpi_consensus_algorithms.h.
|
protectedinherited |
MPI communicator.
Definition at line 191 of file mpi_consensus_algorithms.h.
|
protectedinherited |
Cache if job supports MPI.
Definition at line 196 of file mpi_consensus_algorithms.h.
|
protectedinherited |
Rank of this process.
Definition at line 201 of file mpi_consensus_algorithms.h.
|
protectedinherited |
Number of processes in the communicator.
Definition at line 206 of file mpi_consensus_algorithms.h.