PEARL
Parallel Event Access and Replay Library
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines
Public Member Functions | Protected Member Functions | Protected Attributes
pearl::ReplayTask Class Reference

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

#include <pearl/ReplayTask.h>

Inheritance diagram for pearl::ReplayTask:
pearl::Task pearl::BackwardReplayTask pearl::ForwardReplayTask

List of all members.

Public Member Functions

virtual bool execute ()

Protected Member Functions

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 *))
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.

Constructors & destructor

virtual ~ReplayTask ()
 ReplayTask (const GlobalDefs &defs, LocalTrace &trace, CallbackData *data=0, CallbackManager *cbmanager=0)

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

virtual pearl::ReplayTask::~ReplayTask ( ) [virtual]
pearl::ReplayTask::ReplayTask ( const GlobalDefs defs,
LocalTrace trace,
CallbackData data = 0,
CallbackManager cbmanager = 0 
) [protected]

Member Function Documentation

virtual bool pearl::ReplayTask::execute ( ) [virtual]

Implements pearl::Task.

virtual bool pearl::ReplayTask::finish ( ) [protected, virtual]
virtual bool pearl::ReplayTask::prepare ( ) [protected, virtual]
template<class derivedT >
void pearl::ReplayTask::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:
eventPEARL event to register callback for
fptrPointer to callback member function
template<class derivedT >
void pearl::ReplayTask::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_eventUser-defined event to register callback for
fptrPointer to callback member function
virtual bool pearl::ReplayTask::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 pearl::BackwardReplayTask, and pearl::ForwardReplayTask.


Member Data Documentation


The documentation for this class was generated from the following file:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines

Scalasca    Copyright © 1998–2014 Forschungszentrum Jülich GmbH, Jülich Supercomputing Centre
Copyright © 2009–2014 German Research School for Simulation Sciences GmbH, Laboratory for Parallel Programming