From ae6213b1930abe048c8a3043fec2f3bd29f68390 Mon Sep 17 00:00:00 2001 From: Jean Luca Bez Date: Wed, 9 Nov 2022 14:44:45 -0800 Subject: [PATCH 1/5] New package: py-darshan (#33430) * include py-darshan * include requested changes * fix required versions * fix style * fix style * Update package.py * Update var/spack/repos/builtin/packages/py-darshan/package.py Co-authored-by: Adam J. Stewart * Update package.py Co-authored-by: Adam J. Stewart --- .../builtin/packages/py-darshan/package.py | 45 +++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 var/spack/repos/builtin/packages/py-darshan/package.py diff --git a/var/spack/repos/builtin/packages/py-darshan/package.py b/var/spack/repos/builtin/packages/py-darshan/package.py new file mode 100644 index 00000000000..217145a7b6c --- /dev/null +++ b/var/spack/repos/builtin/packages/py-darshan/package.py @@ -0,0 +1,45 @@ +# Copyright 2013-2022 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.package import * + + +class PyDarshan(PythonPackage): + """Python utilities to interact with Darshan log records of HPC applications.""" + + homepage = "https://www.mcs.anl.gov/research/projects/darshan" + pypi = "darshan/darshan-3.4.0.1.tar.gz" + + maintainers = ["jeanbez", "shanedsnyder"] + + version("3.4.0.1", sha256="0142fc7c0b12a9e5c22358aa26cca7083d28af42aeea7dfcc5698c56b6aee6b7") + + depends_on("python@3.6:", type=("build", "run")) + depends_on("py-setuptools", type="build") + depends_on("py-importlib-resources", when="^python@3.6", type=("build", "run")) + depends_on("py-cffi", type=("build", "run")) + # NOTE: SciPy is an indirect dependency needed for interpolate usage in pandas + # It will be fixed in the next release + depends_on("py-scipy", type=("build", "run")) + depends_on("py-numpy@1.21:", type=("build", "run")) + depends_on("py-pandas", type=("build", "run")) + # NOTE: matplotlib should be pinned until next release, for details: + # https://github.com/darshan-hpc/darshan/issues/742 + depends_on("py-matplotlib@3.4", type=("build", "run")) + depends_on("py-seaborn", type=("build", "run")) + depends_on("py-mako", type=("build", "run")) + depends_on("py-pytest", type="test") + # NOTE: lxml is test-only indirect dependency via pandas + # It will become optional in the next release + depends_on("py-lxml", type=("test")) + + depends_on("darshan-util", type=("build", "run")) + + @run_after("install") + @on_package_attributes(run_tests=True) + def install_test(self): + with working_dir("./darshan/tests"): + pytest = which("pytest") + pytest() From 2a20520cc88c15fc3c2bf11a7a693b71c93234d3 Mon Sep 17 00:00:00 2001 From: Robert Underwood Date: Wed, 9 Nov 2022 18:22:58 -0500 Subject: [PATCH 2/5] updates and fixes for libpressio (#33789) * updates and fixes for libpressio * differentiate between standalone and build tests * add e4s tags Co-authored-by: Robert Underwood --- .../repos/builtin/packages/cusz/package.py | 4 ++ .../packages/libdistributed/package.py | 2 + .../packages/libpressio-tools/package.py | 1 + .../builtin/packages/libpressio/package.py | 58 ++++++++++++++++++- .../repos/builtin/packages/sz/package.py | 4 ++ .../repos/builtin/packages/sz3/package.py | 10 +++- 6 files changed, 77 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/cusz/package.py b/var/spack/repos/builtin/packages/cusz/package.py index 2c1e78b4b06..719eba300d2 100644 --- a/var/spack/repos/builtin/packages/cusz/package.py +++ b/var/spack/repos/builtin/packages/cusz/package.py @@ -14,6 +14,7 @@ class Cusz(CMakePackage, CudaPackage): url = "https://github.com/szcompressor/cuSZ/archive/refs/tags/v0.3.tar.gz" maintainers = ["jtian0", "dingwentao"] + tags = ["e4s"] conflicts("~cuda") conflicts("cuda_arch=none", when="+cuda") @@ -21,6 +22,9 @@ class Cusz(CMakePackage, CudaPackage): version("develop", branch="develop") version("0.3", sha256="0feb4f7fd64879fe147624dd5ad164adf3983f79b2e0383d35724f8d185dcb11") + # these version of Cuda provide the CUB headers, but not CUB cmake configuration that we use. + conflicts("cuda@11.0.2:11.2.2") + depends_on("cub", when="^ cuda@:10.2.89") def cmake_args(self): diff --git a/var/spack/repos/builtin/packages/libdistributed/package.py b/var/spack/repos/builtin/packages/libdistributed/package.py index 3d442b1c608..f1a035ecba8 100644 --- a/var/spack/repos/builtin/packages/libdistributed/package.py +++ b/var/spack/repos/builtin/packages/libdistributed/package.py @@ -17,6 +17,8 @@ class Libdistributed(CMakePackage): maintainers = ["robertu94"] version("master", branch="master") + version("0.4.2", sha256="ffb5e0aea2cd5ccbd7af2471059d6e70fa5ac2d6ce64fb71c6d434544c01be95") + version("0.4.1", sha256="62bbd4cbaf396cea7f33d62d5e79086a56ee1396d070ad3c4fd9720c50d242c0") version("0.4.0", sha256="7895d268c4f9b5444e4378f60b5a28198720bc48633d0e5d072c39e3366b096c") version("0.3.0", sha256="57443c72a5a9aa57d7f8760c878a77dcffca0b3b5ccf5124cdf5c1fad8a44ae8") version("0.2.0", sha256="4540136d39f98a21c59a7e127cb0568266747bfff886edf0f0007be4959a09a3") diff --git a/var/spack/repos/builtin/packages/libpressio-tools/package.py b/var/spack/repos/builtin/packages/libpressio-tools/package.py index bda9019fd48..1ead8323814 100644 --- a/var/spack/repos/builtin/packages/libpressio-tools/package.py +++ b/var/spack/repos/builtin/packages/libpressio-tools/package.py @@ -14,6 +14,7 @@ class LibpressioTools(CMakePackage): git = "https://github.com/robertu94/pressio-tools" maintainers = ["robertu94"] + tags = ["e4s"] version("master", branch="master") version("0.1.6", sha256="a67a364f46dea29ff1b3e5c52c0a5abf2d9d53412fb8d424f6bd71252bfa7792") diff --git a/var/spack/repos/builtin/packages/libpressio/package.py b/var/spack/repos/builtin/packages/libpressio/package.py index 2a8a8521ba9..b56e565c8b2 100644 --- a/var/spack/repos/builtin/packages/libpressio/package.py +++ b/var/spack/repos/builtin/packages/libpressio/package.py @@ -14,8 +14,15 @@ class Libpressio(CMakePackage, CudaPackage): url = "https://github.com/robertu94/libpressio/archive/0.31.1.tar.gz" git = "https://github.com/robertu94/libpressio" + tags = ["e4s"] + maintainers = ["robertu94"] + + tests_require_compiler = True version("master", branch="master") version("develop", branch="develop") + version("0.88.3", sha256="b2df2ed11f77eb2e07206f7bdfa4754017559017235c3324820021ef451fd48b") + version("0.88.2", sha256="f5de6aff5ff906b164d6b2199ada10a8e32fb1e2a6295da3f0b79d9626661a46") + version("0.88.1", sha256="d7fe73a6b2d8de6d19c85e87888dcf1a62956f56b4e6dfd23e26901740031e00") version("0.88.0", sha256="4358441f0d10559d571327162a216617d16d09569a80e13ad286e3b7c41c5b9b") version("0.87.0", sha256="2bea685e5ed3a1528ea68ba4a281902ff77c0bebd38ff212b6e8edbfa263b572") version("0.86.7", sha256="2a6319640a018c39aa93aaf0f027fd496d7ea7dc5ac95509313cf1b4b6b1fb00") @@ -178,10 +185,17 @@ class Libpressio(CMakePackage, CudaPackage): variant("mgardx", default=False, description="build support for the MGARDx compressor") variant("bzip2", default=False, description="build support for the bzip2 compressor") variant("qoz", default=False, description="build support for the qoz compressor") + variant("core", default=True, description="build core builtin libraries") variant( "cusz", default=False, description="build support for the cusz compressor", when="@0.86.0:" ) + # cufile was only added to the .run file installer for cuda in 11.7.1 + # dispite being in the APT/RPM packages for much longer + # a external install the cufile libraries could use an earlier version + # which provides these libraries + depends_on("cuda@11.7.1:", when="+cuda") + depends_on("boost", when="@:0.51.0+boost") depends_on("libstdcompat+boost", when="+boost") @@ -197,6 +211,10 @@ class Libpressio(CMakePackage, CudaPackage): depends_on("c-blosc", when="+blosc") depends_on("fpzip", when="+fpzip") depends_on("hdf5", when="+hdf5") + # this might seem excessive, but if HDF5 is external and parallel + # we might not get the MPI compiler flags we need, so depend on this + # explicitly + depends_on("mpi@2:", when="+hdf5 ^hdf5+mpi") depends_on("imagemagick", when="+magick") depends_on("mgard", when="+mgard") depends_on("python@3:", when="+python", type=("build", "link", "run")) @@ -313,15 +331,23 @@ def cmake_args(self): args.append("-DLIBPRESSIO_HAS_QoZ=ON") if "+cusz" in self.spec: args.append("-DLIBPRESSIO_HAS_CUSZ=ON") + if "+core" in self.spec: + args.append("-DLIBPRESSIO_BUILD_MODE=FULL") + else: + args.append("-DLIBPRESSIO_BUILD_MODE=CORE") if self.run_tests: args.append("-DBUILD_TESTING=ON") else: args.append("-DBUILD_TESTING=OFF") return args + def setup_run_environment(self, env): + if "+hdf5" in self.spec and "+json" in self.spec: + env.prepend_path("HDF5_PLUGIN_PATH", self.prefix.lib64) + @run_after("build") @on_package_attributes(run_tests=True) - def test(self): + def build_test(self): make("test") @run_after("build") @@ -329,3 +355,33 @@ def install_docs(self): if "+docs" in self.spec: with working_dir(self.build_directory): make("docs") + + @run_after("install") + def copy_test_sources(self): + if self.version < Version("0.88.3"): + return + srcs = [ + join_path("test", "smoke_test", "smoke_test.cc"), + join_path("test", "smoke_test", "CMakeLists.txt"), + ] + self.cache_extra_test_sources(srcs) + + def test(self): + if self.version < Version("0.88.3"): + return + + args = self.cmake_args() + args.append( + "-S{}".format(join_path(self.test_suite.current_test_cache_dir, "test", "smoke_test")) + ) + args.append( + "-DCMAKE_PREFIX_PATH={};{}".format(self.spec["libstdcompat"].prefix, self.prefix) + ) + + self.run_test("cmake", args, purpose="cmake configuration works") + + # this works for cmake@3.14: which is required for this package + args = ["--build", "."] + self.run_test("cmake", args, purpose="cmake builds works") + + self.run_test("./pressio_smoke_tests", expected="all passed") diff --git a/var/spack/repos/builtin/packages/sz/package.py b/var/spack/repos/builtin/packages/sz/package.py index d83e0a52d50..313dc2ae5fd 100644 --- a/var/spack/repos/builtin/packages/sz/package.py +++ b/var/spack/repos/builtin/packages/sz/package.py @@ -78,6 +78,10 @@ class Sz(CMakePackage, AutotoolsPackage): patch("ctags-only-if-requested.patch", when="@2.1.8.1:2.1.8.3") + def setup_run_environment(self, env): + if "+hdf5" in self.spec: + env.prepend_path("HDF5_PLUGIN_PATH", self.prefix.lib64) + def _test_2d_float(self): """This test performs simple 2D compression/decompression (float)""" test_data_dir = self.test_suite.current_test_data_dir diff --git a/var/spack/repos/builtin/packages/sz3/package.py b/var/spack/repos/builtin/packages/sz3/package.py index 80a8ff3b02b..91a8ca47d5b 100644 --- a/var/spack/repos/builtin/packages/sz3/package.py +++ b/var/spack/repos/builtin/packages/sz3/package.py @@ -15,17 +15,25 @@ class Sz3(CMakePackage): maintainers = ["disheng222"] version("master") - version("3.1.5.4", commit="08df24b566e6d2e419cb95553aebf4a4902a8015") + version("3.1.5.4", commit="4c6ddf628f27d36b28d1bbda02174359cd05573d") version("3.1.5.1", commit="5736a63b917e439dd62248b4ff6234e96726af5d") version("3.1.3.1", commit="323cb17b412d657c4be681b52c34beaf933fe7af") version("3.1.3", commit="695dff8dc326f3b165f6676d810f46add088a585") + variant("hdf5", default=False, description="enable hdf5 filter support") + depends_on("zstd") depends_on("gsl") depends_on("pkgconfig") + depends_on("hdf5", when="+hdf5") + + def setup_run_environment(self, env): + if "+hdf5" in self.spec: + env.prepend_path("HDF5_PLUGIN_PATH", self.prefix.lib64) def cmake_args(self): return [ "-DSZ3_USE_BUNDLED_ZSTD=OFF", "-DSZ3_DEBUG_TIMINGS=OFF", + self.define_from_variant("BUILD_H5Z_FILTER", "hdf5"), ] From 489de38890c739b524eee4fd04af0856b070156e Mon Sep 17 00:00:00 2001 From: Saqib Khan Date: Wed, 9 Nov 2022 17:50:54 -0600 Subject: [PATCH 3/5] New Package: y-cruncher (#33754) y-cruncher is a program that can compute Pi and other constants to trillions of digits. Signed-off-by: saqibkh --- .../builtin/packages/ycruncher/package.py | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 var/spack/repos/builtin/packages/ycruncher/package.py diff --git a/var/spack/repos/builtin/packages/ycruncher/package.py b/var/spack/repos/builtin/packages/ycruncher/package.py new file mode 100644 index 00000000000..86070ee64b5 --- /dev/null +++ b/var/spack/repos/builtin/packages/ycruncher/package.py @@ -0,0 +1,25 @@ +# Copyright 2013-2022 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.package import * + + +class Ycruncher(Package): + """ + y-cruncher is a program that can compute Pi and other constants to + trillions of digits. It is the first of its kind that is multi-threaded + and scalable to multi-core systems + """ + + homepage = "http://www.numberworld.org/y-cruncher/" + url = "http://www.numberworld.org/y-cruncher/y-cruncher%20v0.7.10.9513-static.tar.xz" + maintainers = ["saqibkh"] + + version("0.7.10.9513", "292006496bba83bf0f8c354ceb1c2ea571f0c67b9fe46297701a8d387773db1b") + + depends_on("autoconf") + + def install(self, spec, prefix): + install_tree(".", prefix) From 168bced88813122c27be1f4f538c1dc1130207a6 Mon Sep 17 00:00:00 2001 From: Saqib Khan Date: Wed, 9 Nov 2022 18:11:46 -0600 Subject: [PATCH 4/5] New Package: stressapptest (#33736) Signed-off-by: saqibkh --- .../builtin/packages/stressapptest/package.py | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 var/spack/repos/builtin/packages/stressapptest/package.py diff --git a/var/spack/repos/builtin/packages/stressapptest/package.py b/var/spack/repos/builtin/packages/stressapptest/package.py new file mode 100644 index 00000000000..4fcd21c2749 --- /dev/null +++ b/var/spack/repos/builtin/packages/stressapptest/package.py @@ -0,0 +1,23 @@ +# Copyright 2013-2022 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.package import * + + +class Stressapptest(AutotoolsPackage): + """ + Stressful Application Test (or stressapptest, its unix name) is a memory + interface test. It tries to maximize randomized traffic to memory from + processor and I/O, with the intent of creating a realistic high load + situation in order to test the existing hardware devices in a computer. + It has been used at Google for some time and now it is available under the + apache 2.0 license.""" + + homepage = "https://github.com/stressapptest/stressapptest" + url = "https://github.com/stressapptest/stressapptest/archive/refs/tags/v1.0.9.tar.gz" + maintainers = ["saqibkh"] + + version("1.0.9", sha256="2ba470587ad4f6ae92057d427c3a2a2756e5f10bd25cd91e62eaef55a40b30a1") + version("1.0.8", sha256="b0432f39055166156ed04eb234f3c226b17a42f802a3f81d76ee999838e205df") From 6b782e6d7e374d14a6e19ec14b2bf8fd32b72b84 Mon Sep 17 00:00:00 2001 From: Harmen Stoppels Date: Thu, 10 Nov 2022 01:18:22 +0100 Subject: [PATCH 5/5] ucx: fix int overflow: use ssize_t (#33784) --- .../builtin/packages/ucx/commit-2523555.patch | 31 +++++++++++++++++++ .../repos/builtin/packages/ucx/package.py | 3 ++ 2 files changed, 34 insertions(+) create mode 100644 var/spack/repos/builtin/packages/ucx/commit-2523555.patch diff --git a/var/spack/repos/builtin/packages/ucx/commit-2523555.patch b/var/spack/repos/builtin/packages/ucx/commit-2523555.patch new file mode 100644 index 00000000000..01056202fb0 --- /dev/null +++ b/var/spack/repos/builtin/packages/ucx/commit-2523555.patch @@ -0,0 +1,31 @@ +From 38e5b912dd737b5673ea34f885fe6222276a6f9f Mon Sep 17 00:00:00 2001 +From: Sergey Oblomov +Date: Fri, 14 Oct 2022 12:15:11 +0300 +Subject: [PATCH] IB/MD: fixed build on SLES SP3 + +--- + src/uct/ib/base/ib_md.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/uct/ib/base/ib_md.c b/src/uct/ib/base/ib_md.c +index 225d1de9234..1618f35c03d 100644 +--- a/src/uct/ib/base/ib_md.c ++++ b/src/uct/ib/base/ib_md.c +@@ -2059,7 +2059,7 @@ uct_component_t uct_ib_component = { + + void UCS_F_CTOR uct_ib_init() + { +- int i; ++ ssize_t i; + + uct_component_register(&uct_ib_component); + +@@ -2070,7 +2070,7 @@ void UCS_F_CTOR uct_ib_init() + + void UCS_F_DTOR uct_ib_cleanup() + { +- int i; ++ ssize_t i; + + for (i = ucs_static_array_size(uct_ib_tls) - 1; i >= 0; i--) { + uct_tl_unregister(uct_ib_tls[i]); diff --git a/var/spack/repos/builtin/packages/ucx/package.py b/var/spack/repos/builtin/packages/ucx/package.py index a9512ec7c31..84d301518ef 100644 --- a/var/spack/repos/builtin/packages/ucx/package.py +++ b/var/spack/repos/builtin/packages/ucx/package.py @@ -132,6 +132,9 @@ class Ucx(AutotoolsPackage, CudaPackage): configure_abs_path = "contrib/configure-release" + # See https://github.com/openucx/ucx/pull/8629, wrong int type + patch("commit-2523555.patch", when="@1.13.1") + @when("@1.9-dev") def autoreconf(self, spec, prefix): Executable("./autogen.sh")()