From 5eba5dc271101df658f8dd132015cb90687d8a3d Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Mon, 22 Nov 2021 13:54:19 +0100 Subject: Make CUDA and ROCm architecture conditional (#27185) * Make CUDA and ROCm architecture conditional fixes #14337 The variant to specify which architecture to use for CUDA and ROCm are now conditional on +cuda and +rocm respectively. * cp2k: make all CUDA related variants conditional on +cuda --- lib/spack/spack/build_systems/cuda.py | 3 ++- lib/spack/spack/build_systems/rocm.py | 3 ++- var/spack/repos/builtin/packages/cp2k/package.py | 19 +++++++++---------- 3 files changed, 13 insertions(+), 12 deletions(-) diff --git a/lib/spack/spack/build_systems/cuda.py b/lib/spack/spack/build_systems/cuda.py index 634cfad637..79f57b046e 100644 --- a/lib/spack/spack/build_systems/cuda.py +++ b/lib/spack/spack/build_systems/cuda.py @@ -35,7 +35,8 @@ class CudaPackage(PackageBase): variant('cuda_arch', description='CUDA architecture', - values=spack.variant.any_combination_of(*cuda_arch_values)) + values=spack.variant.any_combination_of(*cuda_arch_values), + when='+cuda') # https://docs.nvidia.com/cuda/cuda-compiler-driver-nvcc/index.html#nvcc-examples # https://llvm.org/docs/CompileCudaWithLLVM.html#compiling-cuda-code diff --git a/lib/spack/spack/build_systems/rocm.py b/lib/spack/spack/build_systems/rocm.py index 977db700db..828ebe7a67 100644 --- a/lib/spack/spack/build_systems/rocm.py +++ b/lib/spack/spack/build_systems/rocm.py @@ -100,7 +100,8 @@ class ROCmPackage(PackageBase): # possible amd gpu targets for rocm builds variant('amdgpu_target', description='AMD GPU architecture', - values=spack.variant.any_combination_of(*amdgpu_targets)) + values=spack.variant.any_combination_of(*amdgpu_targets), + when='+rocm') depends_on('llvm-amdgpu', when='+rocm') depends_on('hsa-rocr-dev', when='+rocm') diff --git a/var/spack/repos/builtin/packages/cp2k/package.py b/var/spack/repos/builtin/packages/cp2k/package.py index d1ac5b086e..42958771ff 100644 --- a/var/spack/repos/builtin/packages/cp2k/package.py +++ b/var/spack/repos/builtin/packages/cp2k/package.py @@ -53,14 +53,15 @@ class Cp2k(MakefilePackage, CudaPackage): ' and BQB compression')) variant('spglib', default=False, description='Enable support for spglib') - variant('cuda_arch_35_k20x', default=False, - description=('CP2K (resp. DBCSR) has specific parameter sets for' - ' different GPU models. Enable this when building' - ' with cuda_arch=35 for a K20x instead of a K40')) - variant('cuda_fft', default=False, - description=('Use CUDA also for FFTs in the PW part of CP2K')) - variant('cuda_blas', default=False, - description=('Use CUBLAS for general matrix operations in DBCSR')) + with when('+cuda'): + variant('cuda_arch_35_k20x', default=False, + description=('CP2K (resp. DBCSR) has specific parameter sets for' + ' different GPU models. Enable this when building' + ' with cuda_arch=35 for a K20x instead of a K40')) + variant('cuda_fft', default=False, + description=('Use CUDA also for FFTs in the PW part of CP2K')) + variant('cuda_blas', default=False, + description=('Use CUBLAS for general matrix operations in DBCSR')) HFX_LMAX_RANGE = range(4, 8) @@ -167,8 +168,6 @@ class Cp2k(MakefilePackage, CudaPackage): depends_on('python@3.6:', when='@7:+cuda', type='build') depends_on('spglib', when='+spglib') - conflicts('~cuda', '+cuda_fft') - conflicts('~cuda', '+cuda_blas') # Apparently cp2k@4.1 needs an "experimental" version of libwannier.a # which is only available contacting the developer directly. See INSTALL -- cgit v1.2.3-60-g2f50