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 ()|
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 topollForFailures() will hang because some processors cannot be contacted.
|static void Playa::ErrorPolling::disable||(||)||
|static void Playa::ErrorPolling::enable||(||)||
|static bool& Playa::ErrorPolling::isActive||(||)||
|bool Playa::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.
|void Playa::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.