SST  14.0.0
StructuralSimulationToolkit
SST::BaseComponent Class Reference

Main component object for the simulation. More...

#include <baseComponent.h>

Inheritance diagram for SST::BaseComponent:
SST::Core::Serialization::serializable SST::Component SST::ComponentExtension SST::SubComponent SST::CoreTest::MessageMesh::EnclosingComponent SST::CoreTestCheckpoint::coreTestCheckpoint SST::CoreTestClockerComponent::coreTestClockerComponent SST::CoreTestComponent::coreTestComponentBase SST::CoreTestComponent::coreTestLinks SST::CoreTestDistribComponent::coreTestDistribComponent SST::CoreTestLookupTableComponent::coreTestLookupTableComponent SST::CoreTestMemPoolTest::MemPoolTestComponent SST::CoreTestMessageGeneratorComponent::coreTestMessageGeneratorComponent SST::CoreTestModule::coreTestModuleLoader SST::CoreTestParamComponent::coreTestParamComponent SST::CoreTestPerfComponent::coreTestPerfComponentBase SST::CoreTestRNGComponent::coreTestRNGComponent SST::CoreTestSerialization::coreTestSerialization SST::CoreTestSharedObjectsComponent::coreTestSharedObjectsComponent SST::CoreTestStatisticsComponent::StatisticsComponentFloat SST::CoreTestStatisticsComponent::StatisticsComponentInt SST::CoreTestSubComponent::SubComponentLoader SST::CoreTest::MessageMesh::PortInterface SST::CoreTest::MessageMesh::RouteInterface SST::CoreTestSubComponent::SubCompInterface SST::Interfaces::SimpleNetwork SST::Interfaces::SimpleNetwork::NetworkInspector SST::Interfaces::StandardMem

Public Member Functions

 BaseComponent (ComponentId_t id)
 
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 (void)
 Called when SIGINT or SIGTERM has been seen. More...
 
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. More...
 
virtual void init (unsigned int UNUSED(phase))
 Used during the init phase. More...
 
virtual void complete (unsigned int UNUSED(phase))
 Used during the complete phase after the end of simulation. 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 complete phase, 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...
 
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.
 
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.
 
double getRunPhaseElapsedRealTime () const
 Get the amount of real-time spent executing the run phase of the simulation. More...
 
double getInitPhaseElapsedRealTime () const
 Get the amount of real-time spent executing the init phase of the simulation. More...
 
double getCompletePhaseElapsedRealTime () const
 Get the amount of real-time spent executing the complete phase of the simulation. More...
 
SubComponentSlotInfogetSubComponentSlotInfo (const std::string &name, bool fatalOnEmptyIndex=false)
 
const std::vector< double > & getCoordinates () const
 Retrieve the X,Y,Z coordinates of this component.
 
- Public Member Functions inherited from SST::Core::Serialization::serializable
virtual const char * cls_name () const =0
 
virtual void serialize_order (serializer &ser)=0
 
virtual uint32_t cls_id () const =0
 
virtual std::string serialization_name () const =0
 

Protected Types

using StatCreateFunction = std::function< Statistics::StatisticBase *(BaseComponent *, Statistics::StatisticProcessingEngine *, const std::string &, const std::string &, const std::string &, Params &)>
 
- Protected Types inherited from SST::Core::Serialization::serializable
enum  cxn_flag_t { ConstructorFlag }
 

Protected Member Functions

bool isSimulationRunModeInit () const
 Check to see if the run mode was set to INIT. More...
 
bool isSimulationRunModeRun () const
 Check to see if the run mode was set to RUN. More...
 
bool isSimulationRunModeBoth () const
 Check to see if the run mode was set to BOTH. More...
 
std::string & getOutputDirectory () const
 Returns the output directory of the simulation. More...
 
void requireLibrary (const std::string &name)
 Signifies that a library is required for this simulation. More...
 
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, const UnitAlgebra &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, const UnitAlgebra &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 If called prior to the simulation run loop, next Cycle is 0. More...
 
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
 
bool isStatisticShared (const std::string &statName, bool include_me=false)
 
template<typename T >
Statistics::Statistic< T > * registerStatistic (SST::Params &params, const std::string &statName, const std::string &statSubId="")
 Registers a statistic. More...
 
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 &params, 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. More...
 
void performGlobalStatisticOutput ()
 Performs a global statistic Output. More...
 
template<typename T >
T::ProfilePoint * registerProfilePoint (const std::string &pointName)
 Registers a profiling point. 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 ()
 
const TimeConvertergetDefaultTimeBase () 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)
 

Friends

class Component
 
class ComponentExtension
 
class ComponentInfo
 
class SubComponent
 
class SubComponentSlotInfo
 
class SST::Statistics::StatisticProcessingEngine
 
class SST::Statistics::StatisticBase
 

Additional Inherited Members

- Static Public Attributes inherited from SST::Core::Serialization::serializable
static constexpr uint32_t NullClsId = std::numeric_limits<uint32_t>::max()
 
- Static Protected Member Functions inherited from SST::Core::Serialization::serializable
static void serializable_abort (uint32_t line, const char *file, const char *func, const char *obj)
 

Detailed Description

Main component object for the simulation.

Member Function Documentation

◆ complete()

virtual void SST::BaseComponent::complete ( unsigned int   UNUSEDphase)
inlinevirtual

Used during the complete phase after the end of simulation.

The method will be called each phase of complete. Complete phase ends when no components have sent any data.

Reimplemented in SST::Interfaces::SimpleNetwork.

◆ configureLink() [1/4]

Link * SST::BaseComponent::configureLink ( const std::string &  name,
TimeConverter time_base,
Event::HandlerBase handler = nullptr 
)
protected

Configure a Link.

Parameters
name- Port Name on which the link to configure is attached.
time_base- Time Base of the link. If nullptr is passed in, then it will use the Component defaultTimeBase
handler- Optional Handler to be called when an Event is received
Returns
A pointer to the configured link, or nullptr if an error occured.

References SST::LinkMap::getLink(), getName(), SST::LinkMap::insertLink(), SST::Link::setDefaultTimeBase(), and SST::Link::setFunctor().

Referenced by configureLink(), and configureSelfLink().

◆ configureLink() [2/4]

Link * SST::BaseComponent::configureLink ( const std::string &  name,
const std::string &  time_base,
Event::HandlerBase handler = nullptr 
)
protected

Configure a Link.

Parameters
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
Returns
A pointer to the configured link, or nullptr if an error occured.

References configureLink(), and SST::Simulation_impl::getTimeLord().

◆ configureLink() [3/4]

Link * SST::BaseComponent::configureLink ( const std::string &  name,
const UnitAlgebra time_base,
Event::HandlerBase handler = nullptr 
)
protected

Configure a Link.

Parameters
name- Port Name on which the link to configure is attached.
time_base- Time Base of the link as a UnitAlgebra
handler- Optional Handler to be called when an Event is received
Returns
A pointer to the configured link, or nullptr if an error occured.

References configureLink(), and SST::Simulation_impl::getTimeLord().

◆ configureLink() [4/4]

Link * SST::BaseComponent::configureLink ( const std::string &  name,
Event::HandlerBase handler = nullptr 
)
protected

Configure a Link.

Parameters
name- Port Name on which the link to configure is attached.
handler- Optional Handler to be called when an Event is received
Returns
A pointer to the configured link, or nullptr if an error occured.

References configureLink().

◆ configureSelfLink() [1/4]

Link * SST::BaseComponent::configureSelfLink ( const std::string &  name,
TimeConverter time_base,
Event::HandlerBase handler = nullptr 
)
protected

Configure a SelfLink (Loopback link)

Parameters
name- Name of the self-link port
time_base- Time Base of the link. If nullptr is passed in, then it will use the Component defaultTimeBase
handler- Optional Handler to be called when an Event is received
Returns
A pointer to the configured link, or nullptr if an error occured.

References configureLink().

◆ configureSelfLink() [2/4]

Link * SST::BaseComponent::configureSelfLink ( const std::string &  name,
const std::string &  time_base,
Event::HandlerBase handler = nullptr 
)
protected

Configure a SelfLink (Loopback link)

Parameters
name- Name of the self-link port
time_base- Time Base of the link as a string
handler- Optional Handler to be called when an Event is received
Returns
A pointer to the configured link, or nullptr if an error occured.

References configureLink().

◆ configureSelfLink() [3/4]

Link * SST::BaseComponent::configureSelfLink ( const std::string &  name,
const UnitAlgebra time_base,
Event::HandlerBase handler = nullptr 
)
protected

Configure a SelfLink (Loopback link)

Parameters
name- Name of the self-link port
time_base- Time Base of the link as a UnitAlgebra
handler- Optional Handler to be called when an Event is received
Returns
A pointer to the configured link, or nullptr if an error occured.

References configureLink().

◆ configureSelfLink() [4/4]

Link * SST::BaseComponent::configureSelfLink ( const std::string &  name,
Event::HandlerBase handler = nullptr 
)
protected

Configure a SelfLink (Loopback link)

Parameters
name- Name of the self-link port
handler- Optional Handler to be called when an Event is received
Returns
A pointer to the configured link, or nullptr if an error occured.

References configureLink().

◆ emergencyShutdown()

virtual void SST::BaseComponent::emergencyShutdown ( void  )
inlinevirtual

Called when SIGINT or SIGTERM has been seen.

Allows components opportunity to clean up external state.

◆ fatal()

void SST::BaseComponent::fatal ( uint32_t  line,
const char *  file,
const char *  func,
int  exit_code,
const char *  format,
  ... 
) const
protected

Convenience function for reporting fatal conditions.

The function will create a new Output object and call fatal() using the supplied parameters. Before calling Output::fatal(), the function will also print other information about the (sub)component that called fatal and about the simulation state.

From Output::fatal: Message will be sent to the output location and to stderr. The output will be prepended with the expanded prefix set in the object. NOTE: fatal() will call MPI_Abort(exit_code) to terminate simulation.

Parameters
lineLine number of calling function (use CALL_INFO macro)
fileFile name calling function (use CALL_INFO macro)
funcFunction name calling function (use CALL_INFO macro)
exit_codeThe exit code used for termination of simulation. will be passed to MPI_Abort()
formatFormat string. All valid formats for printf are available.
...Arguments for format.

◆ finish()

◆ getCompletePhaseElapsedRealTime()

double SST::BaseComponent::getCompletePhaseElapsedRealTime ( ) const

Get the amount of real-time spent executing the complete phase of the simulation.

Returns
real-time in seconds spent executing the complete phase

◆ getCurrentSimTime() [1/2]

SimTime_t SST::BaseComponent::getCurrentSimTime ( TimeConverter tc) const

return the time since the simulation began in units specified by the parameter.

Parameters
tcTimeConverter specifying the units

References SST::TimeConverter::convertFromCoreTime(), and SST::Simulation_impl::getCurrentSimCycle().

◆ getCurrentSimTime() [2/2]

SimTime_t SST::BaseComponent::getCurrentSimTime ( const std::string &  base) const

return the time since the simulation began in timebase specified

Parameters
baseTimebase frequency in SI Units

References getCurrentSimTime(), SST::TimeLord::getTimeConverter(), and SST::Simulation_impl::getTimeLord().

◆ getInitPhaseElapsedRealTime()

double SST::BaseComponent::getInitPhaseElapsedRealTime ( ) const

Get the amount of real-time spent executing the init phase of the simulation.

Returns
real-time in seconds spent executing the init phase

◆ getNextClockCycle()

Cycle_t SST::BaseComponent::getNextClockCycle ( TimeConverter freq)
protected

Returns the next Cycle that the TimeConverter would fire If called prior to the simulation run loop, next Cycle is 0.

If called after the simulation run loop completes (e.g., during complete() or finish()), next Cycle is one past the end time of the simulation. See Note in reregisterClock() for additional guidance when calling this function after simulation ends.

References SST::Simulation_impl::getNextClockCycle().

◆ getOutputDirectory()

std::string & SST::BaseComponent::getOutputDirectory ( ) const
protected

Returns the output directory of the simulation.

Returns
Directory in which simulation outputs should be placed. Returns empty string if output directory not set by user.

References SST::Simulation_impl::getOutputDirectory().

◆ getParentComponentName()

const std::string& SST::BaseComponent::getParentComponentName ( ) const
inline

Returns the name of the parent Component, or, if called on a Component, the name of that Component.

◆ getRunPhaseElapsedRealTime()

double SST::BaseComponent::getRunPhaseElapsedRealTime ( ) const

Get the amount of real-time spent executing the run phase of the simulation.

Returns
real-time in seconds spent executing the run phase

◆ init()

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

◆ isSimulationRunModeBoth()

bool SST::BaseComponent::isSimulationRunModeBoth ( ) const
protected

Check to see if the run mode was set to BOTH.

Returns
true if simulation run mode is set to BOTH

References SST::Simulation_impl::getSimulationMode().

◆ isSimulationRunModeInit()

bool SST::BaseComponent::isSimulationRunModeInit ( ) const
protected

Check to see if the run mode was set to INIT.

Returns
true if simulation run mode is set to INIT

References SST::Simulation_impl::getSimulationMode().

◆ isSimulationRunModeRun()

bool SST::BaseComponent::isSimulationRunModeRun ( ) const
protected

Check to see if the run mode was set to RUN.

Returns
true if simulation run mode is set to RUN

References SST::Simulation_impl::getSimulationMode().

◆ isSubComponentLoadableUsingAPI()

template<class T >
bool SST::BaseComponent::isSubComponentLoadableUsingAPI ( const std::string &  type)
inlineprotected

Check to see if a given element type is loadable with a particular API.

Parameters
name- Name of element to check in lib.name format
Returns
True if loadable as the API specified as the template parameter

◆ isUserSubComponentLoadableUsingAPI()

template<class T >
bool SST::BaseComponent::isUserSubComponentLoadableUsingAPI ( const std::string &  slot_name)
inlineprotected

Check to see if the element type loaded by the user into the.

specified slot is loadable with a particular API. This will only check slot index 0. If you need to check other slots, please use the SubComponentSlotInfo.

Parameters
slot_name- Name of slot to check
Returns
True if loadable as the API specified as the template parameter

References SST::Output::fatal(), and SST::Output::STDERR.

◆ loadAnonymousSubComponent()

template<class T , class... ARGS>
T* SST::BaseComponent::loadAnonymousSubComponent ( const std::string &  type,
const std::string &  slot_name,
int  slot_num,
uint64_t  share_flags,
Params params,
ARGS...  args 
)
inlineprotected

Loads an anonymous subcomponent (not defined in input file to SST run).

Parameters
typetyupe of subcomponent to load in lib.name format
slot_namename of the slot to load subcomponent into
slot_numindex of the slot to load subcomponent into
share_flagsShare flags to be used by subcomponent
paramsParams object to be passed to subcomponent
argsArguments 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.

◆ loadModule()

template<class T , class... ARGS>
T* SST::BaseComponent::loadModule ( const std::string &  type,
Params params,
ARGS...  args 
)
inlineprotected

Loads a module from an element Library.

Parameters
typeFully Qualified library.moduleName
paramsParameters the module should use for configuration
Returns
handle to new instance of module, or nullptr on failure.

◆ loadUserSubComponent() [1/2]

template<class T >
T* SST::BaseComponent::loadUserSubComponent ( const std::string &  slot_name)
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.

Parameters
slot_namename 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.

◆ loadUserSubComponent() [2/2]

template<class T , class... ARGS>
T* SST::BaseComponent::loadUserSubComponent ( const std::string &  slot_name,
uint64_t  share_flags,
ARGS...  args 
)
inlineprotected

Loads a user defined subcomponent (defined in input file to SST run).

Parameters
slot_namename of the slot to load subcomponent into
share_flagsShare flags to be used by subcomponent
argsArguments 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.

◆ performGlobalStatisticOutput()

void SST::BaseComponent::performGlobalStatisticOutput ( )
protected

Performs a global statistic Output.

This routine will force ALL Components and Subcomponents to output their statistic information. This may lead to unexpected results if the statistic counts or data is reset on output. NOTE: Currently, this function will only output statistics that are on the same rank.

References SST::Simulation_impl::getStatisticsProcessingEngine(), and SST::Statistics::StatisticProcessingEngine::performGlobalStatisticOutput().

◆ performStatisticOutput()

void SST::BaseComponent::performStatisticOutput ( Statistics::StatisticBase stat)
protected

Called by the Components and Subcomponent to perform a statistic Output.

Parameters
stat- Pointer to the statistic.
EndOfSimFlag- Indicates that the output is occurring at the end of simulation.

References SST::Simulation_impl::getStatisticsProcessingEngine(), and SST::Statistics::StatisticProcessingEngine::performStatisticOutput().

◆ printStatus()

virtual void SST::BaseComponent::printStatus ( Output UNUSEDout)
inlinevirtual

Called by the Simulation to request that the component print it's current status.

Useful for debugging.

Parameters
outThe Output class which should be used to print component status.

◆ registerClock() [1/3]

TimeConverter * SST::BaseComponent::registerClock ( const std::string &  freq,
Clock::HandlerBase handler,
bool  regAll = true 
)
protected

Registers a clock for this component.

Parameters
freqFrequency for the clock in SI units
handlerPointer to Clock::HandlerBase which is to be invoked at the specified interval
regAllShould this clock period be used as the default time base for all of the links connected to this component
Returns
the TimeConverter object representing the clock frequency

References SST::Simulation_impl::registerClock().

◆ registerClock() [2/3]

TimeConverter * SST::BaseComponent::registerClock ( const UnitAlgebra freq,
Clock::HandlerBase handler,
bool  regAll = true 
)
protected

Registers a clock for this component.

Parameters
freqFrequency for the clock as a UnitAlgebra object
handlerPointer to Clock::HandlerBase which is to be invoked at the specified interval
regAllShould this clock period be used as the default time base for all of the links connected to this component
Returns
the TimeConverter object representing the clock frequency

References SST::Simulation_impl::registerClock().

◆ registerClock() [3/3]

TimeConverter * SST::BaseComponent::registerClock ( TimeConverter tc,
Clock::HandlerBase handler,
bool  regAll = true 
)
protected

Registers a clock for this component.

Parameters
tcTimeConverter object specifying the clock frequency
handlerPointer to Clock::HandlerBase which is to be invoked at the specified interval
regAllShould this clock period be used as the default time base for all of the links connected to this component
Returns
the TimeConverter object representing the clock frequency

References SST::Simulation_impl::registerClock().

◆ registerProfilePoint()

template<typename T >
T::ProfilePoint* SST::BaseComponent::registerProfilePoint ( const std::string &  pointName)
inlineprotected

Registers a profiling point.

This function will register a profiling point.

Parameters
pointPoint to resgister
Returns
Either a pointer to a created T::ProfilePoint or nullptr if not enabled.

◆ registerStatistic()

template<typename T >
Statistics::Statistic<T>* SST::BaseComponent::registerStatistic ( SST::Params params,
const std::string &  statName,
const std::string &  statSubId = "" 
)
inlineprotected

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

Parameters
paramsParameter set to be passed to the statistic constructor.
statNamePrimary name of the statistic. This name must match the defined ElementInfoStatistic in the component, and must also be enabled in the Python input file.
statSubIdAn additional sub name for the statistic
Returns
Either a created statistic of desired type or a NullStatistic depending upon runtime settings.

◆ registerTimeBase()

TimeConverter * SST::BaseComponent::registerTimeBase ( const std::string &  base,
bool  regAll = true 
)
protected

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.

Parameters
baseFrequency for the clock in SI units
regAllShould 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_impl::getTimeLord().

◆ requireLibrary()

void SST::BaseComponent::requireLibrary ( const std::string &  name)
protected

Signifies that a library is required for this simulation.

Causes the Factory to verify that the required library is loaded.

NOTE: This function should rarely be required, as most dependencies are automatically detected in the simulator core. However, if the component uses an event from another library that is not wholly defined in a header file, this call may be required to ensure that all the code from the event is loaded. Similarly, if you use a class from another library that does not have ELI information, this call may also be required to make sure all dependencies are loaded.

Parameters
nameName of library this BaseComponent depends on

References SST::Simulation_impl::requireLibrary().

◆ reregisterClock()

Cycle_t SST::BaseComponent::reregisterClock ( TimeConverter freq,
Clock::HandlerBase handler 
)
protected

Reactivates an existing Clock and Handler.

Returns
time of next time clock handler will fire

Note: If called after the simulation run loop (e.g., in finish() or complete()), will return the next time of the clock past when the simulation ended. There can be a small lag between simulation end and detection of simulation end during which clocks can run a few extra cycles. As a result, the return value just prior to simulation end may be greater than the value returned after simulation end.

References SST::Simulation_impl::reregisterClock().

◆ setup()

◆ sst_assert()

void SST::BaseComponent::sst_assert ( bool  condition,
uint32_t  line,
const char *  file,
const char *  func,
int  exit_code,
const char *  format,
  ... 
) const
protected

Convenience function for testing for and reporting fatal conditions.

If the condition holds, fatal() will be called, otherwise, the function will return. The function will create a new Output object and call fatal() using the supplied parameters. Before calling Output::fatal(), the function will also print other information about the (sub)component that called fatal and about the simulation state.

From Output::fatal: Message will be sent to the output location and to stderr. The output will be prepended with the expanded prefix set in the object. NOTE: fatal() will call MPI_Abort(exit_code) to terminate simulation.

Parameters
conditionon which to call fatal(); fatal() is called if the bool is false.
lineLine number of calling function (use CALL_INFO macro)
fileFile name calling function (use CALL_INFO macro)
funcFunction name calling function (use CALL_INFO macro)
exit_codeThe exit code used for termination of simulation. will be passed to MPI_Abort()
formatFormat string. All valid formats for printf are available.
...Arguments for format.

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