SST
9.0.0
StructuralSimulationToolkit
|
Main component object for the simulation. More...
#include <baseComponent.h>
Public Member Functions | |
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... | |
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... | |
Protected Member Functions | |
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 | |
Simulation * | sim |
Friends | |
class | SubComponentSlotInfo |
class | SubComponent |
class | ComponentInfo |
class | ComponentExtension |
class | SST::Statistics::StatisticProcessingEngine |
Main component object for the simulation.
|
inlinevirtual |
Used during the init phase.
The method will be called each phase of initialization. Initialization ends when no components have sent any data.
Reimplemented in SST::Interfaces::SimpleNetwork.
Link * SST::BaseComponent::configureLink | ( | std::string | name, |
TimeConverter * | time_base, | ||
Event::HandlerBase * | handler = NULL |
||
) |
Configure a Link.
name | - Port Name on which the link to configure is attached. |
time_base | - Time Base of the link. If NULL is passed in, then it will use the Component defaultTimeBase |
handler | - Optional Handler to be called when an Event is received |
References SST::LinkMap::getLink(), SST::LinkMap::insertLink(), SST::Link::setDefaultTimeBase(), SST::Link::setFunctor(), and SST::Link::setPolling().
Referenced by configureLink(), and configureSelfLink().
Link * SST::BaseComponent::configureLink | ( | std::string | name, |
std::string | time_base, | ||
Event::HandlerBase * | handler = NULL |
||
) |
Configure a Link.
name | - Port Name on which the link to configure is attached. |
time_base | - Time Base of the link as a string |
handler | - Optional Handler to be called when an Event is received |
References configureLink().
Link * SST::BaseComponent::configureLink | ( | std::string | name, |
Event::HandlerBase * | handler = NULL |
||
) |
Configure a Link.
name | - Port Name on which the link to configure is attached. |
handler | - Optional Handler to be called when an Event is received |
References configureLink().
Link * SST::BaseComponent::configureSelfLink | ( | std::string | name, |
TimeConverter * | time_base, | ||
Event::HandlerBase * | handler = NULL |
||
) |
Configure a SelfLink (Loopback link)
name | - Name of the self-link port |
time_base | - Time Base of the link. If NULL is passed in, then it will use the Component defaultTimeBase |
handler | - Optional Handler to be called when an Event is received |
References configureLink().
Link * SST::BaseComponent::configureSelfLink | ( | std::string | name, |
std::string | time_base, | ||
Event::HandlerBase * | handler = NULL |
||
) |
Configure a SelfLink (Loopback link)
name | - Name of the self-link port |
time_base | - Time Base of the link |
handler | - Optional Handler to be called when an Event is received |
References configureLink().
Link * SST::BaseComponent::configureSelfLink | ( | std::string | name, |
Event::HandlerBase * | handler = NULL |
||
) |
Configure a SelfLink (Loopback link)
name | - Name of the self-link port |
handler | - Optional Handler to be called when an Event is received |
References configureLink().
|
inlinevirtual |
Called when SIGINT or SIGTERM has been seen.
Allows components opportunity to clean up external state.
|
inlinevirtual |
Called after simulation completes, but before objects are destroyed.
A good place to print out statistics.
Reimplemented in SST::Interfaces::SimpleNetwork, and SST::SubComponent.
SimTime_t SST::BaseComponent::getCurrentSimTime | ( | TimeConverter * | tc | ) | const |
return the time since the simulation began in units specified by the parameter.
tc | TimeConverter specifying the units |
References SST::TimeConverter::convertFromCoreTime().
SimTime_t SST::BaseComponent::getCurrentSimTime | ( | std::string | base | ) |
return the time since the simulation began in timebase specified
base | Timebase frequency in SI Units |
References getCurrentSimTime().
|
inlinevirtual |
Used during the init phase.
The method will be called each phase of initialization. Initialization ends when no components have sent any data.
Reimplemented in SST::Interfaces::SimpleNetwork, and SST::SubComponent.
|
inlineprotected |
Check to see if a given element type is loadable with a particular API.
name | - Name of element to check in lib.name format |
|
inlineprotected |
Loads an anonymous subcomponent (not defined in input file to SST run).
type | tyupe of subcomponent to load in lib.name format |
slot_name | name of the slot to load subcomponent into |
slot_num | index of the slot to load subcomponent into |
share_flags | Share flags to be used by subcomponent |
params | Params object to be passed to subcomponent |
args | Arguments to be passed to constructor. This signature is defined in the API definition |
For ease in backward compatibility to old API, this call will try to load using new API and will fallback to old if unsuccessful.
Loads a module from an element Library.
type | Fully Qualified library.moduleName |
params | Parameters the module should use for configuration |
Module * SST::BaseComponent::loadModuleWithComponent | ( | std::string | type, |
Component * | comp, | ||
Params & | params | ||
) |
Loads a module from an element Library.
type | Fully Qualified library.moduleName |
comp | Pointer to component to pass to Module's constructor |
params | Parameters the module should use for configuration |
SubComponent * SST::BaseComponent::loadSubComponent | ( | std::string | type, |
Component * | comp, | ||
Params & | params | ||
) |
Loads a SubComponent from an element Library.
type | Fully Qualified library.moduleName |
comp | Pointer to component to pass to SuBaseComponent's constructor |
params | Parameters the module should use for configuration |
|
inlineprotected |
Loads a user defined subcomponent (defined in input file to SST run).
This version does not allow share flags (set to SHARE_NONE) or constructor arguments.
slot_name | name of the slot to load subcomponent into |
For ease in backward compatibility to old API, this call will try to load using new API and will fallback to old if unsuccessful.
|
inlineprotected |
Loads a user defined subcomponent (defined in input file to SST run).
slot_name | name of the slot to load subcomponent into |
share_flags | Share flags to be used by subcomponent |
args | Arguments to be passed to constructor. This signature is defined in the API definition |
For ease in backward compatibility to old API, this call will try to load using new API and will fallback to old if unsuccessful.
References SST::Output::fatal(), and SST::Output::STDERR.
|
inlinevirtual |
Called by the Simulation to request that the component print it's current status.
Useful for debugging.
out | The Output class which should be used to print component status. |
TimeConverter * SST::BaseComponent::registerClock | ( | std::string | freq, |
Clock::HandlerBase * | handler, | ||
bool | regAll = true |
||
) |
Registers a clock for this component.
freq | Frequency for the clock in SI units |
handler | Pointer to Clock::HandlerBase which is to be invoked at the specified interval |
regAll | Should this clock period be used as the default time base for all of the links connected to this component |
References SST::Simulation::registerClock().
TimeConverter * SST::BaseComponent::registerOneShot | ( | std::string | timeDelay, |
OneShot::HandlerBase * | handler | ||
) |
Registers a OneShot event for this component.
Note: OneShot cannot be canceled, and will always callback after the timedelay.
timeDelay | Time delay for the OneShot in SI units |
handler | Pointer to OneShot::HandlerBase which is to be invoked at the specified interval |
References SST::Simulation::registerOneShot().
|
inline |
Registers a statistic.
If Statistic is allowed to run (controlled by Python runtime parameters), then a statistic will be created and returned. If not allowed to run, then a NullStatistic will be returned. In either case, the returned value should be used for all future Statistic calls. The type of Statistic and the Collection Rate is set by Python runtime parameters. If no type is defined, then an Accumulator Statistic will be provided by default. If rate set to 0 or not provided, then the statistic will output results only at end of sim (if output is enabled).
statName | Primary name of the statistic. This name must match the defined ElementInfoStatistic in the component, and must also be enabled in the Python input file. |
statSubId | An additional sub name for the statistic |
TimeConverter * SST::BaseComponent::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.
Useful for components which do not have a clock, but would like a default timebase.
base | Frequency for the clock in SI units |
regAll | Should this clock period be used as the default time base for all of the links connected to this component |
References SST::TimeLord::getTimeConverter(), and SST::Simulation::getTimeLord().
Cycle_t SST::BaseComponent::reregisterClock | ( | TimeConverter * | freq, |
Clock::HandlerBase * | handler | ||
) |
Reactivates an existing Clock and Handler.
References SST::Simulation::reregisterClock().
|
inlinevirtual |
Called after all components have been constructed and initialization has completed, but before simulation time has begun.
Reimplemented in SST::Interfaces::SimpleNetwork, and SST::SubComponent.
|
inline |
Temporary function to help provide backward compatibility to old SubComponent API.