12#ifndef SST_CORE_CORETEST_CHECKPOINT_H
13#define SST_CORE_CORETEST_CHECKPOINT_H
15#include "sst/core/component.h"
16#include "sst/core/event.h"
17#include "sst/core/link.h"
18#include "sst/core/rng/distrib.h"
19#include "sst/core/rng/rng.h"
24namespace SST::CoreTestCheckpoint {
33 coreTestCheckpointEvent() :
38 explicit coreTestCheckpointEvent(uint32_t c) :
43 ~coreTestCheckpointEvent() {}
47 if ( counter != 0 ) counter--;
51 uint32_t getCount() {
return counter; }
58 Event::serialize_order(ser);
69 SST_ELI_REGISTER_COMPONENT(
73 SST_ELI_ELEMENT_VERSION(1,0,0),
74 "CoreTest Test Checkpoint",
75 COMPONENT_CATEGORY_UNCATEGORIZED
78 SST_ELI_DOCUMENT_PARAMS(
79 {
"starter",
"Whether this component initiates the ping-pong",
"T"},
80 {
"count",
"Number of times to bounce the message back and forth",
"1000" },
81 {
"test_string",
"A test string",
""},
82 {
"clock_frequency",
"Frequency for clock",
"100kHz"},
83 {
"clock_duty_cycle",
"Number of cycles to keep clock on and off",
"10"},
85 {
"output_prefix",
"Prefix for output",
""},
86 {
"output_verbose",
"Verbosity for output",
"0"},
87 {
"output_frequency",
"How often, in terms of clock cycles, to generate output",
"1"},
89 {
"rng_seed_w",
"The first seed for marsaglia",
"7" },
90 {
"rng_seed_z",
"The second seed for marsaglia",
"5" },
91 {
"rng_seed",
"The seed for mersenne and xorshift",
"11" },
92 {
"dist_const",
"Constant for ConstantDistribution",
"1.5" },
93 {
"dist_discrete_probs",
"Probabilities in discrete distribution",
"[1.0]"},
94 {
"dist_exp_lambda",
"Lambda for exponentional distribution",
"1.0"},
95 {
"dist_gauss_mean",
"Mean for Gaussian distribution",
"1.0"},
96 {
"dist_gauss_stddev",
"Standard deviation for Gaussian distribution",
"0.2"},
97 {
"dist_poisson_lambda",
"Lambda for Poisson distribution",
"1.0"},
98 {
"dist_uni_bins",
"Number of proability bins for the uniform distribution",
"4"}
101 SST_ELI_DOCUMENT_PORTS(
102 {
"port_left",
"Link to another coreTestCheckpoint", {
"coreTestElement.coreTestCheckpointEvent",
"" } },
103 {
"port_right",
"Link to another coreTestCheckpoint", {
"coreTestElement.coreTestCheckpointEvent",
"" } }
106 SST_ELI_DOCUMENT_STATISTICS(
107 {
"eventcount",
"Total number of events received",
"events", 1},
108 {
"rngvals",
"Numbers from RNG",
"number", 2},
109 {
"distvals",
"Numbers from distribution",
"number", 3},
110 {
"nullstat",
"Test that non-enabled stats are checkpointed correctly",
"number", 5}
113 coreTestCheckpoint(ComponentId_t
id,
SST::Params& params);
114 ~coreTestCheckpoint();
116 void init(
unsigned phase)
override;
118 void setup()
override;
120 void complete(
unsigned phase)
override;
124 void printStatus(
Output& out)
override;
129 coreTestCheckpoint() :
137 bool handleClock(Cycle_t cycle);
146 int duty_cycle_count;
148 std::string test_string;
150 int output_frequency;
SSTHandlerBase< bool, Cycle_t > HandlerBase
Base handler for clock functions.
Definition clock.h:43
Main component object for the simulation.
Definition component.h:31
Definition coreTest_Checkpoint.h:31
Definition coreTest_Checkpoint.h:67
void setup() override
Called after all components have been constructed and initialization has completed,...
Definition coreTest_Checkpoint.cc:132
void finish() override
Called after complete phase, but before objects are destroyed.
Definition coreTest_Checkpoint.cc:146
void emergencyShutdown() override
Called when SIGINT or SIGTERM has been seen.
Definition coreTest_Checkpoint.cc:222
This class is basically a wrapper for objects to declare the order in which their members should be s...
Definition serializer.h:45
Base class for Events - Items sent across links to communicate between components.
Definition event.h:35
Link between two components.
Definition link.h:55
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
Base class of statistical distributions in SST.
Definition distrib.h:24
Implements the base class for random number generators for the SST core.
Definition rng.h:29
Forms the template defined base class for statistics gathering within SST.
Definition statbase.h:373
A class to convert between a component's view of time and the core's view of time.
Definition timeConverter.h:28