├── .github ├── ISSUE_TEMPLATE.md └── PULL_REQUEST_TEMPLATE.md ├── .gitignore ├── CONTRIBUTING.md ├── CONTRIBUTORS.TXT ├── INSTALL ├── ISSUES ├── LICENSE ├── Makefile.am ├── PLATFORMS ├── README.md ├── VERSION ├── autogen.sh ├── config ├── .gitignore ├── sst-check_picky.m4 ├── sst_check_boost.m4 ├── sst_check_chdl.m4 ├── sst_check_cuda.m4 ├── sst_check_dramsim.m4 ├── sst_check_dramsim3.m4 ├── sst_check_dumpi.m4 ├── sst_check_fdsim.m4 ├── sst_check_glpk.m4 ├── sst_check_goblin_hmcsim.m4 ├── sst_check_gpgpusim.m4 ├── sst_check_hbmdramsim.m4 ├── sst_check_hybridsim.m4 ├── sst_check_libz.m4 ├── sst_check_llvm_config.m4 ├── sst_check_metis.m4 ├── sst_check_nvdimmsim.m4 ├── sst_check_otf.m4 ├── sst_check_otf2.m4 ├── sst_check_pintool.m4 ├── sst_check_ptrace_set_tracer.m4 ├── sst_check_qsim.m4 ├── sst_check_ramulator.m4 ├── sst_check_shm.m4 ├── sst_check_stake.m4 ├── sst_core_check_install.m4 └── sst_os_check_osx.m4 ├── configure.ac ├── src ├── .gitignore ├── Makefile.am └── sst │ ├── Makefile.am │ └── elements │ ├── CramSim │ ├── CramSim.cpp │ ├── Makefile.am │ ├── README │ ├── TxnDispatcher.cpp │ ├── TxnDispatcher.hpp │ ├── c_AddressHasher.cpp │ ├── c_AddressHasher.hpp │ ├── c_Bank.cpp │ ├── c_Bank.hpp │ ├── c_BankCommand.cpp │ ├── c_BankCommand.hpp │ ├── c_BankGroup.cpp │ ├── c_BankGroup.hpp │ ├── c_BankInfo.cpp │ ├── c_BankInfo.hpp │ ├── c_BankState.hpp │ ├── c_BankStateActivating.cpp │ ├── c_BankStateActivating.hpp │ ├── c_BankStateActive.cpp │ ├── c_BankStateActive.hpp │ ├── c_BankStateIdle.cpp │ ├── c_BankStateIdle.hpp │ ├── c_BankStatePrecharge.cpp │ ├── c_BankStatePrecharge.hpp │ ├── c_BankStateRead.cpp │ ├── c_BankStateRead.hpp │ ├── c_BankStateReadA.cpp │ ├── c_BankStateReadA.hpp │ ├── c_BankStateRefresh.cpp │ ├── c_BankStateRefresh.hpp │ ├── c_BankStateWrite.cpp │ ├── c_BankStateWrite.hpp │ ├── c_BankStateWriteA.cpp │ ├── c_BankStateWriteA.hpp │ ├── c_Channel.cpp │ ├── c_Channel.hpp │ ├── c_CmdPtrPkgEvent.hpp │ ├── c_CmdReqEvent.hpp │ ├── c_CmdResEvent.hpp │ ├── c_CmdScheduler.cpp │ ├── c_CmdScheduler.hpp │ ├── c_Controller.cpp │ ├── c_Controller.hpp │ ├── c_DeviceDriver.cpp │ ├── c_DeviceDriver.hpp │ ├── c_Dimm.cpp │ ├── c_Dimm.hpp │ ├── c_HashedAddress.cpp │ ├── c_HashedAddress.hpp │ ├── c_MemhBridge.cpp │ ├── c_MemhBridge.hpp │ ├── c_Rank.cpp │ ├── c_Rank.hpp │ ├── c_TokenChgEvent.hpp │ ├── c_TraceFileReader.cpp │ ├── c_TraceFileReader.hpp │ ├── c_Transaction.cpp │ ├── c_Transaction.hpp │ ├── c_TxnConverter.cpp │ ├── c_TxnConverter.hpp │ ├── c_TxnDispatcher.cpp │ ├── c_TxnDispatcher.hpp │ ├── c_TxnGen.cpp │ ├── c_TxnGen.hpp │ ├── c_TxnReqEvent.hpp │ ├── c_TxnResEvent.hpp │ ├── c_TxnScheduler.cpp │ ├── c_TxnScheduler.hpp │ ├── ddr3.cfg │ ├── ddr3_power.cfg │ ├── ddr4.cfg │ ├── ddr4_2400.cfg │ ├── ddr4_2667.cfg │ ├── ddr4_3200.cfg │ ├── ddr4_verimem.cfg │ ├── ddr4_verimem_openbank.cfg │ ├── dramsim2_config.cfg │ ├── hbm_legacy_4h.cfg │ ├── hbm_legacy_4h_sbr.cfg │ ├── hbm_pseudo_4h.cfg │ ├── memReqEvent.hpp │ ├── minTime.py │ ├── pcm_2400_fast.cfg │ ├── test_device.cfg │ ├── test_system.cfg │ ├── tests │ │ ├── VeriMem │ │ │ └── test_verimem1.py │ │ ├── ariel_cramsim.py │ │ ├── get_macsim.sh │ │ ├── macsim_cramsim.py │ │ ├── macsim_trace_file_list │ │ ├── params.in │ │ ├── patches │ │ │ ├── core.patch │ │ │ ├── macsim.patch │ │ │ └── memH.patch │ │ ├── refFiles │ │ │ ├── test_CramSim_1_R.out │ │ │ ├── test_CramSim_1_RW.out │ │ │ ├── test_CramSim_1_W.out │ │ │ ├── test_CramSim_2_R.out │ │ │ ├── test_CramSim_2_W.out │ │ │ ├── test_CramSim_4_R.out │ │ │ ├── test_CramSim_4_W.out │ │ │ ├── test_CramSim_5_R.out │ │ │ ├── test_CramSim_5_W.out │ │ │ ├── test_CramSim_6_R.out │ │ │ └── test_CramSim_6_W.out │ │ ├── run.py │ │ ├── stream.c │ │ ├── system.ini │ │ ├── test_multilanes_4lane.py │ │ ├── test_statTest1.py │ │ ├── test_txngen.py │ │ ├── test_txntrace.py │ │ ├── test_txntrace4.py │ │ ├── testsuite_default_CramSim.py │ │ └── util.py │ ├── traces │ │ ├── .gitignore │ │ ├── genSequence.pl │ │ ├── map01 │ │ ├── map03 │ │ ├── mapSequence.pl │ │ ├── map_hbm │ │ ├── masterSeq │ │ ├── seq_hbm │ │ └── usimm.trc │ ├── usimm_config.cfg │ ├── verify.cfg │ └── waterfall.py │ ├── GNA │ ├── GNA.cc │ ├── GNA.h │ ├── Makefile.am │ ├── README │ ├── gna_lib.h │ ├── neuron.h │ ├── sts.cc │ ├── sts.h │ └── tests │ │ ├── refFiles │ │ └── test_GNA_1.out │ │ ├── sweep.csh │ │ ├── sweep2.csh │ │ ├── test.py │ │ ├── test.ref.out │ │ ├── test_GNA_1.py │ │ └── testsuite_default_GNA.py │ ├── Makefile.am │ ├── Messier │ ├── Bank.h │ ├── Cache.h │ ├── Makefile.am │ ├── Messier.cc │ ├── Messier.h │ ├── Messier_Event.h │ ├── NVM_DIMM.cc │ ├── NVM_DIMM.h │ ├── NVM_Params.h │ ├── NVM_Request.h │ ├── README │ ├── Rank.h │ ├── WriteBuffer.cc │ ├── WriteBuffer.h │ ├── configure.m4 │ ├── libMessier.cpp │ ├── memReqEvent.h │ └── tests │ │ ├── gupsgen.py │ │ ├── gupsgen_2RANKS.py │ │ ├── gupsgen_fastNVM.py │ │ ├── refFiles │ │ ├── test_Messier_gupsgen.out │ │ ├── test_Messier_gupsgen_2RANKS.out │ │ ├── test_Messier_gupsgen_fastNVM.out │ │ ├── test_Messier_stencil3dbench_messier.out │ │ └── test_Messier_streambench_messier.out │ │ ├── stencil3dbench_messier.py │ │ ├── streambench_messier.py │ │ └── testsuite_default_Messier.py │ ├── Opal │ ├── Makefile.am │ ├── Opal.cc │ ├── Opal.h │ ├── Opal_Event.h │ ├── PageFaultHandler.cc │ ├── PageFaultHandler.h │ ├── README │ ├── arielmemmgr_opal.cc │ ├── arielmemmgr_opal.h │ ├── configure.m4 │ ├── mempool.cc │ ├── mempool.h │ ├── opalMemNIC.cc │ ├── opalMemNIC.h │ └── tests │ │ ├── app │ │ ├── makefile │ │ ├── opal_mlm.c │ │ └── opal_test.c │ │ ├── basic_1node_1smp.py │ │ ├── basic_2node_1smp.py │ │ └── refFiles │ │ ├── test_Opal_basic_1node_1smp.out │ │ └── test_Opal_basic_2node_1smp.out │ ├── Samba │ ├── Makefile.am │ ├── PageFaultHandler.h │ ├── PageTableWalker.cc │ ├── PageTableWalker.h │ ├── README │ ├── Samba.cc │ ├── Samba.h │ ├── Samba_Event.h │ ├── TLBUnit.cc │ ├── TLBUnit.h │ ├── TLBentry.h │ ├── TLBhierarchy.cc │ ├── TLBhierarchy.h │ ├── configure.m4 │ ├── libSamba.cc │ ├── tests │ │ ├── gupsgen_mmu.py │ │ ├── gupsgen_mmu_4KB.py │ │ ├── gupsgen_mmu_opal.py │ │ ├── gupsgen_mmu_three_levels.py │ │ ├── refFiles │ │ │ ├── test_Samba_gupsgen_mmu.out │ │ │ ├── test_Samba_gupsgen_mmu_4KB.out │ │ │ ├── test_Samba_gupsgen_mmu_three_levels.out │ │ │ ├── test_Samba_stencil3dbench_mmu.out │ │ │ └── test_Samba_streambench_mmu.out │ │ ├── stencil3dbench_mmu.py │ │ ├── streambench_mmu.py │ │ └── testsuite_default_Samba.py │ └── utils.h │ ├── VaultSimC │ ├── Makefile.am │ ├── VaultSimC.cpp │ ├── VaultSimC.h │ ├── app.cpp │ ├── cpu.cpp │ ├── cpu.h │ ├── dramsim.log │ ├── gen.bak │ ├── gen.pl │ ├── logicLayer.cpp │ ├── logicLayer.h │ ├── memReqEvent.h │ ├── tests │ │ ├── pimExper.py │ │ ├── refFiles │ │ │ ├── test_VaultSim_sdl1.out │ │ │ └── test_VaultSim_sdl2.out │ │ ├── runTests.sh │ │ ├── sdl1.py │ │ ├── sdl1.ref │ │ ├── sdl2.py │ │ ├── sdl2.ref │ │ ├── sdl3.py │ │ ├── sdl3.xml.ref │ │ ├── stream-8coreVault_1.6GHz-M5.xml │ │ ├── stream.1K │ │ └── testsuite_default_VaultSim.py │ ├── trivTest.xml │ └── vaultGlobals.h │ ├── ariel │ ├── .gitignore │ ├── Makefile.am │ ├── api │ │ ├── Makefile │ │ ├── arielapi.c │ │ └── arielapi.h │ ├── app │ │ ├── env │ │ │ ├── Makefile │ │ │ └── env.c │ │ └── hellow │ │ │ └── hello.c │ ├── ariel.h │ ├── ariel_inst_class.h │ ├── ariel_shmem.h │ ├── arielallocev.h │ ├── arielcore.cc │ ├── arielcore.h │ ├── arielcpu.cc │ ├── arielcpu.h │ ├── arielevent.cc │ ├── arielevent.h │ ├── arielexitev.h │ ├── arielfenceev.h │ ├── arielflushev.h │ ├── arielfreeev.h │ ├── arielfrontend.h │ ├── arielgpuev.h │ ├── arielgzbintracegen.cc │ ├── arielgzbintracegen.h │ ├── arielmemmgr.h │ ├── arielmemmgr_cache.h │ ├── arielmemmgr_malloc.cc │ ├── arielmemmgr_malloc.h │ ├── arielmemmgr_simple.cc │ ├── arielmemmgr_simple.h │ ├── arielnoop.h │ ├── arielreadev.h │ ├── arielswitchpool.h │ ├── arieltexttracegen.cc │ ├── arieltexttracegen.h │ ├── arieltracegen.h │ ├── arielwriteev.h │ ├── configure.m4 │ ├── frontend │ │ ├── pin3 │ │ │ ├── fesimple.cc │ │ │ ├── pin3frontend.cc │ │ │ └── pin3frontend.h │ │ └── simple │ │ │ ├── examples │ │ │ ├── multicore.py │ │ │ ├── opal │ │ │ │ ├── mlm_test.py │ │ │ │ └── opal_test.cpp │ │ │ └── stream │ │ │ │ ├── Makefile │ │ │ │ ├── ariel_ivb.py │ │ │ │ ├── ariel_snb.py │ │ │ │ ├── ariel_snb_mlm.py │ │ │ │ ├── malloc.txt │ │ │ │ ├── memHstream.py │ │ │ │ ├── runstream.py │ │ │ │ ├── runstreamNB.py │ │ │ │ ├── runstreamSt.py │ │ │ │ ├── stream.c │ │ │ │ ├── stream_malloc.c │ │ │ │ └── tests │ │ │ │ └── refFiles │ │ │ │ ├── test_Ariel_ariel_ivb.out │ │ │ │ ├── test_Ariel_ariel_snb.out │ │ │ │ ├── test_Ariel_memHstream.out │ │ │ │ ├── test_Ariel_runstream.out │ │ │ │ ├── test_Ariel_runstreamNB.out │ │ │ │ └── test_Ariel_runstreamSt.out │ │ │ ├── fesimple.cc │ │ │ ├── pin2frontend.cc │ │ │ └── pin2frontend.h │ ├── gpu_enum.h │ └── tests │ │ ├── testopenMP │ │ └── ompmybarrier │ │ │ ├── Makefile │ │ │ └── ompmybarrier.c │ │ └── testsuite_default_Ariel.py │ ├── balar │ ├── Makefile.am │ ├── README.md │ ├── balar.cc │ ├── balar.h │ ├── balar_event.h │ ├── configure.m4 │ ├── cuda_runtime_api.h │ ├── mempool.cpp │ ├── mempool.h │ └── tests │ │ ├── ariel-gpu-v100.cfg │ │ ├── cuda-test.py │ │ ├── gpgpusim.config │ │ ├── refFiles │ │ └── test_gpgpu_vectorAdd.out │ │ ├── testsuite_default_balar.py │ │ ├── utils.py │ │ └── vectorAdd │ │ ├── Makefile │ │ └── vecAdd.cu │ ├── cacheTracer │ ├── Makefile.am │ ├── README │ ├── cacheTracer.cc │ ├── cacheTracer.h │ └── tests │ │ ├── refFiles │ │ ├── test_cacheTracer_1.out │ │ └── test_cacheTracer_2_memRef.out │ │ ├── test_cacheTracer_1.py │ │ ├── test_cacheTracer_2.py │ │ └── testsuite_default_cacheTracer.py │ ├── cassini │ ├── Makefile.am │ ├── addrHistogrammer.cc │ ├── addrHistogrammer.h │ ├── cacheLineTrack.cc │ ├── cacheLineTrack.h │ ├── dmacmd.h │ ├── dmaengine.cc │ ├── dmaengine.h │ ├── dmamemop.h │ ├── dmastate.h │ ├── nbprefetch.cc │ ├── nbprefetch.h │ ├── pageentry.cc │ ├── pageentry.h │ ├── palaprefetch.cc │ ├── palaprefetch.h │ ├── strideprefetch.cc │ ├── strideprefetch.h │ └── tests │ │ ├── refFiles │ │ ├── test_cassini_prefetch.out │ │ ├── test_cassini_prefetch_nbp.out │ │ ├── test_cassini_prefetch_nopf.out │ │ ├── test_cassini_prefetch_pp.out │ │ ├── test_cassini_prefetch_sp.out │ │ └── test_cassini_stride_prefetch.out │ │ ├── streamcpu-nbp.py │ │ ├── streamcpu-nopf.py │ │ ├── streamcpu-pp.py │ │ ├── streamcpu-sp.py │ │ └── testsuite_default_cassini_prefetch.py │ ├── ember │ ├── .gitignore │ ├── Makefile.am │ ├── configure.m4 │ ├── ember.cc │ ├── embercomputeev.cc │ ├── embercomputeev.h │ ├── emberconstdistrib.cc │ ├── emberconstdistrib.h │ ├── embercustommap.h │ ├── emberdetailedcomputeev.h │ ├── emberdistrib.cc │ ├── emberdistrib.h │ ├── emberengine.cc │ ├── emberengine.h │ ├── emberevent.cc │ ├── emberevent.h │ ├── embergaussdistrib.cc │ ├── embergaussdistrib.h │ ├── embergen.cc │ ├── embergen.h │ ├── embergettimeev.cc │ ├── embergettimeev.h │ ├── emberlinearmap.h │ ├── embermap.h │ ├── embermemoryev.h │ ├── embermotiflog.cc │ ├── embermotiflog.h │ ├── embermpicxtgen.cc │ ├── embermpicxtgen.h │ ├── libs │ │ ├── emberLib.h │ │ ├── emberMpiLib.cc │ │ ├── emberMpiLib.h │ │ ├── emberShmemLib.h │ │ ├── misc.h │ │ ├── miscEvents │ │ │ ├── emberGetNodeNumEvent.h │ │ │ ├── emberGetNumNodesEvent.h │ │ │ ├── emberMallocEvent.h │ │ │ └── emberMiscEvent.h │ │ ├── mpi │ │ │ ├── emberCommCreateEv.h │ │ │ ├── emberCommDestroyEv.h │ │ │ ├── emberCommSplitEv.h │ │ │ ├── emberMPIEvent.h │ │ │ ├── emberallgatherev.h │ │ │ ├── emberallgathervev.h │ │ │ ├── emberallredev.h │ │ │ ├── emberalltoallev.h │ │ │ ├── emberalltoallvev.h │ │ │ ├── emberbarrierev.h │ │ │ ├── emberbcastev.h │ │ │ ├── embercancelev.h │ │ │ ├── emberfinalizeev.h │ │ │ ├── emberinitev.h │ │ │ ├── emberirecvev.h │ │ │ ├── emberisendev.h │ │ │ ├── embermakeprogressev.h │ │ │ ├── emberrankev.h │ │ │ ├── emberrecvev.h │ │ │ ├── emberredev.h │ │ │ ├── emberscatterev.h │ │ │ ├── emberscattervev.h │ │ │ ├── embersendev.h │ │ │ ├── embersizeev.h │ │ │ ├── embertestanyev.h │ │ │ ├── embertestev.h │ │ │ ├── emberwaitallev.h │ │ │ ├── emberwaitanyev.h │ │ │ └── emberwaitev.h │ │ └── shmem │ │ │ ├── emberFamAddEv.h │ │ │ ├── emberFamCswapEv.h │ │ │ ├── emberFamEvent.h │ │ │ ├── emberFamGather_Ev.h │ │ │ ├── emberFamGatherv_Ev.h │ │ │ ├── emberFamGet_Ev.h │ │ │ ├── emberFamPut_Ev.h │ │ │ ├── emberFamScatter_Ev.h │ │ │ ├── emberFamScatterv_Ev.h │ │ │ ├── emberShmemAddEv.h │ │ │ ├── emberShmemAlltoallEv.h │ │ │ ├── emberShmemAlltoallsEv.h │ │ │ ├── emberShmemBarrierAllEv.h │ │ │ ├── emberShmemBarrierEv.h │ │ │ ├── emberShmemBroadcastEv.h │ │ │ ├── emberShmemCollectEv.h │ │ │ ├── emberShmemCswapEv.h │ │ │ ├── emberShmemEvent.h │ │ │ ├── emberShmemFaddEv.h │ │ │ ├── emberShmemFcollectEv.h │ │ │ ├── emberShmemFenceEv.h │ │ │ ├── emberShmemFiniEv.h │ │ │ ├── emberShmemFreeEv.h │ │ │ ├── emberShmemGetEv.h │ │ │ ├── emberShmemGetVEv.h │ │ │ ├── emberShmemInitEv.h │ │ │ ├── emberShmemMallocEv.h │ │ │ ├── emberShmemMyPeEv.h │ │ │ ├── emberShmemNPesEv.h │ │ │ ├── emberShmemPutEv.h │ │ │ ├── emberShmemPutVEv.h │ │ │ ├── emberShmemQuietEv.h │ │ │ ├── emberShmemReductionEv.h │ │ │ ├── emberShmemSwapEv.h │ │ │ └── emberShmemWaitEv.h │ ├── mpi │ │ ├── embermpigen.cc │ │ ├── embermpigen.h │ │ └── motifs │ │ │ ├── ember3damr.cc │ │ │ ├── ember3damr.h │ │ │ ├── ember3damrbinaryfile.h │ │ │ ├── ember3damrblock.h │ │ │ ├── ember3damrfile.h │ │ │ ├── ember3damrtextfile.h │ │ │ ├── ember3dcommdbl.cc │ │ │ ├── ember3dcommdbl.h │ │ │ ├── emberNtoM.cc │ │ │ ├── emberNtoM.h │ │ │ ├── emberTrafficGen.cc │ │ │ ├── emberTrafficGen.h │ │ │ ├── emberallgather.cc │ │ │ ├── emberallgather.h │ │ │ ├── emberallgatherv.cc │ │ │ ├── emberallgatherv.h │ │ │ ├── emberallpingpong.cc │ │ │ ├── emberallpingpong.h │ │ │ ├── emberallreduce.cc │ │ │ ├── emberallreduce.h │ │ │ ├── emberalltoall.cc │ │ │ ├── emberalltoall.h │ │ │ ├── emberalltoallv.cc │ │ │ ├── emberalltoallv.h │ │ │ ├── emberbarrier.cc │ │ │ ├── emberbarrier.h │ │ │ ├── emberbcast.cc │ │ │ ├── emberbcast.h │ │ │ ├── emberbipingpong.cc │ │ │ ├── emberbipingpong.h │ │ │ ├── embercmt1d.cc │ │ │ ├── embercmt1d.h │ │ │ ├── embercmt2d.cc │ │ │ ├── embercmt2d.h │ │ │ ├── embercmt3d.cc │ │ │ ├── embercmt3d.h │ │ │ ├── embercmtcr.cc │ │ │ ├── embercmtcr.h │ │ │ ├── embercomm.cc │ │ │ ├── embercomm.h │ │ │ ├── emberdetailedring.cc │ │ │ ├── emberdetailedring.h │ │ │ ├── emberdetailedstream.cc │ │ │ ├── emberdetailedstream.h │ │ │ ├── emberfft3d.cc │ │ │ ├── emberfft3d.h │ │ │ ├── emberfini.cc │ │ │ ├── emberfini.h │ │ │ ├── emberhalo1d.cc │ │ │ ├── emberhalo1d.h │ │ │ ├── emberhalo2d.cc │ │ │ ├── emberhalo2d.h │ │ │ ├── emberhalo2dNBR.cc │ │ │ ├── emberhalo2dNBR.h │ │ │ ├── emberhalo3d.cc │ │ │ ├── emberhalo3d.h │ │ │ ├── emberhalo3d26.cc │ │ │ ├── emberhalo3d26.h │ │ │ ├── emberhalo3dsv.cc │ │ │ ├── emberhalo3dsv.h │ │ │ ├── emberincast.cc │ │ │ ├── emberincast.h │ │ │ ├── emberinit.cc │ │ │ ├── emberinit.h │ │ │ ├── emberlqcd.cc │ │ │ ├── emberlqcd.h │ │ │ ├── embermsgrate.cc │ │ │ ├── embermsgrate.h │ │ │ ├── embernaslu.cc │ │ │ ├── embernaslu.h │ │ │ ├── embernull.cc │ │ │ ├── embernull.h │ │ │ ├── emberotf2.cc │ │ │ ├── emberotf2.h │ │ │ ├── emberpingpong.cc │ │ │ ├── emberpingpong.h │ │ │ ├── emberrandomgen.cc │ │ │ ├── emberrandomgen.h │ │ │ ├── emberreduce.cc │ │ │ ├── emberreduce.h │ │ │ ├── emberring.cc │ │ │ ├── emberring.h │ │ │ ├── emberscatter.cc │ │ │ ├── emberscatter.h │ │ │ ├── emberscatterv.cc │ │ │ ├── emberscatterv.h │ │ │ ├── embersendrecv.cc │ │ │ ├── embersendrecv.h │ │ │ ├── embersiriustrace.cc │ │ │ ├── embersiriustrace.h │ │ │ ├── emberstop.cc │ │ │ ├── emberstop.h │ │ │ ├── embersweep2d.cc │ │ │ ├── embersweep2d.h │ │ │ ├── embersweep3d.cc │ │ │ ├── embersweep3d.h │ │ │ ├── embertest.cc │ │ │ ├── embertest.h │ │ │ ├── embertestany.cc │ │ │ ├── embertestany.h │ │ │ ├── emberunstructured.cc │ │ │ ├── emberunstructured.h │ │ │ ├── emberwaitany.cc │ │ │ └── emberwaitany.h │ ├── pyember.py │ ├── run │ │ ├── configurations │ │ │ ├── 3LevelModel.py │ │ │ ├── 3LevelModelParams.py │ │ │ ├── basicDetailedModel.py │ │ │ ├── basicDetailedModelParams.py │ │ │ ├── defaultParams.py │ │ │ ├── defaultSim.py │ │ │ ├── detailedSim.py │ │ │ ├── detailedStreamSim.py │ │ │ ├── loadfile │ │ │ ├── sandyBridgeModel.py │ │ │ ├── sandyBridgeModelParams.py │ │ │ ├── sandySim.py │ │ │ ├── snb.py │ │ │ ├── testCmd │ │ │ ├── testFile │ │ │ ├── testJob │ │ │ └── testStreamCmd │ │ ├── lib │ │ │ ├── backgroundLoad.py │ │ │ ├── componentConfig.py │ │ │ ├── detailedModel.py │ │ │ ├── emberConfig.py │ │ │ ├── emberEP.py │ │ │ ├── emberLoadBase.py │ │ │ ├── hermesConfig.py │ │ │ ├── jobInfo.py │ │ │ ├── loadInfo.py │ │ │ ├── loadUtils.py │ │ │ ├── merlin.py │ │ │ ├── myprint.py │ │ │ ├── nicConfig.py │ │ │ ├── nullEmber.py │ │ │ ├── platConfig.py │ │ │ ├── rtrConfig.py │ │ │ ├── switch.py │ │ │ └── topoConfig.py │ │ └── script │ │ │ ├── emberLoadCmd.py │ │ │ ├── emberLoadFile.py │ │ │ └── emberLoadJob.py │ ├── shmem │ │ ├── emberShmemGen.cc │ │ ├── emberShmemGen.h │ │ └── motifs │ │ │ ├── emberShmemAdd.h │ │ │ ├── emberShmemAlltoall.h │ │ │ ├── emberShmemAlltoalls.h │ │ │ ├── emberShmemAtomicInc.h │ │ │ ├── emberShmemAtomicIncV2.h │ │ │ ├── emberShmemBarrier.h │ │ │ ├── emberShmemBarrierAll.h │ │ │ ├── emberShmemBroadcast.h │ │ │ ├── emberShmemCollect.h │ │ │ ├── emberShmemCswap.h │ │ │ ├── emberShmemFAM_AtomicInc.h │ │ │ ├── emberShmemFAM_Cswap.h │ │ │ ├── emberShmemFAM_Gatherv.h │ │ │ ├── emberShmemFAM_Get2.h │ │ │ ├── emberShmemFAM_Put.h │ │ │ ├── emberShmemFAM_Scatterv.h │ │ │ ├── emberShmemFadd.h │ │ │ ├── emberShmemFcollect.h │ │ │ ├── emberShmemGet.h │ │ │ ├── emberShmemGetNBI.h │ │ │ ├── emberShmemGetv.h │ │ │ ├── emberShmemPut.h │ │ │ ├── emberShmemPutv.h │ │ │ ├── emberShmemReduction.h │ │ │ ├── emberShmemRing.h │ │ │ ├── emberShmemRing2.h │ │ │ ├── emberShmemSwap.h │ │ │ ├── emberShmemTest.h │ │ │ ├── emberShmemWait.h │ │ │ └── emberShmemWaitUntil.h │ ├── sirius │ │ ├── include │ │ │ └── sirius │ │ │ │ └── siriusglobals.h │ │ └── libsirius │ │ │ ├── Makefile │ │ │ └── libsirius.cc │ ├── test │ │ ├── CrossProduct.py │ │ ├── ES-shmem_List-of-Tests │ │ ├── EmberEP.py │ │ ├── Tester.py │ │ ├── basicDetailedModel.py │ │ ├── basicDetailedModelParams.py │ │ ├── bgqParams.py │ │ ├── chamaOpenIBParams.py │ │ ├── chamaPSMParams.py │ │ ├── cramsimDetailedModelParams.py │ │ ├── defaultParams.py │ │ ├── defaultSim.py │ │ ├── detailedModel.py │ │ ├── detailedShmemModel.py │ │ ├── emberLoad.py │ │ ├── exaParams.py │ │ ├── fft-256-chama.config │ │ ├── generateNidListGroup.py │ │ ├── generateNidListInterval.py │ │ ├── generateNidListQOS.py │ │ ├── generateNidListRandom.py │ │ ├── generateNidListRange.py │ │ ├── loadFAM │ │ ├── loadFAM200 │ │ ├── loadFAM200detailed │ │ ├── loadFAM200rand │ │ ├── loadFAM2048 │ │ ├── loadFAMvars │ │ ├── loadFileParse.py │ │ ├── loadInfo.py │ │ ├── loadQOS │ │ ├── loadUtils.py │ │ ├── loadfile │ │ ├── networkConfig.py │ │ ├── paramFiles │ │ │ ├── 8k_dragonflyParams.py │ │ │ ├── 8k_fattreeParams.py │ │ │ └── 8k_hyperxParams.py │ │ ├── paramUtils.py │ │ ├── runFAMloadfile │ │ ├── runFAMloadfileDetailed │ │ ├── shmemLoadFile │ │ ├── shmemSim.py │ │ ├── statModule.py │ │ └── timingDetailedModelParams.py │ ├── tests │ │ ├── ESshmem_List-of-Tests │ │ ├── dragon_128_allreduce.py │ │ ├── qos-dragonfly.sh │ │ ├── qos-fattree.sh │ │ ├── qos-hyperx.sh │ │ ├── qos.load │ │ ├── refFiles │ │ │ ├── ESshmem_cumulative.out │ │ │ ├── test_EmberSweep.out │ │ │ ├── test_embernightly.out │ │ │ ├── test_qos-dragonfly.out │ │ │ ├── test_qos-fattree.out │ │ │ └── test_qos-hyperx.out │ │ ├── testsuite_default_ember_ESshmem.py │ │ ├── testsuite_default_ember_nightly.py │ │ ├── testsuite_default_ember_qos.py │ │ └── testsuite_default_ember_sweep.py │ └── tools │ │ ├── meshconverter │ │ └── meshconverter.cc │ │ └── spygen │ │ └── spygen.cc │ ├── firefly │ ├── Makefile.am │ ├── ctrlMsg.cc │ ├── ctrlMsg.h │ ├── ctrlMsgCommReq.h │ ├── ctrlMsgFunctors.h │ ├── ctrlMsgMemory.h │ ├── ctrlMsgMemoryBase.h │ ├── ctrlMsgProcessQueuesState.cc │ ├── ctrlMsgProcessQueuesState.h │ ├── ctrlMsgTiming.h │ ├── ctrlMsgTimingBase.h │ ├── ctrlMsgWaitReq.h │ ├── funcSM │ │ ├── allgather.cc │ │ ├── allgather.h │ │ ├── allreduce.h │ │ ├── alltoallv.cc │ │ ├── alltoallv.h │ │ ├── api.h │ │ ├── barrier.h │ │ ├── cancel.cc │ │ ├── cancel.h │ │ ├── collectiveOps.h │ │ ├── collectiveTree.cc │ │ ├── collectiveTree.h │ │ ├── commCreate.cc │ │ ├── commCreate.h │ │ ├── commDestroy.h │ │ ├── commSplit.cc │ │ ├── commSplit.h │ │ ├── event.h │ │ ├── fini.h │ │ ├── gatherv.cc │ │ ├── gatherv.h │ │ ├── init.h │ │ ├── makeProgress.h │ │ ├── rank.h │ │ ├── recv.cc │ │ ├── recv.h │ │ ├── scatterv.cc │ │ ├── scatterv.h │ │ ├── send.cc │ │ ├── send.h │ │ ├── size.h │ │ ├── test.cc │ │ ├── test.h │ │ ├── testany.cc │ │ ├── testany.h │ │ ├── wait.cc │ │ ├── wait.h │ │ ├── waitAll.cc │ │ ├── waitAll.h │ │ ├── waitAny.cc │ │ └── waitAny.h │ ├── functionSM.cc │ ├── functionSM.h │ ├── group.h │ ├── hades.cc │ ├── hades.h │ ├── hadesMP.cc │ ├── hadesMP.h │ ├── hadesMisc.h │ ├── hadesSHMEM.cc │ ├── hadesSHMEM.h │ ├── heapAddrs.h │ ├── info.h │ ├── ioVec.h │ ├── ioapi.h │ ├── latencyMod.h │ ├── libfirefly.cc │ ├── loopBack.cc │ ├── loopBack.h │ ├── mem.h │ ├── memoryModel │ │ ├── busBridgeUnit.h │ │ ├── busWidget.h │ │ ├── cache.h │ │ ├── cacheList.h │ │ ├── cacheUnit.h │ │ ├── detailedInterface.h │ │ ├── detailedUnit.h │ │ ├── loadUnit.h │ │ ├── memOp.h │ │ ├── memReq.h │ │ ├── memUnit.h │ │ ├── memoryModel.h │ │ ├── muxUnit.h │ │ ├── nWayCache.h │ │ ├── nicUnit.h │ │ ├── sharedTlb.h │ │ ├── sharedTlbUnit.h │ │ ├── simpleMemoryModel.h │ │ ├── storeUnit.h │ │ ├── thread.h │ │ ├── tlbUnit.h │ │ ├── trivialMemoryModel.h │ │ └── unit.h │ ├── merlinEvent.h │ ├── nic.cc │ ├── nic.h │ ├── nicArbitrateDMA.h │ ├── nicEntryBase.cc │ ├── nicEntryBase.h │ ├── nicEvents.h │ ├── nicMsgStream.cc │ ├── nicMsgStream.h │ ├── nicRdmaStream.cc │ ├── nicRdmaStream.h │ ├── nicRecvCtx.cc │ ├── nicRecvCtx.h │ ├── nicRecvEntry.h │ ├── nicRecvMachine.cc │ ├── nicRecvMachine.h │ ├── nicRecvStream.cc │ ├── nicRecvStream.h │ ├── nicSendEntry.h │ ├── nicSendMachine.cc │ ├── nicSendMachine.h │ ├── nicShmem.cc │ ├── nicShmem.h │ ├── nicShmemMove.cc │ ├── nicShmemMove.h │ ├── nicShmemRecvMachine.h │ ├── nicShmemSendEntry.h │ ├── nicShmemStream.cc │ ├── nicShmemStream.h │ ├── nicTester.cc │ ├── nicTester.h │ ├── nicUnitPool.h │ ├── nicVirtNic.h │ ├── nodePerf.h │ ├── protocolAPI.h │ ├── pyfirefly.py │ ├── rangeLatMod.h │ ├── scaleLatMod.h │ ├── shmem │ │ ├── alltoall.cc │ │ ├── alltoall.h │ │ ├── alltoalls.cc │ │ ├── alltoalls.h │ │ ├── barrier.cc │ │ ├── barrier.h │ │ ├── broadcast.cc │ │ ├── broadcast.h │ │ ├── collect.cc │ │ ├── collect.h │ │ ├── common.cc │ │ ├── common.h │ │ ├── famAddrMapper.h │ │ ├── famNodeMapper.h │ │ ├── fcollect.cc │ │ ├── fcollect.h │ │ ├── reduction.cc │ │ └── reduction.h │ ├── thingHeap.h │ ├── virtNic.cc │ └── virtNic.h │ ├── hermes │ ├── Makefile.am │ ├── functor.h │ ├── hermes.h │ ├── libhermes.c │ ├── miscapi.h │ ├── msgapi.h │ └── shmemapi.h │ ├── kingsley │ ├── Makefile.am │ ├── linkControl.cc │ ├── linkControl.h │ ├── lru_unit.h │ ├── nocEvents.h │ ├── noc_mesh.cc │ ├── noc_mesh.h │ └── tests │ │ ├── noc_mesh_32_test.py │ │ ├── refFiles │ │ └── test_kingsley_noc_mesh_32_test.out │ │ └── testsuite_default_kingsley.py │ ├── memHierarchy │ ├── Makefile.am │ ├── Sieve │ │ ├── alloctrackev.h │ │ ├── broadcastShim.cc │ │ ├── broadcastShim.h │ │ ├── memmgr_sieve.cc │ │ ├── memmgr_sieve.h │ │ ├── sieveController.cc │ │ ├── sieveController.h │ │ ├── sieveFactory.cc │ │ └── tests │ │ │ ├── .gitignore │ │ │ ├── Makefile │ │ │ ├── StatisticOutput.csv.gold │ │ │ ├── ompsievetest.c │ │ │ ├── refFiles │ │ │ └── test_memHSieve.out │ │ │ ├── sieve-test.py │ │ │ ├── sieveprospero-0.trace │ │ │ └── trace-text.py │ ├── bus.cc │ ├── bus.h │ ├── cacheArray.h │ ├── cacheController.cc │ ├── cacheController.h │ ├── cacheFactory.cc │ ├── cacheListener.h │ ├── coherencemgr │ │ ├── Incoherent.cc │ │ ├── Incoherent.h │ │ ├── Incoherent_L1.cc │ │ ├── Incoherent_L1.h │ │ ├── MESI_Directory.cc │ │ ├── MESI_Directory.h │ │ ├── MESI_Inclusive.cc │ │ ├── MESI_Inclusive.h │ │ ├── MESI_L1.cc │ │ ├── MESI_L1.h │ │ ├── MESI_Private_Noninclusive.cc │ │ ├── MESI_Private_Noninclusive.h │ │ ├── MESI_Shared_Noninclusive.cc │ │ ├── MESI_Shared_Noninclusive.h │ │ ├── coherenceController.cc │ │ └── coherenceController.h │ ├── coherentMemoryController.cc │ ├── coherentMemoryController.h │ ├── configure.m4 │ ├── customcmd │ │ ├── amoCustomCmdHandler.cc │ │ ├── amoCustomCmdHandler.h │ │ ├── customCmdEvent.h │ │ ├── customCmdMemory.h │ │ └── customOpCodeCmd.h │ ├── directoryController.cc │ ├── directoryController.h │ ├── dmaEngine.cc │ ├── dmaEngine.h │ ├── hash.cc │ ├── hash.h │ ├── lineTypes.h │ ├── memEvent.h │ ├── memEventBase.h │ ├── memHierarchyInterface.cc │ ├── memHierarchyInterface.h │ ├── memHierarchyScratchInterface.cc │ ├── memHierarchyScratchInterface.h │ ├── memLink.cc │ ├── memLink.h │ ├── memLinkBase.h │ ├── memNIC.cc │ ├── memNIC.h │ ├── memNICBase.h │ ├── memNICFour.cc │ ├── memNICFour.h │ ├── memNetBridge.cc │ ├── memNetBridge.h │ ├── memResponseHandler.h │ ├── memTypes.h │ ├── membackend │ │ ├── HBMdramSimBackend.cc │ │ ├── HBMdramSimBackend.h │ │ ├── HBMpagedMultiBackend.cc │ │ ├── HBMpagedMultiBackend.h │ │ ├── MessierBackend.cc │ │ ├── MessierBackend.h │ │ ├── backing.h │ │ ├── cramSimBackend.cc │ │ ├── cramSimBackend.h │ │ ├── delayBuffer.cc │ │ ├── delayBuffer.h │ │ ├── dramSim3Backend.cc │ │ ├── dramSim3Backend.h │ │ ├── dramSimBackend.cc │ │ ├── dramSimBackend.h │ │ ├── extMemBackendConvertor.cc │ │ ├── extMemBackendConvertor.h │ │ ├── flagMemBackendConvertor.cc │ │ ├── flagMemBackendConvertor.h │ │ ├── flashSimBackend.cc │ │ ├── flashSimBackend.h │ │ ├── goblinHMCBackend.cc │ │ ├── goblinHMCBackend.h │ │ ├── hybridSimBackend.cc │ │ ├── hybridSimBackend.h │ │ ├── memBackend.h │ │ ├── memBackendConvertor.cc │ │ ├── memBackendConvertor.h │ │ ├── pagedMultiBackend.cc │ │ ├── pagedMultiBackend.h │ │ ├── ramulatorBackend.cc │ │ ├── ramulatorBackend.h │ │ ├── requestReorderByRow.cc │ │ ├── requestReorderByRow.h │ │ ├── requestReorderSimple.cc │ │ ├── requestReorderSimple.h │ │ ├── scratchBackendConvertor.cc │ │ ├── scratchBackendConvertor.h │ │ ├── simpleDRAMBackend.cc │ │ ├── simpleDRAMBackend.h │ │ ├── simpleMemBackend.cc │ │ ├── simpleMemBackend.h │ │ ├── simpleMemBackendConvertor.cc │ │ ├── simpleMemBackendConvertor.h │ │ ├── simpleMemScratchBackendConvertor.cc │ │ ├── simpleMemScratchBackendConvertor.h │ │ ├── timingAddrMapper.h │ │ ├── timingDRAMBackend.cc │ │ ├── timingDRAMBackend.h │ │ ├── timingPagePolicy.h │ │ ├── timingTransaction.h │ │ ├── vaultSimBackend.cc │ │ └── vaultSimBackend.h │ ├── memoryCacheController.cc │ ├── memoryCacheController.h │ ├── memoryController.cc │ ├── memoryController.h │ ├── moveEvent.h │ ├── mshr.cc │ ├── mshr.h │ ├── multithreadL1Shim.cc │ ├── multithreadL1Shim.h │ ├── networkMemInspector.cc │ ├── networkMemInspector.h │ ├── replacementManager.h │ ├── scratchpad.cc │ ├── scratchpad.h │ ├── simpleMemHMCExtension.h │ ├── testcpu │ │ ├── scratchCPU.cc │ │ ├── scratchCPU.h │ │ ├── streamCPU.cc │ │ ├── streamCPU.h │ │ ├── trivialCPU.cc │ │ └── trivialCPU.h │ ├── tests │ │ ├── DDR3_micron_32M_8B_x4_sg125.ini │ │ ├── DDR4_8Gb_x16_3200.ini │ │ ├── HBMDevice.ini │ │ ├── HBMSystem.ini │ │ ├── checkReqs.py │ │ ├── checkVals.py │ │ ├── ddr_device.ini │ │ ├── ddr_system.ini │ │ ├── genRefs.sh │ │ ├── genRefsOther.sh │ │ ├── goblinCustomCmd-2.py │ │ ├── hbm-2-trace.py │ │ ├── hbm-2.py │ │ ├── hbm_device.ini │ │ ├── hbm_system.ini │ │ ├── mhlib.py │ │ ├── miranda.cfg │ │ ├── openMP │ │ │ ├── dir-non-cacheable-8cores-2nodes.py │ │ │ ├── directory-8cores-2nodes.py │ │ │ ├── noncacheable-openmp.py │ │ │ ├── ompapi │ │ │ │ ├── Makefile │ │ │ │ ├── newMakefile │ │ │ │ ├── ompapi │ │ │ │ └── ompapi.c │ │ │ ├── ompatomic │ │ │ │ ├── Makefile │ │ │ │ ├── newMakefile │ │ │ │ ├── ompatomic │ │ │ │ └── ompatomic.c │ │ │ ├── ompatomicShort │ │ │ │ ├── Makefile │ │ │ │ ├── README │ │ │ │ ├── newMakefile │ │ │ │ ├── ompatomicShort │ │ │ │ └── ompatomicShort-M5.xml │ │ │ ├── ompbarrier │ │ │ │ ├── Makefile │ │ │ │ ├── newMakefile │ │ │ │ ├── ompbarrier │ │ │ │ └── ompbarrier.c │ │ │ ├── ompcritical │ │ │ │ ├── Makefile │ │ │ │ ├── newMakefile │ │ │ │ ├── ompcritical │ │ │ │ └── ompcritical.c │ │ │ ├── ompdynamic │ │ │ │ ├── Makefile │ │ │ │ ├── newMakefile │ │ │ │ ├── ompdynamic │ │ │ │ └── ompdynamic.c │ │ │ ├── ompmybarrier │ │ │ │ ├── Makefile │ │ │ │ ├── newMakefile │ │ │ │ ├── ompmybarrier │ │ │ │ └── ompmybarrier.c │ │ │ ├── ompreduce │ │ │ │ ├── Makefile │ │ │ │ ├── newMakefile │ │ │ │ ├── ompreduce │ │ │ │ └── ompreduce.c │ │ │ ├── ompthrcount │ │ │ │ ├── Makefile │ │ │ │ ├── newMakefile │ │ │ │ ├── ompthrcount │ │ │ │ └── ompthrcount.c │ │ │ ├── omptriangle │ │ │ │ ├── Makefile │ │ │ │ ├── newMakefile │ │ │ │ ├── omptriangle │ │ │ │ └── omptriangle.c │ │ │ ├── openmp.py │ │ │ ├── sweepdirectory-8cores-2nodes.py │ │ │ ├── sweepdirectory-exclusive.py │ │ │ ├── sweepopenmp.py │ │ │ └── test-distributed-caches.py │ │ ├── ramulator-ddr3.cfg │ │ ├── refFiles │ │ │ ├── test_OMP_noncacheable_ompapi.out │ │ │ ├── test_OMP_noncacheable_ompatomic.out │ │ │ ├── test_OMP_noncacheable_ompbarrier.out │ │ │ ├── test_OMP_noncacheable_ompcritical.out │ │ │ ├── test_OMP_noncacheable_ompdynamic.out │ │ │ ├── test_OMP_noncacheable_ompreduce.out │ │ │ ├── test_OMP_noncacheable_ompthrcount.out │ │ │ ├── test_OMP_noncacheable_omptriangle.out │ │ │ ├── test_OMP_ompapi.out │ │ │ ├── test_OMP_ompatomic.out │ │ │ ├── test_OMP_ompatomicShort.out │ │ │ ├── test_OMP_ompbarrier.out │ │ │ ├── test_OMP_ompcritical.out │ │ │ ├── test_OMP_ompdynamic.out │ │ │ ├── test_OMP_ompmybarrier.out │ │ │ ├── test_OMP_ompreduce.out │ │ │ ├── test_OMP_ompthrcount.out │ │ │ ├── test_OMP_omptriangle.out │ │ │ ├── test_hybridsim.out │ │ │ ├── test_memHA_BackendChaining.out │ │ │ ├── test_memHA_BackendChaining_MC.out │ │ │ ├── test_memHA_BackendDelayBuffer.out │ │ │ ├── test_memHA_BackendDelayBuffer_MC.out │ │ │ ├── test_memHA_BackendDramsim3.out │ │ │ ├── test_memHA_BackendGoblinHMC.out │ │ │ ├── test_memHA_BackendGoblinHMC_MC.out │ │ │ ├── test_memHA_BackendHBMDramsim.out │ │ │ ├── test_memHA_BackendHBMDramsim_MC.out │ │ │ ├── test_memHA_BackendHBMDramsim_MR.out │ │ │ ├── test_memHA_BackendHBMPagedMulti.out │ │ │ ├── test_memHA_BackendPagedMulti.out │ │ │ ├── test_memHA_BackendPagedMulti_MC.out │ │ │ ├── test_memHA_BackendReorderRow.out │ │ │ ├── test_memHA_BackendReorderRow_MC.out │ │ │ ├── test_memHA_BackendReorderSimple.out │ │ │ ├── test_memHA_BackendReorderSimple_MC.out │ │ │ ├── test_memHA_BackendSimpleDRAM_1.out │ │ │ ├── test_memHA_BackendSimpleDRAM_1_MC.out │ │ │ ├── test_memHA_BackendSimpleDRAM_2.out │ │ │ ├── test_memHA_BackendSimpleDRAM_2_MC.out │ │ │ ├── test_memHA_BackendTimingDRAM_1.out │ │ │ ├── test_memHA_BackendTimingDRAM_1_MC.out │ │ │ ├── test_memHA_BackendTimingDRAM_2.out │ │ │ ├── test_memHA_BackendTimingDRAM_2_MC.out │ │ │ ├── test_memHA_BackendTimingDRAM_3.out │ │ │ ├── test_memHA_BackendTimingDRAM_3_MC.out │ │ │ ├── test_memHA_BackendTimingDRAM_4.out │ │ │ ├── test_memHA_BackendTimingDRAM_4_MC.out │ │ │ ├── test_memHA_BackendVaultSim.out │ │ │ ├── test_memHA_BackendVaultSim_MC.out │ │ │ ├── test_memHA_CustomCmdGoblin_1.out │ │ │ ├── test_memHA_CustomCmdGoblin_1_MC.out │ │ │ ├── test_memHA_CustomCmdGoblin_2.out │ │ │ ├── test_memHA_CustomCmdGoblin_2_MC.out │ │ │ ├── test_memHA_CustomCmdGoblin_3.out │ │ │ ├── test_memHA_CustomCmdGoblin_3_MC.out │ │ │ ├── test_memHA_DistributedCaches.out │ │ │ ├── test_memHA_DistributedCaches_MC.out │ │ │ ├── test_memHA_Flushes.out │ │ │ ├── test_memHA_Flushes_2.out │ │ │ ├── test_memHA_Flushes_2_MC.out │ │ │ ├── test_memHA_Flushes_MC.out │ │ │ ├── test_memHA_HashXor.out │ │ │ ├── test_memHA_HashXor_MC.out │ │ │ ├── test_memHA_Incoherent.out │ │ │ ├── test_memHA_Incoherent_2.out │ │ │ ├── test_memHA_Incoherent_MC.out │ │ │ ├── test_memHA_Kingsley.out │ │ │ ├── test_memHA_MemoryCache.out │ │ │ ├── test_memHA_MemoryCache_MC.out │ │ │ ├── test_memHA_Noninclusive_1.out │ │ │ ├── test_memHA_Noninclusive_1_MC.out │ │ │ ├── test_memHA_Noninclusive_2.out │ │ │ ├── test_memHA_Noninclusive_2_MC.out │ │ │ ├── test_memHA_PrefetchParams.out │ │ │ ├── test_memHA_PrefetchParams_MC.out │ │ │ ├── test_memHA_ScratchCache_1.out │ │ │ ├── test_memHA_ScratchCache_2.out │ │ │ ├── test_memHA_ScratchCache_3.out │ │ │ ├── test_memHA_ScratchDirect.out │ │ │ ├── test_memHA_ScratchNetwork.out │ │ │ ├── test_memHA_ThroughputThrottling.out │ │ │ ├── test_memHA_ThroughputThrottling_MC.out │ │ │ ├── test_memHierarchy_sdl2_1.out │ │ │ ├── test_memHierarchy_sdl3_1.out │ │ │ ├── test_memHierarchy_sdl3_2.out │ │ │ ├── test_memHierarchy_sdl3_3.out │ │ │ ├── test_memHierarchy_sdl4_1.out │ │ │ ├── test_memHierarchy_sdl4_2.out │ │ │ ├── test_memHierarchy_sdl4_2_ramulator.out │ │ │ ├── test_memHierarchy_sdl5_1.out │ │ │ ├── test_memHierarchy_sdl5_1_MC.out │ │ │ ├── test_memHierarchy_sdl5_1_ramulator.out │ │ │ ├── test_memHierarchy_sdl5_1_ramulator_MC.out │ │ │ ├── test_memHierarchy_sdl8_1.out │ │ │ ├── test_memHierarchy_sdl8_3.out │ │ │ ├── test_memHierarchy_sdl8_4.out │ │ │ ├── test_memHierarchy_sdl9_1.out │ │ │ ├── test_memHierarchy_sdl9_1_MC.out │ │ │ ├── test_memHierarchy_sdl9_2.out │ │ │ ├── test_memHierarchy_sdl_1.out │ │ │ ├── test_memHierarchy_sdl_2.out │ │ │ └── test_memHierarchy_sdl_3.out │ │ ├── runTests.sh │ │ ├── runall.sh │ │ ├── sdl-1.py │ │ ├── sdl-2.py │ │ ├── sdl-3.py │ │ ├── sdl2-1.py │ │ ├── sdl3-1.py │ │ ├── sdl3-2.py │ │ ├── sdl3-3.py │ │ ├── sdl4-1.py │ │ ├── sdl4-2-ramulator.py │ │ ├── sdl4-2.py │ │ ├── sdl5-1-ramulator.py │ │ ├── sdl5-1.py │ │ ├── sdl8-1.py │ │ ├── sdl8-3.py │ │ ├── sdl8-4.py │ │ ├── sdl9-1.py │ │ ├── sdl9-2.py │ │ ├── system.ini │ │ ├── testBackendChaining.py │ │ ├── testBackendCramSim.py │ │ ├── testBackendDelayBuffer.py │ │ ├── testBackendDramsim3.py │ │ ├── testBackendGoblinHMC.py │ │ ├── testBackendHBMDramsim.py │ │ ├── testBackendHBMPagedMulti.py │ │ ├── testBackendPagedMulti.py │ │ ├── testBackendReorderRow.py │ │ ├── testBackendReorderSimple.py │ │ ├── testBackendSimpleDRAM-1.py │ │ ├── testBackendSimpleDRAM-2.py │ │ ├── testBackendTimingDRAM-1.py │ │ ├── testBackendTimingDRAM-2.py │ │ ├── testBackendTimingDRAM-3.py │ │ ├── testBackendTimingDRAM-4.py │ │ ├── testBackendVaultSim.py │ │ ├── testBridge.py │ │ ├── testCachLineTrack.py │ │ ├── testCustomCmdGoblin-1.py │ │ ├── testCustomCmdGoblin-2.py │ │ ├── testCustomCmdGoblin-3.py │ │ ├── testDistributedCaches.py │ │ ├── testFlushes-2.py │ │ ├── testFlushes.py │ │ ├── testHashXor.py │ │ ├── testIncoherent.py │ │ ├── testKingsley.py │ │ ├── testMemoryCache.py │ │ ├── testNoninclusive-1.py │ │ ├── testNoninclusive-2.py │ │ ├── testPrefetchParams.py │ │ ├── testScratchCache1.py │ │ ├── testScratchCache2.py │ │ ├── testScratchCache3.py │ │ ├── testScratchCache4.py │ │ ├── testScratchDirect.py │ │ ├── testScratchNetwork.py │ │ ├── testThroughputThrottling.py │ │ ├── test_hybridsim.py │ │ ├── testsuite_default_memHierarchy_hybridsim.py │ │ ├── testsuite_default_memHierarchy_memHA.py │ │ ├── testsuite_default_memHierarchy_memHSieve.py │ │ ├── testsuite_default_memHierarchy_sdl.py │ │ ├── testsuite_openMP_memHierarchy_dirnoncacheable.py │ │ ├── testsuite_openMP_memHierarchy_diropenMP.py │ │ ├── testsuite_openMP_memHierarchy_noncacheable.py │ │ ├── testsuite_openMP_memHierarchy_openMP.py │ │ ├── testsuite_sweep_memHierarchy_dir3LevelSweep.py │ │ ├── testsuite_sweep_memHierarchy_dirSweep.py │ │ ├── testsuite_sweep_memHierarchy_dirSweepB.py │ │ ├── testsuite_sweep_memHierarchy_dirSweepI.py │ │ ├── testsuite_sweep_memHierarchy_openMP.py │ │ ├── updateTests.sh │ │ └── utils.py │ └── util.h │ ├── merlin │ ├── .gitignore │ ├── Makefile.am │ ├── arbitration │ │ ├── single_arb.h │ │ ├── single_arb_lru.h │ │ └── single_arb_rr.h │ ├── background_traffic │ │ ├── background_traffic.cc │ │ └── background_traffic.h │ ├── boostExports.cc │ ├── bridge.cc │ ├── bridge.h │ ├── hr_router │ │ ├── hr_router.cc │ │ ├── hr_router.h │ │ ├── xbar_arb_age.h │ │ ├── xbar_arb_lru.h │ │ ├── xbar_arb_lru_infx.h │ │ ├── xbar_arb_rand.h │ │ └── xbar_arb_rr.h │ ├── inspectors │ │ ├── circuitCounter.cc │ │ ├── circuitCounter.h │ │ ├── testInspector.cc │ │ └── testInspector.h │ ├── interfaces │ │ ├── linkControl.cc │ │ ├── linkControl.h │ │ ├── output_arb_basic.h │ │ ├── output_arb_qos_multi.h │ │ ├── portControl.cc │ │ ├── portControl.h │ │ ├── pymerlin-interface.py │ │ ├── reorderLinkControl.cc │ │ └── reorderLinkControl.h │ ├── merlin.cc │ ├── merlin.h │ ├── networkGen.py │ ├── offeredload │ │ ├── offered_load.cc │ │ └── offered_load.h │ ├── pymerlin-base.py │ ├── pymerlin-endpoint.py │ ├── pymerlin-router.py │ ├── pymerlin.py │ ├── pymodule.c │ ├── pymodule.h │ ├── router.h │ ├── sdlgen.py │ ├── target_generator │ │ ├── bit_complement.h │ │ ├── pymerlin-targetgen.py │ │ ├── shift.h │ │ ├── target_generator.cc │ │ ├── target_generator.h │ │ └── uniform.h │ ├── test │ │ ├── bisection │ │ │ ├── bisection_test.cc │ │ │ └── bisection_test.h │ │ ├── dragonfly_sdlgen.c │ │ ├── fattree_sdlgen.c │ │ ├── nic.cc │ │ ├── nic.h │ │ ├── pt2pt │ │ │ ├── pt2pt_test.cc │ │ │ ├── pt2pt_test.h │ │ │ └── pt2pt_test.sdl │ │ ├── route_test │ │ │ ├── route_test.cc │ │ │ └── route_test.h │ │ ├── simple_patterns │ │ │ ├── empty.cc │ │ │ ├── empty.h │ │ │ ├── incast.cc │ │ │ ├── incast.h │ │ │ ├── shift.cc │ │ │ └── shift.h │ │ └── torus_sdlgen.c │ ├── tests │ │ ├── dragon_128_platform_test.py │ │ ├── dragon_128_platform_test_cm.py │ │ ├── dragon_128_test.py │ │ ├── dragon_128_test_fl.py │ │ ├── dragon_72_test.py │ │ ├── fattree_128_test.py │ │ ├── fattree_256_test.py │ │ ├── hyperx_128_test.py │ │ ├── platform_file_dragon_128.py │ │ ├── refFiles │ │ │ ├── test_merlin_dragon_128_platform_test.out │ │ │ ├── test_merlin_dragon_128_platform_test_cm.out │ │ │ ├── test_merlin_dragon_128_test.out │ │ │ ├── test_merlin_dragon_128_test_fl.out │ │ │ ├── test_merlin_dragon_72_test.out │ │ │ ├── test_merlin_fattree_128_test.out │ │ │ ├── test_merlin_fattree_256_test.out │ │ │ ├── test_merlin_hyperx_128_test.out │ │ │ ├── test_merlin_torus_128_test.out │ │ │ ├── test_merlin_torus_5_trafficgen.out │ │ │ └── test_merlin_torus_64_test.out │ │ ├── testsuite_default_merlin.py │ │ ├── torus_128_test.py │ │ ├── torus_5_trafficgen.py │ │ └── torus_64_test.py │ ├── topology │ │ ├── dragonfly.cc │ │ ├── dragonfly.h │ │ ├── fattree.cc │ │ ├── fattree.h │ │ ├── hyperx.cc │ │ ├── hyperx.h │ │ ├── mesh.cc │ │ ├── mesh.h │ │ ├── pymerlin-topo-dragonfly.py │ │ ├── pymerlin-topo-fattree.py │ │ ├── pymerlin-topo-hyperx.py │ │ ├── pymerlin-topo-mesh.py │ │ ├── singlerouter.cc │ │ ├── singlerouter.h │ │ ├── torus.cc │ │ └── torus.h │ └── trafficgen │ │ ├── trafficgen.cc │ │ └── trafficgen.h │ ├── miranda │ ├── Makefile.am │ ├── configure.m4 │ ├── generators │ │ ├── copygen.h │ │ ├── gupsgen.cc │ │ ├── gupsgen.h │ │ ├── inorderstreambench.h │ │ ├── nullgen.h │ │ ├── randomgen.cc │ │ ├── randomgen.h │ │ ├── revsinglestream.cc │ │ ├── revsinglestream.h │ │ ├── singlestream.cc │ │ ├── singlestream.h │ │ ├── spmvgen.h │ │ ├── stake.cc │ │ ├── stake.h │ │ ├── stencil3dbench.cc │ │ ├── stencil3dbench.h │ │ ├── streambench.cc │ │ ├── streambench.h │ │ ├── streambench_customcmd.cc │ │ └── streambench_customcmd.h │ ├── mirandaCPU.cc │ ├── mirandaCPU.h │ ├── mirandaEvent.h │ ├── mirandaGenerator.h │ ├── mirandaIncGen.cc │ ├── mirandaMemMgr.h │ └── tests │ │ ├── HBMDevice.ini │ │ ├── HBMSystem.ini │ │ ├── copybench.py │ │ ├── goblin_singlestream1-trace-map.py │ │ ├── goblin_singlestream1-trace.py │ │ ├── goblin_singlestream1.py │ │ ├── goblin_singlestream2-trace.py │ │ ├── goblin_singlestream2.py │ │ ├── goblin_singlestream3-trace.py │ │ ├── goblin_singlestream3.py │ │ ├── goblin_streambench_customcmd.py │ │ ├── gupsgen.py │ │ ├── hbm_singlestream1-trace.py │ │ ├── hbm_singlestream1.py │ │ ├── inorderstream.py │ │ ├── randomgen.py │ │ ├── refFiles │ │ ├── test_miranda_copybench.out │ │ ├── test_miranda_gupsgen.out │ │ ├── test_miranda_inorderstream.out │ │ ├── test_miranda_randomgen.out │ │ ├── test_miranda_revsinglestream.out │ │ ├── test_miranda_singlestream.out │ │ ├── test_miranda_spmvgen.out │ │ ├── test_miranda_stencil3dbench.out │ │ └── test_miranda_streambench.out │ │ ├── revsinglestream.py │ │ ├── singlestream.py │ │ ├── spmvgen.py │ │ ├── stencil3dbench.py │ │ ├── streambench.py │ │ ├── test_subcomp.py │ │ └── testsuite_default_miranda.py │ ├── prospero │ ├── .gitignore │ ├── Makefile.am │ ├── configure.m4 │ ├── prosbinaryreader.cc │ ├── prosbinaryreader.h │ ├── prosbingzreader.cc │ ├── prosbingzreader.h │ ├── proscpu.cc │ ├── proscpu.h │ ├── prosmemmgr.cc │ ├── prosmemmgr.h │ ├── prosreader.h │ ├── prostextreader.cc │ ├── prostextreader.h │ ├── runprosperotrace.cc │ ├── tests │ │ ├── array │ │ │ ├── .gitignore │ │ │ ├── Makefile │ │ │ ├── NCtrace-withdramsim.py │ │ │ ├── NCtrace.py │ │ │ ├── array.c │ │ │ ├── trace-binary-withdramsim.py │ │ │ ├── trace-binary.py │ │ │ ├── trace-common.py │ │ │ ├── trace-compressed-withdramsim.py │ │ │ ├── trace-compressed.py │ │ │ ├── trace-text-withdramsim.py │ │ │ ├── trace-text.py │ │ │ └── trace-withdramsim.py │ │ ├── refFiles │ │ │ ├── test_prospero_with_dramsim.out │ │ │ ├── test_prospero_with_dramsim_binary.out │ │ │ ├── test_prospero_with_dramsim_compressed.out │ │ │ ├── test_prospero_with_dramsim_text.out │ │ │ ├── test_prospero_wo_dramsim.out │ │ │ ├── test_prospero_wo_dramsim_binary.out │ │ │ ├── test_prospero_wo_dramsim_compressed.out │ │ │ └── test_prospero_wo_dramsim_text.out │ │ └── testsuite_default_prospero.py │ ├── tracetool │ │ ├── Makefile │ │ ├── Makefile.osx │ │ ├── api │ │ │ ├── Makefile │ │ │ ├── Makefile.osx │ │ │ ├── prospero.c │ │ │ └── prospero.h │ │ └── sstmemtrace.cc │ └── xml │ │ ├── simple.xml │ │ ├── sorting8cores.py │ │ ├── trace-withdramsim.py │ │ └── trace.py │ ├── serrano │ ├── Makefile.am │ ├── scircq.h │ ├── sercgunit.h │ ├── seriterunit.h │ ├── serprintunit.h │ ├── serrano.cc │ ├── serrano.h │ ├── serstdunit.h │ ├── smsg.h │ └── tests │ │ ├── graphs │ │ └── sum.graph │ │ └── test_serrano.py │ ├── shogun │ ├── Makefile.am │ ├── arb │ │ ├── shogunarb.h │ │ ├── shogunrrarb.cc │ │ └── shogunrrarb.h │ ├── shogun.cc │ ├── shogun.h │ ├── shogun_credit_event.h │ ├── shogun_event.h │ ├── shogun_init_event.h │ ├── shogun_nic.cc │ ├── shogun_nic.h │ ├── shogun_q.h │ ├── shogun_stat_bundle.h │ └── tests │ │ ├── basic_miranda.py │ │ ├── hierarchy_test.py │ │ ├── hierarchy_test_multi.py │ │ ├── refFiles │ │ ├── test_shogun_basic_miranda.out │ │ ├── test_shogun_hierarchy_test.out │ │ └── test_shogun_hierarchy_test_multi.out │ │ └── testsuite_default_shogun.py │ ├── simpleElementExample │ ├── Makefile.am │ ├── README │ ├── basicClocks.cc │ ├── basicClocks.h │ ├── basicEvent.h │ ├── basicLinks.cc │ ├── basicLinks.h │ ├── basicParams.cc │ ├── basicParams.h │ ├── basicStatistics.cc │ ├── basicStatistics.h │ ├── example0.cc │ ├── example0.h │ ├── example1.cc │ ├── example1.h │ └── tests │ │ ├── basicClocks.py │ │ ├── basicLinks.py │ │ ├── basicParams.py │ │ ├── basicStatistics0.py │ │ ├── basicStatistics1.py │ │ ├── basicStatistics2.py │ │ ├── example0.py │ │ ├── example1.py │ │ ├── refFiles │ │ ├── basicClocks.out │ │ ├── basicLinks.out │ │ ├── basicParams.out │ │ ├── basicStatistics0.out │ │ ├── basicStatistics1.out │ │ ├── basicStatistics2.out │ │ ├── example0.out │ │ └── example1.out │ │ └── testsuite_default_simpleComponents.py │ ├── simpleSimulation │ ├── Makefile.am │ ├── README │ ├── simpleCarWash.cc │ ├── simpleCarWash.h │ └── tests │ │ ├── README │ │ ├── refFiles │ │ └── test_simpleSimulationCarWash.out │ │ ├── test_simpleCarWash.py │ │ ├── test_simpleSimulationCarWash.py │ │ └── testsuite_default_simpleSimulation.py │ ├── sstStonne │ ├── Makefile.am │ ├── energy_tables │ │ ├── .out │ │ ├── calculate_energy.py │ │ ├── energy_model.txt │ │ └── out │ ├── external │ │ └── cpptoml.h │ ├── include │ │ ├── ASNetwork.h │ │ ├── ASwitch.h │ │ ├── AccumulationBuffer.h │ │ ├── Accumulator.h │ │ ├── CollectionBus.h │ │ ├── CollectionBusLine.h │ │ ├── CompilerART.h │ │ ├── CompilerComponent.h │ │ ├── CompilerFEN.h │ │ ├── CompilerMSN.h │ │ ├── CompilerMultiplierMesh.h │ │ ├── Component.h │ │ ├── Config.h │ │ ├── Connection.h │ │ ├── DNNLayer.h │ │ ├── DNNModel.h │ │ ├── DSNetwork.h │ │ ├── DSNetworkTop.h │ │ ├── DSwitch.h │ │ ├── DataPackage.h │ │ ├── DistributionNetwork.h │ │ ├── FEASwitch.h │ │ ├── FENetwork.h │ │ ├── Fifo.h │ │ ├── LookupTable.h │ │ ├── MSNetwork.h │ │ ├── MSwitch.h │ │ ├── MemoryController.h │ │ ├── MultiplierNetwork.h │ │ ├── MultiplierOS.h │ │ ├── OSMeshMN.h │ │ ├── OSMeshSDMemory.h │ │ ├── ReduceNetwork.h │ │ ├── SDMemory.h │ │ ├── STONNEModel.h │ │ ├── SparseDenseSDMemory.h │ │ ├── SparseSDMemory.h │ │ ├── Stats.h │ │ ├── TemporalRN.h │ │ ├── Tile.h │ │ ├── Unit.h │ │ ├── define.h │ │ ├── ms_size │ │ ├── testbench.h │ │ ├── types.h │ │ └── utility.h │ ├── lsQueue.h │ ├── src │ │ ├── ASNetwork.cpp │ │ ├── ASwitch.cpp │ │ ├── AccumulationBuffer.cpp │ │ ├── Accumulator.cpp │ │ ├── CollectionBus.cpp │ │ ├── CollectionBusLine.cpp │ │ ├── CompilerART.cpp │ │ ├── CompilerFEN.cpp │ │ ├── CompilerMSN.cpp │ │ ├── CompilerMultiplierMesh.cpp │ │ ├── Config.cpp │ │ ├── Connection.cpp │ │ ├── DNNLayer.cpp │ │ ├── DNNModel.cpp │ │ ├── DSNetwork.cpp │ │ ├── DSNetworkTop.cpp │ │ ├── DSwitch.cpp │ │ ├── DataPackage.cpp │ │ ├── FEASwitch.cpp │ │ ├── FENetwork.cpp │ │ ├── Fifo.cpp │ │ ├── LookupTable.cpp │ │ ├── MSNetwork.cpp │ │ ├── MSwitch.cpp │ │ ├── MultiplierOS.cpp │ │ ├── OSMeshMN.cpp │ │ ├── OSMeshSDMemory.cpp │ │ ├── SDMemory.cpp │ │ ├── STONNEModel.cpp │ │ ├── SparseDenseSDMemory.cpp │ │ ├── SparseSDMemory.cpp │ │ ├── Stats.cpp │ │ ├── TemporalRN.cpp │ │ ├── Tile.cpp │ │ ├── testbench.cpp │ │ └── utility.cpp │ ├── sstStonne.cc │ ├── sstStonne.h │ ├── stonne_linker_src │ │ ├── stonne_linker.cpp │ │ └── stonne_linker.h │ ├── tests │ │ ├── bitmapSpMSpM_file_bitmapA_2_2_2048.in │ │ ├── bitmapSpMSpM_file_bitmapA_64_32_64.in │ │ ├── bitmapSpMSpM_file_bitmapB_2_2_2048.in │ │ ├── bitmapSpMSpM_file_bitmapB_64_32_64.in │ │ ├── bitmapSpMSpM_gemm_mem.ini │ │ ├── conv_mem.ini │ │ ├── csr │ │ │ ├── colpointermatrixA │ │ │ ├── csrSpMM_mem.ini │ │ │ └── rowpointermatrixA │ │ ├── gemm_mem.ini │ │ ├── gen_bitmapSpMSpM.py │ │ ├── gen_conv.py │ │ ├── gen_gemm.py │ │ ├── in_file_matrixA_3_3_20.in │ │ ├── in_file_matrixB_3_3_20.in │ │ ├── maeri_128mses_128_bw.cfg │ │ ├── result.out │ │ ├── script_clean.sh │ │ ├── sigma_128mses_128_bw.cfg │ │ ├── sst_stonne_bitmapSpMSpM.py │ │ ├── sst_stonne_conv.py │ │ ├── sst_stonne_csrSpMM.py │ │ └── sst_stonne_gemm.py │ └── tiles │ │ ├── alexnet │ │ ├── tile_configuration_conv1.txt │ │ ├── tile_configuration_conv2.txt │ │ ├── tile_configuration_conv3.txt │ │ ├── tile_configuration_conv4.txt │ │ ├── tile_configuration_conv5.txt │ │ ├── tile_configuration_fc6.txt │ │ ├── tile_configuration_fc7.txt │ │ └── tile_configuration_fc8.txt │ │ └── tile_configuration.txt │ ├── thornhill │ ├── Makefile.am │ ├── detailedCompute.h │ ├── libthornhill.cc │ ├── memoryHeap.cc │ ├── memoryHeap.h │ ├── memoryHeapEvent.h │ ├── memoryHeapLink.h │ ├── singleThread.cc │ ├── singleThread.h │ └── types.h │ ├── vanadis │ ├── Makefile.am │ ├── datastruct │ │ ├── cqueue.h │ │ └── vcache.h │ ├── decoder │ │ ├── vauxvec.h │ │ ├── vdecoder.h │ │ ├── visaopts.h │ │ ├── vmipsdecoder.h │ │ └── vmipsinsloader.h │ ├── inst │ │ ├── fpregmode.h │ │ ├── isatable.h │ │ ├── regfile.h │ │ ├── regstack.h │ │ ├── vadd.h │ │ ├── vaddi.h │ │ ├── vaddiu.h │ │ ├── vand.h │ │ ├── vandi.h │ │ ├── vbcmp.h │ │ ├── vbcmpi.h │ │ ├── vbcmpil.h │ │ ├── vbfp.h │ │ ├── vcmptype.h │ │ ├── vdecodefaultinst.h │ │ ├── vdelaytype.h │ │ ├── vdivmod.h │ │ ├── vfence.h │ │ ├── vfp2fp.h │ │ ├── vfp2gpr.h │ │ ├── vfpadd.h │ │ ├── vfpconv.h │ │ ├── vfpdiv.h │ │ ├── vfpmul.h │ │ ├── vfpscmp.h │ │ ├── vfpsub.h │ │ ├── vgpr2fp.h │ │ ├── vinst.h │ │ ├── vinstall.h │ │ ├── vinsttype.h │ │ ├── vjl.h │ │ ├── vjlr.h │ │ ├── vjr.h │ │ ├── vjump.h │ │ ├── vload.h │ │ ├── vmemflagtype.h │ │ ├── vmovci.h │ │ ├── vmul.h │ │ ├── vmuli.h │ │ ├── vmulsplit.h │ │ ├── vnop.h │ │ ├── vnor.h │ │ ├── vor.h │ │ ├── vori.h │ │ ├── vpartialload.h │ │ ├── vpartialstore.h │ │ ├── vregfmt.h │ │ ├── vscmp.h │ │ ├── vscmpi.h │ │ ├── vsetreg.h │ │ ├── vsll.h │ │ ├── vslli.h │ │ ├── vspeculate.h │ │ ├── vsra.h │ │ ├── vsrai.h │ │ ├── vsrl.h │ │ ├── vsrli.h │ │ ├── vstore.h │ │ ├── vsub.h │ │ ├── vsyscall.h │ │ ├── vtrunc.h │ │ ├── vxor.h │ │ └── vxori.h │ ├── lsq │ │ ├── vlsq.h │ │ ├── vlsqseq.h │ │ ├── vlsqstd.h │ │ └── vmemwriterec.h │ ├── os │ │ ├── callev │ │ │ ├── voscallaccessev.h │ │ │ ├── voscallall.h │ │ │ ├── voscallbrk.h │ │ │ ├── voscallclose.h │ │ │ ├── voscallexitgrp.h │ │ │ ├── voscallfstat.h │ │ │ ├── voscallgettime64.h │ │ │ ├── voscallioctl.h │ │ │ ├── voscallmmap.h │ │ │ ├── voscallopen.h │ │ │ ├── voscallopenat.h │ │ │ ├── voscallread.h │ │ │ ├── voscallreadlink.h │ │ │ ├── voscallsta.h │ │ │ ├── voscalluname.h │ │ │ ├── voscallunmap.h │ │ │ ├── voscallwrite.h │ │ │ ├── voscallwritev.h │ │ │ └── vosinitbrk.h │ │ ├── memmgr │ │ │ └── vmemmgr.h │ │ ├── node │ │ │ ├── vnodemmaph.h │ │ │ ├── vnodenoactionh.h │ │ │ ├── vnodeosaccessh.h │ │ │ ├── vnodeosbrk.h │ │ │ ├── vnodeosfd.h │ │ │ ├── vnodeosfstath.h │ │ │ ├── vnodeoshstate.h │ │ │ ├── vnodeosopenath.h │ │ │ ├── vnodeosopenh.h │ │ │ ├── vnodeosreadlink.h │ │ │ ├── vnodeosstattype.h │ │ │ ├── vnodeosunameh.h │ │ │ ├── vnodeoswriteh.h │ │ │ └── vnodeoswritevh.h │ │ ├── resp │ │ │ ├── voscallresp.h │ │ │ └── vosexitresp.h │ │ ├── vcpuos.h │ │ ├── vmipscpuos.h │ │ ├── vnodeos.cc │ │ ├── vnodeos.h │ │ ├── vnodeoshandler.h │ │ ├── voscallev.h │ │ ├── voscallfunc.h │ │ └── voscallresp.h │ ├── tests │ │ ├── basic_vanadis.py │ │ ├── small │ │ │ ├── basic-io │ │ │ │ ├── Makefile │ │ │ │ ├── hello-world.c │ │ │ │ ├── hello-world.stderr.gold │ │ │ │ └── hello-world.stdout.gold │ │ │ ├── basic-math │ │ │ │ ├── Makefile │ │ │ │ ├── sqrt-double.c │ │ │ │ ├── sqrt-double.stderr.gold │ │ │ │ ├── sqrt-double.stdout.gold │ │ │ │ ├── sqrt-float.c │ │ │ │ ├── sqrt-float.stderr.gold │ │ │ │ └── sqrt-float.stdout.gold │ │ │ └── basic-ops │ │ │ │ ├── Makefile │ │ │ │ ├── test-branch.c │ │ │ │ ├── test-branch.stderr.gold │ │ │ │ ├── test-branch.stdout.gold │ │ │ │ ├── test-shift.c │ │ │ │ ├── test-shift.stderr.gold │ │ │ │ └── test-shift.stdout.gold │ │ └── testsuite_default_vanadis.py │ ├── tools │ │ └── tracediff │ │ │ └── tracediff.cc │ ├── util │ │ ├── vcmpop.h │ │ ├── vdatacopy.h │ │ ├── vfpreghandler.h │ │ ├── vlinesplit.h │ │ └── vsignx.h │ ├── vanadis.cc │ ├── vanadis.h │ ├── vbranch │ │ ├── vbranchbasic.h │ │ └── vbranchunit.h │ ├── velf │ │ └── velfinfo.h │ ├── vfuncunit.h │ ├── vinsbundle.h │ └── vinsloader.h │ └── zodiac │ ├── Makefile.am │ ├── configure.m4 │ ├── dumpifunc.h │ ├── dumpireader.cc │ ├── dumpireader.h │ ├── otfreader.cc │ ├── otfreader.h │ ├── sirius │ ├── siriusconst.h │ ├── siriusglobals.h │ └── tests │ │ └── refFiles │ │ ├── test_Sirius_allred_128.out │ │ ├── test_Sirius_allred_16.out │ │ ├── test_Sirius_allred_27.out │ │ ├── test_Sirius_allred_4x4.out │ │ ├── test_Sirius_allred_64.out │ │ ├── test_Sirius_allred_8x8.out │ │ └── test_Sirius_allred_8x8x2.out │ ├── siriusreader.cc │ ├── siriusreader.h │ ├── test │ ├── allreduce │ │ ├── .gitignore │ │ ├── allred.c │ │ ├── allreduce.py │ │ ├── npe-128 │ │ │ └── reduce128.xml │ │ ├── npe-16 │ │ │ └── reduce16.xml │ │ ├── npe-27 │ │ │ └── reduce27.xml │ │ └── npe-64 │ │ │ └── reduce64.xml │ ├── barrier │ │ ├── barrier.c │ │ └── sirius.xml │ ├── benchpingpong │ │ ├── pingpong.c │ │ └── sirius.xml │ ├── dumpi.xml │ ├── helloworld.c │ ├── otf.xml │ ├── pingpong.c │ ├── pingpong │ │ ├── firefly.xml │ │ ├── pingpong.c │ │ └── sirius.xml │ └── testsuite_default_SiriusZodiacTrace.py │ ├── zallredevent.cc │ ├── zallredevent.h │ ├── zbarrierevent.cc │ ├── zbarrierevent.h │ ├── zcollective.cc │ ├── zcollective.h │ ├── zcomputeevent.cc │ ├── zcomputeevent.h │ ├── zdumpi.cc │ ├── zdumpi.h │ ├── zevent.cc │ ├── zevent.h │ ├── zfinalizeevent.cc │ ├── zfinalizeevent.h │ ├── zinitevent.cc │ ├── zinitevent.h │ ├── zirecvevent.cc │ ├── zirecvevent.h │ ├── zotf.cc │ ├── zotf.h │ ├── zrecvevent.cc │ ├── zrecvevent.h │ ├── zsendevent.cc │ ├── zsendevent.h │ ├── zsirius.cc │ ├── zsirius.h │ ├── ztrace.cc │ ├── ztrace.h │ ├── zwaitevent.cc │ └── zwaitevent.h ├── sstStonne-memHierarchy.jpg └── stonne-small.jpg /.github/ISSUE_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | New Issue for sst-elements 2 | -------------------------- 3 | 4 | 1 - Detailed description of problem or enhancement 5 | 6 | 2 - Describe how to reproduce 7 | 8 | 3 - What Operating system(s) and versions 9 | 10 | 4 - What version of external libraries (Boost, MPI) 11 | 12 | 5 - Provide sha1 of all relevant sst repositories (sst-core, sst-elements, etc) 13 | 14 | 6 - Fill out Labels, Milestones, and Assignee fields as best possible 15 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.o 2 | *.lo 3 | *.la 4 | *.pyc 5 | .*.swp 6 | .libs/ 7 | .deps/ 8 | .dirstamp 9 | .ignore 10 | Makefile.in 11 | Makefile 12 | aclocal.m4 13 | autom4te.cache 14 | config.log 15 | config.status 16 | configure 17 | libtool 18 | tags 19 | .DS_Store 20 | -------------------------------------------------------------------------------- /CONTRIBUTORS.TXT: -------------------------------------------------------------------------------- 1 | Copyright 2009-2021, Sandia National Laboratories 2 | Portions are copyright of other developers including: 3 | International Business Machines (IBM) 2016-2021 4 | Cray Inc 2014-2021 5 | 6 | -------------------------------------------------------------------------------- /INSTALL: -------------------------------------------------------------------------------- 1 | See http://sst-simulator.org/ 2 | -------------------------------------------------------------------------------- /ISSUES: -------------------------------------------------------------------------------- 1 | Information on issues can be found at 2 | 3 | https://github.com/sstsimulator/sst-elements/issues -------------------------------------------------------------------------------- /Makefile.am: -------------------------------------------------------------------------------- 1 | # -*- Makefile -*- 2 | # 3 | # 4 | 5 | ACLOCAL_AMFLAGS = -I config 6 | 7 | SUBDIRS = \ 8 | src 9 | 10 | install-exec-hook: 11 | $(SST_REGISTER_TOOL) SST_ELEMENT_LIBRARY SST_ELEMENT_LIBRARY_SOURCE_ROOT=$(abs_srcdir) 12 | $(SST_REGISTER_TOOL) SST_ELEMENT_LIBRARY SST_ELEMENT_LIBRARY_HOME=$(prefix) 13 | $(SST_REGISTER_TOOL) SST_ELEMENT_LIBRARY SST_ELEMENT_LIBRARY_BINDIR=$(prefix)/bin 14 | $(SST_REGISTER_TOOL) SST_ELEMENT_LIBRARY SST_ELEMENT_LIBRARY_LIBDIR=$(pkglibdir) 15 | $(SST_REGISTER_TOOL) SST_ELEMENT_LIBRARY SST_ELEMENT_LIBRARY_BUILDDIR=$(abs_top_builddir) 16 | 17 | EXTRA_DIST = \ 18 | config \ 19 | autogen.sh \ 20 | CONTRIBUTING.md \ 21 | CONTRIBUTORS.TXT \ 22 | INSTALL \ 23 | ISSUES \ 24 | LICENSE \ 25 | PLATFORMS \ 26 | README.md \ 27 | VERSION 28 | -------------------------------------------------------------------------------- /PLATFORMS: -------------------------------------------------------------------------------- 1 | SST platform information can be found at: 2 | 3 | http://sst-simulator.org/SSTPages/SSTMainDocumentation/ 4 | 5 | Note: SST is only supported on 64-bit platforms. 6 | -------------------------------------------------------------------------------- /VERSION: -------------------------------------------------------------------------------- 1 | 2 | There are three ways to get the SST version number: 3 | 1. From an unbuilt source tree: 4 | grep AC_INIT $/configure.ac 5 | 2. From a built source tree: 6 | grep PACKAGE_VERSION $/sst/sst_config.h 7 | 3. From the sst binary: 8 | sst --version -------------------------------------------------------------------------------- /config/.gitignore: -------------------------------------------------------------------------------- 1 | compile 2 | config.guess 3 | config.sub 4 | depcomp 5 | install-sh 6 | libtool.m4 7 | ltargz.m4 8 | ltdl.m4 9 | ltmain.sh 10 | ltoptions.m4 11 | ltsugar.m4 12 | ltversion.m4 13 | lt~obsolete.m4 14 | missing 15 | sst_elements_config_output.m4 16 | sst_elements_include.m4 17 | -------------------------------------------------------------------------------- /config/sst-check_picky.m4: -------------------------------------------------------------------------------- 1 | 2 | AC_DEFUN([SST_CHECK_PICKY], [ 3 | use_picky="no" 4 | 5 | AC_ARG_ENABLE([picky-warnings], [AS_HELP_STRING([--enable-picky-warnings], 6 | [Enable the use of compiler flags -Wall -Wextra within SST Elements.])]) 7 | 8 | AS_IF([test "x$enable_picky_warnings" = "xyes"], [use_picky="yes"]) 9 | 10 | ]) 11 | -------------------------------------------------------------------------------- /config/sst_check_ptrace_set_tracer.m4: -------------------------------------------------------------------------------- 1 | AC_DEFUN([SST_CHECK_PTRACE_SET_TRACER], 2 | [ 3 | sst_check_ptrace_set_tracer_happy="yes" 4 | 5 | CPPFLAGS_saved="$CPPFLAGS" 6 | LDFLAGS_saved="$LDFLAGS" 7 | 8 | AC_LANG_PUSH([C++]) 9 | AC_COMPILE_IFELSE( 10 | [AC_LANG_PROGRAM([[#include 11 | #include 12 | #include ]], 13 | [[ 14 | prctl(PR_SET_PTRACER, getppid(), 0, 0, 0); 15 | ]])], 16 | [], 17 | [sst_check_ptrace_set_tracer_happy="no"]) 18 | 19 | AC_LANG_POP([C++]) 20 | 21 | CPPFLAGS="$CPPFLAGS_saved" 22 | LDFLAGS="$LDFLAGS_saved" 23 | 24 | AS_IF([test "x$sst_check_ptrace_set_tracer_happy" = "xyes"], 25 | [HAVE_SET_PTRACER=1], [HAVE_SET_PTRACER=0]) 26 | 27 | AC_SUBST([HAVE_SET_PTRACER]) 28 | AM_CONDITIONAL([HAVE_SET_PTRACER], [test "x$sst_check_ptrace_set_tracer_happy" = "xyes"]) 29 | 30 | AC_MSG_CHECKING([for for PR_SET_PTRACER]) 31 | AC_MSG_RESULT([$sst_check_ptrace_set_tracer_happy]) 32 | ]) 33 | -------------------------------------------------------------------------------- /config/sst_check_shm.m4: -------------------------------------------------------------------------------- 1 | 2 | AC_DEFUN([SST_CHECK_SHM], [ 3 | 4 | sst_check_shm_happy="yes" 5 | 6 | CPPFLAGS_saved="$CPPFLAGS" 7 | LDFLAGS_saved="$LDFLAGS" 8 | LIBS_saved="$LIBS" 9 | 10 | AC_LANG_PUSH(C) 11 | AC_SEARCH_LIBS([shm_open], [rt], [SHM_LIB="$LIBS"], [sst_check_shm_happy="no"]) 12 | AC_LANG_POP(C) 13 | 14 | CPPFLAGS="$CPPFLAGS_saved" 15 | LDFLAGS="$LDFLAGS_saved" 16 | LIBS="$LIBS_saved" 17 | 18 | AC_SUBST([SHM_LIB]) 19 | AM_CONDITIONAL([HAVE_SHM], [test "$sst_check_shm_happy" = "yes"]) 20 | AS_IF([test "$sst_check_shm_happy" = "yes"], 21 | [AC_DEFINE([HAVE_SHM], [1], [Set to 1 if SHM was found])]) 22 | 23 | AS_IF([test "$sst_check_shm_happy" = "yes"], [$1], [$2]) 24 | ]) 25 | -------------------------------------------------------------------------------- /config/sst_os_check_osx.m4: -------------------------------------------------------------------------------- 1 | AC_DEFUN([SST_CHECK_OSX], 2 | [ 3 | sst_check_osx_happy="yes" 4 | 5 | AC_MSG_CHECKING([for Mac OSX]) 6 | AS_IF([test `uname` = "Darwin"], [sst_check_osx_happy="yes"], [sst_check_osx_happy="no"]) 7 | 8 | AS_IF([test "$sst_check_osx_happy" = "yes"], 9 | [AC_DEFINE([SST_COMPILE_MACOSX], [1], [Defines compile for Mac OS-X])]) 10 | AM_CONDITIONAL([SST_COMPILE_OSX], [test "x$sst_check_osx_happy" = "xyes"]) 11 | 12 | AS_IF([test "$sst_check_osx_happy" = "yes"], 13 | [AC_MSG_RESULT([yes])], 14 | [AC_MSG_RESULT([no])]) 15 | 16 | AS_IF([test "$sst_check_osx_happy" = "yes"], [$1], [$2]) 17 | ]) 18 | -------------------------------------------------------------------------------- /src/.gitignore: -------------------------------------------------------------------------------- 1 | libltdl 2 | sst_element_config.* 3 | stamp-h1 4 | sst/elements/vanadis/vanadisdbg.cc 5 | -------------------------------------------------------------------------------- /src/Makefile.am: -------------------------------------------------------------------------------- 1 | 2 | SUBDIRS = \ 3 | sst 4 | -------------------------------------------------------------------------------- /src/sst/Makefile.am: -------------------------------------------------------------------------------- 1 | 2 | SUBDIRS = \ 3 | elements 4 | 5 | -------------------------------------------------------------------------------- /src/sst/elements/CramSim/ddr3.cfg: -------------------------------------------------------------------------------- 1 | clockCycle 1ns 2 | stopAtCycle 5000000ns 3 | strControllerClockFreq 1.2GHz 4 | numTxnQEntries 32 5 | numCmdQEntries 16 6 | numChannels 1 7 | numRanksPerChannel 2 8 | numBankGroupsPerRank 1 9 | numBanksPerBankGroup 4 10 | numRowsPerBank 32768 11 | numColsPerBank 2048 12 | numBytesPerTransaction 64 13 | relCommandWidth 1 14 | readWriteRatio 0.667 15 | boolUseRefresh 1 16 | boolUseReadA 0 17 | boolUseWriteA 0 18 | boolCmdQueueFindAnyIssuable 1 19 | boolPrintCmdTrace 0 20 | strCmdTraceFile - 21 | strAddressMapStr _r_l_R_B_b_h_ # __r:15_l:11__bb__R__BB__h:5__ 22 | bankPolicy OPEN 23 | randomSeed 0 24 | nRC 34 25 | nRRD 4 26 | nRRD_L 4 27 | nRRD_S 4 28 | nRCD 10 29 | nCCD 4 30 | nCCD_L 4 31 | nCCD_L_WR 1 32 | nCCD_S 4 33 | nAL 0 34 | nCL 10 35 | nCWL 10 36 | nWR 50 37 | nWTR 4 38 | nWTR_L 4 39 | nWTR_S 4 40 | nRTW 4 41 | nEWTR 4 42 | nERTW 4 43 | nEWTW 4 44 | nERTR 4 45 | nRAS 24 46 | nRTP 5 47 | nRP 10 48 | nRFC 107 49 | nREFI 7800 50 | nFAW 20 51 | nBL 4 52 | -------------------------------------------------------------------------------- /src/sst/elements/CramSim/ddr3_power.cfg: -------------------------------------------------------------------------------- 1 | clockCycle 1ns 2 | stopAtCycle 5000000ns 3 | strControllerClockFreq 1.2GHz 4 | numTxnQEntries 32 5 | numCmdQEntries 16 6 | numChannels 1 7 | numRanksPerChannel 2 8 | numBankGroupsPerRank 1 9 | numBanksPerBankGroup 4 10 | numRowsPerBank 32768 11 | numColsPerBank 2048 12 | numBytesPerTransaction 64 13 | relCommandWidth 1 14 | readWriteRatio 0.667 15 | boolUseRefresh 1 16 | boolUseReadA 0 17 | boolUseWriteA 0 18 | boolCmdQueueFindAnyIssuable 1 19 | boolPrintCmdTrace 0 20 | boolPowerCalc 1 21 | strCmdTraceFile - 22 | strAddressMapStr _r_l_R_B_b_h_ # __r:15_l:11__bb__R__BB__h:5__ 23 | bankPolicy OPEN 24 | randomSeed 0 25 | nRC 34 26 | nRRD 4 27 | nRRD_L 4 28 | nRRD_S 4 29 | nRCD 10 30 | nCCD 4 31 | nCCD_L 4 32 | nCCD_L_WR 1 33 | nCCD_S 4 34 | nAL 0 35 | nCL 10 36 | nCWL 10 37 | nWR 50 38 | nWTR 4 39 | nWTR_L 4 40 | nWTR_S 4 41 | nRTW 4 42 | nEWTR 4 43 | nERTW 4 44 | nEWTW 4 45 | nERTR 4 46 | nRAS 24 47 | nRTP 5 48 | nRP 10 49 | nRFC 107 50 | nREFI 7800 51 | nFAW 20 52 | nBL 4 53 | #Parameters for power calculation 54 | VDD 1.5 55 | IDD0 130 56 | IDD1 155 57 | IDD2P 10 58 | IDD2N 70 59 | IDD3N 90 60 | IDD4W 300 61 | IDD4R 255 62 | IDD5 305 63 | numDevices 8 64 | -------------------------------------------------------------------------------- /src/sst/elements/CramSim/ddr4.cfg: -------------------------------------------------------------------------------- 1 | clockCycle 0.8333ns 2 | stopAtCycle 100000ns 3 | strControllerClockFreq 1.2GHz 4 | numTxnQEntries 32 5 | numCmdQEntries 16 6 | numChannels 1 7 | numRanksPerChannel 2 8 | numBankGroupsPerRank 4 9 | numBanksPerBankGroup 4 10 | numRowsPerBank 32768 11 | numColsPerBank 2048 12 | numBytesPerTransaction 64 13 | relCommandWidth 1 14 | readWriteRatio 0.667 15 | boolUseReadA 0 16 | boolUseWriteA 0 17 | boolUseRefresh 1 18 | boolCmdQueueFindAnyIssuable 1 19 | boolPrintCmdTrace 0 20 | strCmdTraceFile - 21 | strAddressMapStr _r_l_R_B_b_h_ # __r:15_l:11__bb__R__BB__h:5__ 22 | bankPolicy CLOSE 23 | randomSeed 0 24 | nRC 55 25 | nRRD 4 26 | nRRD_L 6 27 | nRRD_S 4 28 | nRCD 16 29 | nCCD 4 30 | nCCD_L 6 31 | nCCD_L_WR 1 32 | nCCD_S 4 33 | nAL 15 34 | nCL 16 35 | nCWL 12 36 | nWR 18 37 | nWTR 3 38 | nWTR_L 9 39 | nWTR_S 3 40 | nRTW 4 41 | nEWTR 6 42 | nERTW 6 43 | nEWTW 6 44 | nERTR 6 45 | nRAS 39 46 | nRTP 9 47 | nRP 16 48 | nRFC 420 49 | nREFI 9360 50 | nFAW 16 51 | nBL 4 52 | -------------------------------------------------------------------------------- /src/sst/elements/CramSim/ddr4_2400.cfg: -------------------------------------------------------------------------------- 1 | clockCycle 0.83333ns 2 | stopAtCycle 100000ns 3 | strControllerClockFreq 1.2GHz 4 | numTxnQEntries 32 5 | numCmdQEntries 16 6 | numChannels 1 7 | numRanksPerChannel 2 8 | numBankGroupsPerRank 4 9 | numBanksPerBankGroup 4 10 | numRowsPerBank 32768 11 | numColsPerBank 2048 12 | numBytesPerTransaction 64 13 | relCommandWidth 1 14 | txnSchedulingPolicy FRFCFS #FCFS, FRFCFS 15 | readWriteRatio 0.667 16 | boolUseReadA 0 17 | boolUseWriteA 0 18 | boolUseRefresh 1 19 | boolPrintCmdTrace 0 20 | strCmdTraceFile - 21 | verbose 0 22 | strAddressMapStr _r_l_R_B_b_h_ # __r:15_l:11__bb__R__BB__h:5__ 23 | bankPolicy CLOSE 24 | randomSeed 0 25 | nRC 55 26 | nRRD 4 27 | nRRD_L 6 28 | nRRD_S 4 29 | nRCD 16 30 | nCCD 4 31 | nCCD_L 6 32 | nCCD_L_WR 1 33 | nCCD_S 4 34 | nAL 15 35 | nCL 16 36 | nCWL 12 37 | nWR 18 38 | nWTR 3 39 | nWTR_L 9 40 | nWTR_S 3 41 | nRTW 4 42 | nEWTR 6 43 | nERTW 6 44 | nEWTW 6 45 | nERTR 6 46 | nRAS 39 47 | nRTP 9 48 | nRP 16 49 | nRFC 420 50 | nREFI 9360 51 | nFAW 16 52 | nBL 4 53 | -------------------------------------------------------------------------------- /src/sst/elements/CramSim/ddr4_2667.cfg: -------------------------------------------------------------------------------- 1 | clockCycle 0.75ns 2 | stopAtCycle 100000ns 3 | strControllerClockFreq 1.333GHz 4 | numTxnQEntries 32 5 | numCmdQEntries 16 6 | numChannels 1 7 | numRanksPerChannel 2 8 | numBankGroupsPerRank 4 9 | numBanksPerBankGroup 4 10 | numRowsPerBank 32768 11 | numColsPerBank 2048 12 | numBytesPerTransaction 64 13 | relCommandWidth 1 14 | txnSchedulingPolicy FRFCFS #FCFS, FRFCFS 15 | readWriteRatio 0.667 16 | boolUseReadA 0 17 | boolUseWriteA 0 18 | boolUseRefresh 1 19 | boolPrintCmdTrace 0 20 | strCmdTraceFile - 21 | verbose 0 22 | bankPolicy CLOSE 23 | randomSeed 0 24 | nRC 60 25 | nRRD 4 26 | nRRD_L 7 27 | nRRD_S 4 28 | nRCD 18 29 | nCCD 4 30 | nCCD_L 6 31 | nCCD_L_WR 6 32 | nCCD_S 4 33 | nAL 17 34 | nCL 18 35 | nCWL 14 36 | nWR 20 37 | nWTR 4 38 | nWTR_L 10 39 | nWTR_S 4 40 | nRTW 6 41 | nEWTR 6 42 | nERTW 6 43 | nEWTW 6 44 | nERTR 6 45 | nRAS 42 46 | nRTP 10 47 | nRP 18 48 | nRFC 467 49 | nREFI 10400 50 | nFAW 26 51 | nBL 4 52 | -------------------------------------------------------------------------------- /src/sst/elements/CramSim/ddr4_3200.cfg: -------------------------------------------------------------------------------- 1 | clockCycle 0.625ns 2 | stopAtCycle 100000ns 3 | strControllerClockFreq 1.6GHz 4 | numTxnQEntries 32 5 | numCmdQEntries 16 6 | numChannels 1 7 | numRanksPerChannel 2 8 | numBankGroupsPerRank 4 9 | numBanksPerBankGroup 4 10 | numRowsPerBank 32768 11 | numColsPerBank 2048 12 | numBytesPerTransaction 64 13 | relCommandWidth 1 14 | txnSchedulingPolicy FRFCFS #FCFS, FRFCFS 15 | readWriteRatio 0.667 16 | boolUseReadA 0 17 | boolUseWriteA 0 18 | boolUseRefresh 1 19 | boolPrintCmdTrace 0 20 | strCmdTraceFile - 21 | verbose 0 22 | bankPolicy CLOSE 23 | randomSeed 0 24 | nRC 70 25 | nRRD 4 26 | nRRD_L 7 27 | nRRD_S 4 28 | nRCD 22 29 | nCCD 4 30 | nCCD_L 7 31 | nCCD_L_WR 7 32 | nCCD_S 4 33 | nAL 21 34 | nCL 22 35 | nCWL 16 36 | nWR 24 37 | nWTR 4 38 | nWTR_L 12 39 | nWTR_S 4 40 | nRTW 8 41 | nEWTR 8 42 | nERTW 8 43 | nEWTW 8 44 | nERTR 8 45 | nRAS 48 46 | nRTP 12 47 | nRP 22 48 | nRFC 560 49 | nREFI 12480 50 | nFAW 28 51 | nBL 4 52 | -------------------------------------------------------------------------------- /src/sst/elements/CramSim/ddr4_verimem.cfg: -------------------------------------------------------------------------------- 1 | clockCycle 1ns 2 | stopAtCycle 11000ns 3 | numTxnQEntries 32 4 | numCmdQEntries 16 5 | numChannels 1 6 | numRanksPerChannel 2 7 | numBankGroupsPerRank 4 8 | numBanksPerBankGroup 4 9 | numRowsPerBank 32768 10 | numColsPerBank 2048 11 | numBytesPerTransaction 32 12 | relCommandWidth 1 13 | txnSchedulingPolicy FCFS #FCFS, FRFCFS 14 | boolReadFirstTxnScheduling 0 15 | pendingWriteThreshold 0.8 16 | boolEnableQuickRes 0 17 | readWriteRatio 0.667 18 | boolUseReadA 0 19 | boolUseWriteA 0 20 | boolUseRefresh 0 21 | boolPrintCmdTrace 0 22 | strCmdTraceFile ddr4_trace 23 | verbose 0 24 | strAddressMapStr _r_l_R_B_b_h_ # __r:15_l:11__bb__R__BB__h:5__ 25 | bankPolicy CLOSE 26 | randomSeed 0 27 | nRC 55 28 | nRRD 4 29 | nRRD_L 6 30 | nRRD_S 4 31 | nRCD 16 32 | nCCD 4 33 | nCCD_L 6 34 | nCCD_L_WR 1 35 | nCCD_S 4 36 | nAL 15 37 | nCL 16 38 | nCWL 12 39 | nWR 18 40 | nWTR 3 41 | nWTR_L 9 42 | nWTR_S 3 43 | nRTW 4 44 | nEWTR 6 45 | nERTW 6 46 | nEWTW 6 47 | nERTR 6 48 | nRAS 39 49 | nRTP 9 50 | nRP 16 51 | nRFC 420 52 | nREFI 9360 53 | nFAW 16 54 | nBL 4 55 | -------------------------------------------------------------------------------- /src/sst/elements/CramSim/ddr4_verimem_openbank.cfg: -------------------------------------------------------------------------------- 1 | clockCycle 1ns 2 | stopAtCycle 11000ns 3 | numTxnQEntries 32 4 | numCmdQEntries 16 5 | numChannels 1 6 | numRanksPerChannel 2 7 | numBankGroupsPerRank 4 8 | numBanksPerBankGroup 4 9 | numRowsPerBank 32768 10 | numColsPerBank 2048 11 | numBytesPerTransaction 32 12 | relCommandWidth 1 13 | txnSchedulingPolicy FCFS #FCFS, FRFCFS 14 | boolReadFirstTxnScheduling 0 15 | pendingWriteThreshold 0.8 16 | boolEnableQuickRes 0 17 | readWriteRatio 0.667 18 | boolUseReadA 0 19 | boolUseWriteA 0 20 | boolUseRefresh 0 21 | boolPrintCmdTrace 0 22 | strCmdTraceFile ddr4_trace_openbank 23 | verbose 0 24 | strAddressMapStr _r_l_R_B_b_h_ # __r:15_l:11__bb__R__BB__h:5__ 25 | bankPolicy OPEN 26 | randomSeed 0 27 | nRC 55 28 | nRRD 4 29 | nRRD_L 6 30 | nRRD_S 4 31 | nRCD 16 32 | nCCD 4 33 | nCCD_L 6 34 | nCCD_L_WR 1 35 | nCCD_S 4 36 | nAL 15 37 | nCL 16 38 | nCWL 12 39 | nWR 18 40 | nWTR 3 41 | nWTR_L 9 42 | nWTR_S 3 43 | nRTW 4 44 | nEWTR 6 45 | nERTW 6 46 | nEWTW 6 47 | nERTR 6 48 | nRAS 39 49 | nRTP 9 50 | nRP 16 51 | nRFC 420 52 | nREFI 9360 53 | nFAW 16 54 | nBL 4 55 | -------------------------------------------------------------------------------- /src/sst/elements/CramSim/dramsim2_config.cfg: -------------------------------------------------------------------------------- 1 | clockCycle 1ns 2 | stopAtCycle 5000000ns 3 | numTxnQEntries 32 4 | numCmdQEntries 16 5 | numChannels 1 6 | numRanksPerChannel 2 7 | numBankGroupsPerRank 2 8 | numBanksPerBankGroup 4 9 | numRowsPerBank 32768 10 | numColsPerBank 2048 11 | numBytesPerTransaction 64 12 | relCommandWidth 1 13 | readWriteRatio 1 14 | boolUseReadA 0 15 | boolUseWriteA 0 16 | boolCmdQueueFindAnyIssuable 1 17 | nRC 34 18 | nRRD 4 19 | nRRD_L 6 20 | nRRD_S 4 21 | nRCD 10 22 | nCCD 4 23 | nCCD_L 6 24 | nCCD_L_WR 1 25 | nCCD_S 4 26 | nAL 0 27 | nCL 10 28 | nCWL 12 29 | nWR 100 30 | nWTR 5 31 | nWTR_L 9 32 | nWTR_S 3 33 | nRTW 4 34 | nEWTR 6 35 | nERTW 6 36 | nEWTW 6 37 | nERTR 6 38 | nRAS 24 39 | nRTP 5 40 | nRP 10 41 | nRFC 107 42 | nREFI 9360 43 | nFAW 20 44 | nBL 8 45 | -------------------------------------------------------------------------------- /src/sst/elements/CramSim/hbm_legacy_4h.cfg: -------------------------------------------------------------------------------- 1 | clockCycle 1ns 2 | stopAtCycle 110000ns 3 | numTxnQEntries 32 4 | numCmdQEntries 16 5 | numChannels 8 6 | numPChannelsPerChannel 1 7 | numRanksPerChannel 1 8 | numBankGroupsPerRank 4 9 | numBanksPerBankGroup 4 10 | numRowsPerBank 16384 11 | numColsPerBank 64 12 | numBytesPerTransaction 32 13 | relCommandWidth 1 14 | readWriteRatio 0.8 15 | boolUseReadA 0 16 | boolUseWriteA 0 17 | boolUseRefresh 1 18 | boolUseSBRefresh 0 19 | boolDualCommandBus 1 20 | boolMultiCycleACT 1 21 | boolCmdQueueFindAnyIssuable 1 22 | boolPrintCmdTrace 0 23 | strCmdTraceFile hbm_trace 24 | strAddressMapStr r_l_b_B_C_h_ 25 | bankPolicy OPEN 26 | randomSeed 0 27 | nRC 47 28 | nRRD 6 29 | nRRD_L 6 30 | nRRD_S 4 31 | nRCD 14 32 | nCCD 1 33 | nCCD_L 2 34 | nCCD_L_WR 1 35 | nCCD_S 1 36 | nAL 0 37 | nCL 20 38 | nCWL 7 39 | nWR 15 40 | nWTR 2 41 | nWTR_L 7 42 | nWTR_S 2 43 | nRTW 18 44 | nEWTR 6 45 | nERTW 6 46 | nEWTW 6 47 | nERTR 6 48 | nRAS 33 49 | nRTP 3 50 | nRP 14 51 | nRFC 350 52 | nREFI 3900 53 | nFAW 16 54 | nBL 1 55 | -------------------------------------------------------------------------------- /src/sst/elements/CramSim/hbm_legacy_4h_sbr.cfg: -------------------------------------------------------------------------------- 1 | clockCycle 1ns 2 | stopAtCycle 110000ns 3 | numTxnQEntries 32 4 | numCmdQEntries 16 5 | numChannels 8 6 | numPChannelsPerChannel 1 7 | numRanksPerChannel 1 8 | numBankGroupsPerRank 4 9 | numBanksPerBankGroup 4 10 | numRowsPerBank 16384 11 | numColsPerBank 64 12 | numBytesPerTransaction 32 13 | relCommandWidth 1 14 | readWriteRatio 0.8 15 | boolUseReadA 0 16 | boolUseWriteA 0 17 | boolUseRefresh 1 18 | boolUseSBRefresh 1 19 | boolDualCommandBus 1 20 | boolMultiCycleACT 1 21 | boolCmdQueueFindAnyIssuable 1 22 | boolPrintCmdTrace 0 23 | strCmdTraceFile hbm_trace 24 | strAddressMapStr r_l_b_B_C_h_ 25 | bankPolicy OPEN 26 | randomSeed 0 27 | nRC 47 28 | nRRD 6 29 | nRRD_L 6 30 | nRRD_S 4 31 | nRCD 14 32 | nCCD 1 33 | nCCD_L 2 34 | nCCD_L_WR 1 35 | nCCD_S 1 36 | nAL 0 37 | nCL 20 38 | nCWL 7 39 | nWR 15 40 | nWTR 2 41 | nWTR_L 7 42 | nWTR_S 2 43 | nRTW 18 44 | nEWTR 6 45 | nERTW 6 46 | nEWTW 6 47 | nERTR 6 48 | nRAS 33 49 | nRTP 3 50 | nRP 14 51 | nRFC 160 52 | nREFI 122 53 | nFAW 16 54 | nBL 1 55 | -------------------------------------------------------------------------------- /src/sst/elements/CramSim/hbm_pseudo_4h.cfg: -------------------------------------------------------------------------------- 1 | clockCycle 1ns 2 | stopAtCycle 110000ns 3 | numTxnQEntries 32 4 | numCmdQEntries 16 5 | numChannels 8 6 | numPChannelsPerChannel 2 7 | numRanksPerChannel 1 8 | numBankGroupsPerRank 4 9 | numBanksPerBankGroup 4 10 | numRowsPerBank 16384 11 | numColsPerBank 32 12 | numBytesPerTransaction 32 13 | relCommandWidth 1 14 | readWriteRatio 0.667 15 | boolUseReadA 0 16 | boolUseWriteA 0 17 | boolUseRefresh 1 18 | boolUseSBRefresh 0 19 | boolDualCommandBus 1 20 | boolMultiCycleACT 1 21 | boolCmdQueueFindAnyIssuable 1 22 | boolPrintCmdTrace 0 23 | strCmdTraceFile - 24 | strAddressMapStr r_l_b_B_c_C_h_ 25 | bankPolicy OPEN 26 | randomSeed 0 27 | nRC 47 28 | nRRD 6 29 | nRRD_L 6 30 | nRRD_S 4 31 | nRCD 14 32 | nCCD 2 33 | nCCD_L 4 34 | nCCD_L_WR 2 35 | nCCD_S 2 36 | nAL 0 37 | nCL 20 38 | nCWL 7 39 | nWR 16 40 | nWTR 3 41 | nWTR_L 8 42 | nWTR_S 3 43 | nRTW 18 44 | nEWTR 6 45 | nERTW 6 46 | nEWTW 6 47 | nERTR 6 48 | nRAS 33 49 | nRTP 4 50 | nRP 14 51 | nRFC 350 52 | nREFI 3900 53 | nFAW 16 54 | nBL 2 55 | -------------------------------------------------------------------------------- /src/sst/elements/CramSim/pcm_2400_fast.cfg: -------------------------------------------------------------------------------- 1 | clockCycle 1ns 2 | stopAtCycle 110000ns 3 | numTxnQEntries 32 4 | numCmdQEntries 16 5 | numChannels 1 6 | numRanksPerChannel 1 7 | numBankGroupsPerRank 4 8 | numBanksPerBankGroup 4 9 | numRowsPerBank 32768 10 | numColsPerBank 2048 11 | relCommandWidth 1 12 | readWriteRatio 1 13 | numBytesPerTransaction 64 14 | boolUseReadA 0 15 | boolUseWriteA 0 16 | boolUseRefresh 0 17 | boolCmdQueueFindAnyIssuable 1 18 | bankPolicy CLOSE 19 | nRC 55 20 | nRRD 4 21 | nRRD_L 6 22 | nRRD_S 4 23 | nRCD 16 24 | nCCD 4 25 | nCCD_L 6 26 | nCCD_L_WR 1 27 | nCCD_S 4 28 | nAL 15 29 | nCL 16 30 | nCWL 12 31 | nWR 18 32 | nWTR 3 33 | nWTR_L 9 34 | nWTR_S 3 35 | nRTW 4 36 | nEWTR 6 37 | nERTW 6 38 | nEWTW 6 39 | nERTR 6 40 | nRAS 39 41 | nRTP 9 42 | nRP 16 43 | nRFC 420 44 | nREFI 9360 45 | nFAW 16 46 | nBL 4 47 | -------------------------------------------------------------------------------- /src/sst/elements/CramSim/test_device.cfg: -------------------------------------------------------------------------------- 1 | clockCycle 0.8333ns 2 | strControllerClockFreq 1.2GHz 3 | nRC 55 4 | nRRD 4 5 | nRRD_L 6 6 | nRRD_S 4 7 | nRCD 16 8 | nCCD 4 9 | nCCD_L 6 10 | nCCD_L_WR 1 11 | nCCD_S 4 12 | nAL 15 13 | nCL 16 14 | nCWL 12 15 | nWR 18 16 | nWTR 3 17 | nWTR_L 9 18 | nWTR_S 3 19 | nRTW 4 20 | nEWTR 6 21 | nERTW 6 22 | nEWTW 6 23 | nERTR 6 24 | nRAS 39 25 | nRTP 9 26 | nRP 16 27 | nRFC 420 28 | nREFI 9360 29 | nFAW 16 30 | nBL 4 31 | -------------------------------------------------------------------------------- /src/sst/elements/CramSim/test_system.cfg: -------------------------------------------------------------------------------- 1 | clockCycle 1ns 2 | stopAtCycle 100000ns 3 | strControllerClockFreq 1.0GHz 4 | numTxnQEntries 32 5 | numCmdQEntries 16 6 | numChannels 1 7 | numRanksPerChannel 2 8 | numBankGroupsPerRank 4 9 | numBanksPerBankGroup 4 10 | numRowsPerBank 32768 11 | numColsPerBank 2048 12 | numBytesPerTransaction 64 13 | relCommandWidth 1 14 | readWriteRatio 0.667 15 | boolUseReadA 0 16 | boolUseWriteA 0 17 | boolUseRefresh 1 18 | boolCmdQueueFindAnyIssuable 1 19 | boolPrintCmdTrace 0 20 | strCmdTraceFile - 21 | strAddressMapStr _r_l_R_B_b_h_ # __r:15_l:11__bb__R__BB__h:5__ 22 | bankPolicy CLOSE 23 | randomSeed 0 24 | -------------------------------------------------------------------------------- /src/sst/elements/CramSim/tests/get_macsim.sh: -------------------------------------------------------------------------------- 1 | git clone https://github.com/gthparch/macsim ../../macsimComponent 2 | cd ../../macsimComponent 3 | git checkout 2bdf916fbb5e96d8f22dc7364bfa9a90110fb4b0 4 | patch -p0 < ../CramSim/tests/patches/macsim.patch 5 | -------------------------------------------------------------------------------- /src/sst/elements/CramSim/tests/macsim_trace_file_list: -------------------------------------------------------------------------------- 1 | 1 2 | ../../macsimComponent/sst-unit-test/traces/vectoradd/kernel_config.txt 3 | -------------------------------------------------------------------------------- /src/sst/elements/CramSim/tests/patches/core.patch: -------------------------------------------------------------------------------- 1 | diff --git src/sst/core/configGraph.cc src/sst/core/configGraph.cc 2 | index 0eb0a2c..44f0d1f 100644 3 | --- src/sst/core/configGraph.cc 4 | +++ src/sst/core/configGraph.cc 5 | @@ -426,9 +426,11 @@ ConfigGraph::checkForStructuralErrors() 6 | if (!Factory::getFactory()->isPortNameValid(ccomp->type, link.port[j]) ) { 7 | // For now this is not a fatal error 8 | // found_error = true; 9 | - output.fatal(CALL_INFO, 1, "ERROR: Attempling to connect to unknown port: %s, " 10 | + /*output.fatal(CALL_INFO, 1, "ERROR: Attempling to connect to unknown port: %s, " 11 | "in component %s of type %s.\n", 12 | link.port[j].c_str(), ccomp->name.c_str(), ccomp->type.c_str()); 13 | + */ 14 | + output.output("Attempling to connect to unknown port\n"); 15 | count--; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/sst/elements/CramSim/tests/refFiles/test_CramSim_1_R.out: -------------------------------------------------------------------------------- 1 | Config file: ddr4_verimem.cfg 2 | Trace file: traces/sst-CramSim-trace_verimem_1_R.trc 3 | Address map string: _r_l_R_B_b_h_ 4 | Attaching Channel0 to Rank0 5 | Attaching Channel0 to Rank1 6 | Deleting DIMM 7 | Refresh's sent out: 0 8 | Total Read-Txns Requests send: 1982 9 | Total Write-Txns Requests send: 0 10 | Read-Txns-Received: 1930 11 | Write-Txns-Received: 0 12 | Total Txns Received: 1930 13 | Cycles Per Transaction (CPT) = 56.9948 14 | Component Finished. 15 | virtual SST::n_Bank::c_CmdUnit::~c_CmdUnit() 16 | Simulation is complete, simulated time: 110 us 17 | -------------------------------------------------------------------------------- /src/sst/elements/CramSim/tests/refFiles/test_CramSim_1_RW.out: -------------------------------------------------------------------------------- 1 | Config file: ddr4_verimem.cfg 2 | Trace file: traces/sst-CramSim-trace_verimem_1_RW.trc 3 | Address map string: _r_l_R_B_b_h_ 4 | Attaching Channel0 to Rank0 5 | Attaching Channel0 to Rank1 6 | Deleting DIMM 7 | Refresh's sent out: 0 8 | Total Read-Txns Requests send: 907 9 | Total Write-Txns Requests send: 906 10 | Read-Txns-Received: 880 11 | Write-Txns-Received: 880 12 | Total Txns Received: 1760 13 | Cycles Per Transaction (CPT) = 62.5 14 | Component Finished. 15 | virtual SST::n_Bank::c_CmdUnit::~c_CmdUnit() 16 | Simulation is complete, simulated time: 110 us 17 | -------------------------------------------------------------------------------- /src/sst/elements/CramSim/tests/refFiles/test_CramSim_1_W.out: -------------------------------------------------------------------------------- 1 | Config file: ddr4_verimem.cfg 2 | Trace file: traces/sst-CramSim-trace_verimem_1_W.trc 3 | Address map string: _r_l_R_B_b_h_ 4 | Attaching Channel0 to Rank0 5 | Attaching Channel0 to Rank1 6 | Deleting DIMM 7 | Refresh's sent out: 0 8 | Total Read-Txns Requests send: 0 9 | Total Write-Txns Requests send: 1670 10 | Read-Txns-Received: 0 11 | Write-Txns-Received: 1618 12 | Total Txns Received: 1618 13 | Cycles Per Transaction (CPT) = 67.9852 14 | Component Finished. 15 | virtual SST::n_Bank::c_CmdUnit::~c_CmdUnit() 16 | Simulation is complete, simulated time: 110 us 17 | -------------------------------------------------------------------------------- /src/sst/elements/CramSim/tests/refFiles/test_CramSim_2_R.out: -------------------------------------------------------------------------------- 1 | Config file: ddr4_verimem.cfg 2 | Trace file: traces/sst-CramSim-trace_verimem_2_R.trc 3 | Address map string: _r_l_R_B_b_h_ 4 | Attaching Channel0 to Rank0 5 | Attaching Channel0 to Rank1 6 | Deleting DIMM 7 | Refresh's sent out: 0 8 | Total Read-Txns Requests send: 1982 9 | Total Write-Txns Requests send: 0 10 | Read-Txns-Received: 1930 11 | Write-Txns-Received: 0 12 | Total Txns Received: 1930 13 | Cycles Per Transaction (CPT) = 56.9948 14 | Component Finished. 15 | virtual SST::n_Bank::c_CmdUnit::~c_CmdUnit() 16 | Simulation is complete, simulated time: 110 us 17 | -------------------------------------------------------------------------------- /src/sst/elements/CramSim/tests/refFiles/test_CramSim_2_W.out: -------------------------------------------------------------------------------- 1 | Config file: ddr4_verimem.cfg 2 | Trace file: traces/sst-CramSim-trace_verimem_2_W.trc 3 | Address map string: _r_l_R_B_b_h_ 4 | Attaching Channel0 to Rank0 5 | Attaching Channel0 to Rank1 6 | Deleting DIMM 7 | Refresh's sent out: 0 8 | Total Read-Txns Requests send: 0 9 | Total Write-Txns Requests send: 1670 10 | Read-Txns-Received: 0 11 | Write-Txns-Received: 1618 12 | Total Txns Received: 1618 13 | Cycles Per Transaction (CPT) = 67.9852 14 | Component Finished. 15 | virtual SST::n_Bank::c_CmdUnit::~c_CmdUnit() 16 | Simulation is complete, simulated time: 110 us 17 | -------------------------------------------------------------------------------- /src/sst/elements/CramSim/tests/refFiles/test_CramSim_4_R.out: -------------------------------------------------------------------------------- 1 | Config file: ddr4_verimem.cfg 2 | Trace file: traces/sst-CramSim-trace_verimem_4_R.trc 3 | Address map string: _r_l_R_B_b_h_ 4 | Attaching Channel0 to Rank0 5 | Attaching Channel0 to Rank1 6 | Deleting DIMM 7 | Refresh's sent out: 0 8 | Total Read-Txns Requests send: 7639 9 | Total Write-Txns Requests send: 0 10 | Read-Txns-Received: 7586 11 | Write-Txns-Received: 0 12 | Total Txns Received: 7586 13 | Cycles Per Transaction (CPT) = 14.5004 14 | Component Finished. 15 | virtual SST::n_Bank::c_CmdUnit::~c_CmdUnit() 16 | Simulation is complete, simulated time: 110 us 17 | -------------------------------------------------------------------------------- /src/sst/elements/CramSim/tests/refFiles/test_CramSim_4_W.out: -------------------------------------------------------------------------------- 1 | Config file: ddr4_verimem.cfg 2 | Trace file: traces/sst-CramSim-trace_verimem_4_W.trc 3 | Address map string: _r_l_R_B_b_h_ 4 | Attaching Channel0 to Rank0 5 | Attaching Channel0 to Rank1 6 | Deleting DIMM 7 | Refresh's sent out: 0 8 | Total Read-Txns Requests send: 0 9 | Total Write-Txns Requests send: 6429 10 | Read-Txns-Received: 0 11 | Write-Txns-Received: 6376 12 | Total Txns Received: 6376 13 | Cycles Per Transaction (CPT) = 17.2522 14 | Component Finished. 15 | virtual SST::n_Bank::c_CmdUnit::~c_CmdUnit() 16 | Simulation is complete, simulated time: 110 us 17 | -------------------------------------------------------------------------------- /src/sst/elements/CramSim/tests/refFiles/test_CramSim_5_R.out: -------------------------------------------------------------------------------- 1 | Config file: ddr4_verimem.cfg 2 | Trace file: traces/sst-CramSim-trace_verimem_5_R.trc 3 | Address map string: _r_l_R_B_b_h_ 4 | Attaching Channel0 to Rank0 5 | Attaching Channel0 to Rank1 6 | Deleting DIMM 7 | Refresh's sent out: 0 8 | Total Read-Txns Requests send: 24761 9 | Total Write-Txns Requests send: 0 10 | Read-Txns-Received: 24705 11 | Write-Txns-Received: 0 12 | Total Txns Received: 24705 13 | Cycles Per Transaction (CPT) = 4.45254 14 | Component Finished. 15 | virtual SST::n_Bank::c_CmdUnit::~c_CmdUnit() 16 | Simulation is complete, simulated time: 110 us 17 | -------------------------------------------------------------------------------- /src/sst/elements/CramSim/tests/refFiles/test_CramSim_5_W.out: -------------------------------------------------------------------------------- 1 | Config file: ddr4_verimem.cfg 2 | Trace file: traces/sst-CramSim-trace_verimem_5_W.trc 3 | Address map string: _r_l_R_B_b_h_ 4 | Attaching Channel0 to Rank0 5 | Attaching Channel0 to Rank1 6 | Deleting DIMM 7 | Refresh's sent out: 0 8 | Total Read-Txns Requests send: 0 9 | Total Write-Txns Requests send: 24995 10 | Read-Txns-Received: 0 11 | Write-Txns-Received: 24940 12 | Total Txns Received: 24940 13 | Cycles Per Transaction (CPT) = 4.41059 14 | Component Finished. 15 | virtual SST::n_Bank::c_CmdUnit::~c_CmdUnit() 16 | Simulation is complete, simulated time: 110 us 17 | -------------------------------------------------------------------------------- /src/sst/elements/CramSim/tests/refFiles/test_CramSim_6_R.out: -------------------------------------------------------------------------------- 1 | Config file: ddr4_verimem.cfg 2 | Trace file: traces/sst-CramSim-trace_verimem_6_R.trc 3 | Address map string: _r_l_R_B_b_h_ 4 | Attaching Channel0 to Rank0 5 | Attaching Channel0 to Rank1 6 | Deleting DIMM 7 | Refresh's sent out: 0 8 | Total Read-Txns Requests send: 25185 9 | Total Write-Txns Requests send: 0 10 | Read-Txns-Received: 25129 11 | Write-Txns-Received: 0 12 | Total Txns Received: 25129 13 | Cycles Per Transaction (CPT) = 4.37741 14 | Component Finished. 15 | virtual SST::n_Bank::c_CmdUnit::~c_CmdUnit() 16 | Simulation is complete, simulated time: 110 us 17 | -------------------------------------------------------------------------------- /src/sst/elements/CramSim/tests/refFiles/test_CramSim_6_W.out: -------------------------------------------------------------------------------- 1 | Config file: ddr4_verimem.cfg 2 | Trace file: traces/sst-CramSim-trace_verimem_6_W.trc 3 | Address map string: _r_l_R_B_b_h_ 4 | Attaching Channel0 to Rank0 5 | Attaching Channel0 to Rank1 6 | Deleting DIMM 7 | Refresh's sent out: 0 8 | Total Read-Txns Requests send: 0 9 | Total Write-Txns Requests send: 24831 10 | Read-Txns-Received: 0 11 | Write-Txns-Received: 24776 12 | Total Txns Received: 24776 13 | Cycles Per Transaction (CPT) = 4.43978 14 | Component Finished. 15 | virtual SST::n_Bank::c_CmdUnit::~c_CmdUnit() 16 | Simulation is complete, simulated time: 110 us 17 | -------------------------------------------------------------------------------- /src/sst/elements/CramSim/traces/.gitignore: -------------------------------------------------------------------------------- 1 | .backups 2 | masterSeq.seq* 3 | simple_*.trc 4 | sst-CramSim-trace* -------------------------------------------------------------------------------- /src/sst/elements/CramSim/traces/map01: -------------------------------------------------------------------------------- 1 | # This is little-endian (MSB first) 2 | # key 3 | # C - channel/MC 4 | # R - rank 5 | # B - bankGroup 6 | # b - bank 7 | # r - row 8 | # l - column 9 | # h - cacheline 10 | # 11 | # This map matches the default present in ddr4.cfg for CramSim 12 | # 13 | r:15 l:11 R:1 B:2 b:2 h:5 14 | -------------------------------------------------------------------------------- /src/sst/elements/CramSim/traces/map03: -------------------------------------------------------------------------------- 1 | # This is little-endian (MSB first) 2 | # key 3 | # C - channel/MC 4 | # R - rank 5 | # B - bankGroup 6 | # b - bank 7 | # r - row 8 | # l - column 9 | # h - cacheline 10 | r:15 l:2 R:1 l:4 b:2 B:2 C:3 h:7 11 | -------------------------------------------------------------------------------- /src/sst/elements/CramSim/traces/map_hbm: -------------------------------------------------------------------------------- 1 | # This is little-endian (MSB first) 2 | # key 3 | # C - channel/MC 4 | # c - pseudo channel 5 | # R - rank 6 | # B - bankGroup 7 | # b - bank 8 | # r - row 9 | # l - column 10 | # h - cacheline 11 | # 12 | # This map matches the default present in hbm_verimem.cfg for CramSiM 13 | # 14 | c:0 C:3 R:0 r:14 l:6 B:1 b:2 h:5 15 | -------------------------------------------------------------------------------- /src/sst/elements/CramSim/traces/masterSeq: -------------------------------------------------------------------------------- 1 | # this is the master sequence file 2 | # Order is 3 | # channel rank bankgroup bank row col cacheline 4 | #CR B b r l h 5 | . . . . 1 2 . 6 | . . . . 2 1 . 7 | . . . 1 3 2 . 8 | . . 1:2 . 3 2 . 9 | . . 1:3 . 3 2 . 10 | . . 1 . 3 2 . 11 | . . 1 2:2 4 3 . 12 | . . 1 2:3 4 3 . 13 | . . 1 2 4 3 . 14 | . 3 1 2 5 4 . 15 | -------------------------------------------------------------------------------- /src/sst/elements/CramSim/traces/seq_hbm: -------------------------------------------------------------------------------- 1 | # this is the master sequence file 2 | # Order is 3 | # Pseudo Channel rank bankgroup bank row col cacheline 4 | #c C R B b r l h 5 | . 1 . 2 1 . . . 6 | 1 . . 2 1 . . . 7 | -------------------------------------------------------------------------------- /src/sst/elements/CramSim/usimm_config.cfg: -------------------------------------------------------------------------------- 1 | clockCycle 1ns 2 | stopAtCycle 442948245ns 3 | numTxnQEntries 32 4 | numCmdQEntries 16 5 | numChannels 1 6 | numRanksPerChannel 2 7 | numBankGroupsPerRank 4 8 | numBanksPerBankGroup 1 9 | numRowsPerBank 32768 10 | numColsPerBank 2048 11 | numBytesPerTransaction 64 12 | relCommandWidth 1 13 | readWriteRatio 1 14 | boolUseReadA 0 15 | boolUseWriteA 0 16 | boolCmdQueueFindAnyIssuable 1 17 | nRC 39 18 | nRRD 5 19 | nRRD_L 6 20 | nRRD_S 4 21 | nRCD 11 22 | nCCD 4 23 | nCCD_L 6 24 | nCCD_L_WR 1 25 | nCCD_S 4 26 | nAL 15 27 | nCL 16 28 | nCWL 12 29 | nWR 12 30 | nWTR 6 31 | nWTR_L 9 32 | nWTR_S 3 33 | nRTW 4 34 | nEWTR 6 35 | nERTW 6 36 | nEWTW 6 37 | nERTR 6 38 | nRAS 28 39 | nRTP 6 40 | nRP 16 41 | nRFC 128 42 | nREFI 6240 43 | nFAW 32 44 | nBL 4 45 | -------------------------------------------------------------------------------- /src/sst/elements/CramSim/verify.cfg: -------------------------------------------------------------------------------- 1 | clockCycle 1ns 2 | stopAtCycle 1000000ns 3 | numTxnQEntries 32 4 | numCmdQEntries 16 5 | numChannels 1 6 | numRanksPerChannel 2 7 | numBankGroupsPerRank 4 8 | numBanksPerBankGroup 4 9 | numRowsPerBank 32768 10 | numColsPerBank 2048 11 | numBytesPerTransaction 64 12 | relCommandWidth 1 13 | txnSchedulingPolicy FCFS #FCFS, FRFCFS 14 | boolReadFirstTxnScheduling 0 15 | pendingWriteThreshold 0.8 16 | boolEnableQuickRes 0 17 | readWriteRatio 0.667 18 | boolUseReadA 0 19 | boolUseWriteA 0 20 | boolUseRefresh 1 21 | boolAllocateCmdResPRE 0 22 | boolPrintCmdTrace 1 23 | strCmdTraceFile verifyNewArch.trc 24 | verbose 0 25 | strAddressMapStr _r_l_R_B_b_h_ # __r:15_l:11__bb__R__BB__h:5__ 26 | bankPolicy OPEN 27 | randomSeed 0 28 | nRC 55 29 | nRRD 4 30 | nRRD_L 6 31 | nRRD_S 4 32 | nRCD 16 33 | nCCD 4 34 | nCCD_L 6 35 | nCCD_L_WR 1 36 | nCCD_S 4 37 | nAL 15 38 | nCL 16 39 | nCWL 12 40 | nWR 18 41 | nWTR 3 42 | nWTR_L 9 43 | nWTR_S 3 44 | nRTW 4 45 | nEWTR 6 46 | nERTW 6 47 | nEWTW 6 48 | nERTR 6 49 | nRAS 39 50 | nRTP 9 51 | nRP 16 52 | nRFC 420 53 | nREFI 9360 54 | nFAW 16 55 | nBL 4 56 | -------------------------------------------------------------------------------- /src/sst/elements/GNA/Makefile.am: -------------------------------------------------------------------------------- 1 | # -*- Makefile -*- 2 | # 3 | # 4 | 5 | AM_CPPFLAGS = \ 6 | $(MPI_CPPFLAGS) \ 7 | -I$(top_srcdir)/src 8 | 9 | compdir = $(pkglibdir) 10 | comp_LTLIBRARIES = libGNA.la 11 | libGNA_la_SOURCES = \ 12 | gna_lib.h \ 13 | neuron.h \ 14 | sts.h \ 15 | sts.cc \ 16 | GNA.cc \ 17 | GNA.h 18 | 19 | EXTRA_DIST = \ 20 | tests/testsuite_default_GNA.py \ 21 | tests/test_GNA_1.py \ 22 | tests/refFiles/test_GNA_1.out \ 23 | tests/test.py \ 24 | tests/test.ref.out \ 25 | README 26 | 27 | 28 | libGNA_la_LDFLAGS = -module -avoid-version 29 | 30 | install-exec-hook: 31 | $(SST_REGISTER_TOOL) SST_ELEMENT_SOURCE GNA=$(abs_srcdir) 32 | $(SST_REGISTER_TOOL) SST_ELEMENT_TESTS GNA=$(abs_srcdir)/tests 33 | 34 | ########################################################################## 35 | ########################################################################## 36 | ########################################################################## 37 | 38 | 39 | -------------------------------------------------------------------------------- /src/sst/elements/GNA/README: -------------------------------------------------------------------------------- 1 | 2 | 3 | Implementation of a 'Generic Neural Architecture' based on the STPU work (Hill et All, ICRC 2017, "A Spike-Timing Neuromorphic Architecture", 10.1109/ICRC.2017.8123631) 4 | 5 | General simulation process: 6 | 7 | 0) GNA in idle state waiting for user input. If user sends EXEC command 8 | proceed to step 1, otherwise, stay idle. 9 | 1) process any firing events currently stored in output aggregation FIFO 10 | into neuronal matrix based on connectivity defined in specified CSE context. 11 | 2) Perform single LIF operation on neuronal matrix. 12 | 3) Collect firing events (if any) into output aggregation FIFO. 13 | 4) If more LIFs to perform or more CSEs to process, then return to step 0, 14 | otherwise, dump aggregated firing events to host machine and return to step 15 | 0. 16 | 17 | 18 | TODO: 19 | Set Neuron values as (variable precision) ints or floats 20 | time delay for output consoldiation? 21 | statistics (request q size) 22 | switch to output, rm printf()s 23 | make sure maxOutMem works 24 | -------------------------------------------------------------------------------- /src/sst/elements/GNA/tests/sweep.csh: -------------------------------------------------------------------------------- 1 | #!/bin/tcsh 2 | 3 | #foreach c (1 4 16 64) 4 | foreach c (${1}) 5 | foreach s (32 128 512 2048) 6 | set fileN = test-${c}K-${s}.out 7 | echo "running $fileN" 8 | rm -f $fileN 9 | time sst ./test.py -- -n 2500 -c $c -s $s -m $s >& $fileN & 10 | sleep 1 11 | end 12 | wait 13 | echo "done cache = ${c}K" 14 | end 15 | 16 | -------------------------------------------------------------------------------- /src/sst/elements/GNA/tests/sweep2.csh: -------------------------------------------------------------------------------- 1 | #!/bin/tcsh 2 | 3 | #foreach c (16 32 64 128) 4 | foreach c (${1}) 5 | foreach s (32 64 128 256) 6 | set fileN = test-${c}K-${s}.out 7 | echo "running $fileN" 8 | rm -f $fileN 9 | time sst ./test.py -- -n 20000 -c $c -s $s -m 32 >& $fileN & 10 | sleep 1 11 | end 12 | wait 13 | echo "done cache = ${c}K" 14 | end 15 | 16 | -------------------------------------------------------------------------------- /src/sst/elements/Makefile.am: -------------------------------------------------------------------------------- 1 | DIST_SUBDIRS = $(SST_DIST_ELEMENT_LIBRARIES) 2 | SUBDIRS = $(SST_ACTIVE_ELEMENT_LIBRARIES) 3 | -------------------------------------------------------------------------------- /src/sst/elements/Messier/README: -------------------------------------------------------------------------------- 1 | 2 | Messier is the element used to model Non-Volatile Memory (NVM) technologies, which includes: 3 | 4 | - NVM-tuned Memory Controller 5 | - NVM Internal Banks and Ranks modeling 6 | - Messier is intended to be highly configurible, to explore different design parameters of future emerging NVM devices. 7 | -------------------------------------------------------------------------------- /src/sst/elements/Messier/configure.m4: -------------------------------------------------------------------------------- 1 | dnl -*- Autoconf -*- 2 | 3 | AC_DEFUN([SST_Messier_CONFIG], [ 4 | sst_Messier_comp_happy="yes" 5 | AS_IF([test "x$sst_Messier_comp_happy" = "xyes"], [$1], [$2]) 6 | ]) 7 | -------------------------------------------------------------------------------- /src/sst/elements/Messier/libMessier.cpp: -------------------------------------------------------------------------------- 1 | // Copyright 2009-2021 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-2021, 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 | 13 | 14 | // Author: Amro Awad (E-mail aawad@sandia.gov) 15 | // 16 | #include 17 | #include 18 | 19 | using namespace SST; 20 | using namespace SST::MessierComponent; 21 | 22 | -------------------------------------------------------------------------------- /src/sst/elements/Opal/configure.m4: -------------------------------------------------------------------------------- 1 | dnl -*- Autoconf -*- 2 | 3 | AC_DEFUN([SST_Opal_CONFIG], [ 4 | sst_Opal_comp_happy="yes" 5 | AS_IF([test "x$sst_Opal_comp_happy" = "xyes"], [$1], [$2]) 6 | ]) 7 | -------------------------------------------------------------------------------- /src/sst/elements/Opal/tests/app/makefile: -------------------------------------------------------------------------------- 1 | CXX=g++ 2 | 3 | opal_test: opal_test.o 4 | $(CXX) -O0 -o opal_test -fopenmp opal_test.o 5 | 6 | opal_test.o: opal_test.c 7 | $(CXX) -O0 -o opal_test.o -fopenmp -c opal_test.c 8 | 9 | opal_mlm: opal_mlm.o 10 | $(CXX) -O0 -o opal_mlm -fopenmp opal_mlm.o 11 | 12 | opal_mlm.o: opal_mlm.c 13 | $(CXX) -O0 -o opal_mlm.o -fopenmp -c opal_mlm.c 14 | 15 | all: opal_test opal_mlm 16 | 17 | clean: 18 | rm opal_test opal_test.o opal_mlm opal_mlm.o 19 | 20 | -------------------------------------------------------------------------------- /src/sst/elements/Samba/README: -------------------------------------------------------------------------------- 1 | 2 | Next steps: 3 | 4 | - Instead of sending the page table walks to random physical address, using the content of a real page table. This is important for RISC-V processor model and full-system efforts. 5 | -------------------------------------------------------------------------------- /src/sst/elements/Samba/configure.m4: -------------------------------------------------------------------------------- 1 | dnl -*- Autoconf -*- 2 | 3 | AC_DEFUN([SST_Samba_CONFIG], [ 4 | sst_samba_comp_happy="yes" 5 | AS_IF([test "x$sst_samba_comp_happy" = "xyes"], [$1], [$2]) 6 | ]) 7 | -------------------------------------------------------------------------------- /src/sst/elements/Samba/libSamba.cc: -------------------------------------------------------------------------------- 1 | // Copyright 2009-2021 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-2021, 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 | /* Author: Amro Awad 13 | * E-mail: aawad@sandia.gov 14 | */ 15 | 16 | 17 | #include 18 | 19 | #include "sst/core/component.h" 20 | 21 | #include "Samba.h" 22 | #include "TLBhierarchy.h" 23 | #include 24 | 25 | using namespace SST; 26 | using namespace SST::SambaComponent; 27 | 28 | -------------------------------------------------------------------------------- /src/sst/elements/VaultSimC/Makefile.am: -------------------------------------------------------------------------------- 1 | # -*- Makefile -*- 2 | # 3 | # 4 | 5 | 6 | EXTRA_DIST = \ 7 | tests/testsuite_default_VaultSim.py \ 8 | tests/sdl1.ref \ 9 | tests/sdl2.ref \ 10 | tests/sdl3.xml.ref \ 11 | tests/sdl1.py \ 12 | tests/sdl2.py \ 13 | tests/sdl3.py \ 14 | tests/stream-8coreVault_1.6GHz-M5.xml \ 15 | tests/refFiles/test_VaultSim_sdl1.out \ 16 | tests/refFiles/test_VaultSim_sdl2.out 17 | 18 | compdir = $(pkglibdir) 19 | comp_LTLIBRARIES = libVaultSimC.la 20 | 21 | libVaultSimC_la_SOURCES = \ 22 | logicLayer.h \ 23 | logicLayer.cpp \ 24 | cpu.h \ 25 | cpu.cpp \ 26 | app.cpp \ 27 | VaultSimC.cpp \ 28 | VaultSimC.h \ 29 | memReqEvent.h \ 30 | vaultGlobals.h 31 | 32 | libVaultSimC_la_CPPFLAGS = $(MPI_CPPFLAGS) \ 33 | -I$(top_srcdir)/src 34 | libVaultSimC_la_LDFLAGS = -module -avoid-version 35 | 36 | install-exec-hook: 37 | $(SST_REGISTER_TOOL) SST_ELEMENT_SOURCE VaultSimC=$(abs_srcdir) 38 | $(SST_REGISTER_TOOL) SST_ELEMENT_TESTS VaultSimC=$(abs_srcdir)/tests 39 | -------------------------------------------------------------------------------- /src/sst/elements/VaultSimC/tests/refFiles/test_VaultSim_sdl2.out: -------------------------------------------------------------------------------- 1 | making cpu 2 | Connected 8 Vaults 3 | Connected 8 Vaults 4 | 1024: out:2027 ops/cycle:31.02 5 | 2048: out:2048 ops/cycle:31.51 6 | 3072: out:2048 ops/cycle:31.67 7 | 4096: out:2022 ops/cycle:31.76 8 | 5120: out:2047 ops/cycle:31.80 9 | 6144: out:2045 ops/cycle:31.83 10 | 7168: out:2043 ops/cycle:31.86 11 | 8192: out:2047 ops/cycle:31.88 12 | 9216: out:2034 ops/cycle:31.89 13 | 10240: out:2048 ops/cycle:31.90 14 | 11264: out:2048 ops/cycle:31.91 15 | 12288: out:2048 ops/cycle:31.92 16 | 13312: out:2045 ops/cycle:31.92 17 | 14336: out:2047 ops/cycle:31.93 18 | 15360: out:2048 ops/cycle:31.93 19 | 16384: out:2039 ops/cycle:31.94 20 | 17408: out:2045 ops/cycle:31.94 21 | 18432: out:2034 ops/cycle:31.95 22 | 19456: out:2046 ops/cycle:31.95 23 | 20480: out:2042 ops/cycle:31.95 24 | 21504: out:2048 ops/cycle:31.95 25 | 22528: out:2047 ops/cycle:31.96 26 | 23552: out:2044 ops/cycle:31.96 27 | 24576: out:2048 ops/cycle:31.96 28 | CPU completed 798978 memOps 29 | CPU issued 15768988 inst 30 | Simulation is complete, simulated time: 50 us 31 | -------------------------------------------------------------------------------- /src/sst/elements/VaultSimC/tests/runTests.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | #for sdl in sdl*.xml ; 4 | #do 5 | # echo ${sdl} 6 | # rm -f ${sdl}.new 7 | # sst.x $sdl > ${sdl}.new 2>&1 8 | # diff -q ${sdl}.ref ${sdl}.new && rm -f ${sdl}.new 9 | #done 10 | 11 | runCmd() { 12 | if [ -z $1 ] 13 | then 14 | echo "Need to pass a param." 15 | return 1 16 | fi 17 | rm -f ${1}.new 18 | echo ${1} 19 | sst.x ${1} > ${1}.new 2>&1 && (diff -q ${1}.ref ${1}.new && rm -f ${1}.new) || echo "${1} failed." 20 | } 21 | 22 | export -f runCmd 23 | 24 | find . -maxdepth 1 -name sdl\*.xml -print0 | xargs -0 -n 1 -P 4 bash -c 'runCmd "$0"' 25 | 26 | 27 | 28 | rm -f dramsim*log 29 | -------------------------------------------------------------------------------- /src/sst/elements/VaultSimC/tests/sdl1.ref: -------------------------------------------------------------------------------- 1 | making cpu 2 | Connected 8 Vaults 3 | Inserting stop event at cycle 50us, 50000000 4 | 1024: out:6 ops/cycle:0.38 5 | 2048: out:9 ops/cycle:0.38 6 | 3072: out:11 ops/cycle:0.38 7 | 4096: out:13 ops/cycle:0.39 8 | 5120: out:9 ops/cycle:0.39 9 | 6144: out:13 ops/cycle:0.39 10 | 7168: out:13 ops/cycle:0.38 11 | 8192: out:14 ops/cycle:0.38 12 | 9216: out:9 ops/cycle:0.38 13 | 10240: out:13 ops/cycle:0.39 14 | 11264: out:9 ops/cycle:0.38 15 | 12288: out:7 ops/cycle:0.38 16 | 13312: out:9 ops/cycle:0.38 17 | 14336: out:8 ops/cycle:0.38 18 | 15360: out:16 ops/cycle:0.38 19 | 16384: out:11 ops/cycle:0.39 20 | 17408: out:14 ops/cycle:0.39 21 | 18432: out:16 ops/cycle:0.39 22 | 19456: out:13 ops/cycle:0.39 23 | 20480: out:14 ops/cycle:0.39 24 | 21504: out:11 ops/cycle:0.39 25 | 22528: out:5 ops/cycle:0.39 26 | 23552: out:12 ops/cycle:0.39 27 | 24576: out:13 ops/cycle:0.39 28 | CPU completed 9755 memOps 29 | CPU issued 189721 inst 30 | Simulation is complete, simulated time: 50 us 31 | -------------------------------------------------------------------------------- /src/sst/elements/VaultSimC/tests/sdl2.ref: -------------------------------------------------------------------------------- 1 | making cpu 2 | Connected 8 Vaults 3 | Connected 8 Vaults 4 | Inserting stop event at cycle 50us, 50000000 5 | 1024: out:2025 ops/cycle:31.02 6 | 2048: out:2048 ops/cycle:31.51 7 | 3072: out:2036 ops/cycle:31.67 8 | 4096: out:2045 ops/cycle:31.75 9 | 5120: out:2044 ops/cycle:31.80 10 | 6144: out:2038 ops/cycle:31.84 11 | 7168: out:2048 ops/cycle:31.86 12 | 8192: out:2048 ops/cycle:31.88 13 | 9216: out:2030 ops/cycle:31.89 14 | 10240: out:2048 ops/cycle:31.90 15 | 11264: out:2048 ops/cycle:31.91 16 | 12288: out:2048 ops/cycle:31.92 17 | 13312: out:2048 ops/cycle:31.92 18 | 14336: out:2046 ops/cycle:31.93 19 | 15360: out:2043 ops/cycle:31.93 20 | 16384: out:2038 ops/cycle:31.94 21 | 17408: out:2042 ops/cycle:31.94 22 | 18432: out:2039 ops/cycle:31.95 23 | 19456: out:2048 ops/cycle:31.95 24 | 20480: out:2034 ops/cycle:31.95 25 | 21504: out:2042 ops/cycle:31.95 26 | 22528: out:2048 ops/cycle:31.96 27 | 23552: out:2045 ops/cycle:31.96 28 | 24576: out:2048 ops/cycle:31.96 29 | CPU completed 798974 memOps 30 | CPU issued 15768988 inst 31 | Simulation is complete, simulated time: 50 us 32 | -------------------------------------------------------------------------------- /src/sst/elements/VaultSimC/tests/stream.1K: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stonne-simulator/sst-elements-with-stonne/82cf0b29f384fa658a072724c303b40dee0331ec/src/sst/elements/VaultSimC/tests/stream.1K -------------------------------------------------------------------------------- /src/sst/elements/VaultSimC/vaultGlobals.h: -------------------------------------------------------------------------------- 1 | // Copyright 2009-2021 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-2021, NTESS 6 | // All rights reserved. 7 | // 8 | // Portions are copyright of other developers: 9 | // See the file CONTRIBUTORS.TXT in the top level directory 10 | // the distribution for more information. 11 | // 12 | // This file is part of the SST software package. For license 13 | // information, see the LICENSE file in the top level directory of the 14 | // distribution. 15 | 16 | #ifndef VAULTGLOBALS_H 17 | #define VAULTGLOBALS_H 18 | 19 | namespace SST { 20 | namespace VaultSim { 21 | 22 | static const unsigned int LL_SHIFT = 12; // min hash between cubes in 1024 23 | static const unsigned int VAULT_SHIFT = 7; // min hash for vaults in 16 24 | static const unsigned int VAULT_MASK = ((1< 17 | 18 | void ariel_enable() { 19 | printf("ARIEL: ENABLE called in Ariel API.\n"); 20 | } 21 | 22 | void ariel_fence() { 23 | printf("ARIEL: FENCE called in Ariel API.\n"); 24 | } 25 | -------------------------------------------------------------------------------- /src/sst/elements/ariel/api/arielapi.h: -------------------------------------------------------------------------------- 1 | // Copyright 2009-2021 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-2021, NTESS 6 | // All rights reserved. 7 | // 8 | // Portions are copyright of other developers: 9 | // See the file CONTRIBUTORS.TXT in the top level directory 10 | // the distribution for more information. 11 | // 12 | // This file is part of the SST software package. For license 13 | // information, see the LICENSE file in the top level directory of the 14 | // distribution. 15 | 16 | 17 | #ifndef _H_ARIEL_CLIENT_API 18 | #define _H_ARIEL_CLIENT_API 19 | 20 | void ariel_enable(); 21 | void ariel_fence(); 22 | 23 | #endif 24 | -------------------------------------------------------------------------------- /src/sst/elements/ariel/app/env/Makefile: -------------------------------------------------------------------------------- 1 | 2 | CC=gcc 3 | CFLAGS=-O3 4 | LDFLAGS= 5 | 6 | env: env.c 7 | $(CC) $(CFLAGS) -o env env.c 8 | 9 | clean: 10 | rm env 11 | -------------------------------------------------------------------------------- /src/sst/elements/ariel/app/env/env.c: -------------------------------------------------------------------------------- 1 | // Copyright 2009-2021 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-2021, NTESS 6 | // All rights reserved. 7 | // 8 | // Portions are copyright of other developers: 9 | // See the file CONTRIBUTORS.TXT in the top level directory 10 | // the distribution for more information. 11 | // 12 | // This file is part of the SST software package. For license 13 | // information, see the LICENSE file in the top level directory of the 14 | // distribution. 15 | 16 | #include 17 | #include 18 | #include 19 | 20 | extern char **environ; 21 | 22 | int main(int argc, char* argv[]) { 23 | 24 | printf("SST Environment Printer\n"); 25 | 26 | int next_env_index = 0; 27 | 28 | while( NULL != environ[next_env_index] ) { 29 | char* key = strtok(environ[next_env_index], "="); 30 | char* value = strtok(NULL, "="); 31 | 32 | printf("%5d %30s = \"%s\"\n", next_env_index, key, value); 33 | next_env_index++; 34 | } 35 | 36 | return 0; 37 | } 38 | -------------------------------------------------------------------------------- /src/sst/elements/ariel/app/hellow/hello.c: -------------------------------------------------------------------------------- 1 | // Copyright 2009-2021 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-2021, NTESS 6 | // All rights reserved. 7 | // 8 | // Portions are copyright of other developers: 9 | // See the file CONTRIBUTORS.TXT in the top level directory 10 | // the distribution for more information. 11 | // 12 | // This file is part of the SST software package. For license 13 | // information, see the LICENSE file in the top level directory of the 14 | // distribution. 15 | 16 | #include 17 | #include 18 | 19 | int main(int argc, char* argv[]) { 20 | printf("Hello World\n"); 21 | 22 | return 0; 23 | } 24 | -------------------------------------------------------------------------------- /src/sst/elements/ariel/ariel_inst_class.h: -------------------------------------------------------------------------------- 1 | // Copyright 2009-2021 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-2021, NTESS 6 | // All rights reserved. 7 | // 8 | // Portions are copyright of other developers: 9 | // See the file CONTRIBUTORS.TXT in the top level directory 10 | // the distribution for more information. 11 | // 12 | // This file is part of the SST software package. For license 13 | // information, see the LICENSE file in the top level directory of the 14 | // distribution. 15 | 16 | #ifndef _H_SST_ARIEL_INST_CLASS 17 | #define _H_SST_ARIEL_INST_CLASS 18 | 19 | #define ARIEL_INST_UNKNOWN 0 20 | #define ARIEL_INST_SP_FP 1 21 | #define ARIEL_INST_DP_FP 2 22 | #define ARIEL_INST_INT 4 23 | 24 | #endif 25 | -------------------------------------------------------------------------------- /src/sst/elements/ariel/arielevent.cc: -------------------------------------------------------------------------------- 1 | // Copyright 2009-2021 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-2021, NTESS 6 | // All rights reserved. 7 | // 8 | // Portions are copyright of other developers: 9 | // See the file CONTRIBUTORS.TXT in the top level directory 10 | // the distribution for more information. 11 | // 12 | // This file is part of the SST software package. For license 13 | // information, see the LICENSE file in the top level directory of the 14 | // distribution. 15 | 16 | 17 | #include 18 | #include "arielevent.h" 19 | 20 | using namespace SST; 21 | using namespace SST::ArielComponent; 22 | 23 | ArielEvent::ArielEvent() { 24 | } 25 | 26 | ArielEvent::~ArielEvent() { 27 | } 28 | 29 | 30 | -------------------------------------------------------------------------------- /src/sst/elements/ariel/arielexitev.h: -------------------------------------------------------------------------------- 1 | // Copyright 2009-2021 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-2021, NTESS 6 | // All rights reserved. 7 | // 8 | // Portions are copyright of other developers: 9 | // See the file CONTRIBUTORS.TXT in the top level directory 10 | // the distribution for more information. 11 | // 12 | // This file is part of the SST software package. For license 13 | // information, see the LICENSE file in the top level directory of the 14 | // distribution. 15 | 16 | 17 | #ifndef _H_SST_ARIEL_EXIT_EVENT 18 | #define _H_SST_ARIEL_EXIT_EVENT 19 | 20 | #include "arielevent.h" 21 | 22 | using namespace SST; 23 | 24 | namespace SST { 25 | namespace ArielComponent { 26 | 27 | class ArielExitEvent : public ArielEvent { 28 | 29 | public: 30 | ArielExitEvent() {} 31 | ~ArielExitEvent() {} 32 | ArielEventType getEventType() const { 33 | return CORE_EXIT; 34 | } 35 | 36 | }; 37 | 38 | } 39 | } 40 | 41 | #endif 42 | -------------------------------------------------------------------------------- /src/sst/elements/ariel/arielfenceev.h: -------------------------------------------------------------------------------- 1 | // Copyright 2009-2021 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-2021, NTESS 6 | // All rights reserved. 7 | // 8 | // Portions are copyright of other developers: 9 | // See the file CONTRIBUTORS.TXT in the top level directory 10 | // the distribution for more information. 11 | // 12 | // This file is part of the SST software package. For license 13 | // information, see the LICENSE file in the top level directory of the 14 | // distribution. 15 | 16 | 17 | #ifndef _H_SST_ARIEL_FENCE_EVENT 18 | #define _H_SST_ARIEL_FENCE_EVENT 19 | 20 | #include "arielevent.h" 21 | 22 | using namespace SST; 23 | 24 | namespace SST { 25 | namespace ArielComponent { 26 | 27 | class ArielFenceEvent : public ArielEvent { 28 | 29 | public: 30 | ArielEventType getEventType() const { return FENCE; } 31 | 32 | }; 33 | 34 | } 35 | } 36 | 37 | #endif 38 | -------------------------------------------------------------------------------- /src/sst/elements/ariel/arielnoop.h: -------------------------------------------------------------------------------- 1 | // Copyright 2009-2021 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-2021, NTESS 6 | // All rights reserved. 7 | // 8 | // Portions are copyright of other developers: 9 | // See the file CONTRIBUTORS.TXT in the top level directory 10 | // the distribution for more information. 11 | // 12 | // This file is part of the SST software package. For license 13 | // information, see the LICENSE file in the top level directory of the 14 | // distribution. 15 | 16 | 17 | #ifndef _H_SST_ARIEL_NOOP_EVENT 18 | #define _H_SST_ARIEL_NOOP_EVENT 19 | 20 | #include "arielevent.h" 21 | 22 | using namespace SST; 23 | 24 | namespace SST { 25 | namespace ArielComponent { 26 | 27 | class ArielNoOpEvent : public ArielEvent { 28 | 29 | public: 30 | ArielNoOpEvent() {} 31 | ~ArielNoOpEvent() {} 32 | 33 | ArielEventType getEventType() const { 34 | return NOOP; 35 | } 36 | 37 | }; 38 | 39 | } 40 | } 41 | 42 | #endif 43 | -------------------------------------------------------------------------------- /src/sst/elements/ariel/configure.m4: -------------------------------------------------------------------------------- 1 | dnl -*- Autoconf -*- 2 | 3 | AC_DEFUN([SST_ariel_CONFIG], [ 4 | sst_check_ariel="yes" 5 | 6 | SST_CHECK_PINTOOL([have_pin=1],[have_pin=0],[AC_MSG_ERROR([PIN was requested but not found])]) 7 | SST_CHECK_PTRACE_SET_TRACER() 8 | SST_CHECK_SHM() 9 | 10 | # Use Cuda 11 | SST_CHECK_CUDA() 12 | 13 | # Use LIBZ 14 | SST_CHECK_LIBZ() 15 | 16 | AS_IF([test "$sst_check_ariel" = "yes"], [$1], [$2]) 17 | ]) 18 | -------------------------------------------------------------------------------- /src/sst/elements/ariel/frontend/simple/examples/stream/Makefile: -------------------------------------------------------------------------------- 1 | CXX=g++ 2 | 3 | stream: stream.o 4 | $(CXX) -O3 -o stream -fopenmp stream.o 5 | 6 | stream.o: stream.c 7 | $(CXX) -O3 -o stream.o -fopenmp -c stream.c 8 | 9 | stream_mlm: stream_mlm.o 10 | $(CXX) -O3 -o stream_mlm -fopenmp -I$(ARIELAPI) -L$(ARIELAPI) -larielapi stream_mlm.o 11 | 12 | stream_mlm.o: stream_malloc.c 13 | $(CXX) -O3 -o stream_mlm.o -fopenmp -I$(ARIELAPI) -L$(ARIELAPI) -larielapi -c stream_malloc.c 14 | 15 | all: stream stream_mlm 16 | 17 | clean: 18 | rm stream stream.o stream_mlm stream_mlm.o 19 | 20 | -------------------------------------------------------------------------------- /src/sst/elements/ariel/frontend/simple/examples/stream/malloc.txt: -------------------------------------------------------------------------------- 1 | 0 2 2 | -------------------------------------------------------------------------------- /src/sst/elements/ariel/tests/testopenMP/ompmybarrier/Makefile: -------------------------------------------------------------------------------- 1 | CXX=g++ 2 | 3 | ompmybarrier: ompmybarrier.o 4 | $(CXX) -O3 -o ompmybarrier -fopenmp ompmybarrier.o 5 | 6 | ompmybarrier.o: ompmybarrier.c 7 | $(CXX) -O3 -o ompmybarrier.o -fopenmp -c ompmybarrier.c 8 | 9 | clean: 10 | rm ompmybarrier ompmybarrier.o 11 | 12 | -------------------------------------------------------------------------------- /src/sst/elements/ariel/tests/testopenMP/ompmybarrier/ompmybarrier.c: -------------------------------------------------------------------------------- 1 | // Copyright 2009-2021 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-2021, NTESS 6 | // All rights reserved. 7 | // 8 | // Portions are copyright of other developers: 9 | // See the file CONTRIBUTORS.TXT in the top level directory 10 | // the distribution for more information. 11 | // 12 | // This file is part of the SST software package. For license 13 | // information, see the LICENSE file in the top level directory of the 14 | // distribution. 15 | 16 | #include 17 | #include 18 | #include 19 | 20 | int main(int argc, char* argv[]) { 21 | 22 | int counter; 23 | const int n = 16; 24 | int id; 25 | 26 | #pragma omp parallel private(counter, id) 27 | { 28 | id = omp_get_thread_num(); 29 | for(counter = 0; counter < n; counter++) { 30 | #pragma omp barrier 31 | 32 | printf("%d Performing iteration %d\n", id, counter); 33 | fflush(stdout); 34 | 35 | #pragma omp barrier 36 | } 37 | } 38 | 39 | } 40 | -------------------------------------------------------------------------------- /src/sst/elements/balar/Makefile.am: -------------------------------------------------------------------------------- 1 | AM_CPPFLAGS = \ 2 | $(MPIT_CPPFLAGS) 3 | 4 | AM_LDFLAGS = -lm 5 | compdir = $(pkglibdir) 6 | comp_LTLIBRARIES = libbalar.la 7 | 8 | libbalar_la_SOURCES = \ 9 | mempool.h \ 10 | mempool.cpp \ 11 | balar.cc \ 12 | balar.h 13 | 14 | libbalar_la_CPPFLAGS = \ 15 | -I$(top_srcdir)/src \ 16 | $(SST_CXX0X_FLAGS) -fPIC -Wall \ 17 | $(MPI_CPPFLAGS) \ 18 | $(CUDA_CPPFLAGS) 19 | 20 | libbalar_la_LDFLAGS = \ 21 | -avoid-version 22 | 23 | libbalar_la_LIBADD = \ 24 | $(SST_SYSTEMC_LIB) \ 25 | -L$(GPGPUSIM_LIBDIR) \ 26 | $(GPGPUSIM_LIB) 27 | 28 | install-exec-hook: 29 | $(SST_REGISTER_TOOL) SST_ELEMENT_SOURCE balar=$(abs_srcdir) 30 | $(SST_REGISTER_TOOL) SST_ELEMENT_TESTS balar=$(abs_srcdir)/tests 31 | -------------------------------------------------------------------------------- /src/sst/elements/balar/README.md: -------------------------------------------------------------------------------- 1 | # sst-gpgpusim 2 | SST GPGPU Simulation Components 3 | -------------------------------------------------------------------------------- /src/sst/elements/balar/configure.m4: -------------------------------------------------------------------------------- 1 | dnl -*- Autoconf -*- 2 | 3 | AC_DEFUN([SST_balar_CONFIG], [ 4 | sst_check_balarx="yes" 5 | 6 | SST_CHECK_GPGPUSIM([have_gpgpusim=1],[have_gpgpusim=0],[AC_MSG_ERROR([GPGPU-Sim required, but not found])]) 7 | 8 | AS_IF([test "$have_gpgpusim" = 1], [sst_check_balarx="yes"], [sst_check_balarx="no"]) 9 | AS_IF([test "$sst_check_balarx" = "yes"], [$1], [$2]) 10 | ]) 11 | -------------------------------------------------------------------------------- /src/sst/elements/balar/tests/vectorAdd/Makefile: -------------------------------------------------------------------------------- 1 | CXX=nvcc 2 | CXXFLAGS=-m64 -gencode=arch=compute_60,code=sm_60 -gencode=arch=compute_61,code=sm_61 -gencode=arch=compute_70,code=sm_70 -gencode=arch=compute_70,code=compute_70 3 | 4 | vectorAdd: vectorAdd.o 5 | $(CXX) -O3 --cudart shared -o vectorAdd vectorAdd.o 6 | 7 | vectorAdd.o: vecAdd.cu 8 | $(CXX) $(CXXFLAGS) -O3 -o vectorAdd.o -c vecAdd.cu 9 | 10 | all: vectorAdd 11 | 12 | clean: 13 | rm vectorAdd vectorAdd.o 14 | 15 | 16 | -------------------------------------------------------------------------------- /src/sst/elements/cacheTracer/Makefile.am: -------------------------------------------------------------------------------- 1 | # -*- Makefile -*- 2 | # 3 | # 4 | 5 | AM_CPPFLAGS = \ 6 | $(MPI_CPPFLAGS) \ 7 | -I$(top_srcdir)/src 8 | 9 | compdir = $(pkglibdir) 10 | comp_LTLIBRARIES = libcacheTracer.la 11 | libcacheTracer_la_SOURCES = \ 12 | cacheTracer.h \ 13 | cacheTracer.cc 14 | 15 | EXTRA_DIST = \ 16 | README \ 17 | tests/testsuite_default_cacheTracer.py \ 18 | tests/test_cacheTracer_1.py \ 19 | tests/test_cacheTracer_2.py \ 20 | tests/refFiles/test_cacheTracer_1.out \ 21 | tests/refFiles/test_cacheTracer_2_memRef.out 22 | 23 | libcacheTracer_la_LDFLAGS = -module -avoid-version 24 | 25 | install-exec-hook: 26 | $(SST_REGISTER_TOOL) SST_ELEMENT_SOURCE cacheTracer=$(abs_srcdir) 27 | $(SST_REGISTER_TOOL) SST_ELEMENT_TESTS cacheTracer=$(abs_srcdir)/tests 28 | 29 | ########################################################################## 30 | ########################################################################## 31 | ########################################################################## 32 | 33 | -------------------------------------------------------------------------------- /src/sst/elements/cassini/tests/refFiles/test_cassini_prefetch.out: -------------------------------------------------------------------------------- 1 | Next Block Prefetch Engine Statistics (Owner: l1cache): 2 | -------------------------------------------------------------------- 3 | Cache Miss Events: 81 4 | Cache Hit Events : 100000 5 | Cache Miss Rate (%): 0.080934 6 | Cache Hit Rate (%): 99.919066 7 | Prefetches Issued: 81 8 | -------------------------------------------------------------------- 9 | 10 | Simulation is complete, simulated time: 9.98358 ms 11 | -------------------------------------------------------------------------------- /src/sst/elements/cassini/tests/refFiles/test_cassini_stride_prefetch.out: -------------------------------------------------------------------------------- 1 | Stride Prefetch Engine Statistics (Owner: l1cache): 2 | -------------------------------------------------------------------- 3 | Cache Miss Events: 80 4 | Cache Hit Events : 100000 5 | Cache Miss Rate (%): 0.079936 6 | Cache Hit Rate (%): 99.920064 7 | Prefetches Opportunities: 25020 8 | Prefetches Issued: 12305 9 | Prefetches canceled by page boundary: 390 10 | Prefetches canceled by history: 12715 11 | -------------------------------------------------------------------- 12 | 13 | Simulation is complete, simulated time: 9.98555 ms 14 | -------------------------------------------------------------------------------- /src/sst/elements/ember/.gitignore: -------------------------------------------------------------------------------- 1 | sst-meshconvert 2 | sst-spygen 3 | -------------------------------------------------------------------------------- /src/sst/elements/ember/configure.m4: -------------------------------------------------------------------------------- 1 | dnl -*- Autoconf -*- 2 | 3 | AC_DEFUN([SST_ember_CONFIG], [ 4 | sst_check_ember="yes" 5 | 6 | AC_ARG_ENABLE([ember-contexts], 7 | AS_HELP_STRING([--enable-ember-contexts], [Enable context switching in Ember])) 8 | 9 | SST_CHECK_OTF2([sst_check_ember_otf2="yes"], [sst_check_ember_otf2="no"]) 10 | AM_CONDITIONAL([EMBER_HAVE_OTF2], [test "x$sst_check_ember_otf2" = "xyes"]) 11 | 12 | AM_CONDITIONAL([USE_EMBER_CONTEXTS], [test "x$enable_ember_contexts" = "xyes"]) 13 | AS_IF([test "x$enable_ember_contexts" = "xyes"], 14 | [AC_DEFINE([HAVE_EMBER_CONTEXTS], [1], [Use context switching code in Ember])]) 15 | 16 | AS_IF([test "$sst_check_ember" = "yes"], [$1], [$2]) 17 | ]) 18 | -------------------------------------------------------------------------------- /src/sst/elements/ember/emberconstdistrib.cc: -------------------------------------------------------------------------------- 1 | // Copyright 2009-2021 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-2021, NTESS 6 | // All rights reserved. 7 | // 8 | // Portions are copyright of other developers: 9 | // See the file CONTRIBUTORS.TXT in the top level directory 10 | // the distribution for more information. 11 | // 12 | // This file is part of the SST software package. For license 13 | // information, see the LICENSE file in the top level directory of the 14 | // distribution. 15 | 16 | 17 | #include 18 | #include 19 | #include 20 | 21 | #include "emberdistrib.h" 22 | #include "emberconstdistrib.h" 23 | 24 | using namespace SST::Ember; 25 | 26 | EmberConstDistribution::EmberConstDistribution(Params& params) : 27 | EmberComputeDistribution(params) { 28 | 29 | the_value = params.find("constant", 1.0); 30 | } 31 | 32 | EmberConstDistribution::~EmberConstDistribution() { 33 | 34 | } 35 | 36 | double EmberConstDistribution::sample(const uint64_t now) { 37 | return the_value; 38 | } 39 | -------------------------------------------------------------------------------- /src/sst/elements/ember/emberdistrib.cc: -------------------------------------------------------------------------------- 1 | // Copyright 2009-2021 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-2021, NTESS 6 | // All rights reserved. 7 | // 8 | // Portions are copyright of other developers: 9 | // See the file CONTRIBUTORS.TXT in the top level directory 10 | // the distribution for more information. 11 | // 12 | // This file is part of the SST software package. For license 13 | // information, see the LICENSE file in the top level directory of the 14 | // distribution. 15 | 16 | 17 | #include 18 | #include 19 | #include 20 | 21 | #include "emberdistrib.h" 22 | 23 | using namespace SST; 24 | using namespace SST::Ember; 25 | 26 | EmberComputeDistribution::EmberComputeDistribution(Params& params) : 27 | Module() { 28 | 29 | } 30 | 31 | EmberComputeDistribution::~EmberComputeDistribution() { 32 | 33 | } 34 | -------------------------------------------------------------------------------- /src/sst/elements/ember/emberdistrib.h: -------------------------------------------------------------------------------- 1 | // Copyright 2009-2021 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-2021, NTESS 6 | // All rights reserved. 7 | // 8 | // Portions are copyright of other developers: 9 | // See the file CONTRIBUTORS.TXT in the top level directory 10 | // the distribution for more information. 11 | // 12 | // This file is part of the SST software package. For license 13 | // information, see the LICENSE file in the top level directory of the 14 | // distribution. 15 | 16 | 17 | #ifndef _H_SST_EMBER_COMPUTE_DISTRIBUTION 18 | #define _H_SST_EMBER_COMPUTE_DISTRIBUTION 19 | 20 | #include 21 | #include 22 | 23 | namespace SST { 24 | namespace Ember { 25 | 26 | class EmberComputeDistribution : public SST::Module { 27 | 28 | public: 29 | EmberComputeDistribution(Params& params); 30 | ~EmberComputeDistribution(); 31 | virtual double sample(uint64_t now) = 0; 32 | 33 | }; 34 | 35 | } 36 | } 37 | 38 | #endif 39 | -------------------------------------------------------------------------------- /src/sst/elements/ember/emberevent.cc: -------------------------------------------------------------------------------- 1 | // Copyright 2009-2021 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-2021, NTESS 6 | // All rights reserved. 7 | // 8 | // Portions are copyright of other developers: 9 | // See the file CONTRIBUTORS.TXT in the top level directory 10 | // the distribution for more information. 11 | // 12 | // This file is part of the SST software package. For license 13 | // information, see the LICENSE file in the top level directory of the 14 | // distribution. 15 | 16 | #include 17 | #include "emberevent.h" 18 | 19 | using namespace SST; 20 | using namespace Ember; 21 | 22 | const char* EmberEvent::m_enumName[] = { 23 | FOREACH_ENUM(GENERATE_STRING) 24 | }; 25 | 26 | -------------------------------------------------------------------------------- /src/sst/elements/ember/embergettimeev.cc: -------------------------------------------------------------------------------- 1 | // Copyright 2009-2021 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-2021, NTESS 6 | // All rights reserved. 7 | // 8 | // Portions are copyright of other developers: 9 | // See the file CONTRIBUTORS.TXT in the top level directory 10 | // the distribution for more information. 11 | // 12 | // This file is part of the SST software package. For license 13 | // information, see the LICENSE file in the top level directory of the 14 | // distribution. 15 | 16 | #include 17 | #include "embergettimeev.h" 18 | 19 | using namespace SST::Ember; 20 | -------------------------------------------------------------------------------- /src/sst/elements/ember/libs/emberLib.h: -------------------------------------------------------------------------------- 1 | // Copyright 2009-2021 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-2021, NTESS 6 | // All rights reserved. 7 | // 8 | // Portions are copyright of other developers: 9 | // See the file CONTRIBUTORS.TXT in the top level directory 10 | // the distribution for more information. 11 | // 12 | // This file is part of the SST software package. For license 13 | // information, see the LICENSE file in the top level directory of the 14 | // distribution. 15 | 16 | 17 | #ifndef _H_EMBER_LIBS_EMBERLIB 18 | #define _H_EMBER_LIBS_EMBERLIB 19 | 20 | #include 21 | #include "sst/elements/hermes/hermes.h" 22 | 23 | namespace SST { 24 | namespace Ember { 25 | 26 | class EmberLib : public SST::Module { 27 | public: 28 | EmberLib() : m_output(NULL), m_api(NULL) {} 29 | 30 | void initApi( Hermes::Interface* api ) { m_api = api; } 31 | void initOutput( SST::Output* output ) { m_output = output; } 32 | 33 | protected: 34 | Output* m_output; 35 | Hermes::Interface* m_api; 36 | }; 37 | 38 | } 39 | } 40 | 41 | #endif 42 | -------------------------------------------------------------------------------- /src/sst/elements/ember/libs/shmem/emberFamEvent.h: -------------------------------------------------------------------------------- 1 | // Copyright 2009-2021 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-2021, NTESS 6 | // All rights reserved. 7 | // 8 | // Portions are copyright of other developers: 9 | // See the file CONTRIBUTORS.TXT in the top level directory 10 | // the distribution for more information. 11 | // 12 | // This file is part of the SST software package. For license 13 | // information, see the LICENSE file in the top level directory of the 14 | // distribution. 15 | 16 | 17 | #ifndef _H_EMBER_FAM_EVENT 18 | #define _H_EMBER_FAM_EVENT 19 | 20 | #include "emberShmemEvent.h" 21 | 22 | //using namespace Hermes; 23 | 24 | namespace SST { 25 | namespace Ember { 26 | 27 | typedef EmberShmemEvent EmberFamEvent; 28 | 29 | } 30 | } 31 | 32 | #endif 33 | -------------------------------------------------------------------------------- /src/sst/elements/ember/mpi/motifs/emberfini.cc: -------------------------------------------------------------------------------- 1 | // Copyright 2009-2021 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-2021, NTESS 6 | // All rights reserved. 7 | // 8 | // Portions are copyright of other developers: 9 | // See the file CONTRIBUTORS.TXT in the top level directory 10 | // the distribution for more information. 11 | // 12 | // This file is part of the SST software package. For license 13 | // information, see the LICENSE file in the top level directory of the 14 | // distribution. 15 | 16 | 17 | #include 18 | #include "emberfini.h" 19 | -------------------------------------------------------------------------------- /src/sst/elements/ember/mpi/motifs/emberhalo1d.h: -------------------------------------------------------------------------------- 1 | // Copyright 2009-2021 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-2021, NTESS 6 | // All rights reserved. 7 | // 8 | // Portions are copyright of other developers: 9 | // See the file CONTRIBUTORS.TXT in the top level directory 10 | // the distribution for more information. 11 | // 12 | // This file is part of the SST software package. For license 13 | // information, see the LICENSE file in the top level directory of the 14 | // distribution. 15 | 16 | 17 | #ifndef _H_EMBER_HALO_1D 18 | #define _H_EMBER_HALO_1D 19 | 20 | #include "mpi/embermpigen.h" 21 | 22 | namespace SST { 23 | namespace Ember { 24 | 25 | class EmberHalo1DGenerator : public EmberMessagePassingGenerator { 26 | 27 | public: 28 | EmberHalo1DGenerator(SST::ComponentId_t id, Params& params); 29 | bool generate( std::queue& evQ ); 30 | 31 | private: 32 | uint32_t m_loopIndex; 33 | uint32_t nsCompute; 34 | uint32_t messageSize; 35 | uint32_t iterations; 36 | // uint32_t wrapAround; 37 | 38 | }; 39 | 40 | } 41 | } 42 | 43 | #endif 44 | -------------------------------------------------------------------------------- /src/sst/elements/ember/mpi/motifs/emberinit.cc: -------------------------------------------------------------------------------- 1 | // Copyright 2009-2021 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-2021, NTESS 6 | // All rights reserved. 7 | // 8 | // Portions are copyright of other developers: 9 | // See the file CONTRIBUTORS.TXT in the top level directory 10 | // the distribution for more information. 11 | // 12 | // This file is part of the SST software package. For license 13 | // information, see the LICENSE file in the top level directory of the 14 | // distribution. 15 | 16 | 17 | #include 18 | #include "emberinit.h" 19 | -------------------------------------------------------------------------------- /src/sst/elements/ember/mpi/motifs/embernull.cc: -------------------------------------------------------------------------------- 1 | // Copyright 2009-2021 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-2021, NTESS 6 | // All rights reserved. 7 | // 8 | // Portions are copyright of other developers: 9 | // See the file CONTRIBUTORS.TXT in the top level directory 10 | // the distribution for more information. 11 | // 12 | // This file is part of the SST software package. For license 13 | // information, see the LICENSE file in the top level directory of the 14 | // distribution. 15 | 16 | 17 | #include 18 | #include "embernull.h" 19 | -------------------------------------------------------------------------------- /src/sst/elements/ember/mpi/motifs/embersendrecv.cc: -------------------------------------------------------------------------------- 1 | // Copyright 2009-2021 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-2021, NTESS 6 | // All rights reserved. 7 | // 8 | // Portions are copyright of other developers: 9 | // See the file CONTRIBUTORS.TXT in the top level directory 10 | // the distribution for more information. 11 | // 12 | // This file is part of the SST software package. For license 13 | // information, see the LICENSE file in the top level directory of the 14 | // distribution. 15 | 16 | 17 | #include 18 | #include "embersendrecv.h" 19 | -------------------------------------------------------------------------------- /src/sst/elements/ember/mpi/motifs/embertest.cc: -------------------------------------------------------------------------------- 1 | // Copyright 2009-2021 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-2021, NTESS 6 | // All rights reserved. 7 | // 8 | // Portions are copyright of other developers: 9 | // See the file CONTRIBUTORS.TXT in the top level directory 10 | // the distribution for more information. 11 | // 12 | // This file is part of the SST software package. For license 13 | // information, see the LICENSE file in the top level directory of the 14 | // distribution. 15 | 16 | 17 | #include 18 | #include "embertest.h" 19 | -------------------------------------------------------------------------------- /src/sst/elements/ember/mpi/motifs/embertestany.cc: -------------------------------------------------------------------------------- 1 | // Copyright 2009-2021 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-2021, NTESS 6 | // All rights reserved. 7 | // 8 | // Portions are copyright of other developers: 9 | // See the file CONTRIBUTORS.TXT in the top level directory 10 | // the distribution for more information. 11 | // 12 | // This file is part of the SST software package. For license 13 | // information, see the LICENSE file in the top level directory of the 14 | // distribution. 15 | 16 | 17 | #include 18 | #include "embertestany.h" 19 | -------------------------------------------------------------------------------- /src/sst/elements/ember/mpi/motifs/emberwaitany.cc: -------------------------------------------------------------------------------- 1 | // Copyright 2009-2021 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-2021, NTESS 6 | // All rights reserved. 7 | // 8 | // Portions are copyright of other developers: 9 | // See the file CONTRIBUTORS.TXT in the top level directory 10 | // the distribution for more information. 11 | // 12 | // This file is part of the SST software package. For license 13 | // information, see the LICENSE file in the top level directory of the 14 | // distribution. 15 | 16 | 17 | #include 18 | #include "emberwaitany.h" 19 | -------------------------------------------------------------------------------- /src/sst/elements/ember/run/configurations/loadfile: -------------------------------------------------------------------------------- 1 | # This file must be ordered 2 | # 3 | # [JOB_ID] 4 | # [NID_LIST] 5 | # [MOTIF] 6 | # [MOTIF] 7 | # 8 | # keywords must be left justified and not contain white space 9 | # all characters between keywords will be considered part of the leading keyword 10 | # you can have multiple MOTIF keywords for a given JOB_ID 11 | # you can have multiple jobs 12 | # two jobs can not have the same NID 13 | 14 | [JOB_ID] 10 15 | [NID_LIST] 0-13 16 | 17 | [MOTIF] Init 18 | [MOTIF] 19 | Halo2D iterations=10 messagesize=128 20 | [MOTIF] Fini 21 | 22 | [JOB_ID] 1 23 | [NID_LIST] 24 | 14,15 25 | 26 | [MOTIF] Init 27 | [MOTIF] PingPong iterations=100 28 | [MOTIF] Fini 29 | -------------------------------------------------------------------------------- /src/sst/elements/ember/run/configurations/testCmd: -------------------------------------------------------------------------------- 1 | 2 | sst --model-options="\ 3 | --cmdLine=Init --cmdLine=\"Ring interations=100\" --cmdLine=Fini \ 4 | --numNodes=8 \ 5 | --numRanksPerNode=2 \ 6 | --topo=torus \ 7 | --shape=4x4 \ 8 | --netPktSize=100B \ 9 | --netBW=8GB/s \ 10 | --netFlitSize=16B \ 11 | --rtrArb=merlin.xbar_arb_lru \ 12 | --emberRankmapper=fff \ 13 | " ../script/emberLoadCmd.py 14 | -------------------------------------------------------------------------------- /src/sst/elements/ember/run/configurations/testFile: -------------------------------------------------------------------------------- 1 | 2 | sst --model-options="\ 3 | --rtrArb=merlin.xbar_arb_lru \ 4 | --netBW=8GB/s \ 5 | --netFlitSize=16B \ 6 | --netPktSize=100B \ 7 | --topo=torus \ 8 | --shape=16 \ 9 | --jobFile=loadfile \ 10 | " ../script/emberLoadFile.py 11 | -------------------------------------------------------------------------------- /src/sst/elements/ember/run/configurations/testJob: -------------------------------------------------------------------------------- 1 | 2 | sst --model-options="\ 3 | --rtrArb=merlin.xbar_arb_lru \ 4 | --netBW=8GB/s \ 5 | --netFlitSize=16B \ 6 | --netPktSize=100B \ 7 | --nicVerboseLevel=0 \ 8 | --nicVerboseMask=0 \ 9 | --hermesVerbose=0 \ 10 | --emberVerbose=0 \ 11 | --emberVerboseNode=0 \ 12 | --emberMotifLogFile=foobar \ 13 | --emberMotifLogNode=0 \ 14 | --jobConfig=detailedSim \ 15 | " ../script/emberLoadJob.py 16 | -------------------------------------------------------------------------------- /src/sst/elements/ember/run/configurations/testStreamCmd: -------------------------------------------------------------------------------- 1 | 2 | #sst --model-options="--help" ../script/emberLoadCmd.py 3 | 4 | sst --model-options="\ 5 | --cmdLine=\"DetailedStream stream_n=1024 operandwidth=32\" \ 6 | --topo=torus \ 7 | --shape=1 \ 8 | --detailedModel=sandyBridgeModel \ 9 | --detailedModelParams=sandyBridgeModelParams \ 10 | " ../script/emberLoadCmd.py 11 | -------------------------------------------------------------------------------- /src/sst/elements/ember/run/lib/backgroundLoad.py: -------------------------------------------------------------------------------- 1 | 2 | # Copyright 2009-2021 NTESS. Under the terms 3 | # of Contract DE-NA0003525 with NTESS, the U.S. 4 | # Government retains certain rights in this software. 5 | # 6 | # Copyright (c) 2009-2021, NTESS 7 | # All rights reserved. 8 | # 9 | # Portions are copyright of other developers: 10 | # See the file CONTRIBUTORS.TXT in the top level directory 11 | # the distribution for more information. 12 | # 13 | # This file is part of the SST software package. For license 14 | # information, see the LICENSE file in the top level directory of the 15 | # distribution. 16 | 17 | bgPercentage = int(0) 18 | bgMean = 1000 19 | bgStddev = 300 20 | bgMsgSize = 1000 21 | -------------------------------------------------------------------------------- /src/sst/elements/ember/run/lib/componentConfig.py: -------------------------------------------------------------------------------- 1 | # Copyright 2009-2021 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-2021, NTESS 6 | # All rights reserved. 7 | # 8 | # Portions are copyright of other developers: 9 | # See the file CONTRIBUTORS.TXT in the top level directory 10 | # the distribution for more information. 11 | # 12 | # This file is part of the SST software package. For license 13 | # information, see the LICENSE file in the top level directory of the 14 | # distribution. 15 | 16 | class ComponentConfig: 17 | def __init__(self): 18 | pass 19 | 20 | def getParams( self, nodeNum ): 21 | pass 22 | 23 | def getName( self, nodeNum ): 24 | pass 25 | -------------------------------------------------------------------------------- /src/sst/elements/ember/run/lib/hermesConfig.py: -------------------------------------------------------------------------------- 1 | # Copyright 2009-2021 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-2021, NTESS 6 | # All rights reserved. 7 | # 8 | # Portions are copyright of other developers: 9 | # See the file CONTRIBUTORS.TXT in the top level directory 10 | # the distribution for more information. 11 | # 12 | # This file is part of the SST software package. For license 13 | # information, see the LICENSE file in the top level directory of the 14 | # distribution. 15 | 16 | def getOptions(): 17 | return ['hermesVerbose='] 18 | 19 | def parseOptions(opts): 20 | level = 0 21 | if opts: 22 | for o,a in opts: 23 | if o in ('--hermesVerbose'): 24 | level = int(a) 25 | 26 | return level 27 | 28 | class HermesConfig: 29 | def __init__(self, params, opts ): 30 | self.params = params 31 | 32 | def getParams(self): 33 | return self.params 34 | -------------------------------------------------------------------------------- /src/sst/elements/ember/run/lib/myprint.py: -------------------------------------------------------------------------------- 1 | # Copyright 2009-2021 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-2021, NTESS 6 | # All rights reserved. 7 | # 8 | # Portions are copyright of other developers: 9 | # See the file CONTRIBUTORS.TXT in the top level directory 10 | # the distribution for more information. 11 | # 12 | # This file is part of the SST software package. For license 13 | # information, see the LICENSE file in the top level directory of the 14 | # distribution. 15 | 16 | def printParams( prefix, params ): 17 | for key,value in params.iteritems(): 18 | print '{0} \'{1}\' : \'{2}\''.format(prefix, key, value) 19 | -------------------------------------------------------------------------------- /src/sst/elements/ember/run/lib/nullEmber.py: -------------------------------------------------------------------------------- 1 | # Copyright 2009-2021 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-2021, NTESS 6 | # All rights reserved. 7 | # 8 | # Portions are copyright of other developers: 9 | # See the file CONTRIBUTORS.TXT in the top level directory 10 | # the distribution for more information. 11 | # 12 | # This file is part of the SST software package. For license 13 | # information, see the LICENSE file in the top level directory of the 14 | # distribution. 15 | 16 | import jobInfo as JobInfo 17 | import emberConfig as EmberConfig 18 | 19 | def _genWorkFlow( defaults, nodeNum = None ): 20 | 21 | workFlow = [] 22 | motif = dict.copy( defaults ) 23 | motif['cmd'] = "Null" 24 | workFlow.append( motif ) 25 | 26 | return workFlow 27 | 28 | def create( emberParams, hermesParams ): 29 | 30 | jobInfo = JobInfo.JobInfo( -1, -1, 1, _genWorkFlow ) 31 | jobInfo.setNidList( 'Null' ) 32 | 33 | return EmberConfig.EmberConfig( emberParams, hermesParams, jobInfo ) 34 | -------------------------------------------------------------------------------- /src/sst/elements/ember/run/lib/platConfig.py: -------------------------------------------------------------------------------- 1 | # Copyright 2009-2021 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-2021, NTESS 6 | # All rights reserved. 7 | # 8 | # Portions are copyright of other developers: 9 | # See the file CONTRIBUTORS.TXT in the top level directory 10 | # the distribution for more information. 11 | # 12 | # This file is part of the SST software package. For license 13 | # information, see the LICENSE file in the top level directory of the 14 | # distribution. 15 | 16 | import sys 17 | 18 | def getOptions(): 19 | return ['platParams='] 20 | 21 | def parseOptions(opts): 22 | name = 'defaultParams' 23 | for o,a in opts: 24 | if o in ('--platParams'): 25 | name = a 26 | return name 27 | 28 | def getParams( name ): 29 | 30 | platConfig = None 31 | try: 32 | platConfig = __import__( name, fromlist=[''] ) 33 | except: 34 | sys.exit('FATAL: could not import `{0}`'.format(name) ) 35 | 36 | return platConfig 37 | -------------------------------------------------------------------------------- /src/sst/elements/ember/run/lib/switch.py: -------------------------------------------------------------------------------- 1 | 2 | class switch(object): 3 | def __init__(self, value): 4 | self.value = value 5 | self.fall = False 6 | 7 | def __iter__(self): 8 | """Return the match method once, then stop""" 9 | yield self.match 10 | raise StopIteration 11 | 12 | def match(self, *args): 13 | """Indicate whether or not to enter a case suite""" 14 | if self.fall or not args: 15 | return True 16 | elif self.value in args: # changed for v1.5, see below 17 | self.fall = True 18 | return True 19 | else: 20 | return False 21 | -------------------------------------------------------------------------------- /src/sst/elements/ember/shmem/emberShmemGen.cc: -------------------------------------------------------------------------------- 1 | // Copyright 2009-2021 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-2021, NTESS 6 | // All rights reserved. 7 | // 8 | // Portions are copyright of other developers: 9 | // See the file CONTRIBUTORS.TXT in the top level directory 10 | // the distribution for more information. 11 | // 12 | // This file is part of the SST software package. For license 13 | // information, see the LICENSE file in the top level directory of the 14 | // distribution. 15 | 16 | #include 17 | 18 | #include "emberShmemGen.h" 19 | 20 | using namespace SST; 21 | using namespace SST::Ember; 22 | 23 | EmberShmemGenerator::EmberShmemGenerator( 24 | ComponentId_t id, Params& params, std::string name) : 25 | EmberGenerator(id, params, name ) 26 | { } 27 | 28 | void EmberShmemGenerator::setup() 29 | { 30 | m_shmem = static_cast(getLib("shmem")); 31 | assert(m_shmem); 32 | m_shmem->initOutput( &getOutput() ); 33 | m_miscLib = static_cast(getLib("misc")); 34 | assert(m_miscLib); 35 | } 36 | -------------------------------------------------------------------------------- /src/sst/elements/ember/sirius/libsirius/Makefile: -------------------------------------------------------------------------------- 1 | 2 | MPICXX=mpicxx 3 | CXXFLAGS=-O3 -std=c++11 -I ../include -fPIC -DSIRIUS_BACKTRACE 4 | SHARED=-shared 5 | 6 | all: libsirius.so libsirius.a 7 | 8 | libsirius.so: libsirius.cc 9 | $(MPICXX) $(SHARED) $(CXXFLAGS) -o libsirius.so libsirius.cc 10 | 11 | libsirius.a: libsirius.o 12 | ar rc libsirius.a libsirius.o 13 | 14 | libsirius.o: libsirius.cc 15 | $(MPICXX) $(CXXFLAGS) -c libsirius.cc 16 | 17 | clean: 18 | rm libsirius.o libsirius.a libsirius.so 19 | 20 | 21 | -------------------------------------------------------------------------------- /src/sst/elements/ember/test/CrossProduct.py: -------------------------------------------------------------------------------- 1 | 2 | class CrossProduct: 3 | def __init__(self,xxx): 4 | self.xxx = xxx 5 | self.cnts = [] 6 | for i, x in enumerate( xxx ) : 7 | self.cnts.insert( i, len( x[1] ) ) 8 | 9 | def __iter__(self): 10 | return self 11 | 12 | def __next__(self): 13 | if self.cnts[0] == 0: 14 | raise StopIteration 15 | else: 16 | tmp = '' 17 | for i, x in enumerate(self.xxx) : 18 | tmp += "{0}={1} ".format( x[0], x[1][ self.cnts[i] - 1 ] ) 19 | 20 | for i in reversed(range( 0, len(self.xxx) )): 21 | self.cnts[i] -= 1 22 | if i == 0 and self.cnts[i] == 0: 23 | break 24 | 25 | if self.cnts[i] > 0 : 26 | break 27 | else : 28 | self.cnts[i] = len(self.xxx[i][1]) 29 | 30 | return tmp 31 | 32 | def next(self): 33 | return self.__next__() 34 | 35 | -------------------------------------------------------------------------------- /src/sst/elements/ember/test/defaultSim.py: -------------------------------------------------------------------------------- 1 | 2 | 3 | def getWorkFlow( defaults ): 4 | workFlow = [] 5 | motif = dict.copy( defaults ) 6 | motif['cmd'] = "Init" 7 | workFlow.append( motif ) 8 | 9 | motif = dict.copy( defaults ) 10 | motif['cmd'] = "Sweep3D nx=30 ny=30 nz=30 computetime=140 pex=4 pey=16 pez=0 kba=10" 11 | workFlow.append( motif ) 12 | 13 | motif = dict.copy( defaults ) 14 | motif['cmd'] = "Fini" 15 | workFlow.append( motif ) 16 | 17 | # numNodes = 0 implies use all nodes on network 18 | numNodes = 0 19 | numCores = 1 20 | nicsPerNode = 1 21 | 22 | return workFlow, numNodes, numCores, nicsPerNode 23 | 24 | def getNetwork(): 25 | 26 | #platform = 'chamaPSM' 27 | #platform = 'chamaOpenIB' 28 | #platform = 'bgq' 29 | platform = 'default' 30 | 31 | #topo = '' 32 | #shape = '' 33 | topo = 'torus' 34 | shape = '4x4x4' 35 | 36 | return platform, topo, shape 37 | 38 | def getDetailedModel(): 39 | return "","",[] 40 | -------------------------------------------------------------------------------- /src/sst/elements/ember/test/detailedModel.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # 3 | # Copyright 2009-2021 NTESS. Under the terms 4 | # of Contract DE-NA0003525 with NTESS, the U.S. 5 | # Government retains certain rights in this software. 6 | # 7 | # Copyright (c) 2009-2021, NTESS 8 | # All rights reserved. 9 | # 10 | # Portions are copyright of other developers: 11 | # See the file CONTRIBUTORS.TXT in the top level directory 12 | # the distribution for more information. 13 | # 14 | # This file is part of the SST software package. For license 15 | # information, see the LICENSE file in the top level directory of the 16 | # distribution. 17 | 18 | class DetailedModel: 19 | def getName(self): 20 | pass 21 | def build(self,nodeID,numCores): 22 | pass 23 | def getThreadLink(self,core): 24 | pass 25 | def getNicLink(self): 26 | pass 27 | -------------------------------------------------------------------------------- /src/sst/elements/ember/test/fft-256-chama.config: -------------------------------------------------------------------------------- 1 | #Argument[ 0]: ./testbigFFT 2 | #Argument[ 1]: 256 3 | #Argument[ 2]: 256 4 | #Argument[ 3]: 256 5 | #Argument[ 4]: 1 6 | #Argument[ 5]: 30 7 | #mype = 0, avg fwd time = 0.7304664 sec 8 | #mype = 0, avg bwd time = 0.7420388 sec 9 | 10 | fwd_fft1_pre , 3.863 ns 11 | fwd_fft1 , 9.460 ns 12 | fwd_fft1_post1 , 2.830 ns 13 | fwd_fft1_post2 , 16.029 ns 14 | fwd_fft2_pre , 3.129 ns 15 | fwd_fft2 , 9.291 ns 16 | fwd_fft2_post , 18.204 ns 17 | fwd_fft3_pre , 3.105 ns 18 | fwd_fft3 , 9.277 ns 19 | fwd_fft3_post , 2.559 ns 20 | bwd_fft1_pre , 2.568 ns 21 | bwd_fft1 , 9.175 ns 22 | bwd_fft1_post , 8.347 ns 23 | bwd_fft2_pre , 3.141 ns 24 | bwd_fft2 , 9.224 ns 25 | bwd_fft2_post , 9.780 ns 26 | bwd_fft3_pre , 17.483 ns 27 | bwd_fft3 , 9.247 ns 28 | bwd_fft3_post , 1.891 ns 29 | -------------------------------------------------------------------------------- /src/sst/elements/ember/test/generateNidListGroup.py: -------------------------------------------------------------------------------- 1 | def generate( args ): 2 | args = args.split(',') 3 | start = int(args[0]) 4 | numGroups = int(args[1]) 5 | perGroup = int(args[2]) 6 | interval = int(args[3]) 7 | ret = '' 8 | for i in range(numGroups): 9 | 10 | first = start + i * interval 11 | last = first + perGroup - 1 12 | 13 | ret = ret + '{0}-{1}'.format(first,last) 14 | if i + 1 < numGroups: 15 | ret = ret + ',' 16 | 17 | return ret 18 | -------------------------------------------------------------------------------- /src/sst/elements/ember/test/generateNidListInterval.py: -------------------------------------------------------------------------------- 1 | def generate( args ): 2 | args = args.split(',') 3 | start = int(args[0]) 4 | length = int(args[1]) 5 | interval = int(args[2]) 6 | ret = '' 7 | for i in range(length): 8 | node = i * interval + start 9 | ret = ret + str(node) 10 | if i + 1 < length: 11 | ret = ret + ',' 12 | #print( 'generate( {0}, {1}, {2} ) = \'{3}\'').format( start, length, interval, ret ) 13 | 14 | return ret 15 | -------------------------------------------------------------------------------- /src/sst/elements/ember/test/generateNidListRandom.py: -------------------------------------------------------------------------------- 1 | import random, sys 2 | 3 | def generate( args ): 4 | args = args.split(',') 5 | 6 | totalNodes = int(args[0]) 7 | start = int(args[1]) 8 | length = int(args[2]) 9 | 10 | random.seed( 0xf00dbeef ) 11 | nids = random.sample( list(range( totalNodes )), totalNodes) 12 | 13 | tmp = nids[start:start+length] 14 | nidList = ','.join( str(x) for x in tmp) 15 | 16 | return nidList 17 | -------------------------------------------------------------------------------- /src/sst/elements/ember/test/generateNidListRange.py: -------------------------------------------------------------------------------- 1 | def generate( args ): 2 | args = args.split(',') 3 | start = int(args[0]) 4 | length = int(args[1]) 5 | #print 'generate', start, length 6 | return str(start) + '-' + str( start + length - 1 ) 7 | -------------------------------------------------------------------------------- /src/sst/elements/ember/test/loadfile: -------------------------------------------------------------------------------- 1 | # This file must be ordered 2 | # 3 | # [JOB_ID] 4 | # [NID_LIST] 5 | # [MOTIF] 6 | # [MOTIF] 7 | # 8 | # keywords must be left justified and not contain white space 9 | # all characters between keywords will be considered part of the leading keyword 10 | # you can have multiple MOTIF keywords for a given JOB_ID 11 | # you can have multiple jobs 12 | # two jobs can not have the same NID 13 | 14 | [JOB_ID] 10 15 | [NID_LIST] 0-13 16 | 17 | [MOTIF] Init 18 | [MOTIF] 19 | Halo2D iterations=10 messagesize=128 20 | [MOTIF] Fini 21 | 22 | [JOB_ID] 1 23 | [NID_LIST] 24 | 14,15 25 | 26 | [MOTIF] Init 27 | [MOTIF] PingPong iterations=100 28 | [MOTIF] Fini 29 | -------------------------------------------------------------------------------- /src/sst/elements/ember/test/shmemLoadFile: -------------------------------------------------------------------------------- 1 | # This file must be ordered 2 | # 3 | # [JOB_ID] 4 | # [NID_LIST] 5 | # [MOTIF] 6 | # [MOTIF] 7 | # 8 | # keywords must be left justified and not contain white space 9 | # all characters between keywords will be considered part of the leading keyword 10 | # you can have multiple MOTIF keywords for a given JOB_ID 11 | # you can have multiple jobs 12 | # two jobs can not have the same NID 13 | 14 | 15 | [JOB_ID] 10 16 | [API] HadesSHMEM 17 | [NID_LIST] 0-1 18 | [MOTIF] ShmemPutLong iterations=1 biDir=0 nelems=10000 19 | 20 | [JOB_ID] 1 21 | [API] HadesSHMEM 22 | [NID_LIST] 23 | 2,3 24 | 25 | [MOTIF] ShmemPutLong iterations=1 biDir=0 nelems=1000 26 | -------------------------------------------------------------------------------- /src/sst/elements/ember/test/shmemSim.py: -------------------------------------------------------------------------------- 1 | 2 | 3 | def getWorkFlow( defaults ): 4 | 5 | workFlow = [] 6 | motif = dict.copy( defaults ) 7 | motif['cmd'] = "ShmemCollect32 nelems=1000 printResults=0" 8 | workFlow.append( motif ) 9 | 10 | # numNodes = 0 implies use all nodes on network 11 | numNodes = 0 12 | numCores = 1 13 | 14 | return workFlow, numNodes, numCores 15 | 16 | def getNetwork(): 17 | 18 | #platform = 'chamaPSM' 19 | #platform = 'chamaOpenIB' 20 | #platform = 'bgq' 21 | platform = 'default' 22 | 23 | #topo = '' 24 | #shape = '' 25 | topo = 'torus' 26 | shape = '2x2x2' 27 | 28 | return platform, topo, shape 29 | 30 | def getDetailedModel(): 31 | return "","",[] 32 | -------------------------------------------------------------------------------- /src/sst/elements/ember/test/statModule.py: -------------------------------------------------------------------------------- 1 | import sst 2 | 3 | def init( outputFile ): 4 | 5 | sst.setStatisticLoadLevel(9) 6 | 7 | sst.setStatisticOutput("sst.statOutputCSV"); 8 | sst.setStatisticOutputOptions({ 9 | "filepath" : outputFile, 10 | "separator" : ", " 11 | }) 12 | 13 | sst.enableStatisticForComponentType("firefly.nic",'mem_num_stores',{"type":"sst.AccumulatorStatistic","rate":"0ns"}) 14 | sst.enableStatisticForComponentType("firefly.nic",'mem_num_loads',{"type":"sst.AccumulatorStatistic","rate":"0ns"}) 15 | 16 | sst.enableStatisticForComponentType("firefly.nic",'mem_addrs', 17 | {"type":"sst.HistogramStatistic", 18 | "rate":"0ns", 19 | "binwidth":"4096", 20 | "numbins":"512"} 21 | ) 22 | -------------------------------------------------------------------------------- /src/sst/elements/ember/tests/qos-dragonfly.sh: -------------------------------------------------------------------------------- 1 | LOADFILE="qos.load" 2 | 3 | export PYTHONPATH="../test" 4 | 5 | #../sst \ 6 | /Users/kshemme/work/sst/ember-fix/bin/sst \ 7 | --model-options=" \ 8 | --loadFile=$LOADFILE \ 9 | --platform=default \ 10 | --topo=dragonfly \ 11 | --shape=8:16:16:4 \ 12 | " \ 13 | ../test/emberLoad.py 14 | -------------------------------------------------------------------------------- /src/sst/elements/ember/tests/qos-fattree.sh: -------------------------------------------------------------------------------- 1 | LOADFILE="qos.load" 2 | 3 | export PYTHONPATH="../test" 4 | 5 | #../sst \ 6 | /Users/kshemme/work/sst/ember-fix/bin/sst \ 7 | --model-options=" \ 8 | --loadFile=$LOADFILE \ 9 | --platform=default \ 10 | --topo=fattree \ 11 | --shape=16,16:32 \ 12 | " \ 13 | ../test/emberLoad.py 14 | -------------------------------------------------------------------------------- /src/sst/elements/ember/tests/qos-hyperx.sh: -------------------------------------------------------------------------------- 1 | LOADFILE="qos.load" 2 | 3 | export PYTHONPATH="../test" 4 | 5 | #../sst \ 6 | /Users/kshemme/work/sst/ember-fix/bin/sst \ 7 | --model-options=" \ 8 | --loadFile=$LOADFILE \ 9 | --platform=default \ 10 | --topo=hyperx \ 11 | --shape=8x8 \ 12 | --hostsPerRtr=8 \ 13 | " \ 14 | ../test/emberLoad.py 15 | -------------------------------------------------------------------------------- /src/sst/elements/ember/tests/qos.load: -------------------------------------------------------------------------------- 1 | [JOB_ID] 1 2 | [NID_LIST] generateNidList=generateNidListQOS(512,0,random,128,1) 3 | [PARAM] merlin:portcontrol.output_arb=merlin.arb.output.qos.multi 4 | [PARAM] merlin:portcontrol.arbitration:qos_settings=[25,25,25,25] 5 | [MOTIF] Init 6 | [MOTIF] Sweep3D pex=16 pey=8 nx=16 ny=16 nz=10 kba=10 fields_per_cell=10 iterations=1 computetime=1 7 | [MOTIF] Allreduce 8 | [MOTIF] Fini 9 | 10 | [JOB_ID] 2 11 | [NID_LIST] generateNidList=generateNidListQOS(512,1,random,128,1) 12 | [MOTIF] Init 13 | [MOTIF] Sweep3D pex=16 pey=8 nx=16 ny=16 nz=10 kba=10 fields_per_cell=10 iterations=1 computetime=1 14 | [MOTIF] Allreduce 15 | [MOTIF] Fini 16 | 17 | [JOB_ID] 3 18 | [NID_LIST] generateNidList=generateNidListQOS(512,2,random,128,1) 19 | [MOTIF] Init 20 | [MOTIF] Sweep3D pex=16 pey=8 nx=16 ny=16 nz=10 kba=10 fields_per_cell=10 iterations=1 computetime=1 21 | [MOTIF] Allreduce 22 | [MOTIF] Fini 23 | 24 | [JOB_ID] 4 25 | [NID_LIST] generateNidList=generateNidListQOS(512,3,random,128,1) 26 | [MOTIF] Init 27 | [MOTIF] Sweep3D pex=16 pey=8 nx=16 ny=16 nz=10 kba=10 fields_per_cell=10 iterations=1 computetime=1 28 | [MOTIF] Allreduce 29 | [MOTIF] Fini 30 | -------------------------------------------------------------------------------- /src/sst/elements/ember/tests/refFiles/test_embernightly.out: -------------------------------------------------------------------------------- 1 | EMBER: using param directory: paramFiles 2 | EMBER: platform: default 3 | EMBER: network: topology=torus shape=4x4x4 4 | EMBER: numNodes=64 numNics=64 5 | EMBER: network: BW=4GB/s pktSize=2048B flitSize=8B 6 | EMBER: Job=0, nidList='0-63' 7 | EMBER: Motif='Init' 8 | EMBER: Motif='Sweep3D nx=30 ny=30 nz=30 computetime=140 pex=4 pey=16 pez=0 kba=10' 9 | EMBER: Motif='Fini' 10 | Simulation is complete, simulated time: 4.08083 ms 11 | -------------------------------------------------------------------------------- /src/sst/elements/firefly/ioVec.h: -------------------------------------------------------------------------------- 1 | // Copyright 2013-2021 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) 2013-2021, NTESS 6 | // All rights reserved. 7 | // 8 | // Portions are copyright of other developers: 9 | // See the file CONTRIBUTORS.TXT in the top level directory 10 | // the distribution for more information. 11 | // 12 | // This file is part of the SST software package. For license 13 | // information, see the LICENSE file in the top level directory of the 14 | // distribution. 15 | 16 | #ifndef COMPONENTS_FIREFLY_IOVEC_H 17 | #define COMPONENTS_FIREFLY_IOVEC_H 18 | 19 | #include 20 | 21 | #include "sst/elements/hermes/hermes.h" 22 | 23 | namespace SST { 24 | namespace Firefly { 25 | 26 | struct IoVec { 27 | IoVec() {} 28 | IoVec( const Hermes::MemAddr& _addr, size_t _size ) : 29 | addr( _addr ), len( _size ) {} 30 | Hermes::MemAddr addr; 31 | size_t len; 32 | }; 33 | } 34 | } 35 | 36 | #endif 37 | -------------------------------------------------------------------------------- /src/sst/elements/firefly/latencyMod.h: -------------------------------------------------------------------------------- 1 | 2 | // Copyright 2013-2021 NTESS. Under the terms 3 | // of Contract DE-NA0003525 with NTESS, the U.S. 4 | // Government retains certain rights in this software. 5 | // 6 | // Copyright (c) 2013-2021, NTESS 7 | // All rights reserved. 8 | // 9 | // Portions are copyright of other developers: 10 | // See the file CONTRIBUTORS.TXT in the top level directory 11 | // the distribution for more information. 12 | // 13 | // This file is part of the SST software package. For license 14 | // information, see the LICENSE file in the top level directory of the 15 | // distribution. 16 | 17 | #ifndef COMPONENTS_FIREFLY_LATENCYMOD_H 18 | #define COMPONENTS_FIREFLY_LATENCYMOD_H 19 | 20 | #include 21 | 22 | namespace SST { 23 | namespace Firefly { 24 | 25 | class LatencyMod : public SST::Module { 26 | public: 27 | virtual size_t getLatency( size_t value ) = 0; 28 | }; 29 | 30 | } 31 | } 32 | 33 | #endif 34 | -------------------------------------------------------------------------------- /src/sst/elements/firefly/memoryModel/memReq.h: -------------------------------------------------------------------------------- 1 | // Copyright 2009-2021 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-2021, NTESS 6 | // All rights reserved. 7 | // 8 | // Portions are copyright of other developers: 9 | // See the file CONTRIBUTORS.TXT in the top level directory 10 | // the distribution for more information. 11 | // 12 | // This file is part of the SST software package. For license 13 | // information, see the LICENSE file in the top level directory of the 14 | // distribution. 15 | // 16 | 17 | #ifndef COMPONENTS_FIREFLY_SIMPLE_MEMORY_MODEL_MEM_REQ_H 18 | #define COMPONENTS_FIREFLY_SIMPLE_MEMORY_MODEL_MEM_REQ_H 19 | 20 | struct MemReq { 21 | MemReq( Hermes::Vaddr addr, size_t length, int pid = -1) : 22 | addr(addr), length(length), pid(pid) {} 23 | 24 | Hermes::Vaddr addr; 25 | size_t length; 26 | int pid; 27 | }; 28 | 29 | #endif 30 | -------------------------------------------------------------------------------- /src/sst/elements/firefly/nicRdmaStream.h: -------------------------------------------------------------------------------- 1 | // Copyright 2009-2021 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-2021, NTESS 6 | // All rights reserved. 7 | // 8 | // Portions are copyright of other developers: 9 | // See the file CONTRIBUTORS.TXT in the top level directory 10 | // the distribution for more information. 11 | // 12 | // This file is part of the SST software package. For license 13 | // information, see the LICENSE file in the top level directory of the 14 | // distribution. 15 | 16 | class RdmaStream : public StreamBase { 17 | public: 18 | RdmaStream( Output&, Ctx*, int srcNode, int srcPid, int destPid, FireflyNetworkEvent* ); 19 | bool isBlocked() { 20 | return StreamBase::isBlocked() || m_blocked; 21 | } 22 | protected: 23 | void processPktHdr( FireflyNetworkEvent* ev ); 24 | bool m_blocked; 25 | }; 26 | -------------------------------------------------------------------------------- /src/sst/elements/firefly/nicShmemRecvMachine.h: -------------------------------------------------------------------------------- 1 | // Copyright 2009-2021 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-2021, NTESS 6 | // All rights reserved. 7 | // 8 | // Portions are copyright of other developers: 9 | // See the file CONTRIBUTORS.TXT in the top level directory 10 | // the distribution for more information. 11 | // 12 | // This file is part of the SST software package. For license 13 | // information, see the LICENSE file in the top level directory of the 14 | // distribution. 15 | 16 | class Shmem { 17 | public: 18 | Shmem( Output& output ) : m_dbg( output) {} 19 | void init( std::function(int,uint64_t)> func ) { 20 | m_findRegMem = func; 21 | } 22 | private: 23 | Output& m_dbg; 24 | std::function(int,uint64_t)> m_findRegMem; 25 | }; 26 | -------------------------------------------------------------------------------- /src/sst/elements/hermes/Makefile.am: -------------------------------------------------------------------------------- 1 | # -*- Makefile -*- 2 | # 3 | # 4 | 5 | AM_CPPFLAGS = \ 6 | $(MPI_CPPFLAGS) \ 7 | -I$(top_srcdir)/src 8 | 9 | compdir = $(pkglibdir) 10 | comp_LTLIBRARIES = libhermes.la 11 | 12 | sstdir = $(includedir)/sst/elements/hermes 13 | 14 | libhermes_la_SOURCES = \ 15 | libhermes.c 16 | 17 | nobase_sst_HEADERS = \ 18 | msgapi.h \ 19 | miscapi.h \ 20 | hermes.h \ 21 | functor.h \ 22 | shmemapi.h 23 | 24 | libhermes_la_LDFLAGS = -module -avoid-version 25 | 26 | install-exec-hook: 27 | $(SST_REGISTER_TOOL) SST_ELEMENT_SOURCE hermes=$(abs_srcdir) 28 | -------------------------------------------------------------------------------- /src/sst/elements/hermes/libhermes.c: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /src/sst/elements/kingsley/Makefile.am: -------------------------------------------------------------------------------- 1 | 2 | AM_CPPFLAGS = \ 3 | -I$(top_srcdir)/src \ 4 | $(MPI_CPPFLAGS) 5 | 6 | 7 | compdir = $(pkglibdir) 8 | comp_LTLIBRARIES = libkingsley.la 9 | 10 | libkingsley_la_SOURCES = \ 11 | nocEvents.h \ 12 | noc_mesh.h \ 13 | noc_mesh.cc \ 14 | lru_unit.h \ 15 | linkControl.h \ 16 | linkControl.cc 17 | 18 | EXTRA_DIST = \ 19 | tests/testsuite_default_kingsley.py \ 20 | tests/noc_mesh_32_test.py \ 21 | tests/refFiles/test_kingsley_noc_mesh_32_test.out 22 | 23 | libkingsley_la_LDFLAGS = -module -avoid-version 24 | 25 | install-exec-hook: 26 | $(SST_REGISTER_TOOL) SST_ELEMENT_SOURCE kingsley=$(abs_srcdir) 27 | $(SST_REGISTER_TOOL) SST_ELEMENT_TESTS kingsley=$(abs_srcdir)/tests 28 | -------------------------------------------------------------------------------- /src/sst/elements/memHierarchy/Sieve/tests/.gitignore: -------------------------------------------------------------------------------- 1 | backtrace* 2 | -------------------------------------------------------------------------------- /src/sst/elements/memHierarchy/Sieve/tests/Makefile: -------------------------------------------------------------------------------- 1 | CXX=g++ 2 | 3 | 4 | ompsievetest: ompsievetest.o 5 | $(CXX) -O3 -o ompsievetest -fopenmp ompsievetest.o 6 | 7 | ompsievetest.o: ompsievetest.c 8 | $(CXX) -O3 -o ompsievetest.o -fopenmp -c ompsievetest.c 9 | 10 | clean: 11 | rm -f ompsievetest *.o 12 | -------------------------------------------------------------------------------- /src/sst/elements/memHierarchy/Sieve/tests/StatisticOutput.csv.gold: -------------------------------------------------------------------------------- 1 | ComponentName, StatisticName, StatisticSubId, StatisticType, SimTime, Rank, BinsMinValue.u64, BinsMaxValue.u64, BinWidth.u32, TotalNumBins.u32, Sum.u64, SumSQ.u64, NumActiveBins.u32, NumItemsCollected.u64, NumItemsBinned.u64, NumOutOfBounds-MinValue.u64, NumOutOfBounds-MaxValue.u64, Bin0:0-4095.u64, Bin1:4096-8191.u64, Bin2:8192-12287.u64, Bin3:12288-16383.u64, Bin4:16384-20479.u64, Bin5:20480-24575.u64 2 | sieve, histogram_reads, , Histogram, 5501, 0, 0, 24575, 4096, 6, 16395, 268468325, 2, 2, 2, 0, 0, 1, 0, 0, 0, 1, 0 3 | sieve, histogram_writes, , Histogram, 5501, 0, 0, 24575, 4096, 6, 12267, 83534309, 1, 2, 2, 0, 0, 0, 2, 0, 0, 0, 0 4 | -------------------------------------------------------------------------------- /src/sst/elements/memHierarchy/Sieve/tests/sieveprospero-0.trace: -------------------------------------------------------------------------------- 1 | 0 r 10 10 2 | 1 w 4097 20 3 | 2 w 8170 10 4 | 3 r 16385 30 5 | 4 w 16395 10 6 | 6 r 17179869184 10 7 | -------------------------------------------------------------------------------- /src/sst/elements/memHierarchy/hash.cc: -------------------------------------------------------------------------------- 1 | // Copyright 2009-2021 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-2021, NTESS 6 | // All rights reserved. 7 | // 8 | // Portions are copyright of other developers: 9 | // See the file CONTRIBUTORS.TXT in the top level directory 10 | // the distribution for more information. 11 | // 12 | // This file is part of the SST software package. For license 13 | // information, see the LICENSE file in the top level directory of the 14 | // distribution. 15 | 16 | /* 17 | * File: hash.cc 18 | * Author: Caesar De la Paz III 19 | * Email: caesar.sst@gmail.com 20 | */ 21 | 22 | #include 23 | #include "hash.h" 24 | 25 | -------------------------------------------------------------------------------- /src/sst/elements/memHierarchy/memResponseHandler.h: -------------------------------------------------------------------------------- 1 | // Copyright 2009-2021 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-2021, NTESS 6 | // All rights reserved. 7 | // 8 | // Portions are copyright of other developers: 9 | // See the file CONTRIBUTORS.TXT in the top level directory 10 | // the distribution for more information. 11 | // 12 | // This file is part of the SST software package. For license 13 | // information, see the LICENSE file in the top level directory of the 14 | // distribution. 15 | 16 | #ifndef _H_SST_MEM_HIERARCHY_MEM_RESP_HANDLER 17 | #define _H_SST_MEM_HIERARCHY_MEM_RESP_HANDLER 18 | 19 | #include "sst/elements/memHierarchy/DRAMReq.h" 20 | 21 | namespace SST { 22 | namespace MemHierarchy { 23 | 24 | class MemResponseHandler { 25 | virtual void handleMemResponse(DRAMReq *req) = 0; 26 | }; 27 | 28 | } 29 | } 30 | 31 | #endif 32 | -------------------------------------------------------------------------------- /src/sst/elements/memHierarchy/tests/DDR4_8Gb_x16_3200.ini: -------------------------------------------------------------------------------- 1 | [dram_structure] 2 | protocol = DDR4 3 | bankgroups = 2 4 | banks_per_group = 4 5 | rows = 65536 6 | columns = 1024 7 | device_width = 16 8 | BL = 8 9 | 10 | [timing] 11 | tCK = 0.63 12 | AL = 0 13 | CL = 22 14 | CWL = 16 15 | tRCD = 22 16 | tRP = 22 17 | tRAS = 52 18 | tRFC = 560 19 | tRFC2 = 416 20 | tRFC4 = 256 21 | tREFI = 12480 22 | tRPRE = 1 23 | tWPRE = 1 24 | tRRD_S = 9 25 | tRRD_L = 11 26 | tWTR_S = 4 27 | tWTR_L = 12 28 | tFAW = 48 29 | tWR = 24 30 | tWR2 = 25 31 | tRTP = 12 32 | tCCD_S = 4 33 | tCCD_L = 8 34 | tCKE = 8 35 | tCKESR = 9 36 | tXS = 576 37 | tXP = 10 38 | tRTRS = 1 39 | 40 | [power] 41 | VDD = 1.2 42 | IDD0 = 95 43 | IPP0 = 4.0 44 | IDD2P = 25 45 | IDD2N = 37 46 | IDD3P = 47 47 | IDD3N = 56 48 | IDD4W = 278 49 | IDD4R = 302 50 | IDD5AB = 280 51 | IDD6x = 30 52 | 53 | [system] 54 | channel_size = 8192 55 | channels = 1 56 | bus_width = 64 57 | address_mapping = rochrababgco 58 | queue_structure = PER_BANK 59 | refresh_policy = RANK_LEVEL_STAGGERED 60 | row_buf_policy = OPEN_PAGE 61 | cmd_queue_size = 8 62 | trans_queue_size = 32 63 | 64 | [other] 65 | epoch_period = 1587301 66 | output_level = 1 67 | 68 | -------------------------------------------------------------------------------- /src/sst/elements/memHierarchy/tests/miranda.cfg: -------------------------------------------------------------------------------- 1 | [CPU] 2 | clock: 2660MHz 3 | num_cores: 16 4 | application: miranda.STREAMBenchGeneratorCustomCmd 5 | max_reqs_cycle: 3 6 | 7 | [miranda.STREAMBenchGeneratorCustomCmd] 8 | total_streamN: 5000 9 | 10 | [miranda.SPMVGenerator] 11 | total_streamN: 5000 12 | 13 | [miranda.RandomGenerator] 14 | total_streamN: 5000 15 | 16 | [miranda.GUPSGenerator] 17 | total_streamN: 500 18 | 19 | [Memory] 20 | clock: 200MHz 21 | network_bw: 96GB/s 22 | capacity: 32768MiB 23 | 24 | [Network] 25 | #2.66 GHz time period plus slack for ringstop latency 26 | latency: 300ps 27 | # 2.66 GHz clock, moves 64B / cycle, plus overhead -> 36B/c 28 | bandwidth: 96GB/s 29 | flit_size: 8B 30 | 31 | -------------------------------------------------------------------------------- /src/sst/elements/memHierarchy/tests/openMP/ompapi/Makefile: -------------------------------------------------------------------------------- 1 | include ../Makefile.inc 2 | 3 | ompapi.x: ompapi.o 4 | $(CC) $(CFLAGS) -o $@ $< -lgomp -L ../pthread/m5threads -lpthread 5 | 6 | ompapi.o: ompapi.c 7 | $(CC) $(CFLAGS) $(OMP) -o $@ -c $< 8 | 9 | clean: 10 | rm -f ompapi.x *.o 11 | -------------------------------------------------------------------------------- /src/sst/elements/memHierarchy/tests/openMP/ompapi/newMakefile: -------------------------------------------------------------------------------- 1 | CXX=g++ 2 | 3 | ompapi: ompapi.o 4 | $(CXX) -O3 -o ompapi -fopenmp ompapi.o 5 | 6 | ompapi.o: ompapi.c 7 | $(CXX) -O3 -o ompapi.o -fopenmp -c ompapi.c 8 | 9 | clean: 10 | rm ompapi ompapi.o 11 | 12 | -------------------------------------------------------------------------------- /src/sst/elements/memHierarchy/tests/openMP/ompapi/ompapi: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stonne-simulator/sst-elements-with-stonne/82cf0b29f384fa658a072724c303b40dee0331ec/src/sst/elements/memHierarchy/tests/openMP/ompapi/ompapi -------------------------------------------------------------------------------- /src/sst/elements/memHierarchy/tests/openMP/ompapi/ompapi.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | 5 | int main(int argc, char* argv[]) { 6 | 7 | printf("OpenMP API Test\n"); 8 | 9 | int thread_count = omp_get_max_threads(); 10 | 11 | printf("Maximum number of OpenMP threads is: %d\n", thread_count); 12 | 13 | int thread_count_now = omp_get_num_threads(); 14 | 15 | printf("There are %d threads active now (should equal 1 since not in parallel region)\n", thread_count_now); 16 | 17 | #pragma omp parallel 18 | { 19 | #pragma omp single 20 | { 21 | thread_count_now = omp_get_num_threads(); 22 | printf("There are now %d threads active (should equal OMP_NUM_THREADS since in parallel region)\n", thread_count_now); 23 | } 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /src/sst/elements/memHierarchy/tests/openMP/ompatomic/Makefile: -------------------------------------------------------------------------------- 1 | include ../Makefile.inc 2 | 3 | ompatomic.x: ompatomic.o 4 | $(CC) $(CFLAGS) -o $@ $< -lgomp -L ../pthread/m5threads -lpthread 5 | 6 | ompatomic.o: ompatomic.c 7 | $(CC) $(CFLAGS) $(OMP) -o $@ -c $< 8 | 9 | clean: 10 | rm -f ompatomic.x *.o 11 | -------------------------------------------------------------------------------- /src/sst/elements/memHierarchy/tests/openMP/ompatomic/newMakefile: -------------------------------------------------------------------------------- 1 | CXX=g++ 2 | 3 | ompatomic: ompatomic.o 4 | $(CXX) -O3 -o ompatomic -fopenmp ompatomic.o 5 | 6 | ompatomic.o: ompatomic.c 7 | $(CXX) -O3 -o ompatomic.o -fopenmp -c ompatomic.c 8 | 9 | clean: 10 | rm ompatomic ompatomic.o 11 | 12 | -------------------------------------------------------------------------------- /src/sst/elements/memHierarchy/tests/openMP/ompatomic/ompatomic: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stonne-simulator/sst-elements-with-stonne/82cf0b29f384fa658a072724c303b40dee0331ec/src/sst/elements/memHierarchy/tests/openMP/ompatomic/ompatomic -------------------------------------------------------------------------------- /src/sst/elements/memHierarchy/tests/openMP/ompatomic/ompatomic.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | 5 | int main(int argc, char* argv[]) { 6 | 7 | int thread_count = 0; 8 | 9 | #pragma omp parallel 10 | { 11 | #pragma omp atomic 12 | thread_count += 1; 13 | } 14 | 15 | printf("Counted: %d threads\n", thread_count); 16 | 17 | } 18 | -------------------------------------------------------------------------------- /src/sst/elements/memHierarchy/tests/openMP/ompatomicShort/Makefile: -------------------------------------------------------------------------------- 1 | dum : ompatomicShort 2 | cp ompatomicShort ompatomicShort.x 3 | 4 | clean: 5 | @echo " Do not delete ompatomicShort file" 6 | -------------------------------------------------------------------------------- /src/sst/elements/memHierarchy/tests/openMP/ompatomicShort/README: -------------------------------------------------------------------------------- 1 | These files came as: 2 | 3 | atomic_test-short np8-M5.xml np8.xml 4 | 5 | They were renamed to match the M5 template. 6 | -------------------------------------------------------------------------------- /src/sst/elements/memHierarchy/tests/openMP/ompatomicShort/newMakefile: -------------------------------------------------------------------------------- 1 | CXX=g++ 2 | 3 | ompatomicShort: ompatomicShort.o 4 | $(CXX) -O3 -o ompatomicShort -fopenmp ompatomicShort.o 5 | 6 | ompatomicShort.o: ompatomicShort.c 7 | $(CXX) -O3 -o ompatomicShort.o -fopenmp -c ompatomicShort.c 8 | 9 | clean: 10 | rm ompatomicShort ompatomicShort.o 11 | 12 | -------------------------------------------------------------------------------- /src/sst/elements/memHierarchy/tests/openMP/ompatomicShort/ompatomicShort: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stonne-simulator/sst-elements-with-stonne/82cf0b29f384fa658a072724c303b40dee0331ec/src/sst/elements/memHierarchy/tests/openMP/ompatomicShort/ompatomicShort -------------------------------------------------------------------------------- /src/sst/elements/memHierarchy/tests/openMP/ompbarrier/Makefile: -------------------------------------------------------------------------------- 1 | include ../Makefile.inc 2 | 3 | ompbarrier.x: ompbarrier.o 4 | $(CC) $(CFLAGS) -o $@ $< -lgomp -L ../pthread/m5threads -lpthread 5 | 6 | ompbarrier.o: ompbarrier.c 7 | $(CC) $(CFLAGS) $(OMP) -o $@ -c $< 8 | 9 | clean: 10 | rm -f ompbarrier.x *.o 11 | -------------------------------------------------------------------------------- /src/sst/elements/memHierarchy/tests/openMP/ompbarrier/newMakefile: -------------------------------------------------------------------------------- 1 | CXX=g++ 2 | 3 | ompbarrier: ompbarrier.o 4 | $(CXX) -O3 -o ompbarrier -fopenmp ompbarrier.o 5 | 6 | ompbarrier.o: ompbarrier.c 7 | $(CXX) -O3 -o ompbarrier.o -fopenmp -c ompbarrier.c 8 | 9 | clean: 10 | rm ompbarrier ompbarrier.o 11 | 12 | -------------------------------------------------------------------------------- /src/sst/elements/memHierarchy/tests/openMP/ompbarrier/ompbarrier: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stonne-simulator/sst-elements-with-stonne/82cf0b29f384fa658a072724c303b40dee0331ec/src/sst/elements/memHierarchy/tests/openMP/ompbarrier/ompbarrier -------------------------------------------------------------------------------- /src/sst/elements/memHierarchy/tests/openMP/ompbarrier/ompbarrier.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | 5 | int main(int argc, char* argv[]) { 6 | 7 | int counter; 8 | const int n = 16; 9 | 10 | #pragma omp parallel private(counter) 11 | { 12 | for(counter = 0; counter < n; counter++) { 13 | #pragma omp barrier 14 | 15 | printf("Performing iteration %d\n", counter); 16 | fflush(stdout); 17 | 18 | #pragma omp barrier 19 | } 20 | } 21 | 22 | } 23 | -------------------------------------------------------------------------------- /src/sst/elements/memHierarchy/tests/openMP/ompcritical/Makefile: -------------------------------------------------------------------------------- 1 | include ../Makefile.inc 2 | 3 | ompcritical.x: ompcritical.o 4 | $(CC) $(CFLAGS) -o $@ $< -lgomp -L ../pthread/m5threads -lpthread 5 | 6 | ompcritical.o: ompcritical.c 7 | $(CC) $(CFLAGS) $(OMP) -o $@ -c $< 8 | 9 | clean: 10 | rm -f ompcritical.x *.o 11 | -------------------------------------------------------------------------------- /src/sst/elements/memHierarchy/tests/openMP/ompcritical/newMakefile: -------------------------------------------------------------------------------- 1 | CXX=g++ 2 | 3 | ompcritical: ompcritical.o 4 | $(CXX) -O3 -o ompcritical -fopenmp ompcritical.o 5 | 6 | ompcritical.o: ompcritical.c 7 | $(CXX) -O3 -o ompcritical.o -fopenmp -c ompcritical.c 8 | 9 | clean: 10 | rm ompcritical ompcritical.o 11 | 12 | -------------------------------------------------------------------------------- /src/sst/elements/memHierarchy/tests/openMP/ompcritical/ompcritical: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stonne-simulator/sst-elements-with-stonne/82cf0b29f384fa658a072724c303b40dee0331ec/src/sst/elements/memHierarchy/tests/openMP/ompcritical/ompcritical -------------------------------------------------------------------------------- /src/sst/elements/memHierarchy/tests/openMP/ompcritical/ompcritical.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | 5 | int main(int argc, char* argv[]) { 6 | 7 | int thread_count = 0; 8 | 9 | #pragma omp parallel shared(thread_count) 10 | { 11 | #pragma omp critical 12 | { 13 | thread_count = thread_count + 1; 14 | } 15 | } 16 | 17 | printf("Counted: %d threads.\n", thread_count); 18 | } 19 | -------------------------------------------------------------------------------- /src/sst/elements/memHierarchy/tests/openMP/ompdynamic/Makefile: -------------------------------------------------------------------------------- 1 | include ../Makefile.inc 2 | 3 | ompdynamic.x: ompdynamic.o 4 | $(CC) $(CFLAGS) -o $@ $< -lgomp -L ../pthread/m5threads -lpthread 5 | 6 | ompdynamic.o: ompdynamic.c 7 | $(CC) $(CFLAGS) $(OMP) -o $@ -c $< 8 | 9 | clean: 10 | rm -f ompdynamic.x *.o 11 | -------------------------------------------------------------------------------- /src/sst/elements/memHierarchy/tests/openMP/ompdynamic/newMakefile: -------------------------------------------------------------------------------- 1 | CXX=g++ 2 | 3 | ompdynamic: ompdynamic.o 4 | $(CXX) -O3 -o ompdynamic -fopenmp ompdynamic.o 5 | 6 | ompdynamic.o: ompdynamic.c 7 | $(CXX) -O3 -o ompdynamic.o -fopenmp -c ompdynamic.c 8 | 9 | clean: 10 | rm ompdynamic ompdynamic.o 11 | 12 | -------------------------------------------------------------------------------- /src/sst/elements/memHierarchy/tests/openMP/ompdynamic/ompdynamic: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stonne-simulator/sst-elements-with-stonne/82cf0b29f384fa658a072724c303b40dee0331ec/src/sst/elements/memHierarchy/tests/openMP/ompdynamic/ompdynamic -------------------------------------------------------------------------------- /src/sst/elements/memHierarchy/tests/openMP/ompdynamic/ompdynamic.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | int main(int argc, char* argv[]) { 5 | 6 | printf("OpenMP Dynamic Test Case\n"); 7 | 8 | const int n = 1024; 9 | double* the_array = (double*) malloc(sizeof(double) * n); 10 | 11 | int i = 0; 12 | for(i = 0; i < n; ++i) { 13 | the_array[i] = i; 14 | } 15 | 16 | double sum; 17 | #pragma omp parallel for schedule(dynamic) reduction(+:sum) 18 | for(i = 0; i < n; ++i) { 19 | sum += the_array[i]; 20 | } 21 | 22 | printf("Dynamic vector sum is: %f\n", sum); 23 | 24 | } 25 | -------------------------------------------------------------------------------- /src/sst/elements/memHierarchy/tests/openMP/ompmybarrier/Makefile: -------------------------------------------------------------------------------- 1 | include ../Makefile.inc 2 | 3 | ompmybarrier.x: ompmybarrier.o 4 | $(CC) $(CFLAGS) -o $@ $< -lgomp -L ../pthread/m5threads -lpthread 5 | 6 | ompmybarrier.o: ompmybarrier.c 7 | $(CC) $(CFLAGS) $(OMP) -o $@ -c $< 8 | 9 | clean: 10 | rm -f ompmybarrier.x *.o 11 | -------------------------------------------------------------------------------- /src/sst/elements/memHierarchy/tests/openMP/ompmybarrier/newMakefile: -------------------------------------------------------------------------------- 1 | CXX=g++ 2 | 3 | ompmybarrier: ompmybarrier.o 4 | $(CXX) -O3 -o ompmybarrier -fopenmp ompmybarrier.o 5 | 6 | ompmybarrier.o: ompmybarrier.c 7 | $(CXX) -O3 -o ompmybarrier.o -fopenmp -c ompmybarrier.c 8 | 9 | clean: 10 | rm ompmybarrier ompmybarrier.o 11 | 12 | -------------------------------------------------------------------------------- /src/sst/elements/memHierarchy/tests/openMP/ompmybarrier/ompmybarrier: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stonne-simulator/sst-elements-with-stonne/82cf0b29f384fa658a072724c303b40dee0331ec/src/sst/elements/memHierarchy/tests/openMP/ompmybarrier/ompmybarrier -------------------------------------------------------------------------------- /src/sst/elements/memHierarchy/tests/openMP/ompmybarrier/ompmybarrier.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | 5 | int main(int argc, char* argv[]) { 6 | 7 | int counter; 8 | const int n = 16; 9 | int id; 10 | 11 | #pragma omp parallel private(counter, id) 12 | { 13 | id = omp_get_thread_num(); 14 | for(counter = 0; counter < n; counter++) { 15 | #pragma omp barrier 16 | 17 | printf("%d Performing iteration %d\n", id, counter); 18 | fflush(stdout); 19 | 20 | #pragma omp barrier 21 | } 22 | } 23 | 24 | } 25 | -------------------------------------------------------------------------------- /src/sst/elements/memHierarchy/tests/openMP/ompreduce/Makefile: -------------------------------------------------------------------------------- 1 | include ../Makefile.inc 2 | 3 | ompreduce.x: ompreduce.o 4 | $(CC) $(CFLAGS) -o $@ $< -lgomp -L ../pthread/m5threads -lpthread 5 | 6 | ompreduce.o: ompreduce.c 7 | $(CC) $(CFLAGS) $(OMP) -o $@ -c $< 8 | 9 | clean: 10 | rm -f ompreduce.x *.o 11 | -------------------------------------------------------------------------------- /src/sst/elements/memHierarchy/tests/openMP/ompreduce/newMakefile: -------------------------------------------------------------------------------- 1 | CXX=g++ 2 | 3 | ompreduce: ompreduce.o 4 | $(CXX) -O3 -o ompreduce -fopenmp ompreduce.o 5 | 6 | ompreduce.o: ompreduce.c 7 | $(CXX) -O3 -o ompreduce.o -fopenmp -c ompreduce.c 8 | 9 | clean: 10 | rm ompreduce ompreduce.o 11 | 12 | -------------------------------------------------------------------------------- /src/sst/elements/memHierarchy/tests/openMP/ompreduce/ompreduce: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stonne-simulator/sst-elements-with-stonne/82cf0b29f384fa658a072724c303b40dee0331ec/src/sst/elements/memHierarchy/tests/openMP/ompreduce/ompreduce -------------------------------------------------------------------------------- /src/sst/elements/memHierarchy/tests/openMP/ompreduce/ompreduce.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | int main(int argc, char* argv[]) { 5 | 6 | const int n = 1024; 7 | double* array = (double*) malloc(sizeof(double) * n); 8 | 9 | int i = 0; 10 | for(i = 0; i < n; ++i) { 11 | array[i] = i; 12 | } 13 | 14 | printf("Performing an OpenMP reduction...\n"); 15 | double total = 0; 16 | 17 | #pragma omp parallel for reduction(+:total) 18 | for(i = 0; i < n; ++i) { 19 | total += array[i]; 20 | } 21 | 22 | printf("Value of reduction is: %f\n", total); 23 | 24 | } 25 | -------------------------------------------------------------------------------- /src/sst/elements/memHierarchy/tests/openMP/ompthrcount/Makefile: -------------------------------------------------------------------------------- 1 | include ../Makefile.inc 2 | 3 | ompthrcount.x: ompthrcount.o 4 | $(CC) $(CFLAGS) -o $@ $< -lgomp -L ../pthread/m5threads -lpthread 5 | 6 | ompthrcount.o: ompthrcount.c 7 | $(CC) $(CFLAGS) $(OMP) -o $@ -c $< 8 | 9 | clean: 10 | rm -f ompthrcount.x *.o 11 | -------------------------------------------------------------------------------- /src/sst/elements/memHierarchy/tests/openMP/ompthrcount/newMakefile: -------------------------------------------------------------------------------- 1 | CXX=g++ 2 | 3 | ompthrcount: ompthrcount.o 4 | $(CXX) -O3 -o ompthrcount -fopenmp ompthrcount.o 5 | 6 | ompthrcount.o: ompthrcount.c 7 | $(CXX) -O3 -o ompthrcount.o -fopenmp -c ompthrcount.c 8 | 9 | clean: 10 | rm ompthrcount ompthrcount.o 11 | 12 | -------------------------------------------------------------------------------- /src/sst/elements/memHierarchy/tests/openMP/ompthrcount/ompthrcount: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stonne-simulator/sst-elements-with-stonne/82cf0b29f384fa658a072724c303b40dee0331ec/src/sst/elements/memHierarchy/tests/openMP/ompthrcount/ompthrcount -------------------------------------------------------------------------------- /src/sst/elements/memHierarchy/tests/openMP/ompthrcount/ompthrcount.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | 5 | int main(int argc, char* argv[]) { 6 | 7 | int thread_count = 0; 8 | 9 | printf("Test will create many threads and increment a counter...\n"); 10 | 11 | #pragma omp parallel 12 | { 13 | #pragma omp atomic 14 | thread_count += 1; 15 | } 16 | 17 | printf("Hello OpenMP World just created: %d threads!\n", 18 | thread_count); 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/sst/elements/memHierarchy/tests/openMP/omptriangle/Makefile: -------------------------------------------------------------------------------- 1 | include ../Makefile.inc 2 | 3 | omptriangle.x: omptriangle.o 4 | $(CC) $(CFLAGS) -o $@ $< -lgomp -L ../pthread/m5threads -lpthread 5 | 6 | omptriangle.o: omptriangle.c 7 | $(CC) $(CFLAGS) $(OMP) -o $@ -c $< 8 | 9 | clean: 10 | rm -f omptriangle.x *.o 11 | -------------------------------------------------------------------------------- /src/sst/elements/memHierarchy/tests/openMP/omptriangle/newMakefile: -------------------------------------------------------------------------------- 1 | CXX=g++ 2 | 3 | omptriangle: omptriangle.o 4 | $(CXX) -O3 -o omptriangle -fopenmp omptriangle.o 5 | 6 | omptriangle.o: omptriangle.c 7 | $(CXX) -O3 -o omptriangle.o -fopenmp -c omptriangle.c 8 | 9 | clean: 10 | rm omptriangle omptriangle.o 11 | 12 | -------------------------------------------------------------------------------- /src/sst/elements/memHierarchy/tests/openMP/omptriangle/omptriangle: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stonne-simulator/sst-elements-with-stonne/82cf0b29f384fa658a072724c303b40dee0331ec/src/sst/elements/memHierarchy/tests/openMP/omptriangle/omptriangle -------------------------------------------------------------------------------- /src/sst/elements/memHierarchy/tests/openMP/omptriangle/omptriangle.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | int main(int argc, char* argv[]) { 5 | 6 | const int n = 20; 7 | int** the_array = (int**) malloc(sizeof(int*) * n); 8 | 9 | int i = 0; 10 | for(i = 0; i < n; ++i) { 11 | the_array[i] = (int*) malloc(sizeof(int) * n); 12 | } 13 | 14 | #pragma omp parallel for 15 | for(i = 0; i < n; ++i) { 16 | int j = 0; 17 | 18 | for(j = 0; j < n; ++j) { 19 | if(j < i) { 20 | the_array[i][j] = 1; 21 | } else { 22 | the_array[i][j] = 0; 23 | } 24 | } 25 | } 26 | 27 | printf("The matrix is:\n\n"); 28 | 29 | for(i = 0; i < n; ++i) { 30 | int j = 0; 31 | 32 | for(j = 0; j < n; ++j) { 33 | printf("%d ", the_array[i][j]); 34 | } 35 | 36 | printf("\n"); 37 | } 38 | 39 | } 40 | -------------------------------------------------------------------------------- /src/sst/elements/memHierarchy/tests/refFiles/test_OMP_noncacheable_ompapi.out: -------------------------------------------------------------------------------- 1 | OpenMP API Test 2 | Maximum number of OpenMP threads is: 8 3 | There are 1 threads active now (should equal 1 since not in parallel region) 4 | There are now 8 threads active (should equal OMP_NUM_THREADS since in parallel region) 5 | CORE ID: 0 PROCESSED AN EXIT EVENT 6 | 7 | Ariel Memory Management Statistics: 8 | Page Table Sizes: 9 | Page Table Coverages: 10 | Simulation is complete, simulated time: 287.104 us 11 | -------------------------------------------------------------------------------- /src/sst/elements/memHierarchy/tests/refFiles/test_OMP_noncacheable_ompatomic.out: -------------------------------------------------------------------------------- 1 | Counted: 8 threads 2 | CORE ID: 0 PROCESSED AN EXIT EVENT 3 | 4 | Ariel Memory Management Statistics: 5 | Page Table Sizes: 6 | Page Table Coverages: 7 | Simulation is complete, simulated time: 284.636 us 8 | -------------------------------------------------------------------------------- /src/sst/elements/memHierarchy/tests/refFiles/test_OMP_noncacheable_ompcritical.out: -------------------------------------------------------------------------------- 1 | Counted: 8 threads. 2 | CORE ID: 0 PROCESSED AN EXIT EVENT 3 | 4 | Ariel Memory Management Statistics: 5 | Page Table Sizes: 6 | Page Table Coverages: 7 | Simulation is complete, simulated time: 246.11 us 8 | -------------------------------------------------------------------------------- /src/sst/elements/memHierarchy/tests/refFiles/test_OMP_noncacheable_ompdynamic.out: -------------------------------------------------------------------------------- 1 | OpenMP Dynamic Test Case 2 | Dynamic vector sum is: 523776.000000 3 | CORE ID: 0 PROCESSED AN EXIT EVENT 4 | 5 | Ariel Memory Management Statistics: 6 | Page Table Sizes: 7 | Page Table Coverages: 8 | Simulation is complete, simulated time: 343.911 us 9 | -------------------------------------------------------------------------------- /src/sst/elements/memHierarchy/tests/refFiles/test_OMP_noncacheable_ompreduce.out: -------------------------------------------------------------------------------- 1 | Performing an OpenMP reduction... 2 | Value of reduction is: 523776.000000 3 | CORE ID: 0 PROCESSED AN EXIT EVENT 4 | 5 | Ariel Memory Management Statistics: 6 | Page Table Sizes: 7 | Page Table Coverages: 8 | Simulation is complete, simulated time: 272.804 us 9 | -------------------------------------------------------------------------------- /src/sst/elements/memHierarchy/tests/refFiles/test_OMP_noncacheable_ompthrcount.out: -------------------------------------------------------------------------------- 1 | Test will create many threads and increment a counter... 2 | Hello OpenMP World just created: 8 threads! 3 | CORE ID: 0 PROCESSED AN EXIT EVENT 4 | 5 | Ariel Memory Management Statistics: 6 | Page Table Sizes: 7 | Page Table Coverages: 8 | Simulation is complete, simulated time: 257.404 us 9 | -------------------------------------------------------------------------------- /src/sst/elements/memHierarchy/tests/refFiles/test_OMP_noncacheable_omptriangle.out: -------------------------------------------------------------------------------- 1 | The matrix is: 2 | 3 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 | 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 | 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 | 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7 | 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 | 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9 | 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10 | 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 11 | 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 12 | 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 13 | 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 14 | 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 15 | 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 16 | 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 17 | 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 18 | 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 19 | 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 20 | 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 21 | 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 22 | 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 23 | CORE ID: 0 PROCESSED AN EXIT EVENT 24 | 25 | Ariel Memory Management Statistics: 26 | Page Table Sizes: 27 | Page Table Coverages: 28 | Simulation is complete, simulated time: 986.608 us 29 | -------------------------------------------------------------------------------- /src/sst/elements/memHierarchy/tests/refFiles/test_OMP_ompapi.out: -------------------------------------------------------------------------------- 1 | OpenMP API Test 2 | Maximum number of OpenMP threads is: 8 3 | There are 1 threads active now (should equal 1 since not in parallel region) 4 | There are now 8 threads active (should equal OMP_NUM_THREADS since in parallel region) 5 | -------------------------------------------------------------------------------- /src/sst/elements/memHierarchy/tests/refFiles/test_OMP_ompatomic.out: -------------------------------------------------------------------------------- 1 | Counted: 8 threads 2 | -------------------------------------------------------------------------------- /src/sst/elements/memHierarchy/tests/refFiles/test_OMP_ompatomicShort.out: -------------------------------------------------------------------------------- 1 | Creating thread 1 2 | Creating thread 2 3 | Hello from thread 1 4 | Creating thread 3 5 | Hello from thread 2 6 | Creating thread 4 7 | Hello from thread 3 8 | Creating thread 5 9 | Hello from thread 4 10 | Creating thread 6 11 | Hello from thread 5 12 | Creating thread 7 13 | Hello from thread 6 14 | Hello from thread 0 15 | Hello from thread 7 16 | -------------------------------------------------------------------------------- /src/sst/elements/memHierarchy/tests/refFiles/test_OMP_ompcritical.out: -------------------------------------------------------------------------------- 1 | Counted: 8 threads. 2 | -------------------------------------------------------------------------------- /src/sst/elements/memHierarchy/tests/refFiles/test_OMP_ompdynamic.out: -------------------------------------------------------------------------------- 1 | OpenMP Dynamic Test Case 2 | Dynamic vector sum is: 523776.000000 3 | -------------------------------------------------------------------------------- /src/sst/elements/memHierarchy/tests/refFiles/test_OMP_ompreduce.out: -------------------------------------------------------------------------------- 1 | Performing an OpenMP reduction... 2 | Value of reduction is: 523776.000000 3 | -------------------------------------------------------------------------------- /src/sst/elements/memHierarchy/tests/refFiles/test_OMP_ompthrcount.out: -------------------------------------------------------------------------------- 1 | Test will create many threads and increment a counter... 2 | Hello OpenMP World just created: 8 threads! 3 | -------------------------------------------------------------------------------- /src/sst/elements/memHierarchy/tests/refFiles/test_OMP_omptriangle.out: -------------------------------------------------------------------------------- 1 | The matrix is: 2 | 3 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 | 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 | 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 | 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7 | 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 | 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9 | 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10 | 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 11 | 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 12 | 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 13 | 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 14 | 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 15 | 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 16 | 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 17 | 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 18 | 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 19 | 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 20 | 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 21 | 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 22 | 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 23 | -------------------------------------------------------------------------------- /src/sst/elements/memHierarchy/tests/refFiles/test_hybridsim.out: -------------------------------------------------------------------------------- 1 | l2cache: No MSHR lookup latency provided (mshr_latency_cycles)...intrapolated to 2 cycles. 2 | memory, WARNING: loading backend in legacy mode (from parameter set). Instead, load backend into this controller's 'backend' slot via ctrl.setSubComponent() in configuration. 3 | got to save state in nvdimm 4 | save file was state/nvdimm_restore.txt 5 | NVDIMM is saving the used table, dirty table and address map 6 | TrivialCPU cpu1 Finished after 966 issued reads, 966 returned (99999 clocks) 7 | TrivialCPU cpu0 Finished after 966 issued reads, 965 returned (99999 clocks) 8 | Simulation is complete, simulated time: 100 us 9 | -------------------------------------------------------------------------------- /src/sst/elements/memHierarchy/tests/runTests.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | #for sdl in sdl*.py ; 4 | #do 5 | # echo ${sdl} 6 | # rm -f ${sdl}.new 7 | # sst $sdl > ${sdl}.new 2>&1 8 | # diff -q ${sdl}.ref ${sdl}.new && rm -f ${sdl}.new 9 | #done 10 | 11 | runCmd() { 12 | if [ -z $1 ] 13 | then 14 | echo "Need to pass a param." 15 | return 1 16 | fi 17 | rm -f ${1}.new 18 | echo ${1} 19 | sst ${1} > ${1}.new 2>&1 && (diff -q ${1}.ref ${1}.new && rm -f ${1}.new) || echo "${1} failed." 20 | } 21 | 22 | export -f runCmd 23 | 24 | find . -maxdepth 1 -name sdl\*.py -print0 | xargs -0 -n 1 -P 4 bash -c 'runCmd "$0"' 25 | 26 | 27 | 28 | rm -f dramsim*log 29 | -------------------------------------------------------------------------------- /src/sst/elements/memHierarchy/tests/updateTests.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | for i in sdl*.py.new ; do 4 | target=`basename $i .new` 5 | cp $i ${target}.ref 6 | done 7 | -------------------------------------------------------------------------------- /src/sst/elements/merlin/.gitignore: -------------------------------------------------------------------------------- 1 | pymerlin.inc 2 | -------------------------------------------------------------------------------- /src/sst/elements/merlin/inspectors/testInspector.cc: -------------------------------------------------------------------------------- 1 | // Copyright 2009-2021 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-2021, NTESS 6 | // All rights reserved. 7 | // 8 | // Portions are copyright of other developers: 9 | // See the file CONTRIBUTORS.TXT in the top level directory 10 | // the distribution for more information. 11 | // 12 | // This file is part of the SST software package. For license 13 | // information, see the LICENSE file in the top level directory of the 14 | // distribution. 15 | 16 | #include 17 | 18 | #include "testInspector.h" 19 | 20 | namespace SST { 21 | namespace Merlin { 22 | 23 | TestNetworkInspector::TestNetworkInspector(ComponentId_t id, Params& params, const std::string& sub_id) : 24 | SimpleNetwork::NetworkInspector(id) 25 | { 26 | test_count = registerStatistic("test_count", sub_id); 27 | } 28 | 29 | void TestNetworkInspector::inspectNetworkData(SimpleNetwork::Request* req) { 30 | test_count->addData(1); 31 | } 32 | 33 | } // namespace Merlin 34 | } // namespace SST 35 | -------------------------------------------------------------------------------- /src/sst/elements/merlin/pymodule.c: -------------------------------------------------------------------------------- 1 | // Copyright 2009-2021 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-2021, NTESS 6 | // All rights reserved. 7 | // 8 | // Portions are copyright of other developers: 9 | // See the file CONTRIBUTORS.TXT in the top level directory 10 | // the distribution for more information. 11 | // 12 | // This file is part of the SST software package. For license 13 | // information, see the LICENSE file in the top level directory of the 14 | // distribution. 15 | 16 | #include 17 | #include 18 | 19 | #include "pymodule.h" 20 | 21 | static char pymerlin[] = { 22 | #include "pymerlin.inc" 23 | 0x00}; 24 | 25 | void* genMerlinPyModule(void) 26 | { 27 | // Must return a PyObject 28 | 29 | PyObject *code = Py_CompileString(pymerlin, "pymerlin", Py_file_input); 30 | return PyImport_ExecCodeModule("sst.merlin", code); 31 | } 32 | 33 | -------------------------------------------------------------------------------- /src/sst/elements/merlin/pymodule.h: -------------------------------------------------------------------------------- 1 | // -*- mode: c++ -*- 2 | 3 | // Copyright 2009-2021 NTESS. Under the terms 4 | // of Contract DE-NA0003525 with NTESS, the U.S. 5 | // Government retains certain rights in this software. 6 | // 7 | // Copyright (c) 2009-2021, NTESS 8 | // All rights reserved. 9 | // 10 | // Portions are copyright of other developers: 11 | // See the file CONTRIBUTORS.TXT in the top level directory 12 | // the distribution for more information. 13 | // 14 | // This file is part of the SST software package. For license 15 | // information, see the LICENSE file in the top level directory of the 16 | // distribution. 17 | 18 | 19 | #ifndef COMPONENTS_MERLIN_PYMODULE_H 20 | #define COMPONENTS_MERLIN_PYMODULE_H 21 | 22 | #ifdef __cplusplus 23 | extern "C" { 24 | #endif 25 | 26 | void* genMerlinPyModule(void); 27 | 28 | #ifdef __cplusplus 29 | } 30 | #endif 31 | #endif // COMPONENTS_MERLIN_PYMODULE_H 32 | -------------------------------------------------------------------------------- /src/sst/elements/merlin/target_generator/target_generator.cc: -------------------------------------------------------------------------------- 1 | // -*- mode: c++ -*- 2 | 3 | // Copyright 2009-2021 NTESS. Under the terms 4 | // of Contract DE-NA0003525 with NTESS, the U.S. 5 | // Government retains certain rights in this software. 6 | // 7 | // Copyright (c) 2009-2021, NTESS 8 | // All rights reserved. 9 | // 10 | // Portions are copyright of other developers: 11 | // See the file CONTRIBUTORS.TXT in the top level directory 12 | // the distribution for more information. 13 | // 14 | // This file is part of the SST software package. For license 15 | // information, see the LICENSE file in the top level directory of the 16 | // distribution. 17 | #include 18 | 19 | #include 20 | #include 21 | #include 22 | 23 | namespace SST { 24 | namespace Merlin { 25 | 26 | } //namespace Merlin 27 | } //namespace SST 28 | 29 | -------------------------------------------------------------------------------- /src/sst/elements/merlin/tests/refFiles/test_merlin_torus_5_trafficgen.out: -------------------------------------------------------------------------------- 1 | Simulation is complete, simulated time: 31 ns 2 | -------------------------------------------------------------------------------- /src/sst/elements/miranda/configure.m4: -------------------------------------------------------------------------------- 1 | dnl -*- Autoconf -*- 2 | dnl vim:ft=config 3 | dnl 4 | 5 | AC_DEFUN([SST_miranda_CONFIG], [ 6 | miranda_happy="yes" 7 | 8 | # Use global Stake check 9 | SST_CHECK_STAKE([],[],[AC_MSG_ERROR([Stake requests but could not be found])]) 10 | 11 | AS_IF([test "$miranda_happy" = "yes"], [$1], [$2]) 12 | ]) 13 | -------------------------------------------------------------------------------- /src/sst/elements/miranda/mirandaIncGen.cc: -------------------------------------------------------------------------------- 1 | // Copyright 2009-2021 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-2021, NTESS 6 | // All rights reserved. 7 | // 8 | // Portions are copyright of other developers: 9 | // See the file CONTRIBUTORS.TXT in the top level directory 10 | // the distribution for more information. 11 | // 12 | // This file is part of the SST software package. For license 13 | // information, see the LICENSE file in the top level directory of the 14 | // distribution. 15 | 16 | #include 17 | 18 | #include "generators/copygen.h" 19 | #include "generators/gupsgen.h" 20 | #include "generators/inorderstreambench.h" 21 | #include "generators/nullgen.h" 22 | #include "generators/randomgen.h" 23 | #include "generators/revsinglestream.h" 24 | #include "generators/singlestream.h" 25 | #include "generators/spmvgen.h" 26 | #include "generators/stencil3dbench.h" 27 | #include "generators/streambench.h" 28 | #include "generators/streambench_customcmd.h" 29 | -------------------------------------------------------------------------------- /src/sst/elements/prospero/.gitignore: -------------------------------------------------------------------------------- 1 | sst-prospero-trace 2 | prosperotrace.dylib 3 | -------------------------------------------------------------------------------- /src/sst/elements/prospero/configure.m4: -------------------------------------------------------------------------------- 1 | dnl -*- Autoconf -*- 2 | 3 | AC_DEFUN([SST_prospero_CONFIG], [ 4 | 5 | prospero_happy="yes" 6 | 7 | SST_CHECK_LIBZ() 8 | SST_CHECK_PINTOOL([have_pin=1],[have_pin=0],[]) 9 | SST_CHECK_SHM() 10 | 11 | AS_IF([test "$prospero_happy" = "yes"], [$1], [$2]) 12 | ]) 13 | -------------------------------------------------------------------------------- /src/sst/elements/prospero/prosmemmgr.h: -------------------------------------------------------------------------------- 1 | // Copyright 2009-2021 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-2021, NTESS 6 | // All rights reserved. 7 | // 8 | // Portions are copyright of other developers: 9 | // See the file CONTRIBUTORS.TXT in the top level directory 10 | // the distribution for more information. 11 | // 12 | // This file is part of the SST software package. For license 13 | // information, see the LICENSE file in the top level directory of the 14 | // distribution. 15 | 16 | 17 | #ifndef _H_SS_PROSPERO_MEM_MGR 18 | #define _H_SS_PROSPERO_MEM_MGR 19 | 20 | #include 21 | #include 22 | 23 | namespace SST { 24 | namespace Prospero { 25 | 26 | class ProsperoMemoryManager { 27 | public: 28 | ProsperoMemoryManager(const uint64_t pageSize, Output* output); 29 | ~ProsperoMemoryManager(); 30 | uint64_t translate(const uint64_t virtAddr); 31 | 32 | private: 33 | std::map pageTable; 34 | uint64_t nextPageStart; 35 | uint64_t pageSize; 36 | Output* output; 37 | }; 38 | 39 | } 40 | } 41 | 42 | #endif 43 | 44 | -------------------------------------------------------------------------------- /src/sst/elements/prospero/tests/array/.gitignore: -------------------------------------------------------------------------------- 1 | dramsim*log 2 | -------------------------------------------------------------------------------- /src/sst/elements/prospero/tests/array/Makefile: -------------------------------------------------------------------------------- 1 | 2 | CC=gcc 3 | CFLAGS=-O3 4 | LDFLAGS=-O3 5 | LD=gcc 6 | 7 | all: array 8 | 9 | array: array.o 10 | $(LD) $(LDFLAGS) -o $@ $< 11 | 12 | array.o: array.c 13 | $(CC) $(CFLAGS) -c -o $@ $< 14 | 15 | clean: 16 | rm -f *.o array 17 | -------------------------------------------------------------------------------- /src/sst/elements/prospero/tests/array/array.c: -------------------------------------------------------------------------------- 1 | // Copyright 2009-2021 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-2021, NTESS 6 | // All rights reserved. 7 | // 8 | // Portions are copyright of other developers: 9 | // See the file CONTRIBUTORS.TXT in the top level directory 10 | // the distribution for more information. 11 | // 12 | // This file is part of the SST software package. For license 13 | // information, see the LICENSE file in the top level directory of the 14 | // distribution. 15 | 16 | #include 17 | #include 18 | 19 | int main(int argc, char* argv[]) { 20 | printf("Running arrays...\n"); 21 | 22 | const int SIZE = 131072; 23 | int i; 24 | double sum = 0; 25 | double* the_array = (double*) malloc(sizeof(double) * SIZE); 26 | 27 | for(i = 0; i < SIZE; ++i) { 28 | the_array[i] = ((double) i) * 2.5; 29 | } 30 | 31 | for(i = 0; i < SIZE; ++i) { 32 | sum += the_array[i]; 33 | } 34 | 35 | printf("Total is %10.5f\n", sum); 36 | 37 | free(the_array); 38 | } 39 | -------------------------------------------------------------------------------- /src/sst/elements/prospero/tracetool/Makefile: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | PINDIR=${INTEL_PIN_DIRECTORY} 4 | CXX=g++ 5 | PREPROC=-DBIGARRAY_MULTIPLIER=1 -DUSING_XED -DTARGET_IA32E -DHOST_IA32E -fPIC -DTARGET_LINUX -DPROSPERO_LIBZ 6 | LD=g++ 7 | CC=gcc 8 | 9 | all: sstmemtrace.so 10 | 11 | sstmemtrace.so: sstmemtrace.o 12 | $(LD) -Wl,--hash-style=sysv -shared -Wl,-Bsymbolic \ 13 | -Wl,--version-script=$(PINDIR)/source/include/pin/pintool.ver \ 14 | -L$(PINDIR)/extras/xed-intel64/lib \ 15 | -L$(PINDIR)/intel64/lib \ 16 | -L$(PINDIR)/intel64/lib-ext \ 17 | -o $@ $< \ 18 | -L$(PINDIR)/extras/xed-intel64/lib \ 19 | -L$(PINDIR)/intel64/lib \ 20 | -L$(PINDIR)/intel64/lib-ext -lpin -lxed \ 21 | -ldl -lz -lpindwarf \ 22 | 23 | sstmemtrace.o: sstmemtrace.cc 24 | $(CXX) -g -c -O3 -fomit-frame-pointer \ 25 | -Wl,-Bsymbolic \ 26 | -Wl,--version-script=$(PINDIR)/source/include/pintool.ver \ 27 | -I $(PINDIR)/source/include/pin \ 28 | -I $(PINDIR)/source/include/pin/gen \ 29 | -I $(PINDIR)/extras/xed-intel64/include \ 30 | -I $(PINDIR)/extras/components/include \ 31 | $(PREPROC) \ 32 | -o $@ \ 33 | $< 34 | 35 | clean: 36 | rm -f *.o sstmemtrace.so sstmemtrace.dylib 37 | -------------------------------------------------------------------------------- /src/sst/elements/prospero/tracetool/Makefile.osx: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | PINDIR=/Users/sdhammo/Documents/PIN/2.13 4 | CXX=clang++ 5 | LD=clang++ 6 | CC=clang 7 | PREPROC=-DBIGARRAY_MULTIPLIER=1 -DTARGET_IA32E -DHOST_IA32E -fPIC -DTARGET_MAC -DPROSPERO_LIBZ 8 | CXXFLAGS=-stdlib=libstdc++ -O3 -g -fomit-frame-pointer -fno-strict-aliasing 9 | 10 | all: sstmemtrace.dylib 11 | 12 | sstmemtrace.dylib: sstmemtrace.o 13 | $(LD) -shared \ 14 | -w -Wl,-exported_symbols_list \ 15 | -Wl,$(PINDIR)/source/include/pin/pintool.exp \ 16 | -stdlib=libstdc++ \ 17 | -L$(PINDIR)/extras/xed2-intel64/lib \ 18 | -L$(PINDIR)/intel64/lib \ 19 | -L$(PINDIR)/intel64/lib-ext \ 20 | -o $@ $< \ 21 | -L$(PINDIR)/extras/xed2-intel64/lib \ 22 | -L$(PINDIR)/intel64/lib \ 23 | -L$(PINDIR)/intel64/lib-ext -lpin -lxed -lpindwarf -lz 24 | 25 | sstmemtrace.o: sstmemtrace.cc 26 | $(CXX) $(CXXFLAGS) -c \ 27 | -I $(PINDIR)/source/include/pin \ 28 | -I $(PINDIR)/source/include/pin/gen \ 29 | -I $(PINDIR)/extras/xed2-intel64/include \ 30 | -I $(PINDIR)/extras/components/include \ 31 | $(PREPROC) \ 32 | -o $@ \ 33 | $< 34 | 35 | clean: 36 | rm *.o sstmemtrace.so 37 | -------------------------------------------------------------------------------- /src/sst/elements/prospero/tracetool/api/Makefile: -------------------------------------------------------------------------------- 1 | 2 | CC=gcc 3 | CFLAGS=-fPIC -O3 4 | LDFLAGS=-shared -O3 5 | 6 | libprospero.so: prospero.o 7 | $(CC) $(LDFLAGS) -o $@ $< 8 | 9 | prospero.o: prospero.c 10 | $(CC) $(CFLAGS) -c -o $@ $< 11 | 12 | clean: 13 | rm *.o libprospero.so 14 | -------------------------------------------------------------------------------- /src/sst/elements/prospero/tracetool/api/Makefile.osx: -------------------------------------------------------------------------------- 1 | 2 | CC=clang 3 | CFLAGS=-fPIC -O3 4 | LDFLAGS=-shared -O3 5 | 6 | libprospero.so: prospero.o 7 | $(CC) $(LDFLAGS) -o $@ $< 8 | 9 | prospero.o: prospero.c 10 | $(CC) $(CFLAGS) -c -o $@ $< 11 | 12 | clean: 13 | rm *.o libprospero.so 14 | -------------------------------------------------------------------------------- /src/sst/elements/prospero/tracetool/api/prospero.c: -------------------------------------------------------------------------------- 1 | // Copyright 2009-2021 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-2021, NTESS 6 | // All rights reserved. 7 | // 8 | // Portions are copyright of other developers: 9 | // See the file CONTRIBUTORS.TXT in the top level directory 10 | // the distribution for more information. 11 | // 12 | // This file is part of the SST software package. For license 13 | // information, see the LICENSE file in the top level directory of the 14 | // distribution. 15 | 16 | 17 | #include "prospero.h" 18 | 19 | void prospero_enable_tracing() { 20 | 21 | } 22 | 23 | void prospero_disable_tracing() { 24 | 25 | } 26 | 27 | -------------------------------------------------------------------------------- /src/sst/elements/prospero/tracetool/api/prospero.h: -------------------------------------------------------------------------------- 1 | // Copyright 2009-2021 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-2021, NTESS 6 | // All rights reserved. 7 | // 8 | // Portions are copyright of other developers: 9 | // See the file CONTRIBUTORS.TXT in the top level directory 10 | // the distribution for more information. 11 | // 12 | // This file is part of the SST software package. For license 13 | // information, see the LICENSE file in the top level directory of the 14 | // distribution. 15 | 16 | 17 | #ifndef _H_SST_PROSPERO_API 18 | #define _H_SST_PROSPERO_API 19 | 20 | #ifdef __cplusplus 21 | extern "C" { 22 | #endif 23 | 24 | void prospero_enable_tracing(); 25 | void prospero_disable_tracing(); 26 | 27 | #ifdef __cplusplus 28 | } 29 | #endif 30 | 31 | #endif 32 | -------------------------------------------------------------------------------- /src/sst/elements/serrano/Makefile.am: -------------------------------------------------------------------------------- 1 | # -*- Makefile -*- 2 | # 3 | # 4 | 5 | AM_CPPFLAGS = \ 6 | $(MPI_CPPFLAGS) 7 | 8 | compdir = $(pkglibdir) 9 | comp_LTLIBRARIES = libserrano.la 10 | libserrano_la_SOURCES = \ 11 | scircq.h \ 12 | sercgunit.h \ 13 | seriterunit.h \ 14 | serprintunit.h \ 15 | serrano.cc \ 16 | serrano.h \ 17 | serstdunit.h \ 18 | smsg.h 19 | 20 | EXTRA_DIST = \ 21 | tests/test_serrano.py \ 22 | tests/graphs/sum.graph 23 | 24 | libserrano_la_LDFLAGS = -module -avoid-version 25 | 26 | install-exec-hook: 27 | $(SST_REGISTER_TOOL) SST_ELEMENT_SOURCE serrano=$(abs_srcdir) 28 | $(SST_REGISTER_TOOL) SST_ELEMENT_TESTS serrano=$(abs_srcdir)/tests 29 | 30 | -------------------------------------------------------------------------------- /src/sst/elements/serrano/tests/graphs/sum.graph: -------------------------------------------------------------------------------- 1 | 2 | NODE 0 ITERATOR INT32 start 0 step 1 end 100 3 | NODE 1 ITERATOR INT32 start 100 step 1 end 200 4 | NODE 2 ADD INT32 5 | NODE 3 PRINTER INT32 6 | 7 | LINK 0 0 2 8 | LINK 1 1 2 9 | LINK 2 2 3 10 | -------------------------------------------------------------------------------- /src/sst/elements/serrano/tests/test_serrano.py: -------------------------------------------------------------------------------- 1 | 2 | import os 3 | import sst 4 | 5 | # Define SST core options 6 | sst.setProgramOption("timebase", "1ps") 7 | sst.setProgramOption("stopAtCycle", "0s") 8 | 9 | serr_comp = sst.Component("serrano", "serrano.Serrano") 10 | serr_comp.addParams({ 11 | "verbose" : 26, 12 | "kernel0" : "test/graphs/sum.graph" 13 | }) 14 | -------------------------------------------------------------------------------- /src/sst/elements/shogun/Makefile.am: -------------------------------------------------------------------------------- 1 | # -*- Makefile -*- 2 | # 3 | # 4 | 5 | AM_CPPFLAGS = \ 6 | $(MPI_CPPFLAGS) 7 | 8 | compdir = $(pkglibdir) 9 | comp_LTLIBRARIES = libshogun.la 10 | libshogun_la_SOURCES = \ 11 | shogun.cc \ 12 | shogun.h \ 13 | shogun_credit_event.h \ 14 | shogun_event.h \ 15 | shogun_init_event.h \ 16 | shogun_nic.cc \ 17 | shogun_nic.h \ 18 | shogun_q.h \ 19 | shogun_stat_bundle.h \ 20 | arb/shogunrrarb.cc \ 21 | arb/shogunrrarb.h \ 22 | arb/shogunarb.h 23 | 24 | EXTRA_DIST = \ 25 | tests/testsuite_default_shogun.py \ 26 | tests/basic_miranda.py \ 27 | tests/hierarchy_test.py \ 28 | tests/refFiles/test_shogun_basic_miranda.out \ 29 | tests/refFiles/test_shogun_hierarchy_test.out \ 30 | tests/refFiles/test_shogun_hierarchy_test_multi.out 31 | 32 | libshogun_la_LDFLAGS = -module -avoid-version 33 | 34 | install-exec-hook: 35 | $(SST_REGISTER_TOOL) SST_ELEMENT_SOURCE shogun=$(abs_srcdir) 36 | $(SST_REGISTER_TOOL) SST_ELEMENT_TESTS shogun=$(abs_srcdir)/tests 37 | 38 | -------------------------------------------------------------------------------- /src/sst/elements/simpleElementExample/tests/refFiles/basicParams.out: -------------------------------------------------------------------------------- 1 | WARNING: Building component "ParamComponent" with no links assigned. 2 | Found basic parameters: bool_param = 1, uint32_param = 678, double_param = 12.500000, string_param = i am string 3 | Found the required parameter 'int_param' and got 20 4 | Read ua_param = 10 MB/s 5 | Read example_param. key = a, value = 92 6 | Read an array from array_param. Elements are: 7 | 12, 50, -8, 0, 0, 48939, 8 | Simulation is complete, simulated time: 20 us 9 | -------------------------------------------------------------------------------- /src/sst/elements/simpleElementExample/tests/refFiles/basicStatistics0.out: -------------------------------------------------------------------------------- 1 | WARNING: Building component "StatisticComponent0" with no links assigned. 2 | WARNING: Building component "StatisticComponent1" with no links assigned. 3 | Simulation is complete, simulated time: 300.25 ns 4 | -------------------------------------------------------------------------------- /src/sst/elements/simpleElementExample/tests/refFiles/basicStatistics1.out: -------------------------------------------------------------------------------- 1 | WARNING: Building component "StatisticComponent0" with no links assigned. 2 | WARNING: Building component "StatisticComponent1" with no links assigned. 3 | Simulation is complete, simulated time: 300.25 ns 4 | -------------------------------------------------------------------------------- /src/sst/elements/simpleElementExample/tests/refFiles/basicStatistics2.out: -------------------------------------------------------------------------------- 1 | WARNING: Building component "StatisticComponent0" with no links assigned. 2 | WARNING: Building component "StatisticComponent1" with no links assigned. 3 | Simulation is complete, simulated time: 300.25 ns 4 | -------------------------------------------------------------------------------- /src/sst/elements/simpleElementExample/tests/refFiles/example0.out: -------------------------------------------------------------------------------- 1 | Simulation is complete, simulated time: 52 ns 2 | -------------------------------------------------------------------------------- /src/sst/elements/simpleElementExample/tests/refFiles/example1.out: -------------------------------------------------------------------------------- 1 | c0.EventSizeReceived : Accumulator : Sum.u64 = 696; SumSQ.u64 = 14110; Count.u64 = 50; Min.u64 = 1; Max.u64 = 31; 2 | c1.EventSizeReceived : Accumulator : Sum.u64 = 696; SumSQ.u64 = 14110; Count.u64 = 50; Min.u64 = 1; Max.u64 = 31; 3 | Simulation is complete, simulated time: 52 ns 4 | -------------------------------------------------------------------------------- /src/sst/elements/simpleSimulation/Makefile.am: -------------------------------------------------------------------------------- 1 | # -*- Makefile -*- 2 | # 3 | # 4 | 5 | AM_CPPFLAGS = \ 6 | $(MPI_CPPFLAGS) 7 | 8 | compdir = $(pkglibdir) 9 | comp_LTLIBRARIES = libsimpleSimulation.la 10 | libsimpleSimulation_la_SOURCES = \ 11 | simpleCarWash.h \ 12 | simpleCarWash.cc 13 | 14 | EXTRA_DIST = \ 15 | README \ 16 | tests/test_simpleCarWash.py \ 17 | tests/test_simpleSimulationCarWash.py \ 18 | tests/testsuite_default_simpleSimulation.py \ 19 | tests/refFiles/test_simpleSimulationCarWash.out 20 | 21 | libsimpleSimulation_la_LDFLAGS = -module -avoid-version 22 | 23 | install-exec-hook: 24 | $(SST_REGISTER_TOOL) SST_ELEMENT_SOURCE simpleSimulation=$(abs_srcdir) 25 | $(SST_REGISTER_TOOL) SST_ELEMENT_TESTS simpleSimulation=$(abs_srcdir)/tests 26 | 27 | ########################################################################## 28 | ########################################################################## 29 | ########################################################################## 30 | -------------------------------------------------------------------------------- /src/sst/elements/simpleSimulation/README: -------------------------------------------------------------------------------- 1 | README for simpleSimulation 2 | ------------------------------- 3 | 4 | The simpleSimulation provides real-world examples of various simulators that can be used as learning tools or resources: 5 | 6 | - simpleCarWash : queing simulation tool used as a two bay carwash simulation for 24 hours 7 | -------------------------------------------------------------------------------- /src/sst/elements/simpleSimulation/tests/README: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stonne-simulator/sst-elements-with-stonne/82cf0b29f384fa658a072724c303b40dee0331ec/src/sst/elements/simpleSimulation/tests/README -------------------------------------------------------------------------------- /src/sst/elements/simpleSimulation/tests/test_simpleCarWash.py: -------------------------------------------------------------------------------- 1 | # Automatically generated SST Python input 2 | import sst 3 | 4 | # Define SST core options 5 | sst.setProgramOption("timebase", "1 ps") 6 | sst.setProgramOption("stopAtCycle", "10000s") 7 | 8 | # Define the simulation components 9 | comp_clocker0 = sst.Component("clocker0", "simpleSimulation.simpleCarWash") 10 | comp_clocker0.addParams({ 11 | "clockcount" : """100000000""", 12 | "clock" : """1MHz""" 13 | }) 14 | 15 | 16 | # Define the simulation links 17 | # End of generated output. 18 | -------------------------------------------------------------------------------- /src/sst/elements/simpleSimulation/tests/test_simpleSimulationCarWash.py: -------------------------------------------------------------------------------- 1 | # Automatically generated SST Python input 2 | import sst 3 | 4 | # Define SST core options 5 | sst.setProgramOption("timebase", "1 ps") 6 | sst.setProgramOption("stopAtCycle", "10000s") 7 | 8 | # Define the simulation components 9 | comp_clocker0 = sst.Component("clocker0", "simpleSimulation.simpleCarWash") 10 | comp_clocker0.addParams({ 11 | "clockcount" : """100000000""", 12 | "clock" : """1MHz""" 13 | }) 14 | 15 | 16 | # Define the simulation links 17 | # End of generated output. 18 | -------------------------------------------------------------------------------- /src/sst/elements/sstStonne/energy_tables/.out: -------------------------------------------------------------------------------- 1 | DYNAMIC ENERGY TABLE USED 2 | ------------------------------------------- 3 | WIRE WRITE 2 4 | WIRE READ 3 5 | FIFO PUSH 4 6 | FIFO POP 6 7 | FIFO FRONT 5 8 | ADDER ADD_2_1 7 9 | ADDER ADD_3_1 8 10 | SWITCH ROUTE_UNICAST 0 11 | SWITCH ROUTE_BROADCAST 5 12 | MULTIPLIER MULTIPLICATION 3 13 | MULTIPLIER FORWARD_PSUM 4 14 | GLOBALBUFFER READ 5 15 | GLOBALBUFFER WRITE 5 16 | ------------------------------------------- 17 | -------------------------------------------------------------------------------- /src/sst/elements/sstStonne/energy_tables/energy_model.txt: -------------------------------------------------------------------------------- 1 | RN_WIRE AREA=9.46 STATIC=0 WRITE=0.001839831 READ=0 2 | DN_WIRE AREA=11.48 STATIC=0 WRITE=0.00223226 READ=0 3 | MN_WIRE AREA=9.46 STATIC=0 WRITE=0.001839831 READ=0 4 | CB_WIRE AREA=9.46 STATIC=0 WRITE=0.001839831 READ=0 5 | FIFO AREA=0 STATIC=0 PUSH=0 POP=0 FRONT=0 6 | ADDER AREA=1059.156 STATIC=0.001505 ADD_2_1=0.111 ADD_3_1=0.111 CONFIGURATION=0 7 | SWITCH AREA=108.99 STATIC=0.000157 ROUTE_UNICAST=0.0360 ROUTE_BROADCAST=0.0360 8 | MULTIPLIER AREA=1001.0 STATIC=0.001614 MULTIPLICATION=0.00741 FORWARD_PSUM=0.00741 CONFIGURATION=0 9 | GLOBALBUFFER AREA=115029 STATIC=0.0101 READ=0.044 WRITE=0.044 10 | ACCUMULATOR AREA=1059.156 STATIC=0.001505 READ=0 WRITE=0 ADD=0.111 11 | -------------------------------------------------------------------------------- /src/sst/elements/sstStonne/include/CompilerComponent.h: -------------------------------------------------------------------------------- 1 | #ifndef _COMPILER_COMPONENT_h_ 2 | #define _COMPILER_COMPONENT_h_ 3 | 4 | #include 5 | #include 6 | #include 7 | #include "Tile.h" 8 | #include "DNNLayer.h" 9 | #include 10 | #include 11 | 12 | class CompilerComponent { 13 | 14 | 15 | public: 16 | Tile* current_tile; 17 | std::vector sparseVNs; 18 | DNNLayer* dnn_layer; 19 | unsigned int num_ms; 20 | bool signals_configured; 21 | unsigned int n_folding; 22 | 23 | CompilerComponent() { 24 | current_tile = NULL; 25 | signals_configured = false; 26 | this->dnn_layer=NULL; 27 | } 28 | virtual void configureSignals(Tile* current_tile, DNNLayer* dnn_layer, unsigned int num_ms, unsigned int n_folding) {} //Print the stats of the component 29 | virtual void configureSparseSignals(std::vector sparseVNs, DNNLayer* dnn_layer, unsigned int num_ms) {} 30 | Tile* getTile() {assert(signals_configured); return this->current_tile;} 31 | }; 32 | 33 | 34 | #endif 35 | -------------------------------------------------------------------------------- /src/sst/elements/sstStonne/include/Fifo.h: -------------------------------------------------------------------------------- 1 | 2 | //Created by Francisco Munoz Martinez on 25/06/2019 3 | 4 | // This class is used in the simulator in order to limit the size of the fifo. 5 | 6 | #ifndef __Fifo_h__ 7 | #define __Fifo_h__ 8 | 9 | #include 10 | #include "DataPackage.h" 11 | #include "types.h" 12 | #include "Stats.h" 13 | 14 | class Fifo { 15 | private: 16 | std::queue fifo; 17 | unsigned int capacity; //Capacity in number of bits 18 | unsigned int capacity_words; //Capacity in number of words allowed. i.e., capacity_words = capacity / size_word 19 | FifoStats fifoStats; //Tracking parameters 20 | public: 21 | Fifo(unsigned int capacity); 22 | bool isEmpty(); 23 | bool isFull(); 24 | void push(DataPackage* data); 25 | DataPackage* pop(); 26 | DataPackage* front(); 27 | unsigned int size(); //Return the number of elements in the fifo 28 | void printStats(std::ofstream& out, unsigned int indent); 29 | void printEnergy(std::ofstream& out, unsigned int indent); 30 | }; 31 | #endif 32 | -------------------------------------------------------------------------------- /src/sst/elements/sstStonne/include/LookupTable.h: -------------------------------------------------------------------------------- 1 | //Created by Francisco Munoz Martinez on 25/06/2019 2 | 3 | #ifndef __lookuptable__h 4 | #define __lookuptable__h 5 | 6 | #include "Connection.h" 7 | #include "Unit.h" 8 | #include "Config.h" 9 | #include 10 | 11 | class LookupTable : Unit { 12 | private: 13 | Connection* inputConnection; //From the ART 14 | Connection* outputConnection; //Torwards the memory 15 | cycles_t latency; 16 | unsigned int port_width; 17 | public: 18 | LookupTable(id_t id, std::string name, Config stonne_cfg, Connection* inputConnection, Connection* outputConnection); 19 | void cycle(); 20 | }; 21 | 22 | 23 | #endif 24 | -------------------------------------------------------------------------------- /src/sst/elements/sstStonne/include/Unit.h: -------------------------------------------------------------------------------- 1 | #ifndef _UNIT_h_ 2 | #define _UNIT_h_ 3 | 4 | #include 5 | #include 6 | #include 7 | #include "Config.h" 8 | 9 | class Unit { 10 | private: 11 | id_t id; //Id of the component 12 | std::string name; //Name of the component 13 | 14 | public: 15 | Unit(id_t id, std::string name) { 16 | this->id=id; 17 | this->name=name; 18 | } 19 | 20 | virtual void printStats(std::ofstream& out, unsigned int indent) {} //Print the stats of the component 21 | virtual void printEnergy(std::ofstream& out, unsigned int indent) {} //Print the counters to get the consumption of the unit 22 | virtual void cycle() {} //Execute a cycle in the component 23 | virtual void setConfiguration(Config cfg) {} //set the configuration parameters of the component 24 | }; 25 | 26 | 27 | #endif 28 | -------------------------------------------------------------------------------- /src/sst/elements/sstStonne/include/define.h: -------------------------------------------------------------------------------- 1 | // 2 | // Created by Zhongyuan Zhao on 9/20/18. 3 | // 4 | 5 | #ifndef DEFINE_H_ 6 | #define DEFINE_H_ 7 | 8 | enum OptGoal{ 9 | performance = 0, 10 | energy = 1, 11 | energy_efficiency = 2, 12 | all = 3, 13 | }; 14 | 15 | enum Opcode { 16 | Add = 0, 17 | Compare = 1, 18 | Add_fowd = 2, 19 | Multiply = 3, 20 | Mul_fowd = 4, 21 | Mpush = 5, 22 | Cpush = 6, 23 | Pull = 7, 24 | Distribute = 8, 25 | }; 26 | 27 | enum ConfigType { 28 | conv = 0, 29 | ps = 1, 30 | fc = 2, 31 | lstm = 3, 32 | hmdpadd = 4, 33 | singlehmdp = 5, 34 | }; 35 | 36 | #define PUSH_LENGTH 12 37 | #define PULL_LENGTH 12 38 | #define NORMALIZE_MAC 1000 39 | 40 | 41 | 42 | #endif //DEFINE_H_ 43 | -------------------------------------------------------------------------------- /src/sst/elements/sstStonne/include/ms_size: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stonne-simulator/sst-elements-with-stonne/82cf0b29f384fa658a072724c303b40dee0331ec/src/sst/elements/sstStonne/include/ms_size -------------------------------------------------------------------------------- /src/sst/elements/sstStonne/include/testbench.h: -------------------------------------------------------------------------------- 1 | #ifndef _TESTBENCH_H 2 | #define _TESTBENCH_H 3 | void sequential_layer(unsigned int R, unsigned int S, unsigned int C, unsigned int K, unsigned int G, unsigned int N, unsigned int X, unsigned int Y, unsigned int strides, 4 | float* input, float* filters, float * outputs); 5 | 6 | void cpu_gemm(float* MK_dense_matrix, float* KN_dense_matrix, float* output, unsigned int M, unsigned int N, unsigned int K); 7 | 8 | 9 | void run_simple_tests(); 10 | 11 | void run_stonne_architecture_tests(layerTest layer, unsigned int num_ms); 12 | 13 | void hand_tests(); 14 | 15 | #endif 16 | -------------------------------------------------------------------------------- /src/sst/elements/sstStonne/tests/csr/colpointermatrixA: -------------------------------------------------------------------------------- 1 | 0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3 2 | -------------------------------------------------------------------------------- /src/sst/elements/sstStonne/tests/csr/csrSpMM_mem.ini: -------------------------------------------------------------------------------- 1 | 1086324736,1086324736,0,1082130432,1090519040,1088421888,1086324736,1082130432,1088421888,1084227584,1091567616,1077936128,1090519040,1073741824,1082130432,1073741824,1065353216,1091567616,1082130432,1090519040,1091567616,1073741824,1082130432,1065353216,1065353216,1092616192,1084227584,1088421888,1090519040,1065353216,1084227584,1086324736,0 -------------------------------------------------------------------------------- /src/sst/elements/sstStonne/tests/csr/rowpointermatrixA: -------------------------------------------------------------------------------- 1 | 0,4,8,12,16 2 | -------------------------------------------------------------------------------- /src/sst/elements/sstStonne/tests/in_file_matrixA_3_3_20.in: -------------------------------------------------------------------------------- 1 | 3,2,7,1,5,5,9,7,1,9,6,3,1,6,10,6,0,0,7,1,4,3,5,3,9,9,0,5,1,5,5,2,6,9,2,8,0,1,5,5,3,10,8,0,4,9,9,10,4,0,7,10,10,8,3,9,7,3,7,10 -------------------------------------------------------------------------------- /src/sst/elements/sstStonne/tests/in_file_matrixB_3_3_20.in: -------------------------------------------------------------------------------- 1 | 1,8,10,6,9,3,5,8,9,1,6,10,2,0,5,7,7,1,9,3,1,5,8,8,8,3,1,0,0,5,1,10,4,7,10,3,3,6,6,4,2,9,5,8,8,8,7,8,4,7,2,6,4,8,2,3,6,1,7,0 -------------------------------------------------------------------------------- /src/sst/elements/sstStonne/tests/maeri_128mses_128_bw.cfg: -------------------------------------------------------------------------------- 1 | print_stats_enabled=1 2 | [MSNetwork] 3 | ms_size=128 4 | [ReduceNetwork] 5 | type="ASNETWORK" 6 | accumulation_buffer_enabled=1 7 | [SDMemory] 8 | dn_bw=128 9 | rn_bw=128 10 | controller_type="MAERI_DENSE_WORKLOAD" 11 | -------------------------------------------------------------------------------- /src/sst/elements/sstStonne/tests/result.out: -------------------------------------------------------------------------------- 1 | 92.0,70.0,68.0,78.0,109.0,150.0,110.0,137.0,85.0,166.0,108.0,142.0,46.0,118.0,70.0,106.0, -------------------------------------------------------------------------------- /src/sst/elements/sstStonne/tests/script_clean.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | rm *.in 4 | -------------------------------------------------------------------------------- /src/sst/elements/sstStonne/tests/sigma_128mses_128_bw.cfg: -------------------------------------------------------------------------------- 1 | [MSNetwork] 2 | ms_size=128 3 | [ReduceNetwork] 4 | type="ASNETWORK" 5 | [SDMemory] 6 | dn_bw=128 7 | rn_bw=128 8 | controller_type="SIGMA_SPARSE_GEMM" 9 | -------------------------------------------------------------------------------- /src/sst/elements/sstStonne/tiles/alexnet/tile_configuration_conv1.txt: -------------------------------------------------------------------------------- 1 | tile_type="CONV" 2 | T_R=11 3 | T_S=1 4 | T_C=1 5 | T_G=1 6 | T_K=2 7 | T_N=1 8 | T_X'=1 9 | T_Y'=1 10 | -------------------------------------------------------------------------------- /src/sst/elements/sstStonne/tiles/alexnet/tile_configuration_conv2.txt: -------------------------------------------------------------------------------- 1 | tile_type="CONV" 2 | T_R=5 3 | T_S=5 4 | T_C=1 5 | T_G=1 6 | T_K=2 7 | T_N=1 8 | T_X'=1 9 | T_Y'=1 10 | -------------------------------------------------------------------------------- /src/sst/elements/sstStonne/tiles/alexnet/tile_configuration_conv3.txt: -------------------------------------------------------------------------------- 1 | tile_type="CONV" 2 | T_R=3 3 | T_S=3 4 | T_C=1 5 | T_G=1 6 | T_K=4 7 | T_N=1 8 | T_X'=1 9 | T_Y'=1 10 | -------------------------------------------------------------------------------- /src/sst/elements/sstStonne/tiles/alexnet/tile_configuration_conv4.txt: -------------------------------------------------------------------------------- 1 | tile_type="CONV" 2 | T_R=3 3 | T_S=3 4 | T_C=1 5 | T_G=1 6 | T_K=4 7 | T_N=1 8 | T_X'=1 9 | T_Y'=1 10 | -------------------------------------------------------------------------------- /src/sst/elements/sstStonne/tiles/alexnet/tile_configuration_conv5.txt: -------------------------------------------------------------------------------- 1 | tile_type="CONV" 2 | T_R=3 3 | T_S=3 4 | T_C=1 5 | T_G=1 6 | T_K=4 7 | T_N=1 8 | T_X'=1 9 | T_Y'=1 10 | -------------------------------------------------------------------------------- /src/sst/elements/sstStonne/tiles/alexnet/tile_configuration_fc6.txt: -------------------------------------------------------------------------------- 1 | tile_type="FC" 2 | T_S=32 3 | T_K=1 4 | T_N=1 5 | -------------------------------------------------------------------------------- /src/sst/elements/sstStonne/tiles/alexnet/tile_configuration_fc7.txt: -------------------------------------------------------------------------------- 1 | tile_type="FC" 2 | T_S=32 3 | T_K=1 4 | T_N=1 5 | -------------------------------------------------------------------------------- /src/sst/elements/sstStonne/tiles/alexnet/tile_configuration_fc8.txt: -------------------------------------------------------------------------------- 1 | tile_type="FC" 2 | T_S=32 3 | T_K=1 4 | T_N=1 5 | -------------------------------------------------------------------------------- /src/sst/elements/sstStonne/tiles/tile_configuration.txt: -------------------------------------------------------------------------------- 1 | T_R=3 2 | T_S=3 3 | T_C=1 4 | T_G=1 5 | T_K=2 6 | T_N=1 7 | T_X'=1 8 | T_Y'=1 9 | -------------------------------------------------------------------------------- /src/sst/elements/thornhill/Makefile.am: -------------------------------------------------------------------------------- 1 | # -*- Makefile -*- 2 | # 3 | # 4 | 5 | AM_CPPFLAGS = $(MPI_CPPFLAGS) \ 6 | -I$(top_srcdir)/src 7 | 8 | 9 | compdir = $(pkglibdir) 10 | comp_LTLIBRARIES = libthornhill.la 11 | 12 | sstdir = $(includedir)/sst/elements/thornhill 13 | 14 | libthornhill_la_SOURCES = \ 15 | libthornhill.cc\ 16 | memoryHeap.h\ 17 | memoryHeap.cc\ 18 | singleThread.h\ 19 | singleThread.cc 20 | 21 | nobase_sst_HEADERS = \ 22 | detailedCompute.h \ 23 | memoryHeapEvent.h\ 24 | memoryHeapLink.h \ 25 | types.h 26 | 27 | libthornhill_la_LDFLAGS = -module -avoid-version 28 | 29 | install-exec-hook: 30 | $(SST_REGISTER_TOOL) SST_ELEMENT_SOURCE thornhill=$(abs_srcdir) 31 | -------------------------------------------------------------------------------- /src/sst/elements/thornhill/libthornhill.cc: -------------------------------------------------------------------------------- 1 | // Copyright 2009-2021 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-2021, NTESS 6 | // All rights reserved. 7 | // 8 | // Portions are copyright of other developers: 9 | // See the file CONTRIBUTORS.TXT in the top level directory 10 | // the distribution for more information. 11 | // 12 | // This file is part of the SST software package. For license 13 | // information, see the LICENSE file in the top level directory of the 14 | // distribution. 15 | 16 | 17 | #include "sst_config.h" 18 | 19 | #include "memoryHeapLink.h" 20 | -------------------------------------------------------------------------------- /src/sst/elements/thornhill/types.h: -------------------------------------------------------------------------------- 1 | // Copyright 2009-2021 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-2021, NTESS 6 | // All rights reserved. 7 | // 8 | // Portions are copyright of other developers: 9 | // See the file CONTRIBUTORS.TXT in the top level directory 10 | // the distribution for more information. 11 | // 12 | // This file is part of the SST software package. For license 13 | // information, see the LICENSE file in the top level directory of the 14 | // distribution. 15 | 16 | #ifndef _H_THORNHILL_TYPES 17 | #define _H_THORNHILL_TYPES 18 | 19 | #include 20 | 21 | namespace SST { 22 | namespace Thornhill { 23 | 24 | typedef uint64_t SimVAddr; 25 | 26 | } 27 | } 28 | #endif 29 | -------------------------------------------------------------------------------- /src/sst/elements/vanadis/inst/fpregmode.h: -------------------------------------------------------------------------------- 1 | // Copyright 2009-2021 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-2021, NTESS 6 | // All rights reserved. 7 | // 8 | // Portions are copyright of other developers: 9 | // See the file CONTRIBUTORS.TXT in the top level directory 10 | // the distribution for more information. 11 | // 12 | // This file is part of the SST software package. For license 13 | // information, see the LICENSE file in the top level directory of the 14 | // distribution. 15 | 16 | #ifndef _H_VANADIS_FP_REG_MODE 17 | #define _H_VANADIS_FP_REG_MODE 18 | 19 | namespace SST { 20 | namespace Vanadis { 21 | 22 | enum VanadisFPRegisterMode { VANADIS_REGISTER_MODE_FP32, VANADIS_REGISTER_MODE_FP64 }; 23 | 24 | } 25 | } // namespace SST 26 | 27 | #endif 28 | -------------------------------------------------------------------------------- /src/sst/elements/vanadis/inst/vdelaytype.h: -------------------------------------------------------------------------------- 1 | // Copyright 2009-2021 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-2021, NTESS 6 | // All rights reserved. 7 | // 8 | // Portions are copyright of other developers: 9 | // See the file CONTRIBUTORS.TXT in the top level directory 10 | // the distribution for more information. 11 | // 12 | // This file is part of the SST software package. For license 13 | // information, see the LICENSE file in the top level directory of the 14 | // distribution. 15 | 16 | #ifndef _H_VANADIS_DELAY_SLOT_PROCESSING 17 | #define _H_VANADIS_DELAY_SLOT_PROCESSING 18 | 19 | namespace SST { 20 | namespace Vanadis { 21 | 22 | enum VanadisDelaySlotRequirement { 23 | VANADIS_NO_DELAY_SLOT, 24 | VANADIS_SINGLE_DELAY_SLOT, 25 | VANADIS_CONDITIONAL_SINGLE_DELAY_SLOT 26 | }; 27 | 28 | } 29 | } // namespace SST 30 | 31 | #endif 32 | -------------------------------------------------------------------------------- /src/sst/elements/vanadis/tests/small/basic-io/Makefile: -------------------------------------------------------------------------------- 1 | CXX=mipsel-linux-musl-gcc 2 | 3 | all: hello-world 4 | 5 | hello-world: hello-world.c 6 | $(CXX) -o hello-world -static hello-world.c 7 | 8 | clean: 9 | rm hello-world 10 | 11 | -------------------------------------------------------------------------------- /src/sst/elements/vanadis/tests/small/basic-io/hello-world.c: -------------------------------------------------------------------------------- 1 | // Copyright 2009-2021 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-2021, NTESS 6 | // All rights reserved. 7 | // 8 | // Portions are copyright of other developers: 9 | // See the file CONTRIBUTORS.TXT in the top level directory 10 | // the distribution for more information. 11 | // 12 | // This file is part of the SST software package. For license 13 | // information, see the LICENSE file in the top level directory of the 14 | // distribution. 15 | 16 | #include 17 | 18 | int main( int argc, char* argv[] ) { 19 | printf("Hello World from Vanadis\n"); 20 | return 0; 21 | } 22 | -------------------------------------------------------------------------------- /src/sst/elements/vanadis/tests/small/basic-io/hello-world.stderr.gold: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stonne-simulator/sst-elements-with-stonne/82cf0b29f384fa658a072724c303b40dee0331ec/src/sst/elements/vanadis/tests/small/basic-io/hello-world.stderr.gold -------------------------------------------------------------------------------- /src/sst/elements/vanadis/tests/small/basic-io/hello-world.stdout.gold: -------------------------------------------------------------------------------- 1 | Hello World from Vanadis 2 | -------------------------------------------------------------------------------- /src/sst/elements/vanadis/tests/small/basic-math/Makefile: -------------------------------------------------------------------------------- 1 | CXX=mipsel-linux-musl-gcc 2 | 3 | all: sqrt-double sqrt-float 4 | 5 | sqrt-double: sqrt-double.c 6 | $(CXX) -o sqrt-double -static sqrt-double.c 7 | 8 | sqrt-float: sqrt-float.c 9 | $(CXX) -o sqrt-float -static sqrt-float.c 10 | 11 | clean: 12 | rm sqrt-double sqrt-float 13 | -------------------------------------------------------------------------------- /src/sst/elements/vanadis/tests/small/basic-math/sqrt-double.c: -------------------------------------------------------------------------------- 1 | // Copyright 2009-2021 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-2021, NTESS 6 | // All rights reserved. 7 | // 8 | // Portions are copyright of other developers: 9 | // See the file CONTRIBUTORS.TXT in the top level directory 10 | // the distribution for more information. 11 | // 12 | // This file is part of the SST software package. For license 13 | // information, see the LICENSE file in the top level directory of the 14 | // distribution. 15 | 16 | #include 17 | 18 | double squareRoot(double n) { 19 | double i = 0; 20 | double precision = 0.00001; 21 | 22 | for(i = 1; i*i <=n; ++i); 23 | for(--i; i*i < n; i += precision); 24 | 25 | return i; 26 | } 27 | 28 | int main( int argc, char* argv[] ) { 29 | int n = 24; 30 | 31 | for( int i = 1; i < n; ++i ) { 32 | printf("Square root of %d = %30.12f\n", i, 33 | squareRoot( (double) i)); 34 | fflush(stdout); 35 | } 36 | 37 | return 0; 38 | } 39 | -------------------------------------------------------------------------------- /src/sst/elements/vanadis/tests/small/basic-math/sqrt-double.stderr.gold: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stonne-simulator/sst-elements-with-stonne/82cf0b29f384fa658a072724c303b40dee0331ec/src/sst/elements/vanadis/tests/small/basic-math/sqrt-double.stderr.gold -------------------------------------------------------------------------------- /src/sst/elements/vanadis/tests/small/basic-math/sqrt-float.c: -------------------------------------------------------------------------------- 1 | // Copyright 2009-2021 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-2021, NTESS 6 | // All rights reserved. 7 | // 8 | // Portions are copyright of other developers: 9 | // See the file CONTRIBUTORS.TXT in the top level directory 10 | // the distribution for more information. 11 | // 12 | // This file is part of the SST software package. For license 13 | // information, see the LICENSE file in the top level directory of the 14 | // distribution. 15 | 16 | #include 17 | 18 | float squareRoot(float n) { 19 | float i = 0; 20 | float precision = 0.00001; 21 | 22 | for(i = 1; i*i <=n; ++i); 23 | for(--i; i*i < n; i += precision); 24 | 25 | return i; 26 | } 27 | 28 | int main( int argc, char* argv[] ) { 29 | int n = 24; 30 | 31 | for( int i = 1; i < n; ++i ) { 32 | printf("Square root of %d = %30.12f\n", i, 33 | squareRoot( (float) i)); 34 | fflush(stdout); 35 | } 36 | 37 | return 0; 38 | } 39 | -------------------------------------------------------------------------------- /src/sst/elements/vanadis/tests/small/basic-math/sqrt-float.stderr.gold: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stonne-simulator/sst-elements-with-stonne/82cf0b29f384fa658a072724c303b40dee0331ec/src/sst/elements/vanadis/tests/small/basic-math/sqrt-float.stderr.gold -------------------------------------------------------------------------------- /src/sst/elements/vanadis/tests/small/basic-ops/Makefile: -------------------------------------------------------------------------------- 1 | CXX=mipsel-linux-musl-gcc 2 | 3 | all: test-branch test-shift 4 | 5 | test-branch: test-branch.c 6 | $(CXX) -o test-branch -static test-branch.c 7 | 8 | test-shift: test-shift.c 9 | $(CXX) -o test-shift -static test-shift.c 10 | 11 | clean: 12 | rm test-branch test-shift 13 | -------------------------------------------------------------------------------- /src/sst/elements/vanadis/tests/small/basic-ops/test-branch.c: -------------------------------------------------------------------------------- 1 | // Copyright 2009-2021 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-2021, NTESS 6 | // All rights reserved. 7 | // 8 | // Portions are copyright of other developers: 9 | // See the file CONTRIBUTORS.TXT in the top level directory 10 | // the distribution for more information. 11 | // 12 | // This file is part of the SST software package. For license 13 | // information, see the LICENSE file in the top level directory of the 14 | // distribution. 15 | 16 | #include 17 | #include 18 | 19 | int main( int argc, char* argv[] ) { 20 | 21 | int max_value = 100000; 22 | 23 | int* value_bins = (int*) malloc( sizeof(int) * 3 ); 24 | 25 | for( int i = 0; i < max_value; ++i ) { 26 | if( 0 == (i%3) ) { 27 | value_bins[0]++; 28 | } else if( 1 == (i%3) ) { 29 | value_bins[1]++; 30 | } else { 31 | // don't do anything 32 | } 33 | } 34 | 35 | printf("value-bins: 0 = %d, 1 = %d\n", value_bins[0], value_bins[1]); 36 | free( value_bins ); 37 | 38 | return 0; 39 | } 40 | -------------------------------------------------------------------------------- /src/sst/elements/vanadis/tests/small/basic-ops/test-branch.stderr.gold: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stonne-simulator/sst-elements-with-stonne/82cf0b29f384fa658a072724c303b40dee0331ec/src/sst/elements/vanadis/tests/small/basic-ops/test-branch.stderr.gold -------------------------------------------------------------------------------- /src/sst/elements/vanadis/tests/small/basic-ops/test-branch.stdout.gold: -------------------------------------------------------------------------------- 1 | value-bins: 0 = 33334, 1 = 33333 2 | -------------------------------------------------------------------------------- /src/sst/elements/vanadis/tests/small/basic-ops/test-shift.stderr.gold: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stonne-simulator/sst-elements-with-stonne/82cf0b29f384fa658a072724c303b40dee0331ec/src/sst/elements/vanadis/tests/small/basic-ops/test-shift.stderr.gold -------------------------------------------------------------------------------- /src/sst/elements/vanadis/util/vdatacopy.h: -------------------------------------------------------------------------------- 1 | // Copyright 2009-2021 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-2021, NTESS 6 | // All rights reserved. 7 | // 8 | // Portions are copyright of other developers: 9 | // See the file CONTRIBUTORS.TXT in the top level directory 10 | // the distribution for more information. 11 | // 12 | // This file is part of the SST software package. For license 13 | // information, see the LICENSE file in the top level directory of the 14 | // distribution. 15 | 16 | #ifndef _H_VANADIS_UTIL_DATA_COPY 17 | #define _H_VANADIS_UTIL_DATA_COPY 18 | 19 | #include 20 | 21 | namespace SST { 22 | namespace Vanadis { 23 | 24 | template 25 | void 26 | vanadis_vec_copy_in(std::vector& vec, T value) { 27 | uint8_t* value_ptr = (uint8_t*)&value; 28 | 29 | for (size_t i = 0; i < sizeof(T); ++i) { 30 | vec.push_back(value_ptr[i]); 31 | } 32 | }; 33 | 34 | } // namespace Vanadis 35 | } // namespace SST 36 | 37 | #endif 38 | -------------------------------------------------------------------------------- /src/sst/elements/vanadis/util/vlinesplit.h: -------------------------------------------------------------------------------- 1 | // Copyright 2009-2021 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-2021, NTESS 6 | // All rights reserved. 7 | // 8 | // Portions are copyright of other developers: 9 | // See the file CONTRIBUTORS.TXT in the top level directory 10 | // the distribution for more information. 11 | // 12 | // This file is part of the SST software package. For license 13 | // information, see the LICENSE file in the top level directory of the 14 | // distribution. 15 | 16 | #ifndef _H_VANADIS_UTIL_CACHE_LINE_SPLIT 17 | #define _H_VANADIS_UTIL_CACHE_LINE_SPLIT 18 | 19 | namespace SST { 20 | namespace Vanadis { 21 | 22 | uint64_t 23 | vanadis_line_remainder(const uint64_t start, const uint64_t line_length) { 24 | if (64 == line_length) { 25 | return line_length - (start & (uint64_t)63); 26 | } else { 27 | return line_length - (start % line_length); 28 | } 29 | }; 30 | 31 | } // namespace Vanadis 32 | } // namespace SST 33 | 34 | #endif 35 | -------------------------------------------------------------------------------- /src/sst/elements/zodiac/configure.m4: -------------------------------------------------------------------------------- 1 | dnl -*- Autoconf -*- 2 | 3 | AC_DEFUN([SST_zodiac_CONFIG], [ 4 | 5 | zodiac_happy="yes" 6 | 7 | SST_CHECK_OTF([have_zodiac_otf=1], 8 | [have_zodiac_otf=0], 9 | [AC_MSG_ERROR([Open Trace Format was requested but was not found])]) 10 | SST_CHECK_DUMPI([have_zodiac_dumpi=1], 11 | [have_zodiac_dumpi=0], 12 | [AC_MSG_ERROR([DUMPI Trace Format was requested but was not found])]) 13 | 14 | AS_IF([test "$have_zodiac_otf" = 1], 15 | [AC_DEFINE([HAVE_ZODIAC_OTF], [1], [Define if you have an OTF compatible library.])]) 16 | AS_IF([test "$have_zodiac_dumpi" = 1], 17 | [AC_DEFINE([HAVE_ZODIAC_DUMPI], [1], [Define if you have an UNDUMPI compatible library.])]) 18 | 19 | AS_IF([test "$zodiac_happy" = "yes"], [$1], [$2]) 20 | 21 | ]) 22 | -------------------------------------------------------------------------------- /src/sst/elements/zodiac/sirius/siriusglobals.h: -------------------------------------------------------------------------------- 1 | // Copyright 2009-2021 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-2021, NTESS 6 | // All rights reserved. 7 | // 8 | // Portions are copyright of other developers: 9 | // See the file CONTRIBUTORS.TXT in the top level directory 10 | // the distribution for more information. 11 | // 12 | // This file is part of the SST software package. For license 13 | // information, see the LICENSE file in the top level directory of the 14 | // distribution. 15 | 16 | 17 | #include "mpi.h" 18 | 19 | #include 20 | #include 21 | #include 22 | #include 23 | 24 | #include "siriusconst.h" 25 | 26 | int sirius_rank; 27 | int sirius_npes; 28 | struct timespec load_lib_time; 29 | double load_library; 30 | 31 | FILE* trace_dump; 32 | -------------------------------------------------------------------------------- /src/sst/elements/zodiac/test/allreduce/.gitignore: -------------------------------------------------------------------------------- 1 | npe*/allred*.stf* 2 | -------------------------------------------------------------------------------- /src/sst/elements/zodiac/test/barrier/barrier.c: -------------------------------------------------------------------------------- 1 | // Copyright 2009-2021 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-2021, NTESS 6 | // All rights reserved. 7 | // 8 | // Portions are copyright of other developers: 9 | // See the file CONTRIBUTORS.TXT in the top level directory 10 | // the distribution for more information. 11 | // 12 | // This file is part of the SST software package. For license 13 | // information, see the LICENSE file in the top level directory of the 14 | // distribution. 15 | 16 | #include 17 | #include 18 | 19 | int main(int argc, char* argv[]) { 20 | 21 | MPI_Init(&argc, &argv); 22 | 23 | int rank, npes; 24 | MPI_Comm_rank(MPI_COMM_WORLD, &rank); 25 | MPI_Comm_size(MPI_COMM_WORLD, &npes); 26 | 27 | if(rank == 0) { 28 | printf("SST Barrier Test (Rank Count: %d)\n", npes); 29 | } 30 | 31 | MPI_Barrier(MPI_COMM_WORLD); 32 | 33 | if(rank == 0) { 34 | printf("SST Barrier completed.\n"); 35 | } 36 | 37 | MPI_Finalize(); 38 | 39 | } 40 | -------------------------------------------------------------------------------- /src/sst/elements/zodiac/test/dumpi.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 1ns 4 | 9 | 10 | 11 | 1ns 12 | 50 ps 13 | 14 | 15 | 16 | 17 | 18 | 19 | /home/sdhammo/dumpi-output/dumpi-2013.05.20.16.21.32-0000.bin 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /src/sst/elements/zodiac/test/helloworld.c: -------------------------------------------------------------------------------- 1 | // Copyright 2009-2021 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-2021, NTESS 6 | // All rights reserved. 7 | // 8 | // Portions are copyright of other developers: 9 | // See the file CONTRIBUTORS.TXT in the top level directory 10 | // the distribution for more information. 11 | // 12 | // This file is part of the SST software package. For license 13 | // information, see the LICENSE file in the top level directory of the 14 | // distribution. 15 | 16 | #include 17 | #include "mpi.h" 18 | 19 | int main(int argc, char* argv[]) { 20 | 21 | MPI_Init(&argc, &argv); 22 | 23 | int rank, npes; 24 | MPI_Comm_rank(MPI_COMM_WORLD, &rank); 25 | MPI_Comm_size(MPI_COMM_WORLD, &npes); 26 | 27 | MPI_Barrier(MPI_COMM_WORLD); 28 | 29 | if(rank == 0) { 30 | printf("Hello World\n"); 31 | } 32 | 33 | MPI_Barrier(MPI_COMM_WORLD); 34 | MPI_Finalize(); 35 | } 36 | -------------------------------------------------------------------------------- /src/sst/elements/zodiac/test/otf.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 1ns 4 | 5 | stopAtCycle=10000000ns 6 | 7 | 8 | 9 | 1ns 10 | 50 ps 11 | 12 | 13 | 14 | 15 | 16 | 17 | /home/sdhammo/subversion/sst-simulator/sst/elements/zodiac/test/pingpong/pingpong.otf 18 | 1 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /src/sst/elements/zodiac/test/pingpong/sirius.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 1ns 4 | 5 | stopAtCycle=10000000ns 6 | 7 | 8 | 9 | 1ns 10 | 50 ps 11 | 12 | 13 | 14 | 15 | 16 | 17 | /home/sdhammo/subversion/sst-simulator/sst/elements/zodiac/test/hello-0-2.stf 18 | 1 19 | 0 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /src/sst/elements/zodiac/zbarrierevent.cc: -------------------------------------------------------------------------------- 1 | // Copyright 2009-2021 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-2021, NTESS 6 | // All rights reserved. 7 | // 8 | // Portions are copyright of other developers: 9 | // See the file CONTRIBUTORS.TXT in the top level directory 10 | // the distribution for more information. 11 | // 12 | // This file is part of the SST software package. For license 13 | // information, see the LICENSE file in the top level directory of the 14 | // distribution. 15 | 16 | 17 | #include 18 | #include "zbarrierevent.h" 19 | 20 | using namespace SST::Hermes; 21 | using namespace SST::Zodiac; 22 | using namespace SST; 23 | 24 | ZodiacBarrierEvent::ZodiacBarrierEvent( 25 | Communicator group) { 26 | 27 | msgComm = group; 28 | } 29 | 30 | ZodiacEventType ZodiacBarrierEvent::getEventType() { 31 | return Z_BARRIER; 32 | } 33 | 34 | Communicator ZodiacBarrierEvent::getCommunicatorGroup() { 35 | return msgComm; 36 | } 37 | -------------------------------------------------------------------------------- /src/sst/elements/zodiac/zbarrierevent.h: -------------------------------------------------------------------------------- 1 | // Copyright 2009-2021 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-2021, NTESS 6 | // All rights reserved. 7 | // 8 | // Portions are copyright of other developers: 9 | // See the file CONTRIBUTORS.TXT in the top level directory 10 | // the distribution for more information. 11 | // 12 | // This file is part of the SST software package. For license 13 | // information, see the LICENSE file in the top level directory of the 14 | // distribution. 15 | 16 | 17 | #ifndef _H_ZODIAC_BARRIER_EVENT 18 | #define _H_ZODIAC_BARRIER_EVENT 19 | 20 | #include "zevent.h" 21 | 22 | using namespace SST::Hermes; 23 | using namespace SST::Hermes::MP; 24 | 25 | namespace SST { 26 | namespace Zodiac { 27 | 28 | class ZodiacBarrierEvent : public ZodiacEvent { 29 | 30 | public: 31 | ZodiacBarrierEvent(Communicator group); 32 | ZodiacEventType getEventType(); 33 | Communicator getCommunicatorGroup(); 34 | 35 | private: 36 | Communicator msgComm; 37 | 38 | }; 39 | 40 | } 41 | } 42 | 43 | #endif 44 | -------------------------------------------------------------------------------- /src/sst/elements/zodiac/zcollective.cc: -------------------------------------------------------------------------------- 1 | // Copyright 2009-2021 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-2021, NTESS 6 | // All rights reserved. 7 | // 8 | // Portions are copyright of other developers: 9 | // See the file CONTRIBUTORS.TXT in the top level directory 10 | // the distribution for more information. 11 | // 12 | // This file is part of the SST software package. For license 13 | // information, see the LICENSE file in the top level directory of the 14 | // distribution. 15 | 16 | 17 | #include 18 | #include "zcollective.h" 19 | 20 | using namespace SST; 21 | using namespace SST::Zodiac; 22 | 23 | ZodiacCollectiveEvent::ZodiacCollectiveEvent() : ZodiacEvent() { 24 | 25 | } 26 | -------------------------------------------------------------------------------- /src/sst/elements/zodiac/zcollective.h: -------------------------------------------------------------------------------- 1 | // Copyright 2009-2021 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-2021, NTESS 6 | // All rights reserved. 7 | // 8 | // Portions are copyright of other developers: 9 | // See the file CONTRIBUTORS.TXT in the top level directory 10 | // the distribution for more information. 11 | // 12 | // This file is part of the SST software package. For license 13 | // information, see the LICENSE file in the top level directory of the 14 | // distribution. 15 | 16 | 17 | #ifndef _H_ZODIAC_COLLECTIVE_EVENT_BASE 18 | #define _H_ZODIAC_COLLECTIVE_EVENT_BASE 19 | 20 | #include "sst/elements/hermes/msgapi.h" 21 | #include "zevent.h" 22 | 23 | namespace SST { 24 | namespace Zodiac { 25 | 26 | class ZodiacCollectiveEvent : public ZodiacEvent { 27 | 28 | public: 29 | ZodiacCollectiveEvent(); 30 | virtual ZodiacEventType getEventType() = 0; 31 | 32 | }; 33 | 34 | } 35 | } 36 | 37 | #endif 38 | -------------------------------------------------------------------------------- /src/sst/elements/zodiac/zcomputeevent.cc: -------------------------------------------------------------------------------- 1 | // Copyright 2009-2021 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-2021, NTESS 6 | // All rights reserved. 7 | // 8 | // Portions are copyright of other developers: 9 | // See the file CONTRIBUTORS.TXT in the top level directory 10 | // the distribution for more information. 11 | // 12 | // This file is part of the SST software package. For license 13 | // information, see the LICENSE file in the top level directory of the 14 | // distribution. 15 | 16 | 17 | #include 18 | #include "zcomputeevent.h" 19 | 20 | using namespace SST::Hermes; 21 | using namespace SST::Zodiac; 22 | using namespace SST; 23 | 24 | ZodiacComputeEvent::ZodiacComputeEvent(double time) { 25 | computeTime = time; 26 | } 27 | 28 | ZodiacEventType ZodiacComputeEvent::getEventType() { 29 | return Z_COMPUTE; 30 | } 31 | 32 | double ZodiacComputeEvent::getComputeDuration() { 33 | return computeTime; 34 | } 35 | 36 | double ZodiacComputeEvent::getComputeDurationNano() { 37 | return computeTime * 1000000000.0; 38 | } 39 | -------------------------------------------------------------------------------- /src/sst/elements/zodiac/zcomputeevent.h: -------------------------------------------------------------------------------- 1 | // Copyright 2009-2021 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-2021, NTESS 6 | // All rights reserved. 7 | // 8 | // Portions are copyright of other developers: 9 | // See the file CONTRIBUTORS.TXT in the top level directory 10 | // the distribution for more information. 11 | // 12 | // This file is part of the SST software package. For license 13 | // information, see the LICENSE file in the top level directory of the 14 | // distribution. 15 | 16 | 17 | #ifndef _H_ZODIAC_COMPUTE_EVENT 18 | #define _H_ZODIAC_COMPUTE_EVENT 19 | 20 | #include "zevent.h" 21 | 22 | using namespace SST::Hermes; 23 | 24 | namespace SST { 25 | namespace Zodiac { 26 | 27 | class ZodiacComputeEvent : public ZodiacEvent{ 28 | 29 | public: 30 | ZodiacComputeEvent(double timeSeconds); 31 | double getComputeDuration(); 32 | double getComputeDurationNano(); 33 | ZodiacEventType getEventType(); 34 | 35 | private: 36 | double computeTime; 37 | }; 38 | 39 | } 40 | } 41 | 42 | #endif 43 | -------------------------------------------------------------------------------- /src/sst/elements/zodiac/zevent.cc: -------------------------------------------------------------------------------- 1 | // Copyright 2009-2021 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-2021, NTESS 6 | // All rights reserved. 7 | // 8 | // Portions are copyright of other developers: 9 | // See the file CONTRIBUTORS.TXT in the top level directory 10 | // the distribution for more information. 11 | // 12 | // This file is part of the SST software package. For license 13 | // information, see the LICENSE file in the top level directory of the 14 | // distribution. 15 | 16 | 17 | #include 18 | #include "zevent.h" 19 | 20 | using namespace SST; 21 | using namespace SST::Zodiac; 22 | 23 | ZodiacEvent::ZodiacEvent() { 24 | 25 | } 26 | -------------------------------------------------------------------------------- /src/sst/elements/zodiac/zfinalizeevent.cc: -------------------------------------------------------------------------------- 1 | // Copyright 2009-2021 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-2021, NTESS 6 | // All rights reserved. 7 | // 8 | // Portions are copyright of other developers: 9 | // See the file CONTRIBUTORS.TXT in the top level directory 10 | // the distribution for more information. 11 | // 12 | // This file is part of the SST software package. For license 13 | // information, see the LICENSE file in the top level directory of the 14 | // distribution. 15 | 16 | 17 | #include 18 | #include "zfinalizeevent.h" 19 | 20 | using namespace SST::Hermes; 21 | using namespace SST::Zodiac; 22 | using namespace SST; 23 | 24 | ZodiacEventType ZodiacFinalizeEvent::getEventType() { 25 | return Z_FINALIZE; 26 | } 27 | 28 | ZodiacFinalizeEvent::ZodiacFinalizeEvent() { 29 | 30 | } 31 | -------------------------------------------------------------------------------- /src/sst/elements/zodiac/zfinalizeevent.h: -------------------------------------------------------------------------------- 1 | // Copyright 2009-2021 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-2021, NTESS 6 | // All rights reserved. 7 | // 8 | // Portions are copyright of other developers: 9 | // See the file CONTRIBUTORS.TXT in the top level directory 10 | // the distribution for more information. 11 | // 12 | // This file is part of the SST software package. For license 13 | // information, see the LICENSE file in the top level directory of the 14 | // distribution. 15 | 16 | 17 | #ifndef _H_ZODIAC_FINALIZE_EVENT 18 | #define _H_ZODIAC_FINALIZE_EVENT 19 | 20 | #include "zevent.h" 21 | 22 | using namespace SST::Hermes; 23 | 24 | namespace SST { 25 | namespace Zodiac { 26 | 27 | class ZodiacFinalizeEvent : public ZodiacEvent { 28 | 29 | public: 30 | ZodiacFinalizeEvent(); 31 | ZodiacEventType getEventType(); 32 | 33 | private: 34 | 35 | }; 36 | 37 | } 38 | } 39 | 40 | #endif 41 | -------------------------------------------------------------------------------- /src/sst/elements/zodiac/zinitevent.cc: -------------------------------------------------------------------------------- 1 | // Copyright 2009-2021 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-2021, NTESS 6 | // All rights reserved. 7 | // 8 | // Portions are copyright of other developers: 9 | // See the file CONTRIBUTORS.TXT in the top level directory 10 | // the distribution for more information. 11 | // 12 | // This file is part of the SST software package. For license 13 | // information, see the LICENSE file in the top level directory of the 14 | // distribution. 15 | 16 | 17 | #include 18 | #include "zinitevent.h" 19 | 20 | using namespace SST::Hermes; 21 | using namespace SST::Zodiac; 22 | using namespace SST; 23 | 24 | ZodiacInitEvent::ZodiacInitEvent() 25 | { 26 | } 27 | 28 | ZodiacEventType ZodiacInitEvent::getEventType() { 29 | return Z_INIT; 30 | } 31 | 32 | -------------------------------------------------------------------------------- /src/sst/elements/zodiac/zinitevent.h: -------------------------------------------------------------------------------- 1 | // Copyright 2009-2021 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-2021, NTESS 6 | // All rights reserved. 7 | // 8 | // Portions are copyright of other developers: 9 | // See the file CONTRIBUTORS.TXT in the top level directory 10 | // the distribution for more information. 11 | // 12 | // This file is part of the SST software package. For license 13 | // information, see the LICENSE file in the top level directory of the 14 | // distribution. 15 | 16 | 17 | #ifndef _H_ZODIAC_INIT_EVENT 18 | #define _H_ZODIAC_INIT_EVENT 19 | 20 | #include "zevent.h" 21 | 22 | using namespace SST::Hermes; 23 | 24 | namespace SST { 25 | namespace Zodiac { 26 | 27 | class ZodiacInitEvent : public ZodiacEvent { 28 | 29 | public: 30 | ZodiacInitEvent(); 31 | ZodiacEventType getEventType(); 32 | 33 | }; 34 | 35 | } 36 | } 37 | 38 | #endif 39 | -------------------------------------------------------------------------------- /src/sst/elements/zodiac/zwaitevent.cc: -------------------------------------------------------------------------------- 1 | // Copyright 2009-2021 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-2021, NTESS 6 | // All rights reserved. 7 | // 8 | // Portions are copyright of other developers: 9 | // See the file CONTRIBUTORS.TXT in the top level directory 10 | // the distribution for more information. 11 | // 12 | // This file is part of the SST software package. For license 13 | // information, see the LICENSE file in the top level directory of the 14 | // distribution. 15 | 16 | 17 | #include 18 | #include "zwaitevent.h" 19 | 20 | using namespace SST::Hermes; 21 | using namespace SST::Zodiac; 22 | using namespace SST; 23 | 24 | ZodiacWaitEvent::ZodiacWaitEvent(uint64_t rID) { 25 | reqID = rID; 26 | } 27 | 28 | ZodiacEventType ZodiacWaitEvent::getEventType() { 29 | return Z_WAIT; 30 | } 31 | 32 | uint64_t ZodiacWaitEvent::getRequestID() { 33 | return reqID; 34 | } 35 | -------------------------------------------------------------------------------- /src/sst/elements/zodiac/zwaitevent.h: -------------------------------------------------------------------------------- 1 | // Copyright 2009-2021 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-2021, NTESS 6 | // All rights reserved. 7 | // 8 | // Portions are copyright of other developers: 9 | // See the file CONTRIBUTORS.TXT in the top level directory 10 | // the distribution for more information. 11 | // 12 | // This file is part of the SST software package. For license 13 | // information, see the LICENSE file in the top level directory of the 14 | // distribution. 15 | 16 | 17 | #ifndef _H_ZODIAC_WAIT_EVENT 18 | #define _H_ZODIAC_WAIT_EVENT 19 | 20 | #include "zevent.h" 21 | 22 | using namespace SST::Hermes; 23 | 24 | namespace SST { 25 | namespace Zodiac { 26 | 27 | class ZodiacWaitEvent : public ZodiacEvent { 28 | 29 | public: 30 | ZodiacWaitEvent(uint64_t reqID); 31 | ZodiacEventType getEventType(); 32 | 33 | uint64_t getRequestID(); 34 | 35 | protected: 36 | uint64_t reqID; 37 | 38 | }; 39 | 40 | } 41 | } 42 | 43 | #endif 44 | -------------------------------------------------------------------------------- /sstStonne-memHierarchy.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stonne-simulator/sst-elements-with-stonne/82cf0b29f384fa658a072724c303b40dee0331ec/sstStonne-memHierarchy.jpg -------------------------------------------------------------------------------- /stonne-small.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stonne-simulator/sst-elements-with-stonne/82cf0b29f384fa658a072724c303b40dee0331ec/stonne-small.jpg --------------------------------------------------------------------------------