dune-common 2.9.0
Loading...
Searching...
No Matches
Public Member Functions | List of all members
Dune::MPIGuard Class Reference

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

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);
}
detects a thrown exception and communicates to all other processes
Definition mpiguard.hh:134

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/4]

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/4]

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/4]

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?

◆ MPIGuard() [4/4]

Dune::MPIGuard::MPIGuard ( const MPI_Comm &  comm,
bool  active = true 
)
inline

◆ ~MPIGuard()

Dune::MPIGuard::~MPIGuard ( )
inline

destroy the guard and check for undetected exceptions

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

◆ reactivate()

void Dune::MPIGuard::reactivate ( )
inline

reactivate the guard.

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


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