SST
9.1.0
StructuralSimulationToolkit
|
Main component object for the simulation. More...
#include <component.h>
Public Member Functions | |
SST_ELI_DECLARE_INFO_EXTERN (ELI::ProvidesParams, ELI::ProvidesSubComponentSlots, ELI::ProvidesPorts, ELI::ProvidesStats, ELI::ProvidesCategory) Component(ComponentId_t id) | |
Constructor. More... | |
bool | registerExit () |
Register that the simulation should not end until this component says it is OK to. More... | |
bool | unregisterExit () |
Indicate permission for the simulation to end. More... | |
void | registerAsPrimaryComponent () |
Register as a primary component, which allows the component to specify when it is and is not OK to end simulation. More... | |
void | primaryComponentDoNotEndSim () |
Tells the simulation that it should not exit. More... | |
void | primaryComponentOKToEndSim () |
Tells the simulation that it is now OK to end simulation. More... | |
Public Member Functions inherited from SST::BaseComponent | |
BaseComponent (ComponentId_t id) | |
BaseComponent * | getParent () const |
Returns a pointer to the parent BaseComponent. | |
const std::string & | getType () const |
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 void | init (unsigned int UNUSED(phase)) |
Used during the init phase. More... | |
virtual void | complete (unsigned int UNUSED(phase)) |
Used during the init phase. More... | |
virtual void | setup () |
Called after all components have been constructed and initialization has completed, but before simulation time has begun. More... | |
virtual void | finish () |
Called after simulation completes, but before objects are destroyed. More... | |
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. | |
bool | isStatisticShared (const std::string &statName, bool include_me=false) |
template<typename T > | |
Statistic< T > * | registerStatistic (SST::Params ¶ms, const std::string &statName, const std::string &statSubId="") |
Registers a statistic. More... | |
template<typename T > | |
Statistic< T > * | registerStatistic (const std::string &statName, const std::string &statSubId="") |
template<typename... Args> | |
Statistic< std::tuple< Args...> > * | registerMultiStatistic (const std::string &statName, const std::string &statSubId="") |
template<typename... Args> | |
Statistic< std::tuple< Args...> > * | registerMultiStatistic (SST::Params ¶ms, const std::string &statName, const std::string &statSubId="") |
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... | |
template<class T , class... ARGS> | |
T * | loadModule (std::string type, Params ¶ms, ARGS...args) |
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. | |
bool | wasLoadedWithLegacyAPI () const |
Temporary function to help provide backward compatibility to old SubComponent API. More... | |
Friends | |
class | SubComponent |
Additional Inherited Members | |
Protected Member Functions inherited from SST::BaseComponent | |
template<class T , class... ARGS> | |
T * | loadComponentExtension (ARGS...args) |
template<class T > | |
bool | isSubComponentLoadableUsingAPI (std::string type) |
Check to see if a given element type is loadable with a particular API. More... | |
template<class T , class... ARGS> | |
T * | loadAnonymousSubComponent (std::string type, std::string slot_name, int slot_num, uint64_t share_flags, Params ¶ms, ARGS...args) |
Loads an anonymous subcomponent (not defined in input file to SST run). More... | |
template<class T > | |
T * | loadUserSubComponent (std::string slot_name) |
Loads a user defined subcomponent (defined in input file to SST run). More... | |
template<class T , class... ARGS> | |
T * | loadUserSubComponent (std::string slot_name, uint64_t share_flags, ARGS...args) |
Loads a user defined subcomponent (defined in input file to SST run). More... | |
bool | isAnonymous () |
bool | isUser () |
void | setDefaultTimeBase (TimeConverter *tc) |
Manually set the default detaulTimeBase. | |
TimeConverter * | getDefaultTimeBase () |
bool | doesSubComponentExist (std::string type) |
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 |
virtual bool | doesComponentInfoStatisticExist (const std::string &statisticName) const |
uint8_t | getComponentInfoStatisticEnableLevel (const std::string &statisticName) const |
Component * | getTrueComponent () const |
Protected Attributes inherited from SST::BaseComponent | |
Simulation * | sim |
Main component object for the simulation.
All models inherit from this.
void SST::Component::primaryComponentDoNotEndSim | ( | ) |
Tells the simulation that it should not exit.
The component will remain in this state until a call to primaryComponentOKToEndSim().
void SST::Component::primaryComponentOKToEndSim | ( | ) |
Tells the simulation that it is now OK to end simulation.
Simulation will not end until all primary components have called this function.
void SST::Component::registerAsPrimaryComponent | ( | ) |
Register as a primary component, which allows the component to specify when it is and is not OK to end simulation.
The simulator will not end simulation naturally (through use of the Exit object) while any primary component has specified primaryComponentDoNotEndSim(). However, it is still possible for Actions other than Exit to end simulation. Once all primary components have specified primaryComponentOKToEndSim(), the Exit object will trigger and end simulation.
This must be called during simulation wireup (i.e during the constructor for the component). By default, the state of the primary component is set to OKToEndSim.
If no component registers as a primary component, then the Exit object will not be used for that simulation and simulation termination must be accomplished through some other mechanism (e.g. –stopAt flag, or some other Action object).
bool SST::Component::registerExit | ( | ) |
Register that the simulation should not end until this component says it is OK to.
Calling this function (generally done in Component::setup() or in component constructor) increments a global counter. Calls to Component::unregisterExit() decrements the counter. The simulation cannot end unless this counter reaches zero, or the simulation time limit is reached. This counter is synchronized periodically with the other nodes.
SST::Component::SST_ELI_DECLARE_INFO_EXTERN | ( | ELI::ProvidesParams | , |
ELI::ProvidesSubComponentSlots | , | ||
ELI::ProvidesPorts | , | ||
ELI::ProvidesStats | , | ||
ELI::ProvidesCategory | |||
) |
Constructor.
Generally only called by the factory class.
id | Unique component ID |
bool SST::Component::unregisterExit | ( | ) |
Indicate permission for the simulation to end.
This function is the mirror of Component::registerExit(). It decrements the global counter, which, upon reaching zero, indicates that the simulation can terminate.