SST 15.0
Structural Simulation Toolkit
|
Main component object for the simulation. More...
#include <component.h>
Public Member Functions | |
SST_ELI_DECLARE_INFO_EXTERN (ELI::ProvidesCategory, ELI::ProvidesParams, ELI::ProvidesPorts, ELI::ProvidesSubComponentSlots, ELI::ProvidesStats, ELI::ProvidesProfilePoints, ELI::ProvidesAttributes) explicit Component(ComponentId_t id) | |
Constructor. | |
void | registerAsPrimaryComponent () |
Register as a primary component, which allows the component to specify when it is and is not OK to end simulation. | |
void | primaryComponentDoNotEndSim () |
Tells the simulation that it should not exit. | |
void | primaryComponentOKToEndSim () |
Tells the simulation that it is now OK to end simulation. | |
void | serialize_order (SST::Core::Serialization::serializer &ser) override |
![]() | |
BaseComponent (ComponentId_t id) | |
BaseComponent (const BaseComponent &)=delete | |
BaseComponent & | operator= (const BaseComponent &)=delete |
const std::string & | getType () const |
ComponentId_t | getId () const |
Returns unique component ID. | |
uint8_t | getStatisticLoadLevel () const |
Returns Component Statistic load level. | |
virtual void | emergencyShutdown () |
Called when SIGINT or SIGTERM has been seen. | |
const std::string & | getName () const |
Returns Component/SubComponent Name. | |
const std::string & | getParentComponentName () const |
Returns the name of the parent Component, or, if called on a Component, the name of that Component. | |
virtual void | init (unsigned int UNUSED(phase)) |
Used during the init phase. | |
virtual void | complete (unsigned int UNUSED(phase)) |
Used during the complete phase after the end of simulation. | |
virtual void | setup () |
Called after all components have been constructed and initialization has completed, but before simulation time has begun. | |
virtual void | finish () |
Called after complete phase, but before objects are destroyed. | |
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. | |
UnitAlgebra | getCoreTimeBase () const |
Get the core timebase. | |
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. | |
SimTime_t | getEndSimCycle () const |
Return the end simulation time as a cycle count. | |
UnitAlgebra | getEndSimTime () 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. | |
Output & | getSimulationOutput () const |
Return the base simulation Output class instance. | |
SimTime_t | getCurrentSimTime (TimeConverter *tc) const |
Return the simulated time since the simulation began in units specified by the parameter. | |
SimTime_t | getCurrentSimTime (TimeConverter tc) const |
SimTime_t | getCurrentSimTime () const |
Return the simulated time since the simulation began in the default timebase. | |
SimTime_t | getCurrentSimTime (const std::string &base) const |
Return the simulated time since the simulation began in timebase specified. | |
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. | |
double | getRunPhaseElapsedRealTime () const |
Get the amount of real-time spent executing the run phase of the simulation. | |
double | getInitPhaseElapsedRealTime () const |
Get the amount of real-time spent executing the init phase of the simulation. | |
double | getCompletePhaseElapsedRealTime () const |
Get the amount of real-time spent executing the complete phase of the simulation. | |
void | addWatchPoint (WatchPoint *pt) |
Add a watch point to all handlers in the Component Tree. | |
void | removeWatchPoint (WatchPoint *pt) |
Remove a watch point from all handlers in the Component Tree. | |
SubComponentSlotInfo * | getSubComponentSlotInfo (const std::string &name, bool fatalOnEmptyIndex=false) |
const std::vector< double > & | getCoordinates () const |
Retrieve the X,Y,Z coordinates of this component. | |
![]() | |
virtual const char * | cls_name () const =0 |
virtual uint32_t | cls_id () const =0 |
virtual std::string | serialization_name () const =0 |
Additional Inherited Members | |
![]() | |
static constexpr uint32_t | NullClsId = std::numeric_limits<uint32_t>::max() |
![]() | |
using | StatCreateFunction |
![]() | |
enum | cxn_flag_t { ConstructorFlag } |
![]() | |
bool | isSimulationRunModeInit () const |
Check to see if the run mode was set to INIT. | |
bool | isSimulationRunModeRun () const |
Check to see if the run mode was set to RUN. | |
bool | isSimulationRunModeBoth () const |
Check to see if the run mode was set to BOTH. | |
std::string & | getOutputDirectory () const |
Returns the output directory of the simulation. | |
void | requireLibrary (const std::string &name) |
Signifies that a library is required for this simulation. | |
bool | isPortConnected (const std::string &name) const |
Determine if a port name is connected to any links. | |
Link * | configureLink (const std::string &name, TimeConverter *time_base, Event::HandlerBase *handler=nullptr) |
Configure a Link. | |
Link * | configureLink (const std::string &name, TimeConverter time_base, Event::HandlerBase *handler=nullptr) |
Link * | configureLink (const std::string &name, const std::string &time_base, Event::HandlerBase *handler=nullptr) |
Configure a Link. | |
Link * | configureLink (const std::string &name, const UnitAlgebra &time_base, Event::HandlerBase *handler=nullptr) |
Configure a Link. | |
Link * | configureLink (const std::string &name, Event::HandlerBase *handler=nullptr) |
Configure a Link. | |
Link * | configureSelfLink (const std::string &name, TimeConverter *time_base, Event::HandlerBase *handler=nullptr) |
Configure a SelfLink (Loopback link) | |
Link * | configureSelfLink (const std::string &name, TimeConverter time_base, Event::HandlerBase *handler=nullptr) |
Link * | configureSelfLink (const std::string &name, const std::string &time_base, Event::HandlerBase *handler=nullptr) |
Configure a SelfLink (Loopback link) | |
Link * | configureSelfLink (const std::string &name, const UnitAlgebra &time_base, Event::HandlerBase *handler=nullptr) |
Configure a SelfLink (Loopback link) | |
Link * | configureSelfLink (const std::string &name, Event::HandlerBase *handler=nullptr) |
Configure a SelfLink (Loopback link) | |
TimeConverter * | registerClock (const std::string &freq, Clock::HandlerBase *handler, bool regAll=true) |
Registers a clock for this component. | |
TimeConverter * | registerClock (const UnitAlgebra &freq, Clock::HandlerBase *handler, bool regAll=true) |
Registers a clock for this component. | |
TimeConverter * | registerClock (TimeConverter *tc, Clock::HandlerBase *handler, bool regAll=true) |
Registers a clock for this component. | |
TimeConverter * | registerClock (TimeConverter tc, Clock::HandlerBase *handler, bool regAll=true) |
void | unregisterClock (TimeConverter *tc, Clock::HandlerBase *handler) |
Removes a clock handler from the component. | |
void | unregisterClock (TimeConverter tc, Clock::HandlerBase *handler) |
Cycle_t | reregisterClock (TimeConverter *freq, Clock::HandlerBase *handler) |
Reactivates an existing Clock and Handler. | |
Cycle_t | reregisterClock (TimeConverter freq, Clock::HandlerBase *handler) |
Cycle_t | getNextClockCycle (TimeConverter *freq) |
Returns the next Cycle that the TimeConverter would fire If called prior to the simulation run loop, next Cycle is 0. | |
Cycle_t | getNextClockCycle (TimeConverter freq) |
TimeConverter * | registerTimeBase (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. | |
TimeConverter * | getTimeConverter (const std::string &base) const |
TimeConverter * | getTimeConverter (const UnitAlgebra &base) const |
bool | isStatisticShared (const std::string &statName, bool include_me=false) |
void | initiateInteractive (const std::string &msg) |
template<typename T> | |
Statistics::Statistic< T > * | registerStatistic (SST::Params ¶ms, const std::string &statName, const std::string &statSubId="") |
Registers a statistic. | |
template<typename T> | |
Statistics::Statistic< T > * | registerStatistic (const std::string &statName, const std::string &statSubId="") |
template<typename... Args> | |
Statistics::Statistic< std::tuple< Args... > > * | registerMultiStatistic (const std::string &statName, const std::string &statSubId="") |
template<typename... Args> | |
Statistics::Statistic< std::tuple< Args... > > * | registerMultiStatistic (SST::Params ¶ms, const std::string &statName, const std::string &statSubId="") |
template<typename T> | |
Statistics::Statistic< T > * | registerStatistic (const char *statName, const char *statSubId="") |
void | performStatisticOutput (Statistics::StatisticBase *stat) |
Called by the Components and Subcomponent to perform a statistic Output. | |
void | performGlobalStatisticOutput () |
Performs a global statistic Output. | |
template<typename T> | |
T::ProfilePoint * | registerProfilePoint (const std::string &pointName) |
Registers a profiling point. | |
template<class T, class... ARGS> | |
T * | loadModule (const std::string &type, Params ¶ms, ARGS... args) |
Loads a module from an element Library. | |
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. | |
template<class T> | |
bool | isUserSubComponentLoadableUsingAPI (const std::string &slot_name) |
Check to see if the element type loaded by the user into the. | |
template<class T, class... ARGS> | |
T * | loadAnonymousSubComponent (const std::string &type, const 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). | |
template<class T> | |
T * | loadUserSubComponent (const std::string &slot_name) |
Loads a user defined subcomponent (defined in input file to SST run). | |
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). | |
void | fatal (uint32_t line, const char *file, const char *func, int exit_code, const char *format,...) const |
Convenience function for reporting fatal conditions. | |
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. | |
bool | isAnonymous () |
bool | isUser () |
void | setDefaultTimeBase (TimeConverter *tc) |
Manually set the default defaultTimeBase. | |
void | setDefaultTimeBase (TimeConverter tc) |
Manually set the default defaultTimeBase. | |
TimeConverter * | getDefaultTimeBase () |
const TimeConverter * | getDefaultTimeBase () const |
bool | doesSubComponentExist (const std::string &type) |
bool | doesComponentInfoStatisticExist (const std::string &statisticName) const |
uint8_t | getComponentInfoStatisticEnableLevel (const std::string &statisticName) const |
std::vector< Profile::ComponentProfileTool * > | getComponentProfileTools (const std::string &point) |
![]() | |
static void | serializable_abort (uint32_t line, const char *file, const char *func, const char *obj) |
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().
@sa Component::registerAsPrimaryComponent() @sa Component::primaryComponentOKToEndSim()
References SST::BaseComponent::getId(), SST::Simulation_impl::getSimulation(), and primaryComponentDoNotEndSim().
Referenced by primaryComponentDoNotEndSim(), and SST_ELI_DECLARE_INFO_EXTERN().
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()
References SST::BaseComponent::getId(), SST::Simulation_impl::getSimulation(), and primaryComponentOKToEndSim().
Referenced by primaryComponentOKToEndSim(), and SST_ELI_DECLARE_INFO_EXTERN().
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()
References registerAsPrimaryComponent().
Referenced by registerAsPrimaryComponent(), and SST_ELI_DECLARE_INFO_EXTERN().
|
overridevirtual |
Implements SST::Core::Serialization::serializable_base.
SST::Component::SST_ELI_DECLARE_INFO_EXTERN | ( | ELI::ProvidesCategory | , |
ELI::ProvidesParams | , | ||
ELI::ProvidesPorts | , | ||
ELI::ProvidesSubComponentSlots | , | ||
ELI::ProvidesStats | , | ||
ELI::ProvidesProfilePoints | , | ||
ELI::ProvidesAttributes | ) |
Constructor.
Generally only called by the factory class.
id | Unique component ID |
References primaryComponentDoNotEndSim(), primaryComponentOKToEndSim(), registerAsPrimaryComponent(), and SST_ELI_DECLARE_INFO_EXTERN().
Referenced by SST_ELI_DECLARE_INFO_EXTERN().