From f65520c2ad521ccb8b99ec87051d84e0d0fbff02 Mon Sep 17 00:00:00 2001 From: Riyaz Haque Date: Sat, 30 May 2026 22:22:22 -0700 Subject: [PATCH 1/4] Changes to the spack packages for laghos and its dependencies in preparation to upstream to the spack-packages repository --- .../benchpark/packages/camp/package.py | 8 ++++++ .../benchpark/packages/cce/package.py | 20 ++++++++++++++ .../benchpark/packages/laghos/package.py | 2 +- .../benchpark/packages/mfem/package.py | 27 +++++++------------ 4 files changed, 39 insertions(+), 18 deletions(-) create mode 100644 repos/spack_repo/benchpark/packages/cce/package.py diff --git a/repos/spack_repo/benchpark/packages/camp/package.py b/repos/spack_repo/benchpark/packages/camp/package.py index 68bbde091..b59872f72 100644 --- a/repos/spack_repo/benchpark/packages/camp/package.py +++ b/repos/spack_repo/benchpark/packages/camp/package.py @@ -16,6 +16,8 @@ class Camp(BuiltinCamp): submodules=False, ) + variant("default_stream", default=False, description="Use default stream") + def setup_build_environment(self, env): super().setup_build_environment(env) if "+cuda" in self.spec: @@ -25,3 +27,9 @@ def setup_run_environment(self, env): super().setup_run_environment(env) if "+cuda" in self.spec: env.set("NVCC_APPEND_FLAGS", "-allow-unsupported-compiler") + + def cmake_args(self): + options = super().cmake_args() + options.append(self.define_from_variant("CAMP_USE_PLATFORM_DEFAULT_STREAM", "default_stream")) + + return options diff --git a/repos/spack_repo/benchpark/packages/cce/package.py b/repos/spack_repo/benchpark/packages/cce/package.py new file mode 100644 index 000000000..b3ba740e0 --- /dev/null +++ b/repos/spack_repo/benchpark/packages/cce/package.py @@ -0,0 +1,20 @@ +# Copyright 2023 Lawrence Livermore National Security, LLC and other +# Benchpark Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: Apache-2.0 + +import os +import shutil +import sys + +from spack.package import * +from spack_repo.builtin.packages.cce.package import Cce as BuiltinCce + + +class Cce(BuiltinCce): + def _standard_flag(self, *, language, standard): + flags = { + "cxx": {"11": "-std=c++11", "14": "-std=c++14", "17": "-std=c++17", "20": "-std=c++20"}, + "c": {"99": "-std=c99", "11": "-std=c11"}, + } + return flags[language][standard] diff --git a/repos/spack_repo/benchpark/packages/laghos/package.py b/repos/spack_repo/benchpark/packages/laghos/package.py index 0182cfe6c..66224b63b 100644 --- a/repos/spack_repo/benchpark/packages/laghos/package.py +++ b/repos/spack_repo/benchpark/packages/laghos/package.py @@ -52,7 +52,7 @@ class Laghos(MakefilePackage, CudaPackage, ROCmPackage): # Recommended mfem version for laghos v1.x is: ^mfem@3.3.1-laghos-v1.0 depends_on("mfem@3.3.1-laghos-v1.0", when="@1.0,1.1") depends_on("mfem+caliper", when="+caliper") - depends_on("mfem cxxstd=17") + depends_on("mfem cxxstd=20", when="@develop") requires("^[virtuals=zlib-api] zlib") diff --git a/repos/spack_repo/benchpark/packages/mfem/package.py b/repos/spack_repo/benchpark/packages/mfem/package.py index 61302dc74..8198d293f 100644 --- a/repos/spack_repo/benchpark/packages/mfem/package.py +++ b/repos/spack_repo/benchpark/packages/mfem/package.py @@ -15,7 +15,16 @@ class Mfem(BuiltinMfem): variant("caliper", default=False, description="Build Caliper support") - depends_on("camp", when="+umpire") + version("develop", branch="raja-launchbounds") + + depends_on("camp+default_stream", when="+umpire") + depends_on("camp@main", when="@develop +umpire") + depends_on("umpire@develop", when="@develop +umpire") + + depends_on("camp+default_stream", when="+raja") + depends_on("camp@main", when="@develop +raja") + depends_on("raja@develop cxxstd=20", when="@develop +raja") + depends_on("caliper", when="+caliper") depends_on("adiak", when="+caliper") depends_on("hypre+shared", when="+mpi~cuda") @@ -42,22 +51,6 @@ def yes_no(varstr): options = super().get_make_config_options(spec, prefix) - if "+umpire" in spec: - umpire = spec["umpire"] - umpire_opts = umpire.headers - umpire_libs = umpire.libs - if "^camp" in umpire: - umpire_opts += umpire["camp"].headers - umpire_libs += umpire["camp"].libs - if "^fmt" in umpire: - umpire_opts += umpire["fmt"].headers - umpire_libs += umpire["fmt"].libs - options = [ - "UMPIRE_OPT=%s" % umpire_opts.cpp_flags if opt.startswith("UMPIRE_OPT=") - else "UMPIRE_LIB=%s" % self.ld_flags_from_library_list(umpire_libs) if opt.startswith("UMPIRE_LIB=") - else opt for opt in options - ] - options.append("MFEM_USE_CALIPER=%s" % yes_no("+caliper")) if "+caliper" in self.spec: options.append("CALIPER_DIR=%s" % self.spec["caliper"].prefix) From 36b3b1720224dbdcf330b701af41debe33b29bb2 Mon Sep 17 00:00:00 2001 From: Riyaz Haque Date: Sat, 30 May 2026 22:41:19 -0700 Subject: [PATCH 2/4] Fix develop branch --- repos/spack_repo/benchpark/packages/mfem/package.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/repos/spack_repo/benchpark/packages/mfem/package.py b/repos/spack_repo/benchpark/packages/mfem/package.py index 8198d293f..36ccbf1d0 100644 --- a/repos/spack_repo/benchpark/packages/mfem/package.py +++ b/repos/spack_repo/benchpark/packages/mfem/package.py @@ -15,8 +15,6 @@ class Mfem(BuiltinMfem): variant("caliper", default=False, description="Build Caliper support") - version("develop", branch="raja-launchbounds") - depends_on("camp+default_stream", when="+umpire") depends_on("camp@main", when="@develop +umpire") depends_on("umpire@develop", when="@develop +umpire") From b2dddaed81784937bede66b164dce619ace34737 Mon Sep 17 00:00:00 2001 From: Riyaz Haque Date: Sun, 31 May 2026 12:36:21 -0700 Subject: [PATCH 3/4] Fix Hypre cmake build --- .../benchpark/packages/hypre/package.py | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/repos/spack_repo/benchpark/packages/hypre/package.py b/repos/spack_repo/benchpark/packages/hypre/package.py index 9d8431268..03dd30194 100644 --- a/repos/spack_repo/benchpark/packages/hypre/package.py +++ b/repos/spack_repo/benchpark/packages/hypre/package.py @@ -69,7 +69,24 @@ def setup_build_environment(self, env): env.set("NVCC_APPEND_FLAGS", "-allow-unsupported-compiler") class CMakeBuilder(HypreCMakeBuilder): - pass + root_cmakelists_dir = "src" + + def cmake_args(self): + args = super().cmake_args() + + if "+umpire" in self.spec: + umpire = self.spec["umpire"] + umpire_opts = umpire.prefix.include + umpire_libs = umpire.libs + if "^camp" in umpire: + umpire_libs += umpire["camp"].libs + if "^fmt" in umpire: + umpire_libs += umpire["fmt"].libs + + args.append(self.define("TPL_UMPIRE_INCLUDE_DIRS", umpire_opts)) + args.append(self.define("TPL_UMPIRE_LIBRARIES", umpire_libs)) + + return args class AutotoolsBuilder(HypreAutotoolsBuilder): pass From 6adff479f6677a040c9c8d753205e74b052214de Mon Sep 17 00:00:00 2001 From: Riyaz Haque Date: Tue, 16 Jun 2026 13:13:22 -0700 Subject: [PATCH 4/4] Extend camp package.py to support default streams --- .../benchpark/packages/camp/package.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 repos/spack_repo/benchpark/packages/camp/package.py diff --git a/repos/spack_repo/benchpark/packages/camp/package.py b/repos/spack_repo/benchpark/packages/camp/package.py new file mode 100644 index 000000000..72ed73b07 --- /dev/null +++ b/repos/spack_repo/benchpark/packages/camp/package.py @@ -0,0 +1,18 @@ +# Copyright 2023 Lawrence Livermore National Security, LLC and other +# Benchpark Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: Apache-2.0 + +from spack.package import * +from spack_repo.builtin.packages.camp.package import Camp as BuiltinCamp + + +class Camp(BuiltinCamp): + + variant("default_stream", default=False, description="Use default stream") + + def cmake_args(self): + options = super().cmake_args() + options.append(self.define_from_variant("CAMP_USE_PLATFORM_DEFAULT_STREAM", "default_stream")) + + return options