![]() |
The Gaudi Framework
v32r2 (46d42edc)
|
Efficient counter implementations for Gaudi. More...
Namespaces | |
| details | |
Classes | |
| class | AccumulatorSet |
| AccumulatorSet is an Accumulator that holds a set of Accumulators templated by same Arithmetic and Atomicity and increase them altogether. More... | |
| struct | Adder |
| An Adder ValueHandler operator(a, b) means a += b. More... | |
| struct | Adder< Arithmetic, atomicity::full > |
| Adder specialization in the case of atomicity full. More... | |
| struct | Adder< Arithmetic, atomicity::none > |
| Adder specialization in the case of atomicity none. More... | |
| struct | AveragingAccumulator |
| AveragingAccumulator. More... | |
| struct | AveragingCounter |
| A counter aiming at computing sum and average. More... | |
| struct | BaseValueHandler |
| Base type for all functors used as ValuesHandler. More... | |
| struct | BaseValueHandler< Arithmetic, atomicity::full > |
| BaseValueHandler specialization in the case of atomicity full. More... | |
| struct | BaseValueHandler< Arithmetic, atomicity::none > |
| BaseValueHandler specialization in the case of atomicity none. More... | |
| struct | BinomialAccumulator |
| BinomialAccumulator. More... | |
| struct | BinomialCounter |
| A counter dealing with binomial data. More... | |
| class | Buffer |
| Buffer is a non atomic Accumulator which, when it goes out-of-scope, updates the underlying thread-safe Accumulator for all previous updates in one go. More... | |
| struct | BufferableCounter |
| An empty ancester of all counters that provides a buffer method that returns a buffer on itself. More... | |
| struct | Constant |
| A functor always returning the value N. More... | |
| struct | CountAccumulator |
| CountAccumulator. More... | |
| struct | Counter |
| A basic counter counting input values. More... | |
| struct | Extremum |
| An Extremum ValueHandler, to be reused for Minimum and Maximum operator(a, b) means if (Compare(b,a)) a = b In case of full atomicity, compare_exchange_weak is used. More... | |
| struct | Extremum< Arithmetic, atomicity::full, Compare, Initial > |
| Extremum specialization in the case of atomicity full. More... | |
| struct | Extremum< Arithmetic, atomicity::none, Compare, Initial > |
| Extremum specialization in the case of atomicity none. More... | |
| struct | FalseAccumulator |
| FalseAccumulator. More... | |
| struct | FalseTo1 |
| helper functor for the FalseAccumulator More... | |
| class | GenericAccumulator |
| Generic Accumulator, templated by. More... | |
| struct | Identity |
| An Identity functor. More... | |
| struct | MaxAccumulator |
| MaxAccumulator. More... | |
| struct | MinAccumulator |
| MinAccumulator. More... | |
| struct | PrintableCounter |
| An empty ancester of all counters that knows how to print themselves. More... | |
| struct | SigmaAccumulator |
| SigmaAccumulator. More... | |
| struct | SigmaCounter |
| A counter aiming at computing average and sum2 / variance / standard deviation. More... | |
| struct | Square |
| A Square functor. More... | |
| struct | SquareAccumulator |
| SquareAccumulator. More... | |
| struct | StatCounter |
| A counter aiming at computing average and sum2 / variance / standard deviation. More... | |
| struct | SumAccumulator |
| SumAccumulator. More... | |
| struct | TrueAccumulator |
| TrueAccumulator. More... | |
| struct | TrueTo1 |
| helper functor for the TrueAccumulator More... | |
Typedefs | |
| template<typename T , typename = int> | |
| using | has_fetch_add_ = decltype(std::atomic< T >{}.fetch_add(0)) |
| type_traits for checking the presence of fetch_add in std::atomic<T> More... | |
| template<typename Arithmetic , typename Result = double> | |
| using | fp_result_type = std::conditional_t< std::is_integral_v< Arithmetic >, Result, Arithmetic > |
| type_trait for the result type of a floating point operation on the type Arithmetic More... | |
| template<typename Arithmetic , atomicity Atomicity = atomicity::full> | |
| using | Minimum = Extremum< Arithmetic, Atomicity, std::less< Arithmetic >, std::numeric_limits< Arithmetic >::max > |
| A Minimun ValueHandler operator(a, b) means a = min(a, b) In case of full atomicity, compare_exchange_weak is used. More... | |
| template<typename Arithmetic , atomicity Atomicity = atomicity::full> | |
| using | Maximum = Extremum< Arithmetic, Atomicity, std::greater< Arithmetic >, std::numeric_limits< Arithmetic >::lowest > |
| An Maximum ValueHandler operator(a, b) means a = max(a, b) In case of full atomicity, compare_exchange_weak is used. More... | |
| template<typename Arithmetic , atomicity Atomicity = atomicity::full> | |
| using | StatAccumulator = AccumulatorSet< Arithmetic, Atomicity, SigmaAccumulator, MinAccumulator, MaxAccumulator > |
| StatAccumulator. More... | |
| template<typename Arithmetic = double, atomicity Atomicity = atomicity::full> | |
| using | SummingCounter = AveragingCounter< Arithmetic, Atomicity > |
Enumerations | |
| enum | atomicity { atomicity::none, atomicity::full } |
| Defines atomicity of the accumulators. More... | |
Functions | |
| template<class Rep , class Period > | |
| auto | sqrt (std::chrono::duration< Rep, Period > d) |
| sqrt for std::chrono::duration More... | |
| template<class Rep1 , class Rep2 , class Period > | |
| auto | operator * (const std::chrono::duration< Rep1, Period > &lhs, const std::chrono::duration< Rep2, Period > &rhs) |
| Multiplication of two std::chrono::duration objects with same Period. More... | |
| template<class T > | |
| auto | sqrt (T d) |
| forward declaration of sqrt for custom types More... | |
| std::ostream & | operator<< (std::ostream &s, const PrintableCounter &counter) |
| external printout operator to a stream type More... | |
| MsgStream & | operator<< (MsgStream &s, const PrintableCounter &counter) |
Variables | |
| template<typename T > | |
| constexpr bool | has_fetch_add_v = Gaudi::cpp17::is_detected_v<has_fetch_add_, T> |
Efficient counter implementations for Gaudi.
A number of concepts and templated classes are defined:
All Accumulators and Counters defined above are provided in their atomic and non atomic versions
Here is an example of the typical usage of these classes :
| using Gaudi::Accumulators::fp_result_type = typedef std::conditional_t<std::is_integral_v<Arithmetic>, Result, Arithmetic> |
type_trait for the result type of a floating point operation on the type Arithmetic
Definition at line 198 of file Counters.h.
| using Gaudi::Accumulators::has_fetch_add_ = typedef decltype( std::atomic<T>{}.fetch_add( 0 ) ) |
type_traits for checking the presence of fetch_add in std::atomic<T>
Definition at line 190 of file Counters.h.
| using Gaudi::Accumulators::Maximum = typedef Extremum<Arithmetic, Atomicity, std::greater<Arithmetic>, std::numeric_limits<Arithmetic>::lowest> |
An Maximum ValueHandler operator(a, b) means a = max(a, b) In case of full atomicity, compare_exchange_weak is used.
Definition at line 315 of file Counters.h.
| using Gaudi::Accumulators::Minimum = typedef Extremum<Arithmetic, Atomicity, std::less<Arithmetic>, std::numeric_limits<Arithmetic>::max> |
A Minimun ValueHandler operator(a, b) means a = min(a, b) In case of full atomicity, compare_exchange_weak is used.
Definition at line 308 of file Counters.h.
| using Gaudi::Accumulators::StatAccumulator = typedef AccumulatorSet<Arithmetic, Atomicity, SigmaAccumulator, MinAccumulator, MaxAccumulator> |
StatAccumulator.
A StatAccumulator is an Accumulator able to compute an average, variance/rms and min/max
Definition at line 571 of file Counters.h.
| using Gaudi::Accumulators::SummingCounter = typedef AveragingCounter<Arithmetic, Atomicity> |
Definition at line 710 of file Counters.h.
|
strong |
Defines atomicity of the accumulators.
| Enumerator | |
|---|---|
| none | |
| full | |
Definition at line 149 of file Counters.h.
| auto Gaudi::Accumulators::operator * | ( | const std::chrono::duration< Rep1, Period > & | lhs, |
| const std::chrono::duration< Rep2, Period > & | rhs | ||
| ) |
Multiplication of two std::chrono::duration objects with same Period.
Definition at line 34 of file Counters.h.
|
inline |
|
inline |
Definition at line 636 of file Counters.h.
| auto Gaudi::Accumulators::sqrt | ( | std::chrono::duration< Rep, Period > | d | ) |
sqrt for std::chrono::duration
Definition at line 28 of file Counters.h.
| auto Gaudi::Accumulators::sqrt | ( | T | d | ) |
forward declaration of sqrt for custom types
|
inline |
Definition at line 192 of file Counters.h.