Make Cabana a Cuda/ROCm package (matching ArborX) (#39809)

This commit is contained in:
Sam Reeve 2023-09-07 15:36:09 -04:00 committed by GitHub
parent 06b30842e4
commit 5c409f794a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -7,7 +7,7 @@
from spack.pkg.builtin.kokkos import Kokkos from spack.pkg.builtin.kokkos import Kokkos
class Cabana(CMakePackage): class Cabana(CMakePackage, CudaPackage, ROCmPackage):
"""The Exascale Co-Design Center for Particle Applications Toolkit""" """The Exascale Co-Design Center for Particle Applications Toolkit"""
homepage = "https://github.com/ECP-copa/Cabana" homepage = "https://github.com/ECP-copa/Cabana"
@ -53,9 +53,24 @@ class Cabana(CMakePackage):
_kk_spec = "kokkos-legacy+pthreads" _kk_spec = "kokkos-legacy+pthreads"
elif _kk_version == "-legacy" and _backend not in ["serial", "openmp", "cuda"]: elif _kk_version == "-legacy" and _backend not in ["serial", "openmp", "cuda"]:
continue continue
# Handled separately by Cuda/ROCmPackage below
elif _backend == "cuda" or _backend == "hip":
continue
else: else:
_kk_spec = "kokkos{0}+{1}".format(_kk_version, _backend) _kk_spec = "kokkos{0}+{1}".format(_kk_version, _backend)
depends_on(_kk_spec, when="@{0}+{1}".format(_version, _backend)) depends_on(_kk_spec, when="@{0}+{1}".format(_version, _backend))
for arch in CudaPackage.cuda_arch_values:
cuda_dep = "+cuda cuda_arch={0}".format(arch)
depends_on("kokkos {0}".format(cuda_dep), when=cuda_dep)
for arch in ROCmPackage.amdgpu_targets:
rocm_dep = "+rocm amdgpu_target={0}".format(arch)
depends_on("kokkos {0}".format(rocm_dep), when=rocm_dep)
conflicts("+cuda", when="cuda_arch=none")
depends_on("kokkos+cuda_lambda", when="+cuda")
depends_on("arborx", when="@0.3.0:+arborx") depends_on("arborx", when="@0.3.0:+arborx")
depends_on("hypre-cmake@2.22.0:", when="@0.4.0:+hypre") depends_on("hypre-cmake@2.22.0:", when="@0.4.0:+hypre")
depends_on("hypre-cmake@2.22.1:", when="@0.5.0:+hypre") depends_on("hypre-cmake@2.22.1:", when="@0.5.0:+hypre")