#include <ReplayTask.h>
Public Member Functions | |
Constructors & destructor | |
virtual | ~ReplayTask () |
Executing the task | |
virtual bool | execute () |
Protected Member Functions | |
Constructors & destructor | |
ReplayTask (const GlobalDefs &defs, LocalTrace &trace, CallbackData *data=0, CallbackManager *cbmanager=0) | |
Callback registration | |
template<class derivedT > | |
void | register_callback (event_t event, void(derivedT::*fptr)(const CallbackManager &, int, const Event &, CallbackData *)) |
template<class derivedT > | |
void | register_callback (int user_event, void(derivedT::*fptr)(const CallbackManager &, int, const Event &, CallbackData *)) |
Replay control | |
virtual bool | prepare () |
virtual bool | finish () |
virtual bool | replay ()=0 |
Protected Attributes | |
const GlobalDefs & | m_defs |
Global definitions. | |
LocalTrace & | m_trace |
Local trace data. | |
CallbackData * | m_cbdata |
Callback data object. | |
CallbackManager * | m_cbmanager |
Callback manager object. |
Users can inherit from one of the derived classes ForwardReplayTask or BackwardReplayTask, which will perform a default PEARL forward or backward replay, respectively. To specify a different replay engine, users can also inherit directly from ReplayTask and overwrite the replay() method.
~ReplayTask | ( | ) | [virtual] |
Destructor. Releases the callback manager and destroys the instance.
ReplayTask | ( | const GlobalDefs & | defs, | |
LocalTrace & | trace, | |||
CallbackData * | cbdata = 0 , |
|||
CallbackManager * | cbmanager = 0 | |||
) | [protected] |
Constructor. Initializes internal data.
The constructor creates a default callback manager of type pearl::CallbackManager. You can specify a different callback manager by passing a non-null pointer to a callback manager object via the cbmanager argument. Note that ReplayTask takes ownership of the callback manager object, i.e., it will be freed automatically in the ReplayTask destructor.
defs | Reference to global definition object | |
trace | Reference to the trace object the replay will be performed on | |
cbdata | Pointer to callback data object to be passed to the callback functions (default 0) | |
cbmanager | Pointer to callback manager object (default 0) |
bool execute | ( | ) | [virtual] |
bool finish | ( | ) | [protected, virtual] |
The finish() callback method is called after trace replay finishes. You can overwrite it if you need to perform any postprocessing steps immediately after the replay. It will only be called if the replay was successful.
The default implementation does nothing and returns successfully.
bool prepare | ( | ) | [protected, virtual] |
The prepare() callback method is called before trace replay starts. You can overwrite it if you need to perform any initialization steps immediately before the replay. Trace replay will only be executed if prepare() returns successfully.
The default implementation does nothing and returns successfully.
void register_callback | ( | int | user_event, | |
void(derivedT::*)(const CallbackManager &, int, const Event &, CallbackData *) | fptr | |||
) | [inline, protected] |
Convenience function to register a callback member-function for user-defined events. You can use this function in a derived class to register one of the classes' member functions as callback function for PEARL trace replay.
Example:
class MyReplay : public ReplayTask { public: MyReplay(const GlobalDefs& defs, LocalTrace& trace) : ReplayTask(defs, trace) { register_callback(42, &MyReplay::cb_dowork); } protected: void cb_dowork(const CallbackManager& cbmanager, int user_event, const Event& event, CallbackData* cdata) { // ... } };
user_event | User-defined event to register callback for | |
fptr | Pointer to callback member function |
void register_callback | ( | event_t | event, | |
void(derivedT::*)(const CallbackManager &, int, const Event &, CallbackData *) | fptr | |||
) | [inline, protected] |
Convenience function to register a callback member-function for PEARL event records. You can use this function in a derived class to register one of the classes' member functions as callback function for PEARL trace replay.
Example:
class MyReplay : public ReplayTask { public: MyReplay(const GlobalDefs& defs, LocalTrace& trace) : ReplayTask(defs, trace) { register_callback(MPI_SEND, &MyReplay::cb_send); } protected: void cb_send(const CallbackManager& cbmanager, int user_event, const Event& event, CallbackData* cdata) { // ... } };
event | PEARL event to register callback for | |
fptr | Pointer to callback member function |
virtual bool replay | ( | ) | [protected, pure virtual] |
Pure virtual member function defining the interface for executing a replay. It needs to be overwritten in derived subclasses to define the exact replay behavior.
Implemented in ForwardReplayTask, and BackwardReplayTask.
![]() |
Copyright © 1998–2009 Forschungszentrum Jülich, Jülich Supercomputing Centre |