QMCPACK: added v3.10.0 and updates to package recipe (#20199)

* cuda_arch value must be explictly set.

* QMCPACK LaTeX manual now converted to reStructuredText and directory no longer exists.
This commit is contained in:
Nichols A. Romero 2020-12-02 04:07:46 -06:00 committed by GitHub
parent a3005d4a7c
commit 0d988700ba
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -22,6 +22,7 @@ class Qmcpack(CMakePackage, CudaPackage):
# can occasionally change.
# NOTE: 12/19/2017 QMCPACK 3.0.0 does not build properly with Spack.
version('develop')
version('3.10.0', tag='v3.10.0')
version('3.9.2', tag='v3.9.2')
version('3.9.1', tag='v3.9.1')
version('3.9.0', tag='v3.9.0')
@ -47,9 +48,11 @@ class Qmcpack(CMakePackage, CudaPackage):
description='Build the mixed precision (mixture of single and '
'double precision) version')
variant('soa', default=True,
description='Build with Structure-of-Array instead of '
'Array-of-Structure code. Only for CPU code')
variant('timers', default=False,
description='Build with Structure-of-Array (SoA) instead of '
'Array-of-Structure code (AoS). This is a legacy '
'option and the AoS code is not available after '
'v3.10.0. Only affected performance, not results.')
variant('timers', default=True,
description='Build with support for timers')
variant('da', default=False,
description='Install with support for basic data analysis tools')
@ -73,6 +76,11 @@ class Qmcpack(CMakePackage, CudaPackage):
# by the OpenMP 4.5 code.
# high-level variant conflicts
conflicts(
'~soa',
when='@3.10.0:',
msg='AoS code path is not available after QMCPACK v3.10.0')
conflicts(
'+phdf5',
when='~mpi',
@ -87,17 +95,28 @@ class Qmcpack(CMakePackage, CudaPackage):
conflicts('^openblas+ilp64',
msg='QMCPACK does not support OpenBLAS 64-bit integer variant')
conflicts('cuda_arch=none',
when='+cuda',
msg='A value for cuda_arch must be specified. Add cuda_arch=XX')
# Omitted for now due to concretizer bug
# conflicts('^intel-mkl+ilp64',
# msg='QMCPACK does not support MKL 64-bit integer variant')
# QMCPACK 3.10.0 increased the minimum requirements for compiler versions
newer_compiler_warning = 'QMCPACK v3.10.0 or later requires a newer ' \
'version of this compiler'
conflicts('%gcc@:6', when='@3.10.0:', msg=newer_compiler_warning)
conflicts('%intel@:18', when='@3.10.0:', msg=newer_compiler_warning)
conflicts('%clang@:6', when='@3.10.0:', msg=newer_compiler_warning)
# QMCPACK 3.6.0 or later requires support for C++14
compiler_warning = 'QMCPACK 3.6.0 or later requires a ' \
'compiler with support for C++14'
conflicts('%gcc@:4', when='@3.6.0:', msg=compiler_warning)
conflicts('%intel@:17', when='@3.6.0:', msg=compiler_warning)
conflicts('%pgi@:17', when='@3.6.0:', msg=compiler_warning)
conflicts('%llvm@:3.4', when='@3.6.0:', msg=compiler_warning)
cpp14_warning = 'QMCPACK v3.6.0 or later requires a ' \
'compiler with support for C++14'
conflicts('%gcc@:4', when='@3.6.0:', msg=cpp14_warning)
conflicts('%intel@:17', when='@3.6.0:', msg=cpp14_warning)
conflicts('%pgi@:17', when='@3.6.0:', msg=cpp14_warning)
conflicts('%clang@:3.4', when='@3.6.0:', msg=cpp14_warning)
conflicts('+afqmc', when='@:3.6.0', msg='AFQMC not recommended before v3.7')
conflicts('+afqmc', when='~mpi', msg='AFQMC requires building with +mpi')
@ -125,6 +144,7 @@ class Qmcpack(CMakePackage, CudaPackage):
# Essential libraries
depends_on('cmake@3.4.3:', when='@:3.5.0', type='build')
depends_on('cmake@3.6.0:', when='@3.6.0:', type='build')
depends_on('cmake@3.14.0:', when='@3.10.0:', type='build')
depends_on('boost')
depends_on('boost@1.61.0:', when='@3.6.0:')
depends_on('libxml2')
@ -265,14 +285,7 @@ def cmake_args(self):
'QMCPACK only supports compilation for a single '
'GPU architecture at a time'
)
if cuda_arch != 'none':
args.append('-DCUDA_ARCH=sm_{0}'.format(cuda_arch))
else:
# This is the default value set in QMCPACK's CMake
# Not possible to set default value for cuda_arch,
# thus this won't be stored in the spec, which is
# a problem.
args.append('-DCUDA_ARCH=sm_35')
args.append('-DCUDA_ARCH=sm_{0}'.format(cuda_arch))
else:
args.append('-DQMC_CUDA=0')
@ -352,7 +365,6 @@ def install(self, spec, prefix):
# We assume cwd is self.stage.source_path, then
# install manual, labs, and nexus
install_tree('manual', prefix.manual)
install_tree('labs', prefix.labs)
install_tree('nexus', prefix.nexus)