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 <prlavin@sandia.gov>
Co-authored-by: plavin <plavin@users.noreply.github.com>
This commit is contained in:
Patrick Lavin 2025-05-14 17:17:24 -04:00 committed by GitHub
parent fb8d6e8ea0
commit 1f0aaafc71
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -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