12#ifndef SST_CORE_STATAPI_STATENGINE_H
13#define SST_CORE_STATAPI_STATENGINE_H
15#include "sst/core/clock.h"
16#include "sst/core/factory.h"
17#include "sst/core/oneshot.h"
18#include "sst/core/sst_types.h"
19#include "sst/core/statapi/statbase.h"
20#include "sst/core/statapi/statfieldinfo.h"
21#include "sst/core/statapi/statgroup.h"
22#include "sst/core/statapi/statnull.h"
23#include "sst/core/threadsafe.h"
24#include "sst/core/unitAlgebra.h"
27extern int main(
int argc,
char** argv);
28extern void finalize_statEngineConfig(
void);
35class ConfigStatOutput;
73 BaseComponent* comp,
const std::string& type,
const std::string& statName,
const std::string& statSubId,
77 return Factory::getFactory()->CreateWithParams<
Statistic<T>>(type, params, comp, statName, statSubId, params);
80 bool registerStatisticWithEngine(
StatisticBase* stat) {
return registerStatisticCore(stat); }
82 uint8_t statLoadLevel()
const {
return m_statLoadLevel; }
84 const std::vector<StatisticOutput*>& getStatOutputs()
const {
return m_statOutputs; }
88 friend int ::main(
int argc,
char** argv);
89 friend void ::finalize_statEngineConfig(
void);
110 void finalizeInitialization();
111 void startOfSimulation();
112 void endOfSimulation();
114 void performStatisticOutputImpl(
StatisticBase* stat,
bool endOfSimFlag);
115 void performStatisticGroupOutputImpl(
StatisticGroup& group,
bool endOfSimFlag);
117 bool handleStatisticEngineClockEvent(Cycle_t CycleNum, SimTime_t timeFactor);
118 bool handleGroupClockEvent(Cycle_t CycleNum,
StatisticGroup* group);
119 void handleStatisticEngineStartTimeEvent(SimTime_t timeFactor);
120 void handleStatisticEngineStopTimeEvent(SimTime_t timeFactor);
122 const std::string& compName,
const ComponentId_t& compId,
const std::string& statName,
123 const std::string& statSubId, StatisticFieldInfo::fieldType_t fieldType);
124 void addStatisticToCompStatMap(
StatisticBase* Stat, StatisticFieldInfo::fieldType_t fieldType);
125 void castError(
const std::string& type,
const std::string& statName,
const std::string& fieldName);
128 typedef std::vector<StatisticBase*> StatArray_t;
129 typedef std::map<SimTime_t, StatArray_t*> StatMap_t;
130 typedef std::map<ComponentId_t, StatArray_t*> CompStatMap_t;
132 StatArray_t m_EventStatisticArray;
133 StatMap_t m_PeriodicStatisticMap;
134 StatMap_t m_StartTimeMap;
135 StatMap_t m_StopTimeMap;
136 CompStatMap_t m_CompStatMap;
137 bool m_SimulationStarted;
140 uint8_t m_statLoadLevel;
141 std::vector<StatisticOutput*> m_statOutputs;
143 std::vector<StatisticGroup> m_statGroups;
Main component object for the simulation.
Definition: baseComponent.h:51
A Configuration Graph A graph representing Components and Links.
Definition: configGraph.h:390
Definition: configGraph.h:195
Definition: threadsafe.h:48
Output object provides consistent method for outputting data to stdout, stderr and/or sst debug file.
Definition: output.h:52
Parameter store.
Definition: params.h:56
Main control class for a SST Simulation.
Definition: simulation_impl.h:77
Forms the base class for statistics gathering within SST.
Definition: statbase.h:64
Definition: statgroup.h:28
Forms the base class for statistics output generation within the SST core.
Definition: statoutput.h:50
An SST core component that handles timing and event processing informing all registered Statistics to...
Definition: statengine.h:52
void performGlobalStatisticOutput(bool endOfSimFlag=false)
Called by the Components and Subcomponent to perform a global statistic Output.
Definition: statengine.cc:484
void performStatisticOutput(StatisticBase *stat, bool endOfSimFlag=false)
Called by the Components and Subcomponent to perform a statistic Output.
Definition: statengine.cc:429
Forms the template defined base class for statistics gathering within SST.
Definition: statbase.h:361
Performs Unit math in full precision.
Definition: unitAlgebra.h:109