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 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/hypre/package.py b/repos/spack_repo/benchpark/packages/hypre/package.py index 89a4c420c..7b0ca0149 100644 --- a/repos/spack_repo/benchpark/packages/hypre/package.py +++ b/repos/spack_repo/benchpark/packages/hypre/package.py @@ -67,7 +67,24 @@ def setup_build_environment(self, env): env.append_flags("LDFLAGS", f"-L{spec['lapack'].prefix}/lib -l{libsci_name}") 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 diff --git a/repos/spack_repo/benchpark/packages/laghos/package.py b/repos/spack_repo/benchpark/packages/laghos/package.py index 05f713bb7..f4abd587b 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 e41b8add4..068fdeb5a 100644 --- a/repos/spack_repo/benchpark/packages/mfem/package.py +++ b/repos/spack_repo/benchpark/packages/mfem/package.py @@ -15,7 +15,14 @@ class Mfem(BuiltinMfem): variant("caliper", default=False, description="Build Caliper support") - depends_on("camp", when="+umpire") + 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") @@ -40,22 +47,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)