summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrian Van Essen <vanessen1@llnl.gov>2021-03-29 19:25:56 -0700
committerGitHub <noreply@github.com>2021-03-30 02:25:56 +0000
commit9d42381d38fff23e9ef2c2d4de5a48efe937eb7a (patch)
tree7bd263476da3a117112ec0d50de95cacde4d4ae4
parent846cf954f01ab5e78e9ff767d42e51a6b1959ab0 (diff)
downloadspack-9d42381d38fff23e9ef2c2d4de5a48efe937eb7a.tar.gz
spack-9d42381d38fff23e9ef2c2d4de5a48efe937eb7a.tar.bz2
spack-9d42381d38fff23e9ef2c2d4de5a48efe937eb7a.tar.xz
spack-9d42381d38fff23e9ef2c2d4de5a48efe937eb7a.zip
Bugfixes in LBANN software stack identified by clingo (#22554)
* Fixed a bug in the DiHydrogen package where the variant legacy was changed to distconv and wasn't fully propagated. Cleaned up the openmp variants on the blas library packages in DiHydrogen and Elemental. Extended support for Aluminum v1.0 in LBANN, Hydrogen, and DiHydrogen. Fixed a when clause in the LBANN dependencies. * Removed the upper range limit for the Aluminum library dependence * Update var/spack/repos/builtin/packages/dihydrogen/package.py Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com> Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
-rw-r--r--var/spack/repos/builtin/packages/dihydrogen/package.py52
-rw-r--r--var/spack/repos/builtin/packages/elemental/package.py10
-rw-r--r--var/spack/repos/builtin/packages/hydrogen/package.py1
-rw-r--r--var/spack/repos/builtin/packages/lbann/package.py2
4 files changed, 26 insertions, 39 deletions
diff --git a/var/spack/repos/builtin/packages/dihydrogen/package.py b/var/spack/repos/builtin/packages/dihydrogen/package.py
index 94bc622e98..eef17a0258 100644
--- a/var/spack/repos/builtin/packages/dihydrogen/package.py
+++ b/var/spack/repos/builtin/packages/dihydrogen/package.py
@@ -55,19 +55,6 @@ class Dihydrogen(CMakePackage, CudaPackage, ROCmPackage):
variant('blas', default='openblas', values=('openblas', 'mkl', 'accelerate', 'essl'),
description='Enable the use of OpenBlas/MKL/Accelerate/ESSL')
- # Override the default set of CUDA architectures with the relevant
- # subset from lib/spack/spack/build_systems/cuda.py
- cuda_arch_values = [
- '30', '32', '35', '37',
- '50', '52', '53',
- '60', '61', '62',
- '70', '72', '75',
- '80'
- ]
- variant('cuda_arch',
- description='CUDA architecture',
- values=spack.variant.auto_or_any_combination_of(*cuda_arch_values))
-
conflicts('~cuda', when='+nvshmem')
depends_on('mpi')
@@ -75,7 +62,8 @@ class Dihydrogen(CMakePackage, CudaPackage, ROCmPackage):
# Specify the correct version of Aluminum
depends_on('aluminum@0.4:0.4.99', when='@0.1:0.1.99 +al')
- depends_on('aluminum@0.5.0:', when='@:0.0,0.2: +al')
+ depends_on('aluminum@0.5.0:0.7.99', when='@0.2.0:0.2.1 +al')
+ depends_on('aluminum@0.5.0:', when='@:0.0,0.2.1: +al')
# Add Aluminum variants
depends_on('aluminum +cuda +nccl +ht +cuda_rma', when='+al +cuda')
@@ -89,32 +77,30 @@ class Dihydrogen(CMakePackage, CudaPackage, ROCmPackage):
for val in ROCmPackage.amdgpu_targets:
depends_on('aluminum amdgpu_target=%s' % val, when='amdgpu_target=%s' % val)
- depends_on('cuda', when=('+cuda' or '+legacy'))
- depends_on('cudnn', when=('+cuda' or '+legacy'))
+ for when in ['+cuda', '+distconv']:
+ depends_on('cuda', when=when)
+ depends_on('cudnn', when=when)
depends_on('cub', when='^cuda@:10.99')
# Note that #1712 forces us to enumerate the different blas variants
- depends_on('openblas', when='blas=openblas ~openmp_blas ~int64_blas')
- depends_on('openblas +ilp64', when='blas=openblas ~openmp_blas +int64_blas')
- depends_on('openblas threads=openmp', when='blas=openblas +openmp_blas ~int64_blas')
- depends_on('openblas threads=openmp +lip64', when='blas=openblas +openmp_blas +int64_blas')
+ depends_on('openblas', when='blas=openblas')
+ depends_on('openblas +ilp64', when='blas=openblas +int64_blas')
+ depends_on('openblas threads=openmp', when='blas=openblas +openmp_blas')
- depends_on('intel-mkl', when="blas=mkl ~openmp_blas ~int64_blas")
- depends_on('intel-mkl +ilp64', when="blas=mkl ~openmp_blas +int64_blas")
- depends_on('intel-mkl threads=openmp', when='blas=mkl +openmp_blas ~int64_blas')
- depends_on('intel-mkl@2017.1 +openmp +ilp64', when='blas=mkl +openmp_blas +int64_blas')
+ depends_on('intel-mkl', when="blas=mkl")
+ depends_on('intel-mkl +ilp64', when="blas=mkl +int64_blas")
+ depends_on('intel-mkl threads=openmp', when='blas=mkl +openmp_blas')
depends_on('veclibfort', when='blas=accelerate')
conflicts('blas=accelerate +openmp_blas')
- depends_on('essl -cuda', when='blas=essl -openmp_blas ~int64_blas')
- depends_on('essl -cuda +ilp64', when='blas=essl -openmp_blas +int64_blas')
- depends_on('essl threads=openmp', when='blas=essl +openmp_blas ~int64_blas')
- depends_on('essl threads=openmp +ilp64', when='blas=essl +openmp_blas +int64_blas')
+ depends_on('essl', when='blas=essl')
+ depends_on('essl +ilp64', when='blas=essl +int64_blas')
+ depends_on('essl threads=openmp', when='blas=essl +openmp_blas')
depends_on('netlib-lapack +external-blas', when='blas=essl')
- # Legacy builds require cuda
- conflicts('~cuda', when='+legacy')
+ # Distconv builds require cuda
+ conflicts('~cuda', when='+distconv')
conflicts('+distconv', when='+half')
conflicts('+rocm', when='+half')
@@ -132,6 +118,8 @@ class Dihydrogen(CMakePackage, CudaPackage, ROCmPackage):
depends_on('nvshmem', when='+nvshmem')
+ # Idenfity versions of cuda_arch that are too old
+ # from lib/spack/spack/build_systems/cuda.py
illegal_cuda_arch_values = [
'10', '11', '12', '13',
'20', '21',
@@ -179,12 +167,12 @@ class Dihydrogen(CMakePackage, CudaPackage, ROCmPackage):
' '.join(self.cuda_flags(cuda_arch))
))
- if '+cuda' in spec or '+legacy' in spec:
+ if '+cuda' in spec or '+distconv' in spec:
args.append('-DcuDNN_DIR={0}'.format(
spec['cudnn'].prefix))
if spec.satisfies('^cuda@:10.99'):
- if '+cuda' in spec or '+legacy' in spec:
+ if '+cuda' in spec or '+distconv' in spec:
args.append('-DCUB_DIR={0}'.format(
spec['cub'].prefix))
diff --git a/var/spack/repos/builtin/packages/elemental/package.py b/var/spack/repos/builtin/packages/elemental/package.py
index 4431dab782..5dea8f1421 100644
--- a/var/spack/repos/builtin/packages/elemental/package.py
+++ b/var/spack/repos/builtin/packages/elemental/package.py
@@ -61,14 +61,14 @@ class Elemental(CMakePackage):
# Allow Elemental to build internally when using 8-byte ints
depends_on('openblas threads=openmp', when='blas=openblas +openmp_blas ~int64_blas')
- depends_on('intel-mkl', when="blas=mkl ~openmp_blas ~int64_blas")
- depends_on('intel-mkl threads=openmp', when='blas=mkl +openmp_blas ~int64_blas')
- depends_on('intel-mkl@2017.1 +openmp +ilp64', when='blas=mkl +openmp_blas +int64_blas')
+ depends_on('intel-mkl', when="blas=mkl")
+ depends_on('intel-mkl threads=openmp', when='blas=mkl +openmp_blas')
+ depends_on('intel-mkl@2017.1 +ilp64', when='blas=mkl +int64_blas')
depends_on('veclibfort', when='blas=accelerate')
- depends_on('essl ~cuda', when='blas=essl ~openmp_blas ~int64_blas')
- depends_on('essl threads=openmp', when='blas=essl +openmp_blas ~int64_blas')
+ depends_on('essl', when='blas=essl')
+ depends_on('essl threads=openmp', when='blas=essl +openmp_blas')
# Note that this forces us to use OpenBLAS until #1712 is fixed
depends_on('lapack', when='blas=openblas ~openmp_blas')
diff --git a/var/spack/repos/builtin/packages/hydrogen/package.py b/var/spack/repos/builtin/packages/hydrogen/package.py
index 339f1370be..00b30c4d6b 100644
--- a/var/spack/repos/builtin/packages/hydrogen/package.py
+++ b/var/spack/repos/builtin/packages/hydrogen/package.py
@@ -85,7 +85,6 @@ class Hydrogen(CMakePackage, CudaPackage, ROCmPackage):
conflicts('blas=accelerate +openmp_blas')
depends_on('essl', when='blas=essl')
- depends_on('essl -cuda', when='blas=essl -openmp_blas')
depends_on('essl +ilp64', when='blas=essl +int64_blas')
depends_on('essl threads=openmp', when='blas=essl +openmp_blas')
depends_on('netlib-lapack +external-blas', when='blas=essl')
diff --git a/var/spack/repos/builtin/packages/lbann/package.py b/var/spack/repos/builtin/packages/lbann/package.py
index 1023cc91b8..cca38f266e 100644
--- a/var/spack/repos/builtin/packages/lbann/package.py
+++ b/var/spack/repos/builtin/packages/lbann/package.py
@@ -182,7 +182,7 @@ class Lbann(CMakePackage, CudaPackage, ROCmPackage):
depends_on('python@3: +shared', type=('build', 'run'), when='@:0.90,0.99: +pfe')
extends("python", when='+pfe')
depends_on('py-setuptools', type='build', when='+pfe')
- depends_on('py-argparse', type='run', when='@:0.90,0.99: ^python@:2.6 +pfe')
+ depends_on('py-argparse', type='run', when='@:0.90,0.99: +pfe ^python@:2.6')
depends_on('py-configparser', type='run', when='@:0.90,0.99: +pfe +extras')
depends_on('py-graphviz@0.10.1:', type='run', when='@:0.90,0.99: +pfe +extras')
depends_on('py-matplotlib@3.0.0:', type='run', when='@:0.90,0.99: +pfe +extras')