Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

SST Master Branch Merger: Auto Create Pull Request to Promote from devel to master - All Tests Ran Clean #1063

Merged
merged 85 commits into from
Jun 13, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
85 commits
Select commit Hold shift + click to select a range
e4d34e4
Merge remote-tracking branch 'origin/mjleven/changeSendMachineQing' i…
mjleven Apr 19, 2018
f8d4d90
Merge remote-tracking branch 'origin/mjleven/shmemFixes' into devel
mjleven Apr 19, 2018
ecd4d18
Merge branch 'mjleven/moreELIstuff' into mjleven/workingApr23
mjleven Apr 23, 2018
c1163e3
Merge branch 'mjleven/changeSendMachineQing' into mjleven/workingApr23
mjleven Apr 23, 2018
867e788
Merge branch 'devel' into mjleven/workingApr23
mjleven Apr 24, 2018
6ad8885
support rand and not-rand address selection
mjleven May 4, 2018
03189ce
fix lambda function output
mjleven May 4, 2018
95e307f
improve debug
mjleven May 4, 2018
337dabb
change the cache so both load and stores cause a load from memory
mjleven May 4, 2018
eb800fa
tell the cache what port can resume
mjleven May 4, 2018
5ccfd6f
improve debug
mjleven May 4, 2018
9eb5e27
fix debug warning
mjleven May 4, 2018
df020b3
fix a bug where resume wasn't being called
mjleven May 4, 2018
a4a7800
append pid to each address
mjleven May 4, 2018
6b05057
cleanup debug
mjleven May 4, 2018
88586c4
add getPid() to base event
mjleven May 4, 2018
d6bdb74
add level to debug
mjleven May 4, 2018
e02e959
add level to debug
mjleven May 4, 2018
15ac280
don't call decActiveStream it will be called by stream
mjleven May 4, 2018
39fb418
support a maximum of active streams
mjleven May 4, 2018
a5aa2a7
add some debug
mjleven May 4, 2018
a251d0e
add some debug
mjleven May 4, 2018
b3672be
add correct level to debug
mjleven May 4, 2018
5b6617c
make ACK latency 0
mjleven May 4, 2018
cc363a8
if the move is one item do a load and store
mjleven May 4, 2018
c2c0fa4
restructure
mjleven May 4, 2018
c5acc19
Merge branch 'devel' into mjleven/workingApr23
mjleven May 4, 2018
7b00769
put back code
mjleven May 4, 2018
59e34b8
fix cut and paste bug
mjleven May 7, 2018
852e05a
add printStatus
mjleven May 7, 2018
1e00708
fix bug
mjleven May 7, 2018
138d73d
add printStatus
mjleven May 7, 2018
3d9c983
fix a bug
mjleven May 9, 2018
65dc839
Merge branch 'devel' of https://github.com/sstsimulator/sst-elements …
mjleven May 10, 2018
be578c8
add parameter to set the latency of outgoing shmem op in the NIC
mjleven May 15, 2018
099dae3
don't print out number of nodes
mjleven May 15, 2018
10d95ab
change printout level
mjleven May 17, 2018
8f69adf
fix typo
mjleven May 17, 2018
d4b97d6
Merge branch 'devel' of https://github.com/sstsimulator/sst-elements …
mjleven May 17, 2018
434403f
Merge branch 'devel' into mjleven/workingApr23
mjleven May 17, 2018
a5830c8
Merge branch 'devel' into mjleven/workingApr23
mjleven May 17, 2018
5cc5c58
update parameters
mjleven May 17, 2018
aa19cd6
Merge branch 'mjleven/workingApr23' of https://github.com/sstsimulato…
mjleven May 17, 2018
c5b9c93
create different debug masks
mjleven May 22, 2018
36740de
add different levels of debug
mjleven May 22, 2018
b48fa39
use different levels of debug
mjleven May 22, 2018
96ae3eb
add destructor
mjleven May 22, 2018
ce15fa0
keep track of total messages sent and received
mjleven May 22, 2018
4ca506a
add debug
mjleven May 22, 2018
2b767d9
add debug
mjleven May 22, 2018
03994b7
change order of code to aid debug
mjleven May 22, 2018
327c6bd
don't call the send stream fini until all packets are sent
mjleven May 22, 2018
8881a78
remove white space
mjleven May 22, 2018
6c1981a
update debug printout
mjleven May 29, 2018
d64e54f
add getv to possible operations
mjleven May 30, 2018
f90667a
fix for new ELI
mjleven May 30, 2018
0218a08
fix for new ELI
mjleven May 30, 2018
704eb21
firefly debug parameter changed
mjleven May 30, 2018
46ae7f8
add a different return latency for blocking shmem calls
mjleven May 30, 2018
477b66b
add mux between the NIC load/store units and the bus, support no host…
mjleven May 30, 2018
19cf6a9
remove hack
mjleven May 30, 2018
7daf9b0
the NIC to host latency is accounted for in during the "operation"
mjleven May 30, 2018
4c6e761
don't need to specify 0 time
mjleven May 30, 2018
5dc12f2
Merge remote-tracking branch 'origin' into mjleven/workingApr23
mjleven May 30, 2018
372cfb5
remove debug assert
mjleven May 30, 2018
6549ed4
new reference
mjleven May 30, 2018
f1bb309
fix bug when class is destroyed
mjleven May 30, 2018
cdeb98c
Merge pull request #1049 from sstsimulator/mjleven/workingApr23
sst-autotester May 30, 2018
3a4e16d
Removing c from header
hughes-c May 31, 2018
058cd67
Merge pull request #1051 from sstsimulator/hughes/ariel-oops
sst-autotester May 31, 2018
152e795
add hyperX support
mjleven May 31, 2018
ba58720
fix
mjleven May 31, 2018
dc04a42
Merge pull request #1053 from sstsimulator/mjleven/emberScripts
sst-autotester May 31, 2018
1c72eb1
Fix for fence stalls when the pending queue is empty
hughes-c Jun 4, 2018
16bee46
Merge pull request #1057 from sstsimulator/hughes/fence-fix
sst-autotester Jun 4, 2018
bbf080a
Language
hughes-c Jun 4, 2018
ec069ca
Merge pull request #1058 from sstsimulator/hughes/pf-test
sst-autotester Jun 5, 2018
9893e5b
Fix code typo
gvoskuilen Jun 5, 2018
872ac67
Merge pull request #1059 from sstsimulator/mh_fix
sst-autotester Jun 5, 2018
f228079
Merge pull request #2 from sstsimulator/devel
Jun 7, 2018
fa9bd76
added statistic handling for flushes and fences
Jun 7, 2018
5d38603
added fence and flush stat handling upon handleFlush and handleFence …
Jun 7, 2018
b61a2f8
added simple statistics handling for ariel_flushline() and ariel_fence()
Jun 8, 2018
3ff9eb8
fixed indent
Jun 11, 2018
f19fbcf
Merge pull request #1061 from derrickgreenspan/new-feature
sst-autotester Jun 12, 2018
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 0 additions & 2 deletions src/sst/elements/ariel/api/arielapi.h
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,6 @@
#ifndef _H_ARIEL_CLIENT_API
#define _H_ARIEL_CLIENT_API

#include "arielapi.c"

void ariel_enable();
void ariel_fence();

Expand Down
11 changes: 9 additions & 2 deletions src/sst/elements/ariel/arielcore.cc
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,8 @@ ArielCore::ArielCore(ArielTunnel *tunnel, SimpleMem* coreToCacheLink,
statWriteRequestSizes = own->registerStatistic<uint64_t>( "write_request_sizes", subID );
statSplitReadRequests = own->registerStatistic<uint64_t>( "split_read_requests", subID );
statSplitWriteRequests = own->registerStatistic<uint64_t>( "split_write_requests", subID );
statFlushRequests = own->registerStatistic<uint64_t>( "flush_requests", subID);
statFenceRequests = own->registerStatistic<uint64_t>( "fence_requests", subID);
statNoopCount = own->registerStatistic<uint64_t>( "no_ops", subID );
statInstructionCount = own->registerStatistic<uint64_t>( "instruction_count", subID );
statCycles = own->registerStatistic<uint64_t>( "cycles", subID );
Expand Down Expand Up @@ -213,6 +215,7 @@ void ArielCore::commitFlushEvent(const uint64_t address,
pendingTransactions->insert( std::pair<SimpleMem::Request::id_t, SimpleMem::Request*>(req->id, req) );

cacheLink->sendRequest(req);
statFlushRequests->addData(1);
}
}

Expand Down Expand Up @@ -257,8 +260,11 @@ void ArielCore::stall() {

void ArielCore::fence(){
ARIEL_CORE_VERBOSE(4, output->verbose(CALL_INFO, 4, 0, "Core: %" PRIu32 " FENCE: Current pending transaction count: %" PRIu32 " (%" PRIu32 ")\n", coreID, pending_transaction_count, maxPendingTransactions));
isFenced = true;
isStalled = true;

if( pending_transaction_count > 0 ) {
isFenced = true;
isStalled = true;
}
}

void ArielCore::unfence()
Expand Down Expand Up @@ -721,6 +727,7 @@ void ArielCore::handleFenceEvent(ArielFenceEvent *fEv) {
fence();
// Possibility B:
// commitFenceEvent();
statFenceRequests->addData(1);
}

void ArielCore::printCoreStatistics() {
Expand Down
3 changes: 3 additions & 0 deletions src/sst/elements/ariel/arielcore.h
Original file line number Diff line number Diff line change
Expand Up @@ -155,6 +155,8 @@ class ArielCore {

Statistic<uint64_t>* statReadRequests;
Statistic<uint64_t>* statWriteRequests;
Statistic<uint64_t>* statFlushRequests;
Statistic<uint64_t>* statFenceRequests;
Statistic<uint64_t>* statReadRequestSizes;
Statistic<uint64_t>* statWriteRequestSizes;
Statistic<uint64_t>* statSplitReadRequests;
Expand All @@ -173,6 +175,7 @@ class ArielCore {
Statistic<uint64_t>* statFPSPScalarIns;
Statistic<uint64_t>* statFPSPOps;


uint64_t pending_transaction_count;

};
Expand Down
2 changes: 2 additions & 0 deletions src/sst/elements/ariel/arielcpu.h
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,8 @@ class ArielCPU : public SST::Component {
{ "split_read_requests", "Statistic counts number of split read requests (requests which come from multiple lines)", "requests", 1},
{ "split_write_requests", "Statistic counts number of split write requests (requests which are split over multiple lines)", "requests", 1},
{ "no_ops", "Statistic counts instructions which do not execute a memory operation", "instructions", 1},
{ "flush_requests", "Statistic counts instructions which perform flushes", "requests", 1},
{ "fence_requests", "Statistic counts instructions which perform fences", "requests", 1},
{ "instruction_count", "Statistic for counting instructions", "instructions", 1 },
{ "max_insts", "Maximum number of instructions reached by a thread", "instructions", 0},
{ "fp_dp_ins", "Statistic for counting DP-floating point instructions", "instructions", 1 },
Expand Down
2 changes: 1 addition & 1 deletion src/sst/elements/cassini/palaprefetch.h
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ class PalaPrefetcher : public SST::MemHierarchy::CacheListener
"cassini",
"PalaPrefetcher",
SST_ELI_ELEMENT_VERSION(1,0,0),
"Prefetcher",
"Stride Prefetcher [Palacharla 1994]",
"SST::Cassini::CacheListener"
)

Expand Down
24 changes: 12 additions & 12 deletions src/sst/elements/ember/mpi/motifs/emberfft3d.cc
Original file line number Diff line number Diff line change
Expand Up @@ -34,26 +34,26 @@ EmberFFT3DGenerator::EmberFFT3DGenerator(SST::Component* owner, Params& params)
m_backwardTotal(0),
m_transCostPer(6)
{
m_data.np0 = (uint32_t) params.find("arg.nx", 100);
m_data.np1 = (uint32_t) params.find("arg.ny", 100);
m_data.np2 = (uint32_t) params.find("arg.nz", 100);
m_data.np0 = params.find<uint32_t>("arg.nx", 100);
m_data.np1 = params.find<uint32_t>("arg.ny", 100);
m_data.np2 = params.find<uint32_t>("arg.nz", 100);

assert( m_data.np0 == m_data.np1 );
assert( m_data.np1 == m_data.np2 );

m_data.nprow = (uint32_t) params.find("arg.npRow", 0);
m_data.nprow = params.find<uint32_t>("arg.npRow", 0);
assert( 0 < m_data.nprow );

m_iterations = (uint32_t) params.find("arg.iterations", 1);
m_iterations = params.find<uint32_t>("arg.iterations", 1);

m_nsPerElement = (float) params.find("arg.nsPerElement",1);
m_nsPerElement = params.find<float>("arg.nsPerElement",1);

m_transCostPer[0] = (float) params.find("arg.fwd_fft1",1);
m_transCostPer[1] = (float) params.find("arg.fwd_fft2",1);
m_transCostPer[2] = (float) params.find("arg.fwd_fft3",1);
m_transCostPer[3] = (float) params.find("arg.bwd_fft1",1);
m_transCostPer[4] = (float) params.find("arg.bwd_fft2",1);
m_transCostPer[5] = (float) params.find("arg.bwd_fft3",1);
m_transCostPer[0] = params.find<float>("arg.fwd_fft1",1);
m_transCostPer[1] = params.find<float>("arg.fwd_fft2",1);
m_transCostPer[2] = params.find<float>("arg.fwd_fft3",1);
m_transCostPer[3] = params.find<float>("arg.bwd_fft1",1);
m_transCostPer[4] = params.find<float>("arg.bwd_fft2",1);
m_transCostPer[5] = params.find<float>("arg.bwd_fft3",1);

configure();
}
Expand Down
30 changes: 15 additions & 15 deletions src/sst/elements/ember/mpi/motifs/emberhalo3d.cc
Original file line number Diff line number Diff line change
Expand Up @@ -23,30 +23,30 @@ EmberHalo3DGenerator::EmberHalo3DGenerator(SST::Component* owner, Params& params
EmberMessagePassingGenerator(owner, params, "Halo3D"),
m_loopIndex(0)
{
nx = (uint32_t) params.find("arg.nx", 100);
ny = (uint32_t) params.find("arg.ny", 100);
nz = (uint32_t) params.find("arg.nz", 100);
nx = params.find<uint32_t>("arg.nx", 100);
ny = params.find<uint32_t>("arg.ny", 100);
nz = params.find<uint32_t>("arg.nz", 100);

peX = (uint32_t) params.find("arg.pex", 0);
peY = (uint32_t) params.find("arg.pey", 0);
peZ = (uint32_t) params.find("arg.pez", 0);
peX = params.find<uint32_t>("arg.pex", 0);
peY = params.find<uint32_t>("arg.pey", 0);
peZ = params.find<uint32_t>("arg.pez", 0);

items_per_cell = (uint32_t) params.find("arg.fields_per_cell", 1);
performReduction = (params.find("arg.doreduce", 1) == 1);
sizeof_cell = (uint32_t) params.find("arg.datatype_width", 8);
items_per_cell = params.find<uint32_t>("arg.fields_per_cell", 1);
performReduction = (params.find<int>("arg.doreduce", 1) == 1);
sizeof_cell = params.find<uint32_t>("arg.datatype_width", 8);

uint64_t pe_flops = (uint64_t) params.find("arg.peflops", 10000000000);
uint64_t flops_per_cell = (uint64_t) params.find("arg.flopspercell", 26);
uint64_t pe_flops = params.find<uint64_t>("arg.peflops", 10000000000);
uint64_t flops_per_cell = params.find<uint64_t>("arg.flopspercell", 26);

const uint64_t total_grid_points = (uint64_t) (nx * ny * nz);
const uint64_t total_flops = total_grid_points * ((uint64_t) items_per_cell) * ((uint64_t) flops_per_cell);

// Converts FLOP/s into nano seconds of compute
const double compute_seconds = ( (double) total_flops / ( (double) pe_flops / 1000000000.0 ) );
nsCompute = (uint64_t) params.find("arg.computetime", (uint64_t) compute_seconds);
nsCopyTime = (uint32_t) params.find("arg.copytime", 0);
nsCompute = params.find<uint64_t>("arg.computetime", (uint64_t) compute_seconds);
nsCopyTime = params.find<uint32_t>("arg.copytime", 0);

iterations = (uint32_t) params.find("arg.iterations", 1);
iterations = params.find<uint32_t>("arg.iterations", 1);

x_down = -1;
x_up = -1;
Expand All @@ -55,7 +55,7 @@ EmberHalo3DGenerator::EmberHalo3DGenerator(SST::Component* owner, Params& params
z_down = -1;
z_up = -1;

jobId = (int) params.find<int>("_jobId"); //NetworkSim
jobId = params.find<int>("_jobId"); //NetworkSim

configure();
}
Expand Down
42 changes: 33 additions & 9 deletions src/sst/elements/ember/shmem/motifs/emberShmemAtomicInc.h
Original file line number Diff line number Diff line change
Expand Up @@ -34,12 +34,13 @@ namespace Ember {
template < class TYPE, int VAL >
class EmberShmemAtomicIncBaseGenerator : public EmberShmemGenerator {

enum { Add, Fadd, Putv } m_op;
enum { Add, Fadd, Putv, Getv } m_op;
std::string m_opStr;
public:
EmberShmemAtomicIncBaseGenerator(SST::Component* owner, Params& params, std::string name) :
EmberShmemGenerator(owner, params, name ), m_phase(-3), m_one(1)
{
m_computeTime = params.find<int>("arg.computeTime", 50 );
m_dataSize = params.find<int>("arg.dataSize", 32*1024*1024 );
m_updates = params.find<int>("arg.updates", 4096);
m_iterations = params.find<int>("arg.iterations", 1);
Expand All @@ -51,6 +52,8 @@ class EmberShmemAtomicIncBaseGenerator : public EmberShmemGenerator {
m_op = Fadd;
} else if ( m_opStr.compare("putv") == 0 ) {
m_op = Putv;
} else if ( m_opStr.compare("getv") == 0 ) {
m_op = Getv;
} else {
assert(0);
}
Expand All @@ -59,6 +62,7 @@ class EmberShmemAtomicIncBaseGenerator : public EmberShmemGenerator {
m_backed = params.find<bool>("arg.backed", false);
m_outLoop = params.find<int>("arg.outLoop", 1);
m_num_nodes = params.find<int>("arg.numNodes", -1);
m_randAddr = params.find<int>("arg.randAddr", 1);
m_times.resize(m_outLoop);

m_miscLib = static_cast<EmberMiscLib*>(getLib("HadesMisc"));
Expand Down Expand Up @@ -106,9 +110,16 @@ class EmberShmemAtomicIncBaseGenerator : public EmberShmemGenerator {
enQ_getTime( evQ, &m_startTime );

} else if ( m_phase < m_iterations * m_updates ) {
int dest = calcDestPe();

Hermes::MemAddr addr = m_dest.offset<TYPE>( genRand() % m_dataSize );
int dest = calcDestPe();

Hermes::MemAddr addr;
if ( m_randAddr ) {
addr = m_dest.offset<TYPE>( genRand() % m_dataSize );
} else {
addr = m_dest.offset<TYPE>( 0 );
}
enQ_compute( evQ, m_computeTime );

switch ( m_op ) {
case Fadd:
Expand All @@ -119,6 +130,9 @@ class EmberShmemAtomicIncBaseGenerator : public EmberShmemGenerator {
break;
case Putv:
enQ_putv( evQ, addr, &m_one, dest );
break;
case Getv:
enQ_getv( evQ, &m_one, addr, dest );
break;
}
if ( m_phase + 1 == m_iterations * m_updates ) {
Expand All @@ -136,6 +150,9 @@ class EmberShmemAtomicIncBaseGenerator : public EmberShmemGenerator {
}

if ( m_outLoop > 0 ) {
if ( m_backed ) {
bzero( &m_dest.at<TYPE>(0), sizeof(TYPE) * m_dataSize);
}
m_phase = -1;
} else {
++m_phase;
Expand Down Expand Up @@ -163,11 +180,11 @@ class EmberShmemAtomicIncBaseGenerator : public EmberShmemGenerator {
}
}

printf("%s: GUpdates = %.9lf\n", getMotifName().c_str(), Gupdates );
printf("%s: Min Time = %.9lf\n", getMotifName().c_str(), minTime );
printf("%s: Max Time = %.9lf\n", getMotifName().c_str(), maxTime );
printf("%s: Min GUP/s = %.9lf\n", getMotifName().c_str(), Gupdates / maxTime);
printf("%s: Max GUP/s = %.9lf\n", getMotifName().c_str(), Gupdates / minTime );
printf("%s:GUpdates = %.9lf\n", getMotifName().c_str(), Gupdates );
printf("%s:MinTime = %.9lf\n", getMotifName().c_str(), minTime );
printf("%s:MaxTime = %.9lf\n", getMotifName().c_str(), maxTime );
printf("%s:MinGUP/s = %.9lf\n", getMotifName().c_str(), Gupdates / maxTime);
printf("%s:MaxGUP/s = %.9lf\n", getMotifName().c_str(), Gupdates / minTime );

}

Expand Down Expand Up @@ -227,6 +244,8 @@ class EmberShmemAtomicIncBaseGenerator : public EmberShmemGenerator {
unsigned int m_randSeed;
#endif

int m_computeTime;
bool m_randAddr;
bool m_backed;
bool m_printTotals;
TYPE m_one;
Expand Down Expand Up @@ -289,9 +308,14 @@ class EmberShmemAtomicIncGenerator<TYPE,2> : public EmberShmemAtomicIncBaseGener
if( this->m_my_pe == this->m_num_pes - 1 ) {
pe = this->genRand() % (this->m_num_pes - 1);
} else {

int pecountHS = this->m_num_pes + this->m_hotMult;
pe = this->genRand() % pecountHS;

while( pe == this->m_my_pe ) {
pe = this->genRand() % pecountHS;
}

// If we generate a PE higher than we have
// clamp ourselves to the highest PE
if( pe >= this->m_num_pes) {
Expand Down Expand Up @@ -335,7 +359,7 @@ class EmberShmemNSAtomicIncIntGenerator : public EmberShmemAtomicIncGenerator<in
)
public:
EmberShmemNSAtomicIncIntGenerator(SST::Component* owner, Params& params) :
EmberShmemAtomicIncGenerator(owner, params, "ShmemHSAtomicIncInt") { }
EmberShmemAtomicIncGenerator(owner, params, "ShmemNSAtomicIncInt") { }
};

class EmberShmemHotAtomicIncIntGenerator : public EmberShmemAtomicIncGenerator<int, 2> {
Expand Down
32 changes: 19 additions & 13 deletions src/sst/elements/ember/shmem/motifs/emberShmemRing.h
Original file line number Diff line number Diff line change
Expand Up @@ -27,19 +27,6 @@ namespace Ember {
template< class TYPE >
class EmberShmemRingGenerator : public EmberShmemGenerator {

public:
SST_ELI_REGISTER_SUBCOMPONENT(
EmberShmemRingGenerator,
"ember",
"ShmemRingMotif",
SST_ELI_ELEMENT_VERSION(1,0,0),
"SHMEM ring",
"SST::Ember::EmberGenerator"
)

SST_ELI_DOCUMENT_PARAMS(
)

public:
EmberShmemRingGenerator(SST::Component* owner, Params& params) :
EmberShmemGenerator(owner, params, "ShmemRing" ), m_phase(-2)
Expand Down Expand Up @@ -118,6 +105,25 @@ class EmberShmemRingGenerator : public EmberShmemGenerator {
int m_my_pe;
int m_num_pes;
};
class EmberShmemRingIntGenerator : public EmberShmemRingGenerator<int> {
public:
SST_ELI_REGISTER_SUBCOMPONENT(
EmberShmemRingIntGenerator,
"ember",
"ShmemRingIntMotif",
SST_ELI_ELEMENT_VERSION(1,0,0),
"SHMEM ring2 int",
"SST::Ember::EmberGenerator"

)

SST_ELI_DOCUMENT_PARAMS(
)

public:
EmberShmemRingIntGenerator( SST::Component* owner, Params& params ) :
EmberShmemRingGenerator(owner, params) { }
};

}
}
Expand Down
33 changes: 21 additions & 12 deletions src/sst/elements/ember/shmem/motifs/emberShmemRing2.h
Original file line number Diff line number Diff line change
Expand Up @@ -26,18 +26,6 @@ namespace Ember {

template< class TYPE >
class EmberShmemRing2Generator : public EmberShmemGenerator {
public:
SST_ELI_REGISTER_SUBCOMPONENT(
EmberShmemRing2Generator,
"ember",
"ShmemRing2Motif",
SST_ELI_ELEMENT_VERSION(1,0,0),
"SHMEM ring",
"SST::Ember::EmberGenerator"
)

SST_ELI_DOCUMENT_PARAMS(
)

public:
EmberShmemRing2Generator(SST::Component* owner, Params& params) :
Expand Down Expand Up @@ -119,6 +107,27 @@ class EmberShmemRing2Generator : public EmberShmemGenerator {
int m_my_pe;
int m_num_pes;
};

class EmberShmemRing2IntGenerator : public EmberShmemRing2Generator<int> {
public:
SST_ELI_REGISTER_SUBCOMPONENT(
EmberShmemRing2IntGenerator,
"ember",
"ShmemRing2IntMotif",
SST_ELI_ELEMENT_VERSION(1,0,0),
"SHMEM ring2 int",
"SST::Ember::EmberGenerator"

)

SST_ELI_DOCUMENT_PARAMS(
)

public:
EmberShmemRing2IntGenerator( SST::Component* owner, Params& params ) :
EmberShmemRing2Generator(owner, params) { }
};

}
}

Expand Down
Loading