gem5
|
This class implements global sync operations among gem5 peer processes. More...
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 |
This class implements global sync operations among gem5 peer processes.
Definition at line 118 of file dist_iface.hh.
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().
Initialize periodic sync params.
start | Start tick for dist synchronisation |
repeat | Frequency of dist synchronisation |
Definition at line 69 of file dist_iface.cc.
Referenced by DistIface::init().
|
pure virtual |
Callback when the receiver thread gets a sync ack message.
Implemented in DistIface::SyncSwitch, and DistIface::SyncNode.
Referenced by DistIface::recvThreadFunc().
|
pure virtual |
Implemented in DistIface::SyncSwitch, and DistIface::SyncNode.
Referenced by DistIface::readyToCkpt().
|
pure virtual |
Implemented in DistIface::SyncSwitch, and DistIface::SyncNode.
Referenced by DistIface::readyToExit().
|
pure virtual |
Implemented in DistIface::SyncSwitch, and DistIface::SyncNode.
Referenced by DistIface::toggleSync().
|
pure virtual |
Core method to perform a full dist sync.
Implemented in DistIface::SyncSwitch, and DistIface::SyncNode.
|
overridepure virtual |
Serialize an object.
Output an object's state into the current checkpoint section.
cp | Checkpoint state |
Implements Serializable.
Implemented in DistIface::SyncSwitch, and DistIface::SyncNode.
|
overridepure virtual |
Unserialize an object.
Read an object's state from the current checkpoint section.
cp | Checkpoint state |
Implements Serializable.
Implemented in DistIface::SyncSwitch, and DistIface::SyncNode.
|
friend |
Definition at line 161 of file dist_iface.hh.
|
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.
|
protected |
Flag is set if taking a ckpt is permitted upon sync completion.
Definition at line 143 of file dist_iface.hh.
|
protected |
Flag is set if exit is permitted upon sync completion.
Definition at line 139 of file dist_iface.hh.
|
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().
|
protected |
Flag is set if the sync is aborted (e.g.
due to connection lost)
Definition at line 159 of file dist_iface.hh.
|
protected |
The lock to protect access to the Sync object.
Definition at line 124 of file dist_iface.hh.
Referenced by DistIface::SyncNode::requestStopSync().
|
protected |
Tick for the next periodic sync (if the event is not scheduled yet)
Definition at line 155 of file dist_iface.hh.
|
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().
|
protected |
Number of receiver threads that not yet completed the current global synchronisation.
Definition at line 135 of file dist_iface.hh.