gem5
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Member Functions | Protected Attributes | Friends | List of all members
DistIface::Sync Class Referenceabstract

This class implements global sync operations among gem5 peer processes. More...

Inheritance diagram for DistIface::Sync:
Serializable DistIface::SyncNode DistIface::SyncSwitch

Public Member Functions

void init (Tick start, Tick repeat)
 Initialize periodic sync params. More...
 
virtual bool run (bool same_tick)=0
 Core method to perform a full dist sync. More...
 
virtual bool progress (Tick send_tick, Tick next_repeat, ReqType do_ckpt, ReqType do_exit, ReqType do_stop_sync)=0
 Callback when the receiver thread gets a sync ack message. More...
 
void abort ()
 Abort processing an on-going sync event (in case of an error, e.g. More...
 
virtual void requestCkpt (ReqType req)=0
 
virtual void requestExit (ReqType req)=0
 
virtual void requestStopSync (ReqType req)=0
 
void drainComplete ()
 
virtual void serialize (CheckpointOut &cp) const override=0
 Serialize an object. More...
 
virtual void unserialize (CheckpointIn &cp) override=0
 Unserialize an object. More...
 
- Public Member Functions inherited from Serializable
 Serializable ()
 
virtual ~Serializable ()
 
void serializeSection (CheckpointOut &cp, const char *name) const
 Serialize an object into a new section. More...
 
void serializeSection (CheckpointOut &cp, const std::string &name) const
 
void unserializeSection (CheckpointIn &cp, const char *name)
 Unserialize an a child object. More...
 
void unserializeSection (CheckpointIn &cp, const std::string &name)
 

Protected Attributes

std::mutex lock
 The lock to protect access to the Sync object. More...
 
std::condition_variable cv
 Condition variable for the simulation thread to wait on until all receiver threads completes the current global synchronisation. More...
 
unsigned waitNum
 Number of receiver threads that not yet completed the current global synchronisation. More...
 
bool doExit
 Flag is set if exit is permitted upon sync completion. More...
 
bool doCkpt
 Flag is set if taking a ckpt is permitted upon sync completion. More...
 
bool doStopSync
 Flag is set if sync is to stop upon sync completion. More...
 
Tick nextRepeat
 The repeat value for the next periodic sync. More...
 
Tick nextAt
 Tick for the next periodic sync (if the event is not scheduled yet) More...
 
bool isAbort
 Flag is set if the sync is aborted (e.g. More...
 

Friends

class SyncEvent
 

Additional Inherited Members

- Static Public Member Functions inherited from Serializable
static const std::string & currentSection ()
 Get the fully-qualified name of the active section. More...
 
static void serializeAll (const std::string &cpt_dir)
 
static void unserializeGlobals (CheckpointIn &cp)
 
- Static Public Attributes inherited from Serializable
static int ckptCount = 0
 
static int ckptMaxCount = 0
 
static int ckptPrevCount = -1
 

Detailed Description

This class implements global sync operations among gem5 peer processes.

Note
This class is used as a singleton object (shared by all DistIface objects).

Definition at line 118 of file dist_iface.hh.

Member Function Documentation

void DistIface::Sync::abort ( )

Abort processing an on-going sync event (in case of an error, e.g.

lost connection to a peer gem5)

Definition at line 87 of file dist_iface.cc.

References X86ISA::lock.

Referenced by DistIface::recvThreadFunc().

void DistIface::Sync::drainComplete ( )

Definition at line 292 of file dist_iface.cc.

Referenced by DistIface::serialize().

void DistIface::Sync::init ( Tick  start,
Tick  repeat 
)

Initialize periodic sync params.

Parameters
startStart tick for dist synchronisation
repeatFrequency of dist synchronisation

Definition at line 69 of file dist_iface.cc.

References inform, and panic.

Referenced by DistIface::init().

virtual bool DistIface::Sync::progress ( Tick  send_tick,
Tick  next_repeat,
ReqType  do_ckpt,
ReqType  do_exit,
ReqType  do_stop_sync 
)
pure virtual

Callback when the receiver thread gets a sync ack message.

Returns
false if the receiver thread needs to stop (e.g. simulation is to exit)

Implemented in DistIface::SyncSwitch, and DistIface::SyncNode.

Referenced by DistIface::recvThreadFunc().

virtual void DistIface::Sync::requestCkpt ( ReqType  req)
pure virtual
virtual void DistIface::Sync::requestExit ( ReqType  req)
pure virtual
virtual void DistIface::Sync::requestStopSync ( ReqType  req)
pure virtual
virtual bool DistIface::Sync::run ( bool  same_tick)
pure virtual

Core method to perform a full dist sync.

Returns
true if the sync completes, false if it gets aborted

Implemented in DistIface::SyncSwitch, and DistIface::SyncNode.

virtual void DistIface::Sync::serialize ( CheckpointOut cp) const
overridepure virtual

Serialize an object.

Output an object's state into the current checkpoint section.

Parameters
cpCheckpoint state

Implements Serializable.

Implemented in DistIface::SyncSwitch, and DistIface::SyncNode.

virtual void DistIface::Sync::unserialize ( CheckpointIn cp)
overridepure virtual

Unserialize an object.

Read an object's state from the current checkpoint section.

Parameters
cpCheckpoint state

Implements Serializable.

Implemented in DistIface::SyncSwitch, and DistIface::SyncNode.

Friends And Related Function Documentation

friend class SyncEvent
friend

Definition at line 161 of file dist_iface.hh.

Member Data Documentation

std::condition_variable DistIface::Sync::cv
protected

Condition variable for the simulation thread to wait on until all receiver threads completes the current global synchronisation.

Definition at line 130 of file dist_iface.hh.

bool DistIface::Sync::doCkpt
protected

Flag is set if taking a ckpt is permitted upon sync completion.

Definition at line 143 of file dist_iface.hh.

bool DistIface::Sync::doExit
protected

Flag is set if exit is permitted upon sync completion.

Definition at line 139 of file dist_iface.hh.

bool DistIface::Sync::doStopSync
protected

Flag is set if sync is to stop upon sync completion.

Definition at line 147 of file dist_iface.hh.

Referenced by DistIface::SyncEvent::process().

bool DistIface::Sync::isAbort
protected

Flag is set if the sync is aborted (e.g.

due to connection lost)

Definition at line 159 of file dist_iface.hh.

std::mutex DistIface::Sync::lock
protected

The lock to protect access to the Sync object.

Definition at line 124 of file dist_iface.hh.

Referenced by DistIface::SyncNode::requestStopSync().

Tick DistIface::Sync::nextAt
protected

Tick for the next periodic sync (if the event is not scheduled yet)

Definition at line 155 of file dist_iface.hh.

Tick DistIface::Sync::nextRepeat
protected

The repeat value for the next periodic sync.

Definition at line 151 of file dist_iface.hh.

Referenced by DistIface::SyncEvent::process(), and DistIface::SyncEvent::start().

unsigned DistIface::Sync::waitNum
protected

Number of receiver threads that not yet completed the current global synchronisation.

Definition at line 135 of file dist_iface.hh.


The documentation for this class was generated from the following files:

Generated on Fri Jun 9 2017 13:04:07 for gem5 by doxygen 1.8.6