summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--var/spack/repos/builtin/packages/cp2k/package.py17
1 files changed, 16 insertions, 1 deletions
diff --git a/var/spack/repos/builtin/packages/cp2k/package.py b/var/spack/repos/builtin/packages/cp2k/package.py
index e551e790a7..734b2c0aa3 100644
--- a/var/spack/repos/builtin/packages/cp2k/package.py
+++ b/var/spack/repos/builtin/packages/cp2k/package.py
@@ -20,6 +20,7 @@ class Cp2k(MakefilePackage, CudaPackage):
git = 'https://github.com/cp2k/cp2k.git'
list_url = 'https://github.com/cp2k/cp2k/releases'
+ version('7.1', sha256='ccd711a09a426145440e666310dd01cc5772ab103493c4ae6a3470898cd0addb')
version('6.1', sha256='af803558e0a6b9e9d9ce8a3ab955ba32bacd179922455424e061c82c9fefa34b')
version('5.1', sha256='e23613b593354fa82e0b8410e17d94c607a0b8c6d9b5d843528403ab09904412')
version('4.1', sha256='4a3e4a101d8a35ebd80a9e9ecb02697fb8256364f1eccdbe4e5a85d31fe21343')
@@ -43,6 +44,7 @@ class Cp2k(MakefilePackage, CudaPackage):
variant('sirius', default=False,
description=('Enable planewave electronic structure'
' calculations via SIRIUS'))
+ variant('cosma', default=False, description='Use COSMA for p?gemm')
# override cuda_arch from CudaPackage since we only support one arch
# at a time and only specific ones for which we have parameter files
@@ -104,10 +106,13 @@ class Cp2k(MakefilePackage, CudaPackage):
depends_on('mpi@2:', when='+mpi')
depends_on('scalapack', when='+mpi')
+ depends_on('cosma+scalapack', when='+cosma')
+ depends_on('cosma+cuda+scalapack', when='+cosma+cuda')
depends_on('elpa@2011.12:2016.13+openmp', when='+openmp+elpa@:5.999')
depends_on('elpa@2011.12:2017.11+openmp', when='+openmp+elpa@6.0:')
depends_on('elpa@2011.12:2016.13~openmp', when='~openmp+elpa@:5.999')
depends_on('elpa@2011.12:2017.11~openmp', when='~openmp+elpa@6.0:')
+ depends_on('elpa@2018.05:~openmp', when='~openmp+elpa@7.0:')
depends_on('plumed+shared+mpi', when='+plumed+mpi')
depends_on('plumed+shared~mpi', when='+plumed~mpi')
@@ -123,13 +128,17 @@ class Cp2k(MakefilePackage, CudaPackage):
depends_on('sirius+fortran+vdwxc+shared~openmp', when='+sirius~openmp')
# the bundled libcusmm uses numpy in the parameter prediction (v7+)
+ # which is written using Python 3
depends_on('py-numpy', when='@7:+cuda', type='build')
+ depends_on('python@3.6:', when='@7:+cuda', type='build')
- # PEXSI, ELPA and SIRIUS need MPI in CP2K
+ # PEXSI, ELPA, COSMA and SIRIUS depend on MPI
conflicts('~mpi', '+pexsi')
conflicts('~mpi', '+elpa')
conflicts('~mpi', '+sirius')
+ conflicts('~mpi', '+cosma')
conflicts('+sirius', '@:6.999') # sirius support was introduced in 7+
+ conflicts('+cosma', '@:7.999') # COSMA support was introduced in 8+
conflicts('~cuda', '+cuda_fft')
conflicts('~cuda', '+cuda_blas')
@@ -286,6 +295,12 @@ class Cp2k(MakefilePackage, CudaPackage):
elif self.spec.variants['blas'].value == 'accelerate':
cppflags += ['-D__ACCELERATE']
+ if '+cosma' in spec:
+ # add before ScaLAPACK to override the p?gemm symbols
+ cosma = spec['cosma'].libs
+ ldflags.append(cosma.search_flags)
+ libs.extend(cosma)
+
# MPI
if '+mpi' in self.spec:
cppflags.extend([