diff --git a/.github/workflows/gha-updater.yml b/.github/workflows/gha-updater.yml new file mode 100644 index 0000000..3150cfa --- /dev/null +++ b/.github/workflows/gha-updater.yml @@ -0,0 +1,23 @@ +--- +name: GitHub Actions Version Updater + +# Controls when the action will run. +# yamllint disable-line rule:truthy +on: + schedule: + # Automatically run on every Sunday + - cron: "0 0 * * 0" + +jobs: + gha-updater: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + # [Required] Access token with `workflow` scope. + token: ${{ secrets.WORKFLOW_SECRET }} + - name: Run GitHub Actions Version Updater + uses: saadmk11/github-actions-version-updater@v0.8.1 + with: + # [Required] Access token with `workflow` scope. + token: ${{ secrets.WORKFLOW_SECRET }} diff --git a/.github/workflows/pre-commit.yml b/.github/workflows/pre-commit.yml new file mode 100644 index 0000000..0df2c64 --- /dev/null +++ b/.github/workflows/pre-commit.yml @@ -0,0 +1,16 @@ +--- +# In the absence of using the pre-commit.ci service... +name: pre-commit + +# yamllint disable-line rule:truthy +on: + pull_request: + push: + +jobs: + pre-commit: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-python@v3 + - uses: pre-commit/action@v3.0.0 diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml new file mode 100644 index 0000000..612fea6 --- /dev/null +++ b/.pre-commit-config.yaml @@ -0,0 +1,25 @@ +--- +fail_fast: false +repos: + - repo: meta + hooks: + - id: check-hooks-apply + - id: check-useless-excludes + - repo: https://github.com/pre-commit/pre-commit-hooks + rev: "v4.5.0" + hooks: + - id: check-added-large-files + - id: check-case-conflict + - id: check-merge-conflict + - id: check-yaml + - id: end-of-file-fixer + - id: fix-byte-order-marker + - id: mixed-line-ending + args: [--fix, "lf"] + - id: no-commit-to-branch + args: [--branch, main, --branch, master, --branch, devel] + - id: trailing-whitespace + - repo: https://github.com/adrienverge/yamllint + rev: "v1.33.0" + hooks: + - id: yamllint diff --git a/README.md b/README.md index cd66f67..d8f543c 100644 --- a/README.md +++ b/README.md @@ -84,7 +84,7 @@ Spack provides the `dev-build` feature for building and installing from a custom For example: ```` > git clone git@github.com:sstsimulator/sst-core.git -b devel src -> spack dev-build -d src sst-core@devel +pdes-mpi +> spack dev-build -d src sst-core@devel +pdes-mpi ```` is equivalent to just running ```` @@ -293,4 +293,3 @@ o | | | | | | | | | | | | | zlib o expat o libbsd ```` - diff --git a/sst/packages/.gitkeep b/sst/packages/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/sst/packages/dramsim2/package.py b/sst/packages/dramsim2/package.py deleted file mode 100644 index df2d42a..0000000 --- a/sst/packages/dramsim2/package.py +++ /dev/null @@ -1,30 +0,0 @@ -# Copyright 2013-2020 Lawrence Livermore National Security, LLC and other -# Spack Project Developers. See the top-level COPYRIGHT file for details. -# -# SPDX-License-Identifier: (Apache-2.0 OR MIT) - -from spack import * - - -class Dramsim2(MakefilePackage): - """ - DRAMsim is a hardware-validated, cycle-accurate - C based simulator for DRAM devices such as DDR3 - """ - - homepage = "https://github.com/umd-memsys/DRAMSim2" - git = "https://github.com/umd-memsys/DRAMSim2" - url = "https://github.com/dramninjasUMD/DRAMSim2/archive/v2.2.2.tar.gz" - - maintainers = ['jjwilke'] - - version('2.2.2', sha256="96d0257eafb41e38ffa4f13e3ef3759567bdde7fa3329403f324abd0ddf8d015") - - def build(self, spec, prefix): - if spec.satisfies("platform=darwin"): - make("libdramsim.dylib") - else: - make("libdramsim.so") - - def install(self, spec, prefix): - install_tree(".", prefix) diff --git a/sst/packages/goblin-hmc-sim/package.py b/sst/packages/goblin-hmc-sim/package.py deleted file mode 100644 index 8b5e9ab..0000000 --- a/sst/packages/goblin-hmc-sim/package.py +++ /dev/null @@ -1,28 +0,0 @@ -# Copyright 2013-2020 Lawrence Livermore National Security, LLC and other -# Spack Project Developers. See the top-level COPYRIGHT file for details. -# -# SPDX-License-Identifier: (Apache-2.0 OR MIT) - -from spack import * - - -class GoblinHmcSim(MakefilePackage): - """ - The Goblin HMC-Sim is a Hybrid Memory Cube - Functional Simulation Environment - """ - - homepage = "https://github.com/tactcomplabs/gc64-hmcsim" - git = "https://github.com/tactcomplabs/gc64-hmcsim" - # The version numbers track the SST they were released with - url = "https://github.com/tactcomplabs/gc64-hmcsim/archive/sst-8.0.0-release.tar.gz" - # This works with parallel builds outside Spack - # For some reason .o files get thrashed inside Spack - parallel = False - - maintainers = ['jjwilke'] - - version('8.0.0', sha256="8a5e6b701865a581f15965d3ddd8c7d301b15f4b63543c444058e9c3688fd2c8") - - def install(self, spec, prefix): - install_tree(".", prefix) diff --git a/sst/packages/hbm-dramsim2/package.py b/sst/packages/hbm-dramsim2/package.py deleted file mode 100644 index 6ecd8de..0000000 --- a/sst/packages/hbm-dramsim2/package.py +++ /dev/null @@ -1,23 +0,0 @@ -# Copyright 2013-2020 Lawrence Livermore National Security, LLC and other -# Spack Project Developers. See the top-level COPYRIGHT file for details. -# -# SPDX-License-Identifier: (Apache-2.0 OR MIT) - -from spack import * - - -class HbmDramsim2(MakefilePackage): - """ - HBM Simulator based on DRAMSim2 - """ - - homepage = "https://github.com/tactcomplabs/HBM" - git = "https://github.com/tactcomplabs/HBM" - url = "https://github.com/tactcomplabs/HBM/archive/hbm-1.0.0-release.tar.gz" - - maintainers = ['jjwilke'] - - version('1.0.0', sha256="0efad11c58197edb47ad1359f8f93fb45d882c6bebcf9f2143e0df7a719689a0") - - def install(self, spec, prefix): - install_tree(".", prefix) diff --git a/sst/packages/hybridsim/makefile.patch b/sst/packages/hybridsim/makefile.patch deleted file mode 100644 index 4512bc5..0000000 --- a/sst/packages/hybridsim/makefile.patch +++ /dev/null @@ -1,20 +0,0 @@ -diff --git a/Makefile b/Makefile -index c43f1e2..8b3bd86 100644 ---- a/Makefile -+++ b/Makefile -@@ -14,12 +14,11 @@ endif - CXXFLAGS+=$(OPTFLAGS) - - CUR_DIRECTORY=$(shell pwd) --DRAM_LIB=$(CUR_DIRECTORY)/../DRAMSim2 --NV_LIB=$(CUR_DIRECTORY)/../NVDIMMSim/src --#NV_LIB=$(CUR_DIRECTORY)/../FNVSim -+DRAM_LIB=$(CUR_DIRECTORY)/DRAMSim2 -+NV_LIB=$(CUR_DIRECTORY)/NVDIMMSim - - INCLUDES=-I$(DRAM_LIB) -I$(NV_LIB) --LIBS=-L${DRAM_LIB} -L${NV_LIB} -ldramsim -lnvdsim -Wl,-rpath ${DRAM_LIB} -Wl,-rpath ${NV_LIB} -+LIBS=-L${DRAM_LIB} -L${NV_LIB} -ldramsim -lnvdsim -Wl,-rpath -Wl,${DRAM_LIB} -Wl,-rpath -Wl,${NV_LIB} - - EXE_NAME=HybridSim - LIB_NAME=libhybridsim.so diff --git a/sst/packages/hybridsim/package.py b/sst/packages/hybridsim/package.py deleted file mode 100644 index 089181c..0000000 --- a/sst/packages/hybridsim/package.py +++ /dev/null @@ -1,37 +0,0 @@ -# Copyright 2013-2020 Lawrence Livermore National Security, LLC and other -# Spack Project Developers. See the top-level COPYRIGHT file for details. -# -# SPDX-License-Identifier: (Apache-2.0 OR MIT) - -from spack import * - - -class Hybridsim(MakefilePackage): - """ - HybridSim provides cycle-accurate simulation of a non-volatile - memory system augmented with a DRAM based cache. It uses DRAMSim2 - for the DRAM model and NVDIMMSim for the non-volatile memory model - """ - - homepage = "https://github.com/jimstevens2001/HybridSim" - git = "https://github.com/jimstevens2001/HybridSim" - url = "https://github.com/jimstevens2001/HybridSim/archive/v2.0.1.tar.gz" - - maintainers = ['jjwilke'] - - version('2.0.1', sha256="57b82ac929acd36de84525e4d61358f1ab6532f5b635ca3f560e563479921937") - - depends_on("dramsim2") - depends_on("nvdimmsim") - patch("makefile.patch", when="@2.0.1") - - def build(self, spec, prefix): - symlink(spec["dramsim2"].prefix, "DRAMSim2") - symlink(spec["nvdimmsim"].prefix, "NVDIMMSim") - if spec.satisfies("platform=darwin"): - make("libhybridsim.dylib") - else: - make("libhybridsim.so") - - def install(self, spec, prefix): - install_tree(".", prefix) diff --git a/sst/packages/intel-pin/package.py b/sst/packages/intel-pin/package.py deleted file mode 100644 index 4378d8e..0000000 --- a/sst/packages/intel-pin/package.py +++ /dev/null @@ -1,27 +0,0 @@ -# Copyright 2013-2020 Lawrence Livermore National Security, LLC and other -# Spack Project Developers. See the top-level COPYRIGHT file for details. -# -# SPDX-License-Identifier: (Apache-2.0 OR MIT) - -from spack import * -from os import symlink - - -class IntelPin(Package): - """Intel Pin is a dynamic binary instrumentation framework for the IA-32, - x86-64 and MIC instruction-set architectures that enables the creation of - dynamic program analysis tools.""" - - homepage = "http://www.pintool.org" - maintainers = ['matthiasdiener'] - - version('3.13', sha256='04a36e91f3f85119c3496f364a8806c82bb675f7536a8ab45344c9890b5e2714', url='https://software.intel.com/sites/landingpage/pintool/downloads/pin-3.13-98189-g60a6ef199-gcc-linux.tar.gz') - version('3.11', sha256='aa5abca475a6e106a75e6ed4ba518fb75a57549a59f00681e6bd6e3f221bd23a', url='https://software.intel.com/sites/landingpage/pintool/downloads/pin-3.11-97998-g7ecce2dac-gcc-linux.tar.gz') - version('3.10', sha256='7c8f14c3a0654bab662b58aba460403138fa44517bd40052501e8e0075b2702a', url='https://software.intel.com/sites/landingpage/pintool/downloads/pin-3.10-97971-gc5e41af74-gcc-linux.tar.gz') - version('3.7', sha256='4730328795be61f1addb0e505a3792a4b4ca80b1b9405acf217beec6b5b90fb8', url='https://software.intel.com/sites/landingpage/pintool/downloads/pin-3.7-97619-g0d0c92f4f-gcc-linux.tar.gz') - version('2.14', sha256="1c29f589515772411a699a82fc4a3156cad95863a29741dfa6522865d4d281a1", url="https://software.intel.com/sites/landingpage/pintool/downloads/pin-2.14-71313-gcc.4.4.7-linux.tar.gz") - - def install(self, spec, prefix): - install_tree('.', prefix) - mkdir(prefix.bin) - symlink(join_path(prefix, 'pin'), join_path(prefix.bin, 'pin')) diff --git a/sst/packages/nvdimmsim/package.py b/sst/packages/nvdimmsim/package.py deleted file mode 100644 index 0d0a096..0000000 --- a/sst/packages/nvdimmsim/package.py +++ /dev/null @@ -1,32 +0,0 @@ -# Copyright 2013-2020 Lawrence Livermore National Security, LLC and other -# Spack Project Developers. See the top-level COPYRIGHT file for details. -# -# SPDX-License-Identifier: (Apache-2.0 OR MIT) - -from spack import * - - -class Nvdimmsim(MakefilePackage): - """ - NVDIMMSim is a cycle-accurate non-volatile memory simulator - for devices such as NAND flash - """ - - homepage = "https://github.com/slunk/NVDIMMSim" - git = "https://github.com/slunk/NVDIMMSim" - url = "https://github.com/jimstevens2001/NVDIMMSim/archive/v2.0.0.tar.gz" - - maintainers = ['jjwilke'] - - version('2.0.0', sha256="2a621ef10be5e52a1f543985d08354a2e6ee6532b5720e5f17ad6362cfd4adef") - - def build(self, spec, prefix): - with working_dir("src"): - if spec.satisfies("platform=darwin"): - make("libnvdsim.dylib") - else: - make("libnvdsim.so") - - def install(self, spec, prefix): - with working_dir("src"): - install_tree(".", prefix) diff --git a/sst/packages/ramulator/package.py b/sst/packages/ramulator/package.py deleted file mode 100644 index a103d4b..0000000 --- a/sst/packages/ramulator/package.py +++ /dev/null @@ -1,35 +0,0 @@ -# Copyright 2013-2020 Lawrence Livermore National Security, LLC and other -# Spack Project Developers. See the top-level COPYRIGHT file for details. -# -# SPDX-License-Identifier: (Apache-2.0 OR MIT) - -from spack import * - - -class Ramulator(MakefilePackage): - """ - Ramulator is a fast and cycle-accurate DRAM simulator that supports - a wide array of commercial, as well as academic, DRAM standards. - """ - - homepage = "https://github.com/CMU-SAFARI/ramulator" - git = "https://github.com/CMU-SAFARI/ramulator" - - maintainers = ['jjwilke'] - - version('sst', commit="7d2e72306c6079768e11a1867eb67b60cee34a1c") - - patch('ramulator_sha_7d2e723_gcc48Patch.patch', when="@sst") - patch('ramulator_sha_7d2e723_libPatch.patch', when="@sst") - - def patch(self): - filter_file('-fpic', self.compiler.cxx_pic_flag, "Makefile") - - def build(self, spec, prefix): - if spec.satisfies("platform=darwin"): - make("libramulator.a") - else: - make("libramulator.so") - - def install(self, spec, prefix): - install_tree(".", prefix) diff --git a/sst/packages/ramulator/ramulator_sha_7d2e723_gcc48Patch.patch b/sst/packages/ramulator/ramulator_sha_7d2e723_gcc48Patch.patch deleted file mode 100644 index 6e8b31a..0000000 --- a/sst/packages/ramulator/ramulator_sha_7d2e723_gcc48Patch.patch +++ /dev/null @@ -1,250 +0,0 @@ -diff --git a/src/Scheduler.h b/src/Scheduler.h -index c8561c1..38f924d 100644 ---- a/src/Scheduler.h -+++ b/src/Scheduler.h -@@ -9,8 +9,10 @@ - #include - #include - #include -+#include - - using namespace std; -+using namespace std::placeholders; - - namespace ramulator - { -@@ -22,18 +24,66 @@ template - class Scheduler - { - public: -- Controller* ctrl; -- -- enum class Type { -- FCFS, FRFCFS, FRFCFS_Cap, FRFCFS_PriorHit, MAX -- } type = Type::FRFCFS_Cap; -- //} type = Type::FCFS; -- -- long cap = 16; -+ Controller* ctrl; -+ -+ enum class Type { -+ FCFS, FRFCFS, FRFCFS_Cap, FRFCFS_PriorHit, MAX -+ } type = Type::FRFCFS_Cap; -+ //} type = Type::FCFS; -+ -+ long cap = 16; -+ -+ Scheduler(Controller* _ctrl) : ctrl(_ctrl) { - -- Scheduler(Controller* ctrl) : ctrl(ctrl) {} -- -- list::iterator get_head(list& q) -+ // FCFS -+ compare[0] = std::bind([] (ReqIter req1, ReqIter req2, Scheduler *obj) -> ReqIter { -+ if (req1->arrive <= req2->arrive) return req1; -+ return req2;}, _1, _2, std::move(this)); -+ -+ // FRFCFS -+ compare[1] = std::bind([] (ReqIter req1, ReqIter req2, Scheduler *obj) -> ReqIter { -+ bool ready1 = obj->ctrl->is_ready(req1); -+ bool ready2 = obj->ctrl->is_ready(req2); -+ -+ if (ready1 ^ ready2) { -+ if (ready1) return req1; -+ return req2; -+ } -+ -+ if (req1->arrive <= req2->arrive) return req1; -+ return req2;}, _1, _2, std::move(this)); -+ -+ // FRFCFS_CAP -+ compare[2] = std::bind([] (ReqIter req1, ReqIter req2, Scheduler *obj) -> ReqIter { -+ bool ready1 = obj->ctrl->is_ready(req1); -+ bool ready2 = obj->ctrl->is_ready(req2); -+ -+ ready1 = ready1 && (obj->ctrl->rowtable->get_hits(req1->addr_vec) <= obj->cap); -+ ready2 = ready2 && (obj->ctrl->rowtable->get_hits(req2->addr_vec) <= obj->cap); -+ -+ if (ready1 ^ ready2) { -+ if (ready1) return req1; -+ return req2; -+ } -+ -+ if (req1->arrive <= req2->arrive) return req1; -+ return req2;}, _1, _2, this); -+ -+ // FRFCFS_PriorHit -+ compare[3] = std::bind([] (ReqIter req1, ReqIter req2, Scheduler *obj) -> ReqIter { -+ bool ready1 = obj->ctrl->is_ready(req1) && obj->ctrl->is_row_hit(req1); -+ bool ready2 = obj->ctrl->is_ready(req2) && obj->ctrl->is_row_hit(req2); -+ -+ if (ready1 ^ ready2) { -+ if (ready1) return req1; -+ return req2; -+ } -+ -+ if (req1->arrive <= req2->arrive) return req1; -+ return req2;}, _1, _2, this); -+ } -+ -+ list::iterator get_head(list& q) - { - // TODO make the decision at compile time - if (type != Type::FRFCFS_PriorHit) { -@@ -106,55 +156,8 @@ public: - - private: - typedef list::iterator ReqIter; -- function compare[int(Type::MAX)] = { -- // FCFS -- [this] (ReqIter req1, ReqIter req2) { -- if (req1->arrive <= req2->arrive) return req1; -- return req2;}, -- -- // FRFCFS -- [this] (ReqIter req1, ReqIter req2) { -- bool ready1 = this->ctrl->is_ready(req1); -- bool ready2 = this->ctrl->is_ready(req2); -- -- if (ready1 ^ ready2) { -- if (ready1) return req1; -- return req2; -- } -- -- if (req1->arrive <= req2->arrive) return req1; -- return req2;}, -- -- // FRFCFS_CAP -- [this] (ReqIter req1, ReqIter req2) { -- bool ready1 = this->ctrl->is_ready(req1); -- bool ready2 = this->ctrl->is_ready(req2); -- -- ready1 = ready1 && (this->ctrl->rowtable->get_hits(req1->addr_vec) <= this->cap); -- ready2 = ready2 && (this->ctrl->rowtable->get_hits(req2->addr_vec) <= this->cap); -- -- if (ready1 ^ ready2) { -- if (ready1) return req1; -- return req2; -- } -- -- if (req1->arrive <= req2->arrive) return req1; -- return req2;}, -- // FRFCFS_PriorHit -- [this] (ReqIter req1, ReqIter req2) { -- bool ready1 = this->ctrl->is_ready(req1) && this->ctrl->is_row_hit(req1); -- bool ready2 = this->ctrl->is_ready(req2) && this->ctrl->is_row_hit(req2); -- -- if (ready1 ^ ready2) { -- if (ready1) return req1; -- return req2; -- } -- -- if (req1->arrive <= req2->arrive) return req1; -- return req2;} -- }; --}; -- -+ function compare[int(Type::MAX)]; -+ }; - - template - class RowPolicy -@@ -168,50 +171,52 @@ public: - - int timeout = 50; - -- RowPolicy(Controller* ctrl) : ctrl(ctrl) {} -- -- vector get_victim(typename T::Command cmd) -- { -- return policy[int(type)](cmd); -- } -- --private: -- function(typename T::Command)> policy[int(Type::MAX)] = { -- // Closed -- [this] (typename T::Command cmd) -> vector { -- for (auto& kv : this->ctrl->rowtable->table) { -- if (!this->ctrl->is_ready(cmd, kv.first)) -+ RowPolicy(Controller* _ctrl) : ctrl(_ctrl) { -+ // Closed -+ policy[0] = std::bind([] (typename T::Command cmd, RowPolicy *obj) -> vector { -+ for (auto& kv : obj->ctrl->rowtable->table) { -+ if (!obj->ctrl->is_ready(cmd, kv.first)) - continue; - return kv.first; - } -- return vector();}, -+ return vector();}, _1, this); - - // ClosedAP -- [this] (typename T::Command cmd) -> vector { -- for (auto& kv : this->ctrl->rowtable->table) { -- if (!this->ctrl->is_ready(cmd, kv.first)) -- continue; -- return kv.first; -- } -- return vector();}, -+ policy[1] = std::bind([] (typename T::Command cmd, RowPolicy *obj) -> vector { -+ for (auto& kv : obj->ctrl->rowtable->table) { -+ if (!obj->ctrl->is_ready(cmd, kv.first)) -+ continue; -+ return kv.first; -+ } -+ return vector();}, _1, this); - - // Opened -- [this] (typename T::Command cmd) { -- return vector();}, -- -- // Timeout -- [this] (typename T::Command cmd) -> vector { -- for (auto& kv : this->ctrl->rowtable->table) { -- auto& entry = kv.second; -- if (this->ctrl->clk - entry.timestamp < timeout) -- continue; -- if (!this->ctrl->is_ready(cmd, kv.first)) -- continue; -- return kv.first; -- } -- return vector();} -- }; -+ policy[2] = std::bind([] (typename T::Command cmd, RowPolicy *obj) -> vector { -+ return vector();}, _1, this); -+ -+ // Timeout -+ policy[3] = std::bind([] (typename T::Command cmd, RowPolicy *obj) -> vector { -+ for (auto& kv : obj->ctrl->rowtable->table) { -+ auto& entry = kv.second; -+ if (obj->ctrl->clk - entry.timestamp < obj->timeout) -+ continue; -+ if (!obj->ctrl->is_ready(cmd, kv.first)) -+ continue; -+ return kv.first; -+ } -+ return vector();}, _1, this); - -+ -+ -+ } -+ -+ vector get_victim(typename T::Command cmd) -+ { -+ return policy[int(type)](cmd); -+ } -+ -+private: -+ function(typename T::Command)> policy[int(Type::MAX)]; - }; - - -@@ -304,7 +309,8 @@ public: - - return itr->second.row; - } --}; -+ }; -+ - - } /*namespace ramulator*/ - diff --git a/sst/packages/ramulator/ramulator_sha_7d2e723_libPatch.patch b/sst/packages/ramulator/ramulator_sha_7d2e723_libPatch.patch deleted file mode 100644 index 20225bb..0000000 --- a/sst/packages/ramulator/ramulator_sha_7d2e723_libPatch.patch +++ /dev/null @@ -1,23 +0,0 @@ -diff --git a/Makefile b/Makefile -index ea340c8..314113d 100644 ---- a/Makefile -+++ b/Makefile -@@ -9,7 +9,7 @@ OBJS := $(patsubst $(SRCDIR)/%.cpp, $(OBJDIR)/%.o, $(SRCS)) - # g++ 4.x due to an internal compiler error when processing lambda functions. - CXX := clang++ - # CXX := g++-5 --CXXFLAGS := -O3 -std=c++11 -g -Wall -+CXXFLAGS := -O3 -std=c++11 -g -Wall -fpic - - .PHONY: all clean depend - -@@ -38,6 +38,9 @@ ramulator: $(MAIN) $(OBJS) $(SRCDIR)/*.h | depend - libramulator.a: $(OBJS) $(OBJDIR)/Gem5Wrapper.o - libtool -static -o $@ $(OBJS) $(OBJDIR)/Gem5Wrapper.o - -+libramulator.so: $(OBJS) $(OBJDIR)/Gem5Wrapper.o -+ $(CXX) -shared -o $@ $(OBJS) $(OBJDIR)/Gem5Wrapper.o -+ - $(OBJS): | $(OBJDIR) - - $(OBJDIR): diff --git a/sst/packages/sst-core/package.py b/sst/packages/sst-core/package.py deleted file mode 100644 index 4c6dbff..0000000 --- a/sst/packages/sst-core/package.py +++ /dev/null @@ -1,77 +0,0 @@ -# Copyright 2013-2020 Lawrence Livermore National Security, LLC and other -# Spack Project Developers. See the top-level COPYRIGHT file for details. -# -# SPDX-License-Identifier: (Apache-2.0 OR MIT) - -from spack import * - - -class SstCore(AutotoolsPackage): - """The Structural Simulation Toolkit (SST) core - provides a parallel discrete event simulation (PDES) - framework for performing architecture simulations - of existing and proposed HPC systems""" - - homepage = "https://github.com/sstsimulator" - git = "https://github.com/sstsimulator/sst-core.git" - url = "https://github.com/sstsimulator/sst-core/releases/download/v10.0.0_Final/sstcore-10.0.0.tar.gz" - - maintainers = ['jjwilke'] - - version('10.0.0', sha256="64cf93a46dfab011fba49244bf0e0efe25ef928c6fbde1d49003220d0eb7735a") - version('9.1.0', sha256="cfeda39bb2ce9f32032480427517df62e852c0b3713797255e3b838075f3614d") - version('develop', branch='devel') - version('master', branch='master') - - variant("pdes_mpi", default=True, - description="Build support for parallel discrete event simulation") - variant("zoltan", default=False, - description="Use Zoltan for partitioning parallel runs") - variant("hdf5", default=False, - description="Build support for HDF5 statistic output") - variant("zlib", default=False, - description="Build support for ZLIB compression") - variant("preview", default=False, - description="Preview build with deprecated features removed") - - depends_on("python", type=('build', 'run')) - depends_on("mpi", when="+pdes_mpi") - depends_on("zoltan", when="+zoltan") - depends_on("hdf5", when="+hdf5") - depends_on("zlib", when="+zlib") - - depends_on('autoconf@1.68:', type='build', when='@master:') - depends_on('automake@1.11.1:', type='build', when='@master:') - depends_on('libtool@1.2.4:', type='build', when='@master:') - depends_on('m4', type='build', when='@master:') - - # force out-of-source builds - build_directory = 'spack-build' - - def autoreconf(self, spec, prefix): - bash = which('bash') - bash('autogen.sh') - - def configure_args(self): - args = [] - if "+zoltan" in self.spec: - args.append("--with-zoltan=%s" % self.spec["zoltan"].prefix) - if "+hdf5" in self.spec: - args.append("--with-hdf5=%s" % self.spec["hdf5"].prefix) - if "+zlib" in self.spec: - args.append("--with-zlib=%s" % self.spec["zlib"].prefix) - - if "+pdes_mpi" in self.spec: - args.append("--enable-mpi") - env['CC'] = self.spec['mpi'].mpicc - env['CXX'] = self.spec['mpi'].mpicxx - env['F77'] = self.spec['mpi'].mpif77 - env['FC'] = self.spec['mpi'].mpifc - else: - args.append("--disable-mpi") - - if "+preview" in self.spec: - args.append("--enable-preview-build") - - args.append("--with-python=%s" % self.spec["python"].prefix) - return args diff --git a/sst/packages/sst-elements/package.py b/sst/packages/sst-elements/package.py deleted file mode 100644 index 89af493..0000000 --- a/sst/packages/sst-elements/package.py +++ /dev/null @@ -1,101 +0,0 @@ -# Copyright 2013-2020 Lawrence Livermore National Security, LLC and other -# Spack Project Developers. See the top-level COPYRIGHT file for details. -# -# SPDX-License-Identifier: (Apache-2.0 OR MIT) - -from spack import * - - -class SstElements(AutotoolsPackage): - """SST Elements implements a range of components for performing - architecture simulation from node-level to system-level using - the SST discrete event core - """ - - homepage = "https://github.com/sstsimulator" - git = "https://github.com/sstsimulator/sst-elements.git" - url = "https://github.com/sstsimulator/sst-elements/releases/download/v10.0.0_Final/sstelements-10.0.0.tar.gz" - - maintainers = ['jjwilke'] - - version('10.0.0', sha256="ecf28ef97b27ea75be7e64cb0acb99d36773a888c1b32ba16034c62174b02693") - version('9.1.0', sha256="e19b05aa6e59728995fc059840c79e476ba866b67887ccde7eaf52a18a1f52ca") - - version('develop', branch='devel') - version('master', branch='master') - - variant("pin", default=False, - description="Enable the Ariel CPU model") - variant("dramsim2", default=False, - description="Build with DRAMSim2 support") - variant("nvdimmsim", default=False, - description="Build with NVDimmSim support") - variant("hybridsim", default=False, - description="Build with HybridSim support") - variant("goblin", default=False, - description="Build with GoblinHMCSim support") - variant("hbm", default=False, - description="Build with HBM DRAMSim2 support") - variant("ramulator", default=False, - description="Build with Ramulator support") - - depends_on("python", type=('build', 'run')) - depends_on("sst-core") - depends_on("sst-core@develop", when="@develop") - depends_on("sst-core@master", when="@master") - - depends_on("intel-pin@2.14", when="+pin") - depends_on("dramsim2@2.2", when="+dramsim2") - depends_on("hybridsim@2.0.1", when="+hybridsim") - depends_on("nvdimmsim@2.0.0", when="+nvdimmsim") - depends_on("goblin-hmc-sim", when="+goblin") - depends_on("ramulator@sst", when="+ramulator") - depends_on("hbm-dramsim2", when="+hbm") - depends_on("dramsim2@2.2.2", when="+hybridsim") - depends_on("nvdimmsim@2.0.0", when="+hybridsim") - - depends_on('autoconf@1.68:', type='build', when='@master:') - depends_on('automake@1.11.1:', type='build', when='@master:') - depends_on('libtool@1.2.4:', type='build', when='@master:') - depends_on('m4', type='build', when='@master:') - - # force out-of-source builds - build_directory = 'spack-build' - - def autoreconf(self, spec, prefix): - bash = which('bash') - bash('autogen.sh') - - def configure_args(self): - args = [] - if '+pdes_mpi' in self.spec["sst-core"]: - env['CC'] = self.spec['mpi'].mpicc - env['CXX'] = self.spec['mpi'].mpicxx - env['F77'] = self.spec['mpi'].mpif77 - env['FC'] = self.spec['mpi'].mpifc - - if "+pin" in self.spec: - args.append("--with-pin=%s" % self.spec["intel-pin"].prefix) - - if "+dramsim2" in self.spec or "+hybridsim" in self.spec: - args.append("--with-dramsim=%s" % self.spec["dramsim2"].prefix) - - if "+nvdimmsim" in self.spec or "+hybridsim" in self.spec: - args.append("--with-nvdimmsim=%s" % self.spec["nvdimmsim"].prefix) - - if "+hybridsim" in self.spec: - args.append("--with-hybridsim=%s" % self.spec["hybridsim"].prefix) - - if "+goblin" in self.spec: - args.append("--with-goblin-hmcsim=%s" % - self.spec["goblin-hmc-sim"].prefix) - - if "+hbm" in self.spec: - args.append("--with-hbmdramsim=%s" % - self.spec["hbm-dramsim2"].prefix) - - if "+ramulator" in self.spec: - args.append("--with-ramulator=%s" % self.spec["ramulator"].prefix) - - args.append("--with-sst-core=%s" % self.spec["sst-core"].prefix) - return args diff --git a/sst/packages/sst-macro/package.py b/sst/packages/sst-macro/package.py deleted file mode 100644 index 6a04e44..0000000 --- a/sst/packages/sst-macro/package.py +++ /dev/null @@ -1,106 +0,0 @@ -# Copyright 2013-2020 Lawrence Livermore National Security, LLC and other -# Spack Project Developers. See the top-level COPYRIGHT file for details. -# -# SPDX-License-Identifier: (Apache-2.0 OR MIT) - -from spack import * - - -class SstMacro(AutotoolsPackage): - """The Structural Simulation Toolkit Macroscale Element Library simulates - large-scale parallel computer architectures for the coarse-grained study - of distributed-memory applications. The simulator is driven from either a - trace file or skeleton application. SST/macro's modular architecture can - be extended with additional network models, trace file formats, software - services, and processor models. - """ - - homepage = "http://sst.sandia.gov/about_sstmacro.html" - git = "https://github.com/sstsimulator/sst-macro.git" - url = "https://github.com/sstsimulator/sst-macro/releases/download/v10.0.0_Final/sstmacro-10.0.0.tar.gz" - - maintainers = ['jjwilke'] - - version('10.0.0', sha256='064b732256f3bec9b553e00bcbc9a1d82172ec194f2b69c8797f585200b12566') - version('master', branch='master') - version('develop', branch='devel') - - depends_on('autoconf@1.68:', type='build', when='@master:') - depends_on('automake@1.11.1:', type='build', when='@master:') - depends_on('libtool@1.2.4:', type='build', when='@master:') - depends_on('m4', type='build', when='@master:') - - depends_on('binutils', type='build') - depends_on('zlib', type=('build', 'link')) - depends_on('otf2', when='+otf2') - depends_on('llvm+clang@5:9', when='+skeletonizer') - depends_on('mpi', when='+pdes_mpi') - depends_on('sst-core@develop', when='@develop+core') - depends_on('sst-core@master', when='@master+core') - - variant('pdes_threads', default=True, - description='Enable thread-parallel PDES simulation') - variant('pdes_mpi', default=False, - description='Enable distributed PDES simulation') - variant('core', default=False, description='Use SST Core for PDES') - variant('otf2', default=False, - description='Enable OTF2 trace emission and replay support') - variant('skeletonizer', default=False, - description='Enable Clang source-to-source autoskeletonization') - - variant('static', default=True, description='Build static libraries') - variant('shared', default=True, description='Build shared libraries') - - variant('werror', default=False, - description='Build with all warnings as errors') - variant('warnings', default=False, - description='Build with all possible warnings') - - # force out-of-source builds - build_directory = 'spack-build' - - def autoreconf(self, spec, prefix): - bash = which('bash') - bash('./bootstrap.sh') - - def configure_args(self): - args = ['--disable-regex'] - - spec = self.spec - args.append( - '--enable-static=%s' % ('yes' if '+static' in spec else 'no')) - args.append( - '--enable-shared=%s' % ('yes' if '+shared' in spec else 'no')) - - if spec.satisfies("@8.0.0:"): - args.extend([ - '--%sable-otf2' % - ('en' if '+otf2' in spec else 'dis'), - '--%sable-multithread' % - ('en' if '+pdes_threads' in spec else 'dis') - ]) - - if '+skeletonizer' in spec: - args.append('--with-clang=' + spec['llvm'].prefix) - - if spec.satisfies("@10:"): - if "+warnings" in spec: - args.append("--with-warnings") - if "+werror" in spec: - args.append("--with-werror") - - if '+core' in spec: - args.append('--with-sst-core=%s' % spec['sst-core'].prefix) - - # Optional MPI support - need_core_mpi = False - if "+core" in spec: - if "+pdes_mpi" in spec["sst-core"]: - need_core_mpi = True - if '+pdes_mpi' in spec or need_core_mpi: - env['CC'] = spec['mpi'].mpicc - env['CXX'] = spec['mpi'].mpicxx - env['F77'] = spec['mpi'].mpif77 - env['FC'] = spec['mpi'].mpifc - - return args diff --git a/sst/packages/sst-transports/package.py b/sst/packages/sst-transports/package.py deleted file mode 100644 index 39a6e99..0000000 --- a/sst/packages/sst-transports/package.py +++ /dev/null @@ -1,25 +0,0 @@ -# Copyright 2013-2020 Lawrence Livermore National Security, LLC and other -# Spack Project Developers. See the top-level COPYRIGHT file for details. -# -# SPDX-License-Identifier: (Apache-2.0 OR MIT) - -from spack import * - - -class SstTransports(CMakePackage): - """Provides transports like uGNI and verbs - that run in the simulator""" - - homepage = "https://github.com/sstsimulator" - git = "https://github.com/jjwilke/sst-transports.git" - - maintainers = ['jjwilke'] - - version('master', branch='master') - - depends_on("sst-macro") - - def cmake_args(self): - args = [] - args.append("-DSSTMacro_ROOT=%s" % self.spec["sst-macro"].prefix) - return args