SST  7.2.0
StructuralSimulationToolkit
SST::Interfaces::SimpleNetwork Class Referenceabstract

Generic network interface. More...

#include <simpleNetwork.h>

Inheritance diagram for SST::Interfaces::SimpleNetwork:
SST::SubComponent SST::Module SST::BaseComponent

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 RequestrecvInitData ()=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 RequestrecvUntimedData ()
 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 Requestrecv (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 UnitAlgebragetLinkBW () 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.
 
LinkconfigureLink (std::string name, TimeConverter *time_base, Event::HandlerBase *handler=NULL)
 Configure a Link. More...
 
LinkconfigureLink (std::string name, std::string time_base, Event::HandlerBase *handler=NULL)
 Configure a Link. More...
 
LinkconfigureLink (std::string name, Event::HandlerBase *handler=NULL)
 Configure a Link. More...
 
LinkconfigureSelfLink (std::string name, TimeConverter *time_base, Event::HandlerBase *handler=NULL)
 Configure a SelfLink (Loopback link) More...
 
LinkconfigureSelfLink (std::string name, std::string time_base, Event::HandlerBase *handler=NULL)
 Configure a SelfLink (Loopback link) More...
 
LinkconfigureSelfLink (std::string name, Event::HandlerBase *handler=NULL)
 Configure a SelfLink (Loopback link) More...
 
TimeConverterregisterClock (std::string freq, Clock::HandlerBase *handler, bool regAll=true)
 Registers a clock for this component. More...
 
TimeConverterregisterClock (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.
 
TimeConverterregisterOneShot (std::string timeDelay, OneShot::HandlerBase *handler)
 Registers a OneShot event for this component. More...
 
TimeConverterregisterOneShot (const UnitAlgebra &timeDelay, OneShot::HandlerBase *handler)
 
TimeConverterregisterTimeBase (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...
 
TimeConvertergetTimeConverter (const std::string &base)
 
TimeConvertergetTimeConverter (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="")
 
ModuleloadModule (std::string type, Params &params)
 Loads a module from an element Library. More...
 
ModuleloadModuleWithComponent (std::string type, Component *comp, Params &params)
 Loads a module from an element Library. More...
 
SubComponentloadSubComponent (std::string type, Component *comp, Params &params)
 Loads a SubComponent from an element Library. More...
 
SubComponentloadNamedSubComponent (std::string name)
 
SubComponentloadNamedSubComponent (std::string name, Params &params)
 
SubComponentSlotInfogetSubComponentSlotInfo (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
ComponentgetTrueComponent () const final override
 
BaseComponentgetStatisticOwner () const final override
 Returns self if Component If sub-component, returns self if a "modern" subcomponent otherwise, return base component.
 
SubComponentloadSubComponent (std::string type, Params &params)
 
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.
 
LinkselfLink (std::string name, Event::HandlerBase *handler=NULL)
 Creates a new selfLink.
 
SharedRegiongetLocalSharedRegion (const std::string &key, size_t size)
 Find a lookup table.
 
SharedRegiongetGlobalSharedRegion (const std::string &key, size_t size, SharedRegionMerger *merger=NULL)
 
SimulationgetSimulation () 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
TimeConverterdefaultTimeBase
 Timebase used if no other timebase is specified for calls like BaseComponent::getCurrentSimTime(). More...
 
ComponentInfomy_info
 
Simulationsim
 
ComponentInfocurrentlyLoadingSubComponent
 

Detailed Description

Generic network interface.

Constructor & Destructor Documentation

◆ SimpleNetwork()

SST::Interfaces::SimpleNetwork::SimpleNetwork ( SST::Component comp)
inline

Constructor, designed to be used via 'loadSubComponent'.

References initialize(), recvInitData(), and sendInitData().

Member Function Documentation

◆ complete()

virtual void SST::Interfaces::SimpleNetwork::complete ( unsigned int   UNUSEDphase)
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.

◆ finish()

virtual void SST::Interfaces::SimpleNetwork::finish ( )
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().

◆ getEndpointID()

virtual nid_t SST::Interfaces::SimpleNetwork::getEndpointID ( ) const
pure virtual

Returns the endpoint ID.

Cannot be called until after the network is initialized.

Returns
Endpoint ID

Referenced by finish().

◆ getLinkBW()

virtual const UnitAlgebra& SST::Interfaces::SimpleNetwork::getLinkBW ( ) const
pure virtual

Returns the final BW of the link managed by the simpleNetwork instance.

Cannot be called until after the network is initialized.

Returns
Link bandwidth of associated link

Referenced by finish().

◆ init()

virtual void SST::Interfaces::SimpleNetwork::init ( unsigned int   UNUSEDphase)
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.

◆ initialize()

virtual bool SST::Interfaces::SimpleNetwork::initialize ( const std::string &  portName,
const UnitAlgebra link_bw,
int  vns,
const UnitAlgebra in_buf_size,
const UnitAlgebra out_buf_size 
)
pure virtual

Second half of building the interface.

Initialize network interface

Parameters
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)
Returns
true if the link was able to be configured.

Referenced by SimpleNetwork().

◆ isNetworkInitialized()

virtual bool SST::Interfaces::SimpleNetwork::isNetworkInitialized ( ) const
pure virtual

Check to see if network is initialized.

If network is not initialized, then no other functions other than init() can can be called on the interface.

Returns
true if network is initialized, false otherwise

Referenced by finish().

◆ recv()

virtual Request* SST::Interfaces::SimpleNetwork::recv ( int  vn)
pure virtual

Receive a Request from the network.

Use this method for polling-based applications. Register a handler for push-based notification of responses.

Parameters
vnVirtual network to receive on
Returns
NULL if nothing is available.
Pointer to a Request response (that should be deleted)

Referenced by recvUntimedData().

◆ recvInitData()

virtual Request* SST::Interfaces::SimpleNetwork::recvInitData ( )
pure virtual

Receive any data during the init() phase.

See also
SST::Link::recvInitData()

Referenced by recvUntimedData(), and SimpleNetwork().

◆ recvUntimedData()

virtual Request* SST::Interfaces::SimpleNetwork::recvUntimedData ( )
inlinevirtual

Receive any data during untimed phases (init() and complete()).

See also
SST::Link::recvUntimedData()

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.

◆ requestToReceive()

virtual bool SST::Interfaces::SimpleNetwork::requestToReceive ( int  vn)
pure virtual

Checks if there is a waiting network request request pending in the specified virtual network.

Parameters
vnVirtual network to check
Returns
true if a network request is pending in the specified virtual network, false otherwise

Referenced by finish().

◆ send()

virtual bool SST::Interfaces::SimpleNetwork::send ( Request req,
int  vn 
)
pure virtual

Returns a handle to the underlying SST::Link.

Send a Request to the network.

Referenced by recvUntimedData().

◆ sendUntimedData()

virtual void SST::Interfaces::SimpleNetwork::sendUntimedData ( Request req)
inlinevirtual

Sends a network request during untimed phases (init() and complete()).

See also
SST::Link::sendUntimedData()

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

◆ setNotifyOnReceive()

virtual void SST::Interfaces::SimpleNetwork::setNotifyOnReceive ( HandlerBase functor)
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.

Parameters
functorFunctor to call when request is received

Referenced by finish().

◆ setNotifyOnSend()

virtual void SST::Interfaces::SimpleNetwork::setNotifyOnSend ( HandlerBase functor)
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.

Parameters
functorFunctor to call when request is sent

Referenced by finish().

◆ setup()

virtual void SST::Interfaces::SimpleNetwork::setup ( )
inlineoverridevirtual

Called after all components have been constructed and inialization has completed, but before simulation time has begun.

Reimplemented from SST::SubComponent.

◆ spaceToSend()

virtual bool SST::Interfaces::SimpleNetwork::spaceToSend ( int  vn,
int  num_bits 
)
pure virtual

Checks if there is sufficient space to send on the specified virtual netork.

Parameters
vnVirtual network to check
num_bitsMinimum size in bits required to have space to send
Returns
true if there is space in the output, false otherwise

Referenced by finish().


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