PEARL
Parallel Event Access and Replay Library
Protected Attributes | List of all members
pearl::ReplayTask Class Referenceabstract

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

Public Member Functions

Executing the task
virtual bool execute ()
 
- Public Member Functions inherited from pearl::Task
CompoundTaskget_parent () const
 
virtual ~Task ()
 

Protected Member Functions

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 Member Functions inherited from pearl::Task
 Task ()
 

Protected Attributes

const GlobalDefsm_defs
 Global definitions. More...
 
LocalTracem_trace
 Local trace data. More...
 
CallbackDatam_cbdata
 Callback data object. More...
 
CallbackManagerm_cbmanager
 Callback manager object. More...
 

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

◆ ~ReplayTask()

virtual pearl::ReplayTask::~ReplayTask ( )
virtual

◆ ReplayTask()

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

Member Function Documentation

◆ execute()

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

Implements pearl::Task.

◆ finish()

virtual bool pearl::ReplayTask::finish ( )
protectedvirtual

◆ prepare()

virtual bool pearl::ReplayTask::prepare ( )
protectedvirtual

◆ register_callback() [1/2]

template<class derivedT >
void pearl::ReplayTask::register_callback ( event_t  event,
void(derivedT::*)(const CallbackManager &, int, const Event &, CallbackData *)  fptr 
)
inlineprotected

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

◆ register_callback() [2/2]

template<class derivedT >
void pearl::ReplayTask::register_callback ( int  user_event,
void(derivedT::*)(const CallbackManager &, int, const Event &, CallbackData *)  fptr 
)
inlineprotected

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

◆ replay()

virtual bool pearl::ReplayTask::replay ( )
protectedpure 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

◆ m_cbdata

CallbackData* pearl::ReplayTask::m_cbdata
protected

◆ m_cbmanager

CallbackManager* pearl::ReplayTask::m_cbmanager
protected

◆ m_defs

const GlobalDefs& pearl::ReplayTask::m_defs
protected

◆ m_trace

LocalTrace& pearl::ReplayTask::m_trace
protected

The documentation for this class was generated from the following file:
pearl::MPI_SEND
@ MPI_SEND
Definition: pearl_types.h:62
pearl::ReplayTask::ReplayTask
ReplayTask(const GlobalDefs &defs, LocalTrace &trace, CallbackData *data=0, CallbackManager *cbmanager=0)
pearl::ReplayTask::register_callback
void register_callback(event_t event, void(derivedT::*fptr)(const CallbackManager &, int, const Event &, CallbackData *))
Definition: ReplayTask.h:173

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