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:
parent
a3005d4a7c
commit
0d988700ba
@ -22,6 +22,7 @@ class Qmcpack(CMakePackage, CudaPackage):
|
|||||||
# can occasionally change.
|
# can occasionally change.
|
||||||
# NOTE: 12/19/2017 QMCPACK 3.0.0 does not build properly with Spack.
|
# NOTE: 12/19/2017 QMCPACK 3.0.0 does not build properly with Spack.
|
||||||
version('develop')
|
version('develop')
|
||||||
|
version('3.10.0', tag='v3.10.0')
|
||||||
version('3.9.2', tag='v3.9.2')
|
version('3.9.2', tag='v3.9.2')
|
||||||
version('3.9.1', tag='v3.9.1')
|
version('3.9.1', tag='v3.9.1')
|
||||||
version('3.9.0', tag='v3.9.0')
|
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 '
|
description='Build the mixed precision (mixture of single and '
|
||||||
'double precision) version')
|
'double precision) version')
|
||||||
variant('soa', default=True,
|
variant('soa', default=True,
|
||||||
description='Build with Structure-of-Array instead of '
|
description='Build with Structure-of-Array (SoA) instead of '
|
||||||
'Array-of-Structure code. Only for CPU code')
|
'Array-of-Structure code (AoS). This is a legacy '
|
||||||
variant('timers', default=False,
|
'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')
|
description='Build with support for timers')
|
||||||
variant('da', default=False,
|
variant('da', default=False,
|
||||||
description='Install with support for basic data analysis tools')
|
description='Install with support for basic data analysis tools')
|
||||||
@ -73,6 +76,11 @@ class Qmcpack(CMakePackage, CudaPackage):
|
|||||||
# by the OpenMP 4.5 code.
|
# by the OpenMP 4.5 code.
|
||||||
|
|
||||||
# high-level variant conflicts
|
# high-level variant conflicts
|
||||||
|
conflicts(
|
||||||
|
'~soa',
|
||||||
|
when='@3.10.0:',
|
||||||
|
msg='AoS code path is not available after QMCPACK v3.10.0')
|
||||||
|
|
||||||
conflicts(
|
conflicts(
|
||||||
'+phdf5',
|
'+phdf5',
|
||||||
when='~mpi',
|
when='~mpi',
|
||||||
@ -87,17 +95,28 @@ class Qmcpack(CMakePackage, CudaPackage):
|
|||||||
conflicts('^openblas+ilp64',
|
conflicts('^openblas+ilp64',
|
||||||
msg='QMCPACK does not support OpenBLAS 64-bit integer variant')
|
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
|
# Omitted for now due to concretizer bug
|
||||||
# conflicts('^intel-mkl+ilp64',
|
# conflicts('^intel-mkl+ilp64',
|
||||||
# msg='QMCPACK does not support MKL 64-bit integer variant')
|
# 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
|
# QMCPACK 3.6.0 or later requires support for C++14
|
||||||
compiler_warning = 'QMCPACK 3.6.0 or later requires a ' \
|
cpp14_warning = 'QMCPACK v3.6.0 or later requires a ' \
|
||||||
'compiler with support for C++14'
|
'compiler with support for C++14'
|
||||||
conflicts('%gcc@:4', when='@3.6.0:', msg=compiler_warning)
|
conflicts('%gcc@:4', when='@3.6.0:', msg=cpp14_warning)
|
||||||
conflicts('%intel@:17', when='@3.6.0:', msg=compiler_warning)
|
conflicts('%intel@:17', when='@3.6.0:', msg=cpp14_warning)
|
||||||
conflicts('%pgi@:17', when='@3.6.0:', msg=compiler_warning)
|
conflicts('%pgi@:17', when='@3.6.0:', msg=cpp14_warning)
|
||||||
conflicts('%llvm@:3.4', when='@3.6.0:', msg=compiler_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='@:3.6.0', msg='AFQMC not recommended before v3.7')
|
||||||
conflicts('+afqmc', when='~mpi', msg='AFQMC requires building with +mpi')
|
conflicts('+afqmc', when='~mpi', msg='AFQMC requires building with +mpi')
|
||||||
@ -125,6 +144,7 @@ class Qmcpack(CMakePackage, CudaPackage):
|
|||||||
# Essential libraries
|
# Essential libraries
|
||||||
depends_on('cmake@3.4.3:', when='@:3.5.0', type='build')
|
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.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')
|
||||||
depends_on('boost@1.61.0:', when='@3.6.0:')
|
depends_on('boost@1.61.0:', when='@3.6.0:')
|
||||||
depends_on('libxml2')
|
depends_on('libxml2')
|
||||||
@ -265,14 +285,7 @@ def cmake_args(self):
|
|||||||
'QMCPACK only supports compilation for a single '
|
'QMCPACK only supports compilation for a single '
|
||||||
'GPU architecture at a time'
|
'GPU architecture at a time'
|
||||||
)
|
)
|
||||||
if cuda_arch != 'none':
|
|
||||||
args.append('-DCUDA_ARCH=sm_{0}'.format(cuda_arch))
|
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')
|
|
||||||
else:
|
else:
|
||||||
args.append('-DQMC_CUDA=0')
|
args.append('-DQMC_CUDA=0')
|
||||||
|
|
||||||
@ -352,7 +365,6 @@ def install(self, spec, prefix):
|
|||||||
|
|
||||||
# We assume cwd is self.stage.source_path, then
|
# We assume cwd is self.stage.source_path, then
|
||||||
# install manual, labs, and nexus
|
# install manual, labs, and nexus
|
||||||
install_tree('manual', prefix.manual)
|
|
||||||
install_tree('labs', prefix.labs)
|
install_tree('labs', prefix.labs)
|
||||||
install_tree('nexus', prefix.nexus)
|
install_tree('nexus', prefix.nexus)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user