summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsknigh <sknigh@sandia.gov>2021-07-29 11:48:41 -0700
committerGitHub <noreply@github.com>2021-07-29 11:48:41 -0700
commit095f327f323c4a419ae19faa38fe336ce07763f1 (patch)
treecfb76a39beb5377be954488be6d4421d7bd17f94
parenta90441827087a79dd85721b5c3e4443c2ccba97a (diff)
downloadspack-095f327f323c4a419ae19faa38fe336ce07763f1.tar.gz
spack-095f327f323c4a419ae19faa38fe336ce07763f1.tar.bz2
spack-095f327f323c4a419ae19faa38fe336ce07763f1.tar.xz
spack-095f327f323c4a419ae19faa38fe336ce07763f1.zip
Update sst-elements and dependency packages (#25041)
* sst-elements: add optional support for flashdimmsim, dramsim3 and add new packages for each * sst-dumpi: add version 7.1.0 * sst-core: autotools dependencies are required for all versions * new package: dtc * add error message redirect for +dumpi, otf, and otf2: these are not currently supported
-rw-r--r--var/spack/repos/builtin/packages/dramsim3/package.py41
-rw-r--r--var/spack/repos/builtin/packages/dtc/package.py32
-rw-r--r--var/spack/repos/builtin/packages/flashdimmsim/package.py30
-rw-r--r--var/spack/repos/builtin/packages/sst-core/package.py8
-rw-r--r--var/spack/repos/builtin/packages/sst-dumpi/package.py3
-rw-r--r--var/spack/repos/builtin/packages/sst-elements/package.py114
6 files changed, 190 insertions, 38 deletions
diff --git a/var/spack/repos/builtin/packages/dramsim3/package.py b/var/spack/repos/builtin/packages/dramsim3/package.py
new file mode 100644
index 0000000000..ee784871d0
--- /dev/null
+++ b/var/spack/repos/builtin/packages/dramsim3/package.py
@@ -0,0 +1,41 @@
+# Copyright 2013-2021 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 *
+
+
+# Uses Cmake but does not follow a sane convention
+class Dramsim3(Package):
+ """DRAMsim3 models the timing paramaters and memory controller behavior
+ for several DRAM protocols such as DDR3, DDR4, LPDDR3, LPDDR4, GDDR5,
+ GDDR6, HBM, HMC, STT-MRAM. It is implemented in C++ as an objected
+ oriented model that includes a parameterized DRAM bank model, DRAM
+ controllers, command queues and system-level interfaces to interact with
+ a CPU simulator (GEM5, ZSim) or trace workloads. It is designed to be
+ accurate, portable and parallel."""
+
+ homepage = "https://github.com/umd-memsys/DRAMsim3"
+ url = "https://github.com/umd-memsys/DRAMsim3/archive/refs/tags/1.0.0.tar.gz"
+ git = "https://github.com/umd-memsys/DRAMsim3.git"
+
+ version('master', branch='master')
+
+ version('1.0.0', sha256='064b732256f3bec9b553e00bcbc9a1d82172ec194f2b69c8797f585200b12566')
+
+ depends_on('cmake', type='build')
+
+ def install(self, spec, prefix):
+ cmake = which('cmake')
+ cmake('.')
+
+ make()
+
+ include_path = prefix + '/include'
+ mkdir(prefix.bin)
+ mkdir(prefix.lib)
+ mkdir(include_path)
+
+ install('dramsim3main', prefix.bin)
+ install('libdramsim3.so', prefix.lib)
+ install('src/*.h', include_path)
diff --git a/var/spack/repos/builtin/packages/dtc/package.py b/var/spack/repos/builtin/packages/dtc/package.py
new file mode 100644
index 0000000000..96e00fcc52
--- /dev/null
+++ b/var/spack/repos/builtin/packages/dtc/package.py
@@ -0,0 +1,32 @@
+# Copyright 2013-2021 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 Dtc(MakefilePackage):
+ """Device Tree Compiler (dtc) toolchain for working with device tree
+ source and binary files and also libfdt, a utility library for reading
+ and manipulating the binary format."""
+
+ homepage = "https://github.com/dgibson/dtc"
+ url = "https://github.com/dgibson/dtc/archive/refs/tags/v1.6.1.tar.gz"
+
+ version('1.6.1', sha256='6401c9a0f577a270df4632bf0f3e5454ccc7a5ca3caefa67a3e1c29c9c6b8c60')
+
+ depends_on('bison', type='build')
+ # Build error with flex 2.6.3
+ # (convert-dtsv0-lexer.lex.c:398: error: "yywrap" redefined)
+ depends_on('flex@2.6.4:', type='build')
+ depends_on('libyaml', type='build')
+ depends_on('pkg-config', type='build')
+ depends_on('python', type='build')
+
+ def edit(self, spec, prefix):
+ makefile = FileFilter('Makefile')
+ makefile.filter(
+ 'PREFIX =.*',
+ 'PREFIX = %s' % prefix
+ )
diff --git a/var/spack/repos/builtin/packages/flashdimmsim/package.py b/var/spack/repos/builtin/packages/flashdimmsim/package.py
new file mode 100644
index 0000000000..49f8a3563a
--- /dev/null
+++ b/var/spack/repos/builtin/packages/flashdimmsim/package.py
@@ -0,0 +1,30 @@
+# Copyright 2013-2021 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 Flashdimmsim(Package):
+ """FlashDIMMSim: a reasonably accurate flash DIMM simulator."""
+ homepage = "https://github.com/slunk/FlashDIMMSim"
+ git = "https://github.com/slunk/FlashDIMMSim.git"
+
+ version('master', branch='master')
+
+ build_directory = 'src'
+
+ def install(self, spec, prefix):
+ with working_dir(self.build_directory):
+ make() # build program
+ make('libfdsim.so') # build shared library
+
+ mkdir(prefix.bin)
+ mkdir(prefix.lib)
+ mkdir(prefix.include)
+
+ install_tree('ini', join_path(prefix, 'ini'))
+ install('FDSim', prefix.bin)
+ install('libfdsim.so', prefix.lib)
+ install('*.h', prefix.include)
diff --git a/var/spack/repos/builtin/packages/sst-core/package.py b/var/spack/repos/builtin/packages/sst-core/package.py
index d5ac62639a..09d7dce40d 100644
--- a/var/spack/repos/builtin/packages/sst-core/package.py
+++ b/var/spack/repos/builtin/packages/sst-core/package.py
@@ -16,7 +16,7 @@ class SstCore(AutotoolsPackage):
git = "https://github.com/sstsimulator/sst-core.git"
url = "https://github.com/sstsimulator/sst-core/releases/download/v11.0.0_Final/sstcore-11.0.0.tar.gz"
- maintainers = ['jjwilke']
+ maintainers = ['sknigh']
version('11.0.0', sha256="25d17c35d1121330ad74375b6d27fe5c5592d1add3edf0bbb356aa3b5f59f401")
version('10.1.0', sha256="e464213a81c7b3ccec994fdba2b56992b52fb9a6db089ef7c3445b54306d4b87")
@@ -42,9 +42,9 @@ class SstCore(AutotoolsPackage):
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('autoconf@1.68:', type='build')
+ depends_on('automake@1.11.1:', type='build')
+ depends_on('libtool@1.2.4:', type='build')
depends_on('m4', type='build', when='@master:')
depends_on('gettext')
diff --git a/var/spack/repos/builtin/packages/sst-dumpi/package.py b/var/spack/repos/builtin/packages/sst-dumpi/package.py
index d17717725e..bc62971190 100644
--- a/var/spack/repos/builtin/packages/sst-dumpi/package.py
+++ b/var/spack/repos/builtin/packages/sst-dumpi/package.py
@@ -22,7 +22,10 @@ class SstDumpi(AutotoolsPackage):
url = "https://github.com/sstsimulator/sst-dumpi/archive/6.1.0.tar.gz"
git = "https://github.com/sstsimulator/sst-dumpi.git"
+ maintainers = ['sknigh', 'jpkenny', 'calewis']
+
version('master', branch='master')
+ version('7.1.0', sha256='628eb3f7c2d0975461d45065f91c723d3abac756fa36af93c09f4fed195794bf')
version('6.1.0', sha256='d4f6afcff5ba67fcc3a29f461afbb59855053840f5f320552a77b4e14c687bb6')
depends_on('autoconf@1.68:', type='build')
diff --git a/var/spack/repos/builtin/packages/sst-elements/package.py b/var/spack/repos/builtin/packages/sst-elements/package.py
index 9a61a8c653..ac37716488 100644
--- a/var/spack/repos/builtin/packages/sst-elements/package.py
+++ b/var/spack/repos/builtin/packages/sst-elements/package.py
@@ -9,14 +9,14 @@ 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
+ 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/v11.0.0_Final/sstelements-11.0.0.tar.gz"
- maintainers = ['jjwilke']
+ maintainers = ['sknigh']
version('11.0.0', sha256="bf265cb25afc041b74422cc5cddc8e3ae1e7c3efa3e37e699dac4e3f7629be6e")
version('10.1.0', sha256="a790561449795dac48a84c525b8e0b09f05d0b0bff1a0da1aa2e903279a03c4a")
@@ -26,20 +26,36 @@ class SstElements(AutotoolsPackage):
version('develop', branch='devel')
version('master', branch='master')
- variant("pin", default=False,
+ # Contact SST developers (http://github.com/sstsimulator)
+ # if your use case requires support for:
+ # - balar
+ # - OTF2
+ # - stake (riscv simulator)
+
+ variant("pin", default=False,
description="Enable the Ariel CPU model")
- variant("dramsim2", default=False,
+ variant("dramsim2", default=False,
description="Build with DRAMSim2 support")
- variant("nvdimmsim", default=False,
+ variant("dramsim3", default=False,
+ description="Build with DRAMSim3 support")
+ variant("dumpi", default=False,
+ description="Build with Dumpi support")
+ variant("flashdimmsim", default=False,
+ description="Build with FlashDIMMSim support")
+ variant("nvdimmsim", default=False,
description="Build with NVDimmSim support")
- variant("hybridsim", default=False,
+ variant("hybridsim", default=False,
description="Build with HybridSim support")
- variant("goblin", default=False,
+ variant("goblin", default=False,
description="Build with GoblinHMCSim support")
- variant("hbm", default=False,
+ variant("hbm", default=False,
description="Build with HBM DRAMSim2 support")
- variant("ramulator", default=False,
+ variant("ramulator", default=False,
description="Build with Ramulator support")
+ variant("otf", default=False,
+ description="Build with OTF")
+ variant("otf2", default=False,
+ description="Build with OTF2")
depends_on("python", type=('build', 'run'))
depends_on("sst-core")
@@ -48,18 +64,31 @@ class SstElements(AutotoolsPackage):
depends_on("intel-pin", when="+pin")
depends_on("dramsim2@2:", when="+dramsim2")
+ depends_on("dramsim3@master", when="+dramsim3")
+ depends_on("sst-dumpi@master", when="+dumpi")
+ depends_on("flashdimmsim", when="+flashdimmsim")
depends_on("hybridsim@2.0.1", when="+hybridsim")
+ depends_on("dramsim3@master", when="+hybridsim")
+ depends_on("nvdimmsim@2.0.0", 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("nvdimmsim@2.0.0", when="+hybridsim")
+ depends_on("otf", when="+otf")
+ depends_on("otf2", when="+otf2")
depends_on("gettext")
+ depends_on("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:')
+ depends_on('autoconf@1.68:', type='build')
+ depends_on('automake@1.11.1:', type='build')
+ depends_on('libtool@1.2.4:', type='build')
+ depends_on('m4', type='build')
+
+ conflicts('+dumpi', msg='Dumpi not currently supported, contact SST Developers for help')
+ conflicts('+otf', msg='OTF not currently supported, contact SST Developers for help')
+ conflicts('+otf2', msg='OTF2 not currently supported, contact SST Developers for help')
+ conflicts('~dramsim2', when='+hybridsim', msg='hybridsim requires dramsim2, spec should include +dramsim2')
+ conflicts('~nvdimmsim', when='+hybridsim', msg='hybridsim requires nvdimmsim, spec should include +nvdimmsim')
# force out-of-source builds
build_directory = 'spack-build'
@@ -69,35 +98,52 @@ class SstElements(AutotoolsPackage):
bash('autogen.sh')
def configure_args(self):
+ spec = self.spec
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 '+pdes_mpi' in spec["sst-core"]:
+ env['CC'] = spec['mpi'].mpicc
+ env['CXX'] = spec['mpi'].mpicxx
+ env['F77'] = spec['mpi'].mpif77
+ env['FC'] = spec['mpi'].mpifc
+
+ if "+pin" in spec:
+ args.append("--with-pin=%s" % spec["intel-pin"].prefix)
- if "+dramsim2" in self.spec or "+hybridsim" in self.spec:
- args.append("--with-dramsim=%s" % self.spec["dramsim2"].prefix)
+ if "+dramsim2" in spec or "+hybridsim" in spec:
+ args.append("--with-dramsim=%s" % spec["dramsim2"].prefix)
- if "+nvdimmsim" in self.spec or "+hybridsim" in self.spec:
- args.append("--with-nvdimmsim=%s" % self.spec["nvdimmsim"].prefix)
+ if "+dramsim3" in spec:
+ args.append("--with-dramsim3=%s" % spec["dramsim3"].prefix)
- if "+hybridsim" in self.spec:
- args.append("--with-hybridsim=%s" % self.spec["hybridsim"].prefix)
+ if "+dumpi" in spec:
+ args.append("--with-dumpi=%s" % spec["sst-dumpi"].prefix)
- if "+goblin" in self.spec:
+ if "+flashdimmsim" in spec:
+ args.append("--with-fdsim=%s" % spec["flashdimmsim"].prefix)
+
+ if "+nvdimmsim" in spec or "+hybridsim" in spec:
+ args.append("--with-nvdimmsim=%s" % spec["nvdimmsim"].prefix)
+
+ if "+hybridsim" in spec:
+ args.append("--with-hybridsim=%s" % spec["hybridsim"].prefix)
+
+ if "+goblin" in spec:
args.append("--with-goblin-hmcsim=%s" %
- self.spec["goblin-hmc-sim"].prefix)
+ spec["goblin-hmc-sim"].prefix)
- if "+hbm" in self.spec:
+ if "+hbm" in spec:
args.append("--with-hbmdramsim=%s" %
- self.spec["hbm-dramsim2"].prefix)
+ spec["hbm-dramsim2"].prefix)
+
+ if "+ramulator" in spec:
+ args.append("--with-ramulator=%s" % spec["ramulator"].prefix)
+
+ if "+otf2" in spec:
+ args.append("--with-otf2=%s" % spec["otf2"].prefix)
- if "+ramulator" in self.spec:
- args.append("--with-ramulator=%s" % self.spec["ramulator"].prefix)
+ if "+otf" in spec:
+ args.append("--with-otf=%s" % spec["otf"].prefix)
- args.append("--with-sst-core=%s" % self.spec["sst-core"].prefix)
+ args.append("--with-sst-core=%s" % spec["sst-core"].prefix)
return args