SST 15.0
Structural Simulation Toolkit
coreTest_Module.h
1// Copyright 2009-2025 NTESS. Under the terms
2// of Contract DE-NA0003525 with NTESS, the U.S.
3// Government retains certain rights in this software.
4//
5// Copyright (c) 2009-2025, NTESS
6// All rights reserved.
7//
8// This file is part of the SST software package. For license
9// information, see the LICENSE file in the top level directory of the
10// distribution.
11
12#ifndef SST_CORE_CORETEST_MODULE_H
13#define SST_CORE_CORETEST_MODULE_H
14
15#include "sst/core/component.h"
16#include "sst/core/link.h"
17#include "sst/core/module.h"
18#include "sst/core/rng/rng.h"
19
20#include <cstdint>
21#include <string>
22#include <vector>
23
24using namespace SST;
25using namespace SST::RNG;
26
27namespace SST::CoreTestModule {
28
29class CoreTestModuleExample : public SST::Module
30{
31
32public:
33 SST_ELI_REGISTER_MODULE_API(SST::CoreTestModule::CoreTestModuleExample) // API & module in one
34
35 SST_ELI_REGISTER_MODULE(
36 CoreTestModuleExample, "coreTestElement", "CoreTestModule", SST_ELI_ELEMENT_VERSION(1, 0, 0),
37 "CoreTest module to demonstrate interface.", SST::CoreTestModule::CoreTestModuleExample)
38
39 SST_ELI_DOCUMENT_PARAMS(
40 { "rng", "The random number generator to use (Marsaglia or Mersenne), default is Mersenne", "Mersenne"},
41 { "seed_w", "The seed to use for the random number generator", "7" },
42 { "seed_z", "The seed to use for the random number generator", "5" },
43 { "seed", "The seed to use for the random number generator.", "11" },
44 )
45
46 explicit CoreTestModuleExample(SST::Params& params);
47 ~CoreTestModuleExample();
48 std::string getRNGType() const;
49 uint32_t getNext();
50
51 CoreTestModuleExample() {}
52 void serialize_order(SST::Core::Serialization::serializer& ser) override;
54
55private:
56 std::string rng_type;
57 Random* rng;
58};
59
60
62{
63public:
64 // REGISTER THIS COMPONENT INTO THE ELEMENT LIBRARY
65 SST_ELI_REGISTER_COMPONENT(
67 "coreTestElement",
68 "coreTestModuleLoader",
69 SST_ELI_ELEMENT_VERSION(1,0,0),
70 "Component that loads an RNG module",
71 COMPONENT_CATEGORY_UNCATEGORIZED
72 )
73
74 SST_ELI_DOCUMENT_PARAMS(
75 { "seed_w", "The seed to use for the random number generator", "7" },
76 { "seed_z", "The seed to use for the random number generator", "5" },
77 { "seed", "The seed to use for the random number generator.", "11" },
78 { "rng", "The random number generator to use (Marsaglia or Mersenne), default is Mersenne", "Mersenne"},
79 { "count", "The number of random numbers to generate, default is 1000", "1000" },
80 { "verbose", "Sets the output verbosity of the component", "0" }
81 )
82
83 // Optional since there is nothing to document
84 SST_ELI_DOCUMENT_STATISTICS(
85 )
86
87 // Optional since there is nothing to document
88 SST_ELI_DOCUMENT_PORTS(
89 )
90
91 // Optional since there is nothing to document
92 SST_ELI_DOCUMENT_SUBCOMPONENT_SLOTS(
93 )
94
95 coreTestModuleLoader(SST::ComponentId_t id, SST::Params& params);
97 void setup() override;
98 void finish() override;
99 void serialize_order(SST::Core::Serialization::serializer& ser) override;
100 ImplementSerializable(SST::CoreTestModule::coreTestModuleLoader)
101
102private:
103 coreTestModuleLoader() = default; // for serialization only
104
105 virtual bool tick(SST::Cycle_t);
106
107 Output* output;
108 int rng_max_count;
109 int rng_count;
110 CoreTestModuleExample* rng_module;
111};
112
113} // namespace SST::CoreTestModule
114
115#endif // SST_CORE_CORETEST_MODULE_H
Main component object for the simulation.
Definition component.h:31
Definition coreTest_Module.h:30
Definition coreTest_Module.h:62
void finish() override
Called after complete phase, but before objects are destroyed.
Definition coreTest_Module.cc:127
void setup() override
Called after all components have been constructed and initialization has completed,...
Definition coreTest_Module.cc:123
This class is basically a wrapper for objects to declare the order in which their members should be s...
Definition serializer.h:45
Module is a tag class used with the loadModule function.
Definition module.h:26
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
Implements the base class for random number generators for the SST core.
Definition rng.h:29