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/serialization/serializable.h"
19#include "sst/core/sst_types.h"
20#include "sst/core/statapi/statbase.h"
21#include "sst/core/statapi/statfieldinfo.h"
22#include "sst/core/statapi/statgroup.h"
23#include "sst/core/statapi/statnull.h"
24#include "sst/core/threadsafe.h"
25#include "sst/core/unitAlgebra.h"
33extern int main(
int argc,
char** argv);
34extern void finalize_statEngineConfig();
76 const std::string& statSubId,
Params& params)
78 return Factory::getFactory()->CreateWithParams<
Statistic<T>>(type, params, comp, statName, statSubId, params);
81 bool registerStatisticWithEngine(
StatisticBase* stat) {
return registerStatisticCore(stat); }
83 uint8_t statLoadLevel()
const {
return m_statLoadLevel; }
86 static const std::vector<StatisticOutput*>& getStatOutputs() {
return m_statOutputs; }
106 friend int ::main(
int argc,
char** argv);
107 friend void ::finalize_statEngineConfig();
109 StatisticProcessingEngine();
112 ~StatisticProcessingEngine();
127 void finalizeInitialization();
128 void startOfSimulation();
129 void endOfSimulation();
131 void performStatisticOutputImpl(
StatisticBase* stat,
bool endOfSimFlag);
132 void performStatisticGroupOutputImpl(
StatisticGroup& group,
bool endOfSimFlag);
134 bool handleStatisticEngineClockEvent(Cycle_t CycleNum, SimTime_t timeFactor);
135 bool handleGroupClockEvent(Cycle_t CycleNum,
StatisticGroup* group);
136 void handleStatisticEngineStartTimeEvent(SimTime_t timeFactor);
137 void handleStatisticEngineStopTimeEvent(SimTime_t timeFactor);
139 void addStatisticToCompStatMap(
StatisticBase* Stat, StatisticFieldInfo::fieldType_t fieldType);
142 void castError(
const std::string& type,
const std::string& statName,
const std::string& fieldName);
145 using StatArray_t = std::vector<StatisticBase*>;
146 using StatMap_t = std::map<SimTime_t, StatArray_t*>;
147 using CompStatMap_t = std::map<ComponentId_t, StatArray_t*>;
149 StatArray_t m_EventStatisticArray;
150 StatMap_t m_PeriodicStatisticMap;
151 StatMap_t m_StartTimeMap;
152 StatMap_t m_StopTimeMap;
153 CompStatMap_t m_CompStatMap;
154 bool m_SimulationStarted;
158 uint8_t m_statLoadLevel;
160 std::vector<StatisticGroup> m_statGroups;
163 static std::vector<StatisticOutput*> m_statOutputs;
Main component object for the simulation.
Definition baseComponent.h:62
A Configuration Graph A graph representing Components and Links.
Definition configGraph.h:450
Definition configGraph.h:175
Definition configGraph.h:214
Definition serializable.h:24
This class is basically a wrapper for objects to declare the order in which their members should be s...
Definition serializer.h:45
Output object provides consistent method for outputting data to stdout, stderr and/or sst debug file.
Definition output.h:54
Parameter store.
Definition params.h:58
Main control class for a SST Simulation.
Definition simulation_impl.h:87
Forms the base class for statistics gathering within SST.
Definition statbase.h:49
Definition statgroup.h:31
Forms the base class for statistics output generation within the SST core.
Definition statoutput.h:52
An SST core component that handles timing and event processing informing all registered Statistics to...
Definition statengine.h:58
static void static_setup(ConfigGraph *graph)
Called to setup the StatOutputs, which are shared across all the StatEngines on the same MPI rank.
Definition statengine.cc:41
void performGlobalStatisticOutput(bool endOfSimFlag=false)
Called by the Components and Subcomponent to perform a global statistic Output.
Definition statengine.cc:482
static void stat_outputs_simulation_start()
Called to notify StatOutputs that simulation has started.
Definition statengine.cc:50
void performStatisticOutput(StatisticBase *stat, bool endOfSimFlag=false)
Called by the Components and Subcomponent to perform a statistic Output.
Definition statengine.cc:419
static void stat_outputs_simulation_end()
Called to notify StatOutputs that simulation has ended.
Definition statengine.cc:58
Forms the template defined base class for statistics gathering within SST.
Definition statbase.h:373
Performs Unit math in full precision.
Definition unitAlgebra.h:107