SST
7.2.0
StructuralSimulationToolkit
|
Generic network interface. More...
#include <simpleNetwork.h>
Data Structures | |
class | Handler |
Event Handler class with user-data argument. More... | |
class | Handler< classT, void > |
Event Handler class without user-data. More... | |
class | HandlerBase |
Functor classes for handling of callbacks. More... | |
class | NetworkInspector |
Class used to inspect network requests going through the network. More... | |
class | Request |
Represents both network sends and receives. More... | |
Public Types | |
typedef int64_t | nid_t |
All Addresses can be 64-bit. | |
Public Member Functions | |
SimpleNetwork (SST::Component *comp) | |
Constructor, designed to be used via 'loadSubComponent'. More... | |
virtual bool | initialize (const std::string &portName, const UnitAlgebra &link_bw, int vns, const UnitAlgebra &in_buf_size, const UnitAlgebra &out_buf_size)=0 |
Second half of building the interface. More... | |
virtual void | sendInitData (Request *req)=0 |
Sends a network request during the init() phase. | |
virtual Request * | recvInitData ()=0 |
Receive any data during the init() phase. More... | |
virtual void | sendUntimedData (Request *req) |
Sends a network request during untimed phases (init() and complete()). More... | |
virtual Request * | recvUntimedData () |
Receive any data during untimed phases (init() and complete()). More... | |
virtual bool | send (Request *req, int vn)=0 |
Returns a handle to the underlying SST::Link. More... | |
virtual Request * | recv (int vn)=0 |
Receive a Request from the network. More... | |
virtual void | setup () override |
Called after all components have been constructed and inialization has completed, but before simulation time has begun. More... | |
virtual void | init (unsigned int UNUSED(phase)) override |
Used during the init phase. More... | |
virtual void | complete (unsigned int UNUSED(phase)) override |
Used during the init phase. More... | |
virtual void | finish () override |
Called after simulation completes, but before objects are destroyed. More... | |
virtual bool | spaceToSend (int vn, int num_bits)=0 |
Checks if there is sufficient space to send on the specified virtual netork. More... | |
virtual bool | requestToReceive (int vn)=0 |
Checks if there is a waiting network request request pending in the specified virtual network. More... | |
virtual void | setNotifyOnReceive (HandlerBase *functor)=0 |
Registers a functor which will fire when a new request is received from the network. More... | |
virtual void | setNotifyOnSend (HandlerBase *functor)=0 |
Registers a functor which will fire when a request is sent to the network. More... | |
virtual bool | isNetworkInitialized () const =0 |
Check to see if network is initialized. More... | |
virtual nid_t | getEndpointID () const =0 |
Returns the endpoint ID. More... | |
virtual const UnitAlgebra & | getLinkBW () const =0 |
Returns the final BW of the link managed by the simpleNetwork instance. More... | |
Public Member Functions inherited from SST::SubComponent | |
SubComponent (Component *parent) | |
Public Member Functions inherited from SST::BaseComponent | |
ComponentId_t | getId () const |
Returns unique component ID. | |
virtual void | emergencyShutdown (void) |
Called when SIGINT or SIGTERM has been seen. More... | |
const std::string & | getName () const |
Returns component Name. | |
virtual bool | Status () |
Currently unused function. | |
virtual void | printStatus (Output &UNUSED(out)) |
Called by the Simulation to request that the component print it's current status. More... | |
bool | isPortConnected (const std::string &name) const |
Determine if a port name is connected to any links. | |
Link * | configureLink (std::string name, TimeConverter *time_base, Event::HandlerBase *handler=NULL) |
Configure a Link. More... | |
Link * | configureLink (std::string name, std::string time_base, Event::HandlerBase *handler=NULL) |
Configure a Link. More... | |
Link * | configureLink (std::string name, Event::HandlerBase *handler=NULL) |
Configure a Link. More... | |
Link * | configureSelfLink (std::string name, TimeConverter *time_base, Event::HandlerBase *handler=NULL) |
Configure a SelfLink (Loopback link) More... | |
Link * | configureSelfLink (std::string name, std::string time_base, Event::HandlerBase *handler=NULL) |
Configure a SelfLink (Loopback link) More... | |
Link * | configureSelfLink (std::string name, Event::HandlerBase *handler=NULL) |
Configure a SelfLink (Loopback link) More... | |
TimeConverter * | registerClock (std::string freq, Clock::HandlerBase *handler, bool regAll=true) |
Registers a clock for this component. More... | |
TimeConverter * | registerClock (const UnitAlgebra &freq, Clock::HandlerBase *handler, bool regAll=true) |
void | unregisterClock (TimeConverter *tc, Clock::HandlerBase *handler) |
Removes a clock handler from the component. | |
Cycle_t | reregisterClock (TimeConverter *freq, Clock::HandlerBase *handler) |
Reactivates an existing Clock and Handler. More... | |
Cycle_t | getNextClockCycle (TimeConverter *freq) |
Returns the next Cycle that the TimeConverter would fire. | |
TimeConverter * | registerOneShot (std::string timeDelay, OneShot::HandlerBase *handler) |
Registers a OneShot event for this component. More... | |
TimeConverter * | registerOneShot (const UnitAlgebra &timeDelay, OneShot::HandlerBase *handler) |
TimeConverter * | registerTimeBase (std::string base, bool regAll=true) |
Registers a default time base for the component and optionally sets the the component's links to that timebase. More... | |
TimeConverter * | getTimeConverter (const std::string &base) |
TimeConverter * | getTimeConverter (const UnitAlgebra &base) |
SimTime_t | getCurrentSimTime (TimeConverter *tc) const |
return the time since the simulation began in units specified by the parameter. More... | |
SimTime_t | getCurrentSimTime () const |
return the time since the simulation began in the default timebase | |
SimTime_t | getCurrentSimTime (std::string base) |
return the time since the simulation began in timebase specified More... | |
SimTime_t | getCurrentSimTimeNano () const |
Utility function to return the time since the simulation began in nanoseconds. | |
SimTime_t | getCurrentSimTimeMicro () const |
Utility function to return the time since the simulation began in microseconds. | |
SimTime_t | getCurrentSimTimeMilli () const |
Utility function to return the time since the simulation began in milliseconds. | |
template<typename T > | |
Statistic< T > * | registerStatistic (std::string statName, std::string statSubId="") |
Registers a statistic. More... | |
template<typename T > | |
Statistic< T > * | registerStatistic (const char *statName, const char *statSubId="") |
Module * | loadModule (std::string type, Params ¶ms) |
Loads a module from an element Library. More... | |
Module * | loadModuleWithComponent (std::string type, Component *comp, Params ¶ms) |
Loads a module from an element Library. More... | |
SubComponent * | loadSubComponent (std::string type, Component *comp, Params ¶ms) |
Loads a SubComponent from an element Library. More... | |
SubComponent * | loadNamedSubComponent (std::string name) |
SubComponent * | loadNamedSubComponent (std::string name, Params ¶ms) |
SubComponentSlotInfo * | getSubComponentSlotInfo (std::string name, bool fatalOnEmptyIndex=false) |
const std::vector< double > & | getCoordinates () const |
Retrieve the X,Y,Z coordinates of this component. | |
Static Public Attributes | |
static const nid_t | INIT_BROADCAST_ADDR = 0xffffffffffffffffl |
Additional Inherited Members | |
Protected Member Functions inherited from SST::SubComponent | |
Component * | getTrueComponent () const final override |
BaseComponent * | getStatisticOwner () const final override |
Returns self if Component If sub-component, returns self if a "modern" subcomponent otherwise, return base component. | |
SubComponent * | loadSubComponent (std::string type, Params ¶ms) |
virtual bool | doesComponentInfoStatisticExist (const std::string &statisticName) const final override |
Protected Member Functions inherited from SST::BaseComponent | |
void | setDefaultTimeBase (TimeConverter *tc) |
Manually set the default detaulTimeBase. | |
Link * | selfLink (std::string name, Event::HandlerBase *handler=NULL) |
Creates a new selfLink. | |
SharedRegion * | getLocalSharedRegion (const std::string &key, size_t size) |
Find a lookup table. | |
SharedRegion * | getGlobalSharedRegion (const std::string &key, size_t size, SharedRegionMerger *merger=NULL) |
Simulation * | getSimulation () const |
uint8_t | getComponentInfoStatisticEnableLevel (const std::string &statisticName) const |
std::string | getComponentInfoStatisticUnits (const std::string &statisticName) const |
Protected Attributes inherited from SST::SubComponent | |
Component *const | parent |
Protected Attributes inherited from SST::BaseComponent | |
TimeConverter * | defaultTimeBase |
Timebase used if no other timebase is specified for calls like BaseComponent::getCurrentSimTime(). More... | |
ComponentInfo * | my_info |
Simulation * | sim |
ComponentInfo * | currentlyLoadingSubComponent |
Generic network interface.
|
inline |
Constructor, designed to be used via 'loadSubComponent'.
References initialize(), recvInitData(), and sendInitData().
|
inlineoverridevirtual |
Used during the init phase.
The method will be called each phase of initialization. Initialization ends when no components have sent any data.
Reimplemented from SST::BaseComponent.
|
inlineoverridevirtual |
Called after simulation completes, but before objects are destroyed.
A good place to print out statistics.
Reimplemented from SST::SubComponent.
References getEndpointID(), getLinkBW(), isNetworkInitialized(), requestToReceive(), setNotifyOnReceive(), setNotifyOnSend(), and spaceToSend().
|
pure virtual |
Returns the endpoint ID.
Cannot be called until after the network is initialized.
Referenced by finish().
|
pure virtual |
|
inlineoverridevirtual |
Used during the init phase.
The method will be called each phase of initialization. Initialization ends when no components have sent any data.
Reimplemented from SST::SubComponent.
|
pure virtual |
Second half of building the interface.
Initialize network interface
portName | - Name of port to connect to |
link_bw | - Bandwidth of the link |
vns | - Number of virtual networks to be provided |
in_buf_size | - Size of input buffers (from router) |
out_buf_size | - Size of output buffers (to router) |
Referenced by SimpleNetwork().
|
pure virtual |
|
pure virtual |
Receive a Request from the network.
Use this method for polling-based applications. Register a handler for push-based notification of responses.
vn | Virtual network to receive on |
Referenced by recvUntimedData().
|
pure virtual |
Receive any data during the init() phase.
Referenced by recvUntimedData(), and SimpleNetwork().
|
inlinevirtual |
Receive any data during untimed phases (init() and complete()).
For now, simply call recvInitData. Once that call is deprecated and removed, this will become a pure virtual function. This means that when classes implement SimpleNetwork, they will need to overload both recvUntimedData and recvInitData with identical functionality (or having the Init version call the Untimed version) until recvInitData is removed in SST 9.0.
References recv(), recvInitData(), send(), and SST::Interfaces::SimpleNetwork::Request::vn.
|
pure virtual |
Checks if there is a waiting network request request pending in the specified virtual network.
vn | Virtual network to check |
Referenced by finish().
|
pure virtual |
Returns a handle to the underlying SST::Link.
Send a Request to the network.
Referenced by recvUntimedData().
|
inlinevirtual |
Sends a network request during untimed phases (init() and complete()).
For now, simply call sendInitData. Once that call is deprecated and removed, this will become a pure virtual function. This means that when classes implement SimpleNetwork, they will need to overload both sendUntimedData and sendInitData with identical functionality (or having the Init version call the Untimed version) until sendInitData is removed in SST 9.0.
References sendInitData().
|
pure virtual |
Registers a functor which will fire when a new request is received from the network.
Note, the actual request that was received is not passed into the functor, it is only a notification that something is available.
functor | Functor to call when request is received |
Referenced by finish().
|
pure virtual |
Registers a functor which will fire when a request is sent to the network.
Note, this only tells you when data is sent, it does not guarentee any specified amount of available space.
functor | Functor to call when request is sent |
Referenced by finish().
|
inlineoverridevirtual |
Called after all components have been constructed and inialization has completed, but before simulation time has begun.
Reimplemented from SST::SubComponent.
|
pure virtual |
Checks if there is sufficient space to send on the specified virtual netork.
vn | Virtual network to check |
num_bits | Minimum size in bits required to have space to send |
Referenced by finish().