From 819cd41ee465105f94641bb02f2e90aae1976c8c Mon Sep 17 00:00:00 2001 From: Mikael Simberg Date: Mon, 13 Sep 2021 10:43:20 +0200 Subject: hpx, kokkos: add consistent variants for C++ std (#25535) * Add cuda_constexpr variant to Kokkos package * Don't require nvcc_wrapper in Kokkos package when using Cray compiler --- var/spack/repos/builtin/packages/hpx/package.py | 2 +- var/spack/repos/builtin/packages/kokkos/package.py | 15 ++++++++++++--- 2 files changed, 13 insertions(+), 4 deletions(-) (limited to 'var') diff --git a/var/spack/repos/builtin/packages/hpx/package.py b/var/spack/repos/builtin/packages/hpx/package.py index 8643f735f6..1821d21b6e 100644 --- a/var/spack/repos/builtin/packages/hpx/package.py +++ b/var/spack/repos/builtin/packages/hpx/package.py @@ -35,7 +35,7 @@ class Hpx(CMakePackage, CudaPackage): variant('cxxstd', default='17', - values=('11', '14', '17'), + values=('11', '14', '17', '20'), description='Use the specified C++ standard when building.') variant( diff --git a/var/spack/repos/builtin/packages/kokkos/package.py b/var/spack/repos/builtin/packages/kokkos/package.py index 27ce2ad5d8..81ad9849b1 100644 --- a/var/spack/repos/builtin/packages/kokkos/package.py +++ b/var/spack/repos/builtin/packages/kokkos/package.py @@ -17,7 +17,7 @@ class Kokkos(CMakePackage, CudaPackage, ROCmPackage): test_requires_compiler = True - maintainers = ['jjwilke', 'jciesko'] + maintainers = ['DavidPoliakoff', 'jciesko'] version('master', branch='master') version('develop', branch='develop') @@ -53,6 +53,8 @@ class Kokkos(CMakePackage, CudaPackage, ROCmPackage): 'Aggressively vectorize loops'], 'compiler_warnings': [False, 'Print all compiler warnings'], + 'cuda_constexpr': [False, + 'Activate experimental constexpr features'], 'cuda_lambda': [False, 'Activate experimental lambda features'], 'cuda_ldg_intrinsic': [False, @@ -193,13 +195,18 @@ class Kokkos(CMakePackage, CudaPackage, ROCmPackage): depends_on("kokkos-nvcc-wrapper@master", when="@master+wrapper") conflicts("+wrapper", when="~cuda") - variant("std", default="14", values=["11", "14", "17", "20"], multi=False) + stds = ["11", "14", "17", "20"] + variant("std", default="14", values=stds, multi=False) variant("pic", default=False, description="Build position independent code") # nvcc does not currently work with C++17 or C++20 conflicts("+cuda", when="std=17 ^cuda@:10.99.99") conflicts("+cuda", when="std=20") + # HPX should use the same C++ standard + for std in stds: + depends_on('hpx cxxstd={0}'.format(std), when='+hpx std={0}'.format(std)) + variant('shared', default=True, description='Build shared libraries') def append_args(self, cmake_prefix, cmake_options, spack_options): @@ -229,7 +236,9 @@ class Kokkos(CMakePackage, CudaPackage, ROCmPackage): def cmake_args(self): spec = self.spec - if spec.satisfies('~wrapper+cuda') and not spec.satisfies('%clang'): + if spec.satisfies("~wrapper+cuda") and not ( + spec.satisfies("%clang") or spec.satisfies("%cce") + ): raise InstallError("Kokkos requires +wrapper when using +cuda" "without clang") -- cgit v1.2.3-60-g2f50