diff --git a/var/spack/repos/builtin/packages/kokkos/package.py b/var/spack/repos/builtin/packages/kokkos/package.py index 9b9b78e11728fd8535e40fb6bb63263f54dbe4df..6492906ad76aa2c3e8ffb24944558e5c4e76639c 100644 --- a/var/spack/repos/builtin/packages/kokkos/package.py +++ b/var/spack/repos/builtin/packages/kokkos/package.py @@ -179,6 +179,7 @@ class Kokkos(CMakePackage, CudaPackage, ROCmPackage): options_variants = { "aggressive_vectorization": [False, "Aggressively vectorize loops"], "compiler_warnings": [False, "Print all compiler warnings"], + "complex_align": [True, "Align complex numbers"], "cuda_constexpr": [False, "Activate experimental constexpr features"], "cuda_lambda": [False, "Activate experimental lambda features"], "cuda_ldg_intrinsic": [False, "Use CUDA LDG intrinsics"], diff --git a/var/spack/repos/builtin/packages/petsc/package.py b/var/spack/repos/builtin/packages/petsc/package.py index 918b2e83679969588aeaf0db51f3a3a1514d361d..9d983d254f34d40724fd98a10408b63f13badc0a 100644 --- a/var/spack/repos/builtin/packages/petsc/package.py +++ b/var/spack/repos/builtin/packages/petsc/package.py @@ -374,6 +374,7 @@ def check_fortran_compiler(self): depends_on("libyaml", when="+libyaml") depends_on("hwloc", when="+hwloc") depends_on("kokkos", when="+kokkos") + depends_on("kokkos~complex_align", when="+kokkos+complex") depends_on("kokkos-kernels", when="+kokkos") for cuda_arch in CudaPackage.cuda_arch_values: depends_on( diff --git a/var/spack/repos/builtin/packages/trilinos/package.py b/var/spack/repos/builtin/packages/trilinos/package.py index bb12c6caa3a81ec9dac1536abdb579c82b42e195..7966cb3e6790c2453f556427cfe2f295193f274d 100644 --- a/var/spack/repos/builtin/packages/trilinos/package.py +++ b/var/spack/repos/builtin/packages/trilinos/package.py @@ -407,23 +407,25 @@ class Trilinos(CMakePackage, CudaPackage, ROCmPackage): # ###################### Dependencies ########################## # External Kokkos - depends_on("kokkos@4.4.01", when="@master: +kokkos") - depends_on("kokkos@4.3.01", when="@16.0.0 +kokkos") - depends_on("kokkos@4.2.01", when="@15.1.0:15.1.1 +kokkos") - depends_on("kokkos@4.1.00", when="@14.4.0:15.0.0 +kokkos") - - depends_on("kokkos +wrapper", when="trilinos@14.4.0: +kokkos +wrapper") - depends_on("kokkos ~wrapper", when="trilinos@14.4.0: +kokkos ~wrapper") - - for a in CudaPackage.cuda_arch_values: - arch_str = "+cuda cuda_arch={0}".format(a) - kokkos_spec = "kokkos {0}".format(arch_str) - depends_on(kokkos_spec, when="@14.4.0: +kokkos {0}".format(arch_str)) - - for a in ROCmPackage.amdgpu_targets: - arch_str = "+rocm amdgpu_target={0}".format(a) - kokkos_spec = "kokkos {0}".format(arch_str) - depends_on(kokkos_spec, when="@14.4.0: +kokkos {0}".format(arch_str)) + with when("@14.4: +kokkos"): + depends_on("kokkos+wrapper", when="+wrapper") + depends_on("kokkos~wrapper", when="~wrapper") + depends_on("kokkos~complex_align") + depends_on("kokkos@4.4.01", when="@master:") + depends_on("kokkos@4.3.01", when="@16") + depends_on("kokkos@4.2.01", when="@15.1:15") + depends_on("kokkos@4.1.00", when="@14.4:15.0") + depends_on("kokkos-kernels@4.4.01", when="@master:") + depends_on("kokkos-kernels@4.3.01", when="@16") + depends_on("kokkos-kernels@4.2.01", when="@15.1:15") + depends_on("kokkos-kernels@4.1.00", when="@14.4:15.0") + + for a in CudaPackage.cuda_arch_values: + arch_str = f"+cuda cuda_arch={a}" + depends_on(f"kokkos{arch_str}", when=arch_str) + for a in ROCmPackage.amdgpu_targets: + arch_str = f"+rocm amdgpu_target={a}" + depends_on(f"kokkos{arch_str}", when=arch_str) depends_on("adios2", when="+adios2") depends_on("binder@1.3:", when="@15: +python", type="build") @@ -899,8 +901,9 @@ def define_tpl(trilinos_name, spack_name, have_dep): define_tpl(tpl_name, dep_name, dep_name in spec) # External Kokkos - if spec.satisfies("@14.4.0 +kokkos"): + if spec.satisfies("@14.4.0: +kokkos"): options.append(define_tpl_enable("Kokkos")) + options.append(define_tpl_enable("KokkosKernels", True)) # MPI settings options.append(define_tpl_enable("MPI"))