ReplayTask Class Reference
[PEARL.replay]

Abstract base class for a replay-based trace analysis task. More...

#include <ReplayTask.h>

Inheritance diagram for ReplayTask:

Task BackwardReplayTask ForwardReplayTask

List of all members.

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 GlobalDefsm_defs
 Global definitions.
LocalTracem_trace
 Local trace data.
CallbackDatam_cbdata
 Callback data object.
CallbackManagerm_cbmanager
 Callback manager object.


Detailed Description

ReplayTask provides an interface for a trace replay task. Its execute() method will run a trace replay on a given trace using the PEARL callback system.

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.


Constructor & Destructor Documentation

~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.

Parameters:
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)


Member Function Documentation

bool execute (  )  [virtual]

Executes the prepare(), replay() and finish() methods (in this order). If any of those indicate a failure, the task will be aborted immediately.

Returns:
True all steps were successful, false otherwise.

Implements Task.

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.

Returns:
Always true

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.

Returns:
Always true

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)
     {
       // ...
     }
 };

Parameters:
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)
     {
       // ...
     }
 };

Parameters:
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.

Returns:
Should return true if the replay was sucessful, false otherwise

Implemented in ForwardReplayTask, and BackwardReplayTask.


SCALASCA    Copyright © 1998–2009 Forschungszentrum Jülich, Jülich Supercomputing Centre