12#ifndef SST_CORE_STATAPI_STATACCUMULATOR_H
13#define SST_CORE_STATAPI_STATACCUMULATOR_H
15#include "sst/core/sst_types.h"
16#include "sst/core/statapi/statbase.h"
17#include "sst/core/statapi/statoutput.h"
18#include "sst/core/warnmacros.h"
23namespace SST::Statistics {
43template <
typename NumberBase>
44class AccumulatorStatistic :
public Statistic<NumberBase>
47 SST_ELI_DECLARE_STATISTIC_TEMPLATE(
50 "AccumulatorStatistic",
51 SST_ELI_ELEMENT_VERSION(1,0,0),
52 "Accumulate all contributions to a statistic",
56 BaseComponent* comp,
const std::string& statName,
const std::string& statSubId,
Params& statParams) :
59 m_sum =
static_cast<NumberBase
>(0);
60 m_sum_sq =
static_cast<NumberBase
>(0);
61 m_min = std::numeric_limits<NumberBase>::max();
62 m_max = std::numeric_limits<NumberBase>::min();
65 ~AccumulatorStatistic() {}
67 AccumulatorStatistic() :
71 virtual const std::string&
getStatTypeName()
const override {
return stat_type_; }
92 m_sum_sq += (value * value);
93 m_min = (value < m_min) ? value : m_min;
94 m_max = (value > m_max) ? value : m_max;
97 void addData_impl_Ntimes(uint64_t N, NumberBase value)
override
100 m_sum_sq += N * value * value;
101 m_min = (value < m_min) ? value : m_min;
102 m_max = (value > m_max) ? value : m_max;
137 return (count > 0) ? (m_sum / (NumberBase)count) : 0;
147 return (count > 0) ? (m_sum_sq * count) - (m_sum * m_sum) : 0;
166 m_min = std::numeric_limits<NumberBase>::max();
167 m_max = std::numeric_limits<NumberBase>::min();
202 StatisticOutput::fieldHandle_t h_sum;
203 StatisticOutput::fieldHandle_t h_sumsq;
204 StatisticOutput::fieldHandle_t h_count;
205 StatisticOutput::fieldHandle_t h_max;
206 StatisticOutput::fieldHandle_t h_min;
208 inline static const std::string stat_type_ =
"Accumulator";
This class is basically a wrapper for objects to declare the order in which their members should be s...
Definition serializer.h:43
Parameter store.
Definition params.h:65
void addData_impl(NumberBase value) override
Present a new value to the class to be included in the statistics.
Definition stataccumulator.h:89
NumberBase getVariance()
Get the variance of the values presented so far.
Definition stataccumulator.h:144
NumberBase getMax()
Provides the maxmimum value presented so far.
Definition stataccumulator.h:116
NumberBase getStandardDeviation()
Get the standard deviation of the values presented so far.
Definition stataccumulator.h:154
NumberBase getArithmeticMean()
Get the arithmetic mean of the values presented so far.
Definition stataccumulator.h:134
NumberBase getSum()
Provides the sum of the values presented so far.
Definition stataccumulator.h:110
void registerOutputFields(StatisticFieldsOutput *statOutput) override
Called by the system to tell the Statistic to register its output fields.
Definition stataccumulator.h:171
NumberBase getSumSquared()
Provides the sum of each value squared presented to the class so far.
Definition stataccumulator.h:128
void serialize_order(SST::Core::Serialization::serializer &ser) override
Serialization.
Definition stataccumulator.h:74
void clearStatisticData() override
Inform the Statistic to clear its data.
Definition stataccumulator.h:162
virtual const std::string & getStatTypeName() const override
Return the Statistic type name.
Definition stataccumulator.h:71
uint64_t getCount()
Get a count of the number of elements presented to the statistics collection so far.
Definition stataccumulator.h:160
NumberBase getMin()
Provides the minimum value presented so far.
Definition stataccumulator.h:122
virtual void setCollectionCount(uint64_t new_count)
Set the current collection count to a defined value.
Definition statbase.cc:92
uint64_t getCollectionCount() const
Return the current collection count.
Definition statbase.h:173
Definition statoutput.h:172
fieldHandle_t registerField(const char *fieldName)
Register a field to be output (templated function).
Definition statoutput.h:268
virtual void outputField(fieldHandle_t fieldHandle, int32_t data)
Output field data.
Statistic(BaseComponent *comp, const std::string &stat_name, const std::string &stat_sub_id, Params &stat_params)
Definition statbase.h:432
virtual void serialize_order(SST::Core::Serialization::serializer &ser) override
Serialization.
Definition statbase.h:416