Dune Core Modules (unstable)

detects a thrown exception and communicates to all other processes More...

#include <dune/common/parallel/mpiguard.hh>

Public Member Functions

 MPIGuard (bool active=true)
 create an MPIGuard operating on the Communicator of the global Dune::MPIHelper More...
 
 MPIGuard (MPIHelper &m, bool active=true)
 create an MPIGuard operating on the Communicator of a special Dune::MPIHelper m More...
 
template<class C >
 MPIGuard (const C &comm, bool active=true)
 create an MPIGuard operating on an arbitrary communicator. More...
 
 ~MPIGuard ()
 destroy the guard and check for undetected exceptions
 
void reactivate ()
 reactivate the guard. More...
 
void finalize (bool success=true)
 stop the guard. More...
 

Detailed Description

detects a thrown exception and communicates to all other processes

{
MPIGuard guard(...);
do_something();
// tell the guard that you successfully passed a critical operation
guard.finalize();
// reactivate the guard for the next critical operation
guard.reactivate();
int result = do_something_else();
// tell the guard the result of your operation
guard.finalize(result == success);
}

You create a MPIGuard object. If an exception is risen on a process the MPIGuard detects the exception, because the finalize method was not called. When reaching the finalize call all other processes are informed that an error occurred and the MPIGuard throws an exception of type MPIGuardError.

Note
You can initialize the MPIGuard from different types of communication objects:

Constructor & Destructor Documentation

◆ MPIGuard() [1/3]

Dune::MPIGuard::MPIGuard ( bool  active = true)
inline

create an MPIGuard operating on the Communicator of the global Dune::MPIHelper

Parameters
activeshould the MPIGuard be active upon creation?

◆ MPIGuard() [2/3]

Dune::MPIGuard::MPIGuard ( MPIHelper m,
bool  active = true 
)
inline

create an MPIGuard operating on the Communicator of a special Dune::MPIHelper m

Parameters
ma reference to an MPIHelper
activeshould the MPIGuard be active upon creation?

◆ MPIGuard() [3/3]

template<class C >
Dune::MPIGuard::MPIGuard ( const C &  comm,
bool  active = true 
)
inline

create an MPIGuard operating on an arbitrary communicator.

Supported types for the communication object are:

Parameters
commreference to a communication object
activeshould the MPIGuard be active upon creation?

Member Function Documentation

◆ finalize()

void Dune::MPIGuard::finalize ( bool  success = true)
inline

stop the guard.

If no success parameter is passed, the guard assumes that everything worked as planned. All errors are communicated and an exception of type MPIGuardError is thrown if an error (or exception) occurred on any of the processors in the communicator.

Parameters
successinform the guard about possible errors

References DUNE_THROW.

Referenced by reactivate(), and ~MPIGuard().

◆ reactivate()

void Dune::MPIGuard::reactivate ( )
inline

reactivate the guard.

If the guard is still active finalize(true) is called first.

References finalize().


The documentation for this class was generated from the following file:
Creative Commons License   |  Legal Statements / Impressum  |  Hosted by TU Dresden  |  generated with Hugo v0.80.0 (Apr 24, 22:30, 2024)