Static Public Member Functions
|static void||reportFailure (const MPIComm &comm)|
|static bool||pollForFailures (const MPIComm &comm)|
|static void||enable ()|
|static void||disable ()|
Static Private Member Functions
|static bool &||isActive ()|
ErrorPolling provides utilities for establishing agreement between processors on whether an std::exception has been detected on any one processor.
The two functions must be used in a coordinated way. The simplest use case is to embed a call to reportFailure() whenever an std::exception is detected at the top-level try/catch block, and then to do a call to pollForFailures() whenever it is desired to check for off-processor errors before proceeding. The macro
calls pollForFailures() and throws an std::exception if the return value is true.
Polling is a collective operation (an MPI_Reduce) and so incurs some performance overhead. It can be disabled with a call to
IMPORTANT: all processors must agree on whether collective error checking is enabled or disabled. If there are inconsistent states, the reduction operations in pollForFailures() will hang because some processors cannot be contacted.
|void Teuchos::ErrorPolling::reportFailure||(||const MPIComm &||comm||)||
Call this function upon catching an std::exception in order to inform other processors of the error. This function will do an AllReduce in conjunction with calls to either this function or its partner, pollForFailures(), on the other processors. This procedure has the effect of communicating to the other processors that an std::exception has been detected on this one.
|bool Teuchos::ErrorPolling::pollForFailures||(||const MPIComm &||comm||)||
Call this function after std::exception-free completion of a try/catch block. This function will do an AllReduce in conjunction with calls to either this function or its partner, reportFailure(), on the other processors. If a failure has been reported by another processor, the call to pollForFailures() will return true and an std::exception can be thrown.
|static void Teuchos::ErrorPolling::enable||(||)||
|static void Teuchos::ErrorPolling::disable||(||)||
|static bool& Teuchos::ErrorPolling::isActive||(||)||