|
| StandardMem (SST::ComponentId_t id, Params &UNUSED(params), TimeConverter *&UNUSED(time), HandlerBase *&UNUSED(handler)) |
| Constructor, designed to be used via 'loadUserSubComponent' and 'loadAnonymousSubComponent'. More...
|
|
virtual void | sendUntimedData (Request *req)=0 |
| Sends a memory-based request during the init()/complete() phases. More...
|
|
virtual Request * | recvUntimedData ()=0 |
| Receive any data during the init()/complete() phases. More...
|
|
virtual void | send (Request *req)=0 |
| Send a Request through the interface. More...
|
|
virtual Request * | poll (void)=0 |
| Receive a Request response from the side of the link. More...
|
|
virtual Addr | getLineSize ()=0 |
| Get cache/memory line size from the memory system. More...
|
|
virtual void | setMemoryMappedAddressRegion (Addr start, Addr size)=0 |
| Sets the physical memory address(es), if any, that are mapped to this endpoint. More...
|
|
| SST_ELI_DECLARE_INFO_EXTERN (ELI::ProvidesParams, ELI::ProvidesSubComponentSlots, ELI::ProvidesPorts, ELI::ProvidesStats, ELI::ProvidesInterface) SubComponent(ComponentId_t id) |
|
virtual void | init (unsigned int UNUSED(phase)) override |
| Used during the init phase. More...
|
|
virtual void | setup () override |
| Called after all components have been constructed and initialization has
completed, but before simulation time has begun. More...
|
|
virtual void | finish () override |
| Called after simulation completes, but before objects are destroyed. More...
|
|
| SST_ELI_DECLARE_CTORS (ELI_CTOR(SST::Params &),) Module() |
|
| 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 | complete (unsigned int UNUSED(phase)) |
| Used during the init phase. 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.
|
|
Output & | getSimulationOutput () 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.
|
|
SubComponentSlotInfo * | getSubComponentSlotInfo (const std::string &name, bool fatalOnEmptyIndex=false) |
|
const std::vector< double > & | getCoordinates () const |
| Retrieve the X,Y,Z coordinates of this component.
|
|
|
using | StatCreateFunction = std::function< Statistics::StatisticBase *(BaseComponent *, Statistics::StatisticProcessingEngine *, const std::string &, const std::string &, const std::string &, Params &)> |
|
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. More...
|
|
Link * | configureLink (const std::string &name, const std::string &time_base, Event::HandlerBase *handler=nullptr) |
| Configure a Link. More...
|
|
Link * | configureLink (const std::string &name, Event::HandlerBase *handler=nullptr) |
| Configure a Link. More...
|
|
Link * | configureSelfLink (const std::string &name, TimeConverter *time_base, Event::HandlerBase *handler=nullptr) |
| Configure a SelfLink (Loopback link) More...
|
|
Link * | configureSelfLink (const std::string &name, const std::string &time_base, Event::HandlerBase *handler=nullptr) |
| Configure a SelfLink (Loopback link) More...
|
|
Link * | configureSelfLink (const std::string &name, Event::HandlerBase *handler=nullptr) |
| Configure a SelfLink (Loopback link) More...
|
|
TimeConverter * | registerClock (const 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) |
| Registers a clock for this component. More...
|
|
TimeConverter * | registerClock (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.
|
|
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. More...
|
|
TimeConverter * | getTimeConverter (const std::string &base) const |
|
TimeConverter * | getTimeConverter (const UnitAlgebra &base) const |
|
TimeConverter * | getTimeConverterNano () const |
|
TimeConverter * | getTimeConverterMicro () const |
|
TimeConverter * | getTimeConverterMilli () const |
|
bool | isStatisticShared (const std::string &statName, bool include_me=false) |
|
template<typename T > |
Statistics::Statistic< T > * | createStatistic (SST::Params ¶ms, StatisticId_t id, const std::string &name, const std::string &statSubId) |
|
template<typename T > |
Statistics::Statistic< T > * | createNullStatistic (SST::Params ¶ms, const std::string &name, const std::string &statSubId="") |
|
template<typename T > |
Statistics::Statistic< T > * | registerStatistic (SST::Params ¶ms, const std::string &statName, const std::string &statSubId="", bool inserting=false) |
| 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 ¶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. More...
|
|
void | performGlobalStatisticOutput () |
| Performs a global statistic Output. More...
|
|
Module * | loadModule (const std::string &type, Params ¶ms) |
| Loads a module from an element Library. More...
|
|
template<class T , class... ARGS> |
T * | loadModule (const std::string &type, Params ¶ms, 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 ¶ms, 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.
|
|
TimeConverter * | getDefaultTimeBase () |
|
const TimeConverter * | getDefaultTimeBase () const |
|
bool | doesSubComponentExist (const 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=nullptr) |
|
Simulation * | getSimulation () const |
|
virtual bool | doesComponentInfoStatisticExist (const std::string &statisticName) const |
|
uint8_t | getComponentInfoStatisticEnableLevel (const std::string &statisticName) const |
|
Generic interface to Memory models.
Implementation notes Instructions can be sent into a memory system using derivatives of Request(). This interface can be used by both compute hosts (e.g., CPUs) and MMIO devices (e.g., accelerator). Not all interfaces/memory systems support all Request types. The interface should return an error if it encounters an unhandled type.
Request class:
- Uses a separate class for each request type
- Additional classes can be defined outside sst-core to add custom types
- Requests and responses share the same ID
- req.makeResponse() should be used to generate a correctly populated response event.
- Any additional fields that need to be set manually are noted in function comments
- req.needsResponse() should be used to determine whether a response should be sent.
Built-in commands Basic:
- Reads, writes
- Noncacheable reads, writes Flushes:
- By address: flush and flush-invalidate Atomic updates:
- Read-lock, Write-unlock
- Load-link, Store-conditional Data movement:
- Data move (copy data from one memory location to another, e.g., for scratchpad) Notifications:
- Cache invalidation Custom:
- CustomRequest, this is intended to be extended by users
- CustomResponse, this is intended to be extended by users