diff options
author | Victor Brunini <vebruni@sandia.gov> | 2024-08-20 15:48:42 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-08-20 15:48:42 -0700 |
commit | c29652580a8d719b25afa80af98ccc9799ca4f5b (patch) | |
tree | ecc7895e73cfe710fc942ef9633144bdefb371ce /var | |
parent | d714a9b2233d663229668d9b7f81a4fb095e7dbc (diff) | |
download | spack-c29652580a8d719b25afa80af98ccc9799ca4f5b.tar.gz spack-c29652580a8d719b25afa80af98ccc9799ca4f5b.tar.bz2 spack-c29652580a8d719b25afa80af98ccc9799ca4f5b.tar.xz spack-c29652580a8d719b25afa80af98ccc9799ca4f5b.zip |
arborx: Enable use of Kokkos from Trilinos for cuda/rocm. (#45220)
Diffstat (limited to 'var')
-rw-r--r-- | var/spack/repos/builtin/packages/arborx/package.py | 23 |
1 files changed, 14 insertions, 9 deletions
diff --git a/var/spack/repos/builtin/packages/arborx/package.py b/var/spack/repos/builtin/packages/arborx/package.py index 6a1ac398bf..a4c1b7249c 100644 --- a/var/spack/repos/builtin/packages/arborx/package.py +++ b/var/spack/repos/builtin/packages/arborx/package.py @@ -81,14 +81,17 @@ class Arborx(CMakePackage, CudaPackage, ROCmPackage): depends_on("kokkos+%s" % backend.lower(), when="~trilinos+%s" % backend.lower()) 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) + cuda_dep = f"+cuda cuda_arch={arch}" + depends_on(f"kokkos {cuda_dep}", when=f"~trilinos {cuda_dep}") + depends_on(f"trilinos {cuda_dep}", when=f"+trilinos {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) + rocm_dep = f"+rocm amdgpu_target={arch}" + depends_on(f"kokkos {rocm_dep}", when=f"~trilinos {rocm_dep}") + depends_on(f"trilinos {rocm_dep}", when=f"+trilinos {rocm_dep}") conflicts("+cuda", when="cuda_arch=none") + conflicts("^kokkos", when="+trilinos") depends_on("kokkos+cuda_lambda", when="~trilinos+cuda") # Trilinos/Kokkos @@ -104,20 +107,22 @@ class Arborx(CMakePackage, CudaPackage, ROCmPackage): depends_on("trilinos@14.4.0:", when="@1.6:+trilinos") patch("trilinos14.0-kokkos-major-version.patch", when="@1.4+trilinos ^trilinos@14.0.0") conflicts("~serial", when="+trilinos") - conflicts("+cuda", when="+trilinos") def cmake_args(self): spec = self.spec + if "~trilinos" in spec: + kokkos_spec = spec["kokkos"] + else: + kokkos_spec = spec["trilinos"] + options = [ - "-DKokkos_ROOT=%s" - % (spec["kokkos"].prefix if "~trilinos" in spec else spec["trilinos"].prefix), + f"-DKokkos_ROOT={kokkos_spec.prefix}", self.define_from_variant("ARBORX_ENABLE_MPI", "mpi"), ] if spec.satisfies("+cuda"): - # Only Kokkos allows '+cuda' for now - options.append("-DCMAKE_CXX_COMPILER=%s" % spec["kokkos"].kokkos_cxx) + options.append(f"-DCMAKE_CXX_COMPILER={kokkos_spec.kokkos_cxx}") if spec.satisfies("+rocm"): options.append("-DCMAKE_CXX_COMPILER=%s" % spec["hip"].hipcc) |