SST 15.0
Structural Simulation Toolkit
coreTest_SharedObjectComponent.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_SHAREDOBJECT_H
13#define SST_CORE_CORETEST_SHAREDOBJECT_H
14
15#include "sst/core/component.h"
16#include "sst/core/output.h"
17#include "sst/core/shared/sharedArray.h"
18#include "sst/core/shared/sharedMap.h"
19#include "sst/core/shared/sharedSet.h"
20
21namespace SST::CoreTestSharedObjectsComponent {
22
23// Class so that we can check to see if the equivalence check works
24// for sets
26{
27 int key;
28 int value;
29
30 setItem() :
31 key(0),
32 value(0)
33 {}
34
35 setItem(int key, int value) :
36 key(key),
37 value(value)
38 {}
39
40 bool operator<(const setItem& lhs) const { return key < lhs.key; }
41
42 bool operator==(const setItem& lhs) const
43 {
44 if ( key != lhs.key ) return false;
45 if ( value != lhs.value ) return false;
46 return true;
47 }
48
49 void serialize_order(SST::Core::Serialization::serializer& ser) override
50 {
51 SST_SER(key);
52 SST_SER(value);
53 }
54
56};
57
58class coreTestSharedObjectsComponent : public SST::Component
59{
60public:
61 // REGISTER THIS COMPONENT INTO THE ELEMENT LIBRARY
62 SST_ELI_REGISTER_COMPONENT(
63 coreTestSharedObjectsComponent,
64 "coreTestElement",
65 "coreTestSharedObjectsComponent",
66 SST_ELI_ELEMENT_VERSION(1,0,0),
67 "Test for SharedObjects",
68 COMPONENT_CATEGORY_UNCATEGORIZED
69 )
70
71 SST_ELI_DOCUMENT_PARAMS(
72 { "object_type", "Type of object to test ( array | map | set )", "array"},
73 { "num_entities", "Number of entities in the sim", "12"},
74 { "myid", "ID Number (0 <= myid < num_entities)", nullptr},
75 { "full_initialization", "If true, id 0 will initialize whole array, otherwise each id will contribute", "true"},
76 { "multiple_initializers", "If doing full_initialization, this will cause ID N-1 to also initialize array", "false"},
77 { "conflicting_write", "Controls whether a conflicting write is done when full_initialization and multiple_initializers are turned on (otherwise it has no effect)", "false"},
78 { "verify_mode", "Sets verify mode for SharedArray ( FE | INIT | NONE )", "INIT" },
79 { "late_write", "Controls whether a late write is done", "false" },
80 { "publish", "Controls whether publish() is called or not", "true"},
81 { "double_initialize", "If true, initialize() will be called twice", "false" },
82 { "late_initialize", "If true, initialize() will be called during setup instead of in constructor", "false" },
83 { "checkpoint", "If true, SharedObject state will be printed in setup() and finish()", "false" }
84 )
85
86 // Optional since there is nothing to document
87 SST_ELI_DOCUMENT_STATISTICS(
88 )
89
90 // Optional since there is nothing to document
91 SST_ELI_DOCUMENT_PORTS(
92 {"left", "Link to the component to the left", { "" } },
93 {"right", "Link to the component to the right", { "" } }
94
95 )
96
97 // Optional since there is nothing to document
98 SST_ELI_DOCUMENT_SUBCOMPONENT_SLOTS(
99 )
100
101 coreTestSharedObjectsComponent(SST::ComponentId_t id, SST::Params& params);
102 ~coreTestSharedObjectsComponent() {}
103
104 void init(unsigned int phase) override;
105 void setup() override;
106 void finish() override;
107 void complete(unsigned int phase) override;
108
109 bool tick(SST::Cycle_t);
110
111 coreTestSharedObjectsComponent() :
112 Component()
113 {} // For serialization ONLY
114 void serialize_order(SST::Core::Serialization::serializer& ser) override;
116
117private:
118 Output out;
119
120 bool test_array;
121 bool test_bool_array;
122 bool test_map;
123 bool test_set;
124
125 int myid;
126 int num_entities;
127
128 int count;
129 bool check;
130 bool late_write;
131 bool pub;
132 bool late_initialize;
133 bool checkpoint;
134
136 Shared::SharedArray<bool> bool_array;
139};
140
141} // namespace SST::CoreTestSharedObjectsComponent
142
143#endif // SST_CORE_CORETEST_SHAREDOBJECT_H
Main component object for the simulation.
Definition component.h:31
Definition coreTest_SharedObjectComponent.h:59
void finish() override
Called after complete phase, but before objects are destroyed.
Definition coreTest_SharedObjectComponent.cc:338
void setup() override
Called after all components have been constructed and initialization has completed,...
Definition coreTest_SharedObjectComponent.cc:245
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
SharedArray class.
Definition sharedArray.h:32
SharedMap class.
Definition sharedMap.h:31
SharedSet class.
Definition sharedSet.h:31
Definition coreTest_SharedObjectComponent.h:26