SST  10.1.0
StructuralSimulationToolkit
SST::Component Class Reference

Main component object for the simulation. More...

#include <component.h>

Inheritance diagram for SST::Component:
SST::BaseComponent SST::CoreTestClockerComponent::coreTestClockerComponent SST::CoreTestComponent::coreTestComponent SST::CoreTestDistribComponent::coreTestDistribComponent SST::CoreTestLookupTableComponent::coreTestLookupTableComponent SST::CoreTestMessageGeneratorComponent::coreTestMessageGeneratorComponent SST::CoreTestParamComponent::coreTestParamComponent SST::CoreTestRNGComponent::coreTestRNGComponent SST::CoreTestStatisticsComponent::coreTestStatisticsComponent SST::CoreTestSubComponent::SubComponentLoader SST::CoreTestTracerComponent::coreTestTracerComponent

Public Member Functions

 SST_ELI_DECLARE_INFO_EXTERN (ELI::ProvidesParams, ELI::ProvidesSubComponentSlots, ELI::ProvidesPorts, ELI::ProvidesStats, ELI::ProvidesCategory) Component(ComponentId_t id)
 Constructor. 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)
 
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...
 
SimTime_t getCurrentSimCycle () const
 Return the current simulation time as a cycle count.
 
int getCurrentPriority () const
 Return the current priority.
 
UnitAlgebra getElapsedSimTime () const
 Return the elapsed simulation time as a time.
 
UnitAlgebra getFinalSimTime () const
 Return the end simulation time as a time.
 
RankInfo getRank () const
 Get this instance's parallel rank.
 
RankInfo getNumRanks () const
 Get the number of parallel ranks in the simulation.
 
OutputgetSimulationOutput () const
 Return the base simulation Output class instance.
 
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 (const std::string &base) const
 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.
 
SubComponentSlotInfogetSubComponentSlotInfo (const std::string &name, bool fatalOnEmptyIndex=false)
 
const std::vector< double > & getCoordinates () const
 Retrieve the X,Y,Z coordinates of this component.
 

Friends

class SubComponent
 

Additional Inherited Members

- Protected Member Functions inherited from SST::BaseComponent
bool isPortConnected (const std::string &name) const
 Determine if a port name is connected to any links.
 
LinkconfigureLink (const std::string &name, TimeConverter *time_base, Event::HandlerBase *handler=nullptr)
 Configure a Link. More...
 
LinkconfigureLink (const std::string &name, const std::string &time_base, Event::HandlerBase *handler=nullptr)
 Configure a Link. More...
 
LinkconfigureLink (const std::string &name, Event::HandlerBase *handler=nullptr)
 Configure a Link. More...
 
LinkconfigureSelfLink (const std::string &name, TimeConverter *time_base, Event::HandlerBase *handler=nullptr)
 Configure a SelfLink (Loopback link) More...
 
LinkconfigureSelfLink (const std::string &name, const std::string &time_base, Event::HandlerBase *handler=nullptr)
 Configure a SelfLink (Loopback link) More...
 
LinkconfigureSelfLink (const std::string &name, Event::HandlerBase *handler=nullptr)
 Configure a SelfLink (Loopback link) More...
 
TimeConverterregisterClock (const 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)
 Registers a clock for this component. More...
 
TimeConverterregisterClock (TimeConverter *tc, Clock::HandlerBase *handler, bool regAll=true)
 Registers a clock for this component. More...
 
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 (const std::string &timeDelay, OneShot::HandlerBase *handler)
 Registers a OneShot event for this component. More...
 
TimeConverterregisterOneShot (const UnitAlgebra &timeDelay, OneShot::HandlerBase *handler)
 
TimeConverterregisterTimeBase (const 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) const
 
TimeConvertergetTimeConverter (const UnitAlgebra &base) const
 
TimeConvertergetTimeConverterNano () const
 
TimeConvertergetTimeConverterMicro () const
 
TimeConvertergetTimeConverterMilli () const
 
bool isStatisticShared (const std::string &statName, bool include_me=false)
 
template<typename T >
Statistic< T > * registerStatistic (SST::Params &params, 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 &params, const std::string &statName, const std::string &statSubId="")
 
template<typename T >
Statistic< T > * registerStatistic (const char *statName, const char *statSubId="")
 
void performStatisticOutput (StatisticBase *stat)
 Called by the Components and Subcomponent to perform a statistic Output. More...
 
void performGlobalStatisticOutput ()
 Performs a global statistic Output. More...
 
ModuleloadModule (const std::string &type, Params &params)
 Loads a module from an element Library. More...
 
template<class T , class... ARGS>
T * loadModule (const std::string &type, Params &params, ARGS...args)
 Loads a module from an element Library. More...
 
template<class T , class... ARGS>
T * loadComponentExtension (ARGS...args)
 
template<class T >
bool isSubComponentLoadableUsingAPI (const std::string &type)
 Check to see if a given element type is loadable with a particular API. More...
 
template<class T >
bool isUserSubComponentLoadableUsingAPI (const std::string &slot_name)
 Check to see if the element type loaded by the user into the. More...
 
template<class T , class... ARGS>
T * loadAnonymousSubComponent (const std::string &type, const std::string &slot_name, int slot_num, uint64_t share_flags, Params &params, ARGS...args)
 Loads an anonymous subcomponent (not defined in input file to SST run). More...
 
template<class T >
T * loadUserSubComponent (const std::string &slot_name)
 Loads a user defined subcomponent (defined in input file to SST run). More...
 
template<class T , class... ARGS>
T * loadUserSubComponent (const std::string &slot_name, uint64_t share_flags, ARGS...args)
 Loads a user defined subcomponent (defined in input file to SST run). More...
 
void fatal (uint32_t line, const char *file, const char *func, int exit_code, const char *format,...) const
 Convenience function for reporting fatal conditions. More...
 
void sst_assert (bool condition, uint32_t line, const char *file, const char *func, int exit_code, const char *format,...) const
 Convenience function for testing for and reporting fatal conditions. More...
 
bool isAnonymous ()
 
bool isUser ()
 
void setDefaultTimeBase (TimeConverter *tc)
 Manually set the default detaulTimeBase.
 
TimeConvertergetDefaultTimeBase ()
 
bool doesSubComponentExist (const std::string &type)
 
SharedRegiongetLocalSharedRegion (const std::string &key, size_t size)
 Find a lookup table.
 
SharedRegiongetGlobalSharedRegion (const std::string &key, size_t size, SharedRegionMerger *merger=nullptr)
 
SimulationgetSimulation () const
 
virtual bool doesComponentInfoStatisticExist (const std::string &statisticName) const
 
uint8_t getComponentInfoStatisticEnableLevel (const std::string &statisticName) const
 
- Protected Attributes inherited from SST::BaseComponent
Simulationsim
 

Detailed Description

Main component object for the simulation.

All models inherit from this.

Member Function Documentation

void SST::Component::primaryComponentDoNotEndSim ( )

Tells the simulation that it should not exit.

The component will remain in this state until a call to primaryComponentOKToEndSim().

@sa Component::registerAsPrimaryComponent()
@sa Component::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.

@sa Component::registerAsPrimaryComponent()
@sa Component::primaryComponentDoNotEndSim()
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).

@sa Component::primaryComponentDoNotEndSim()
@sa Component::primaryComponentOKToEndSim()
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.

Parameters
idUnique component ID

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