12#ifndef SST_CORE_CORETEST_COMPONENT_H
13#define SST_CORE_CORETEST_COMPONENT_H
15#include "sst/core/component.h"
16#include "sst/core/link.h"
17#include "sst/core/rng/marsaglia.h"
22namespace SST::CoreTestComponent {
33 SST_ELI_DOCUMENT_PARAMS(
34 {
"workPerCycle",
"Count of busy work to do during a clock tick.", NULL},
35 {
"clockFrequency",
"Frequency of the clock",
"1GHz"}
38 SST_ELI_DOCUMENT_STATISTICS(
39 {
"N",
"events sent on N link",
"counts", 1 }
42 SST_ELI_DOCUMENT_PORTS(
43 {
"Nlink",
"Link to the coreTestComponent to the North", {
"coreTestComponent.coreTestComponentEvent",
"" } }
46 SST_ELI_DOCUMENT_ATTRIBUTES(
47 {
"test_element",
"true" }
50 explicit coreTestComponentBase(ComponentId_t
id) :
53 ~coreTestComponentBase() {}
54 coreTestComponentBase() :
61class coreTestComponentBase2 :
public coreTestComponentBase
64 SST_ELI_REGISTER_COMPONENT_DERIVED_BASE(
67 SST_ELI_DOCUMENT_PARAMS(
68 {
"commFreq",
"There is a 1/commFreq chance each clock cycle of sending an event to a neighbor", NULL}
71 SST_ELI_DOCUMENT_STATISTICS(
72 {
"S",
"events sent on S link",
"counts", 1 }
75 SST_ELI_DOCUMENT_PORTS(
76 {
"Slink",
"Link to the coreTestComponent to the South", {
"coreTestComponent.coreTestComponentEvent",
"" } }
79 explicit coreTestComponentBase2(ComponentId_t
id) :
80 coreTestComponentBase(
id)
82 ~coreTestComponentBase2() {}
84 coreTestComponentBase2() :
85 coreTestComponentBase()
90 SST::CoreTestComponent::coreTestComponentBase::serialize_order(ser);
95class coreTestComponent :
public coreTestComponentBase2
99 SST_ELI_REGISTER_COMPONENT(
103 SST_ELI_ELEMENT_VERSION(1,0,0),
104 "CoreTest Test Component",
105 COMPONENT_CATEGORY_PROCESSOR
108 SST_ELI_DOCUMENT_PARAMS(
109 {
"commSize",
"Size of communication to send.",
"16"}
112 SST_ELI_DOCUMENT_STATISTICS(
113 {
"E",
"events sent on E link",
"counts", 1 },
114 {
"W",
"events sent on W link",
"counts", 1 }
117 SST_ELI_DOCUMENT_PORTS(
118 {
"Elink",
"Link to the coreTestComponent to the East", {
"coreTestComponent.coreTestComponentEvent",
"" } },
119 {
"Wlink",
"Link to the coreTestComponent to the West", {
"coreTestComponent.coreTestComponentEvent",
"" } }
123 SST_ELI_DOCUMENT_SUBCOMPONENT_SLOTS(
126 coreTestComponent(SST::ComponentId_t
id,
SST::Params& params);
127 ~coreTestComponent();
130 void finish()
override { printf(
"Component Finished.\n"); }
141 virtual bool clockTic(SST::Cycle_t);
Main component object for the simulation.
Definition component.h:31
Definition coreTest_Component.h:62
Definition coreTest_Component.h:29
Definition coreTest_Component.h:96
void setup() override
Called after all components have been constructed and initialization has completed,...
Definition coreTest_Component.h:129
void finish() override
Called after complete phase, but before objects are destroyed.
Definition coreTest_Component.h:130
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
Parameter store.
Definition params.h:58
Implements a random number generator using the Marsaglia method.
Definition marsaglia.h:40
Forms the template defined base class for statistics gathering within SST.
Definition statbase.h:373