From 1f0aaafc7181adbe53a6519c6012b5e5ecce03b0 Mon Sep 17 00:00:00 2001 From: Patrick Lavin Date: Wed, 14 May 2025 17:17:24 -0400 Subject: [PATCH] spatter: new package (#50326) * add spatter package * update license, change default backend * move package to new location * rearrage spack directives --------- Co-authored-by: Patrick Lavin Co-authored-by: plavin --- .../builtin/packages/spatter/package.py | 54 +++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 var/spack/repos/spack_repo/builtin/packages/spatter/package.py diff --git a/var/spack/repos/spack_repo/builtin/packages/spatter/package.py b/var/spack/repos/spack_repo/builtin/packages/spatter/package.py new file mode 100644 index 00000000000..6e4ec9a706c --- /dev/null +++ b/var/spack/repos/spack_repo/builtin/packages/spatter/package.py @@ -0,0 +1,54 @@ +# Copyright Spack Project Developers. See COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + +from spack.package import * + + +class Spatter(CMakePackage, CudaPackage): + """A microbenchmark for timing Gather/Scatter kernels on CPUs and GPUs.""" + + homepage = "https://github.com/hpcgarage/spatter" + git = "https://github.com/hpcgarage/spatter.git" + + maintainers("plavin", "jyoung3131") + + license("MIT", checked_by="plavin") + + version("develop", branch="spatter-devel") + version("main", branch="main", preferred=True) + version("2.1", tag="v2.1", commit="ec8923711f8dc21eedff7189f12b02eb06845d2f") + + variant( + "backend", + default="openmp", + values=["serial", "openmp", "cuda"], + description="Configuration string", + ) + variant("mpi", default=False, description="Enable MPI support") + variant("cuda_arch", default="none", multi=True, description="CUDA architecture") + + depends_on("cmake@3.25:", type="build") + depends_on("mpi", when="+mpi") + depends_on("cuda", when="backend=cuda") + + conflicts( + "backend=cuda", + when="cuda_arch=none", + msg="CUDA architecture must be specified when CUDA support is enabled.", + ) + + def cmake_args(self): + args = [] + + if self.spec.satisfies("backend=openmp"): + args.append(self.define("USE_OPENMP", "On")) + elif self.spec.satisfies("backend=cuda"): + args.append(self.define("USE_CUDA", "On")) + args.append( + self.define("CMAKE_CUDA_ARCHITECTURES", self.spec.variants["cuda_arch"].value) + ) + + args.append(self.define_from_variant("USE_MPI", "mpi")) + + return args