spack recipe for gromacs with aocc compiler support (#19745)
* spack recipe for gromacs with aocc compiler support Change-Id: I364aab4a0aa2dcd44bc47eb50c81b2d94c99cfbd * Removed arch and other associated compilers flags Added cycle_subcounters variant Co-authored-by: vkallesh <Vijay-teekinavar.Kallesh@amd.com>
This commit is contained in:
parent
03ff89fee6
commit
3252fb05fa
@ -2,6 +2,8 @@
|
|||||||
# Spack Project Developers. See the top-level COPYRIGHT file for details.
|
# Spack Project Developers. See the top-level COPYRIGHT file for details.
|
||||||
#
|
#
|
||||||
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
||||||
|
|
||||||
|
|
||||||
class Gromacs(CMakePackage):
|
class Gromacs(CMakePackage):
|
||||||
"""GROMACS (GROningen MAchine for Chemical Simulations) is a molecular
|
"""GROMACS (GROningen MAchine for Chemical Simulations) is a molecular
|
||||||
dynamics package primarily designed for simulations of proteins, lipids
|
dynamics package primarily designed for simulations of proteins, lipids
|
||||||
@ -74,6 +76,10 @@ class Gromacs(CMakePackage):
|
|||||||
description='Use the hwloc portable hardware locality library')
|
description='Use the hwloc portable hardware locality library')
|
||||||
variant('lapack', default=False,
|
variant('lapack', default=False,
|
||||||
description='Enables an external LAPACK library')
|
description='Enables an external LAPACK library')
|
||||||
|
variant('blas', default=False,
|
||||||
|
description='Enables an external BLAS library')
|
||||||
|
variant('cycle_subcounters', default=False,
|
||||||
|
description='Enables cycle subcounters')
|
||||||
|
|
||||||
depends_on('mpi', when='+mpi')
|
depends_on('mpi', when='+mpi')
|
||||||
# define matching plumed versions
|
# define matching plumed versions
|
||||||
@ -88,15 +94,17 @@ class Gromacs(CMakePackage):
|
|||||||
depends_on('plumed+mpi', when='+plumed+mpi')
|
depends_on('plumed+mpi', when='+plumed+mpi')
|
||||||
depends_on('plumed~mpi', when='+plumed~mpi')
|
depends_on('plumed~mpi', when='+plumed~mpi')
|
||||||
depends_on('fftw-api@3')
|
depends_on('fftw-api@3')
|
||||||
|
depends_on('mkl', when='fft=mkl')
|
||||||
depends_on('cmake@2.8.8:3.99.99', type='build')
|
depends_on('cmake@2.8.8:3.99.99', type='build')
|
||||||
depends_on('cmake@3.4.3:3.99.99', type='build', when='@2018:')
|
depends_on('cmake@3.4.3:3.99.99', type='build', when='@2018:')
|
||||||
depends_on('cmake@3.13.0:3.99.99', type='build', when='@master')
|
depends_on('cmake@3.13.0:3.99.99', type='build', when='@master')
|
||||||
depends_on('cmake@3.13.0:3.99.99', type='build', when='%fj')
|
depends_on('cmake@3.13.0:3.99.99', type='build', when='%fj')
|
||||||
depends_on('cuda', when='+cuda')
|
depends_on('cuda', when='+cuda')
|
||||||
depends_on('lapack', when='+lapack')
|
depends_on('lapack', when='+lapack')
|
||||||
|
depends_on('blas', when='+blas')
|
||||||
|
|
||||||
# TODO: openmpi constraint; remove when concretizer is fixed
|
# TODO: openmpi constraint; remove when concretizer is fixed
|
||||||
depends_on('hwloc@:1.999', when='+hwloc')
|
depends_on('hwloc@:1.999', when='@:3.0.0')
|
||||||
|
|
||||||
patch('gmxDetectCpu-cmake-3.14.patch', when='@2018:2019.3^cmake@3.14.0:')
|
patch('gmxDetectCpu-cmake-3.14.patch', when='@2018:2019.3^cmake@3.14.0:')
|
||||||
patch('gmxDetectSimd-cmake-3.14.patch', when='@:2017.99^cmake@3.14.0:')
|
patch('gmxDetectSimd-cmake-3.14.patch', when='@:2017.99^cmake@3.14.0:')
|
||||||
@ -148,11 +156,19 @@ def cmake_args(self):
|
|||||||
if '+lapack' in self.spec:
|
if '+lapack' in self.spec:
|
||||||
options.append('-DGMX_EXTERNAL_LAPACK:BOOL=ON')
|
options.append('-DGMX_EXTERNAL_LAPACK:BOOL=ON')
|
||||||
if self.spec['lapack'].libs:
|
if self.spec['lapack'].libs:
|
||||||
options.append('-DLAPACK_LIBRARIES={0}'.format(
|
options.append('-DGMX_LAPACK_USER={0}'.format(
|
||||||
self.spec['lapack'].libs.joined(';')))
|
self.spec['lapack'].libs.joined(';')))
|
||||||
else:
|
else:
|
||||||
options.append('-DGMX_EXTERNAL_LAPACK:BOOL=OFF')
|
options.append('-DGMX_EXTERNAL_LAPACK:BOOL=OFF')
|
||||||
|
|
||||||
|
if '+blas' in self.spec:
|
||||||
|
options.append('-DGMX_EXTERNAL_BLAS:BOOL=ON')
|
||||||
|
if self.spec['blas'].libs:
|
||||||
|
options.append('-DGMX_BLAS_USER={0}'.format(
|
||||||
|
self.spec['blas'].libs.joined(';')))
|
||||||
|
else:
|
||||||
|
options.append('-DGMX_EXTERNAL_BLAS:BOOL=OFF')
|
||||||
|
|
||||||
# Activate SIMD based on properties of the target
|
# Activate SIMD based on properties of the target
|
||||||
target = self.spec.target
|
target = self.spec.target
|
||||||
if target >= 'zen2':
|
if target >= 'zen2':
|
||||||
@ -221,6 +237,11 @@ def cmake_args(self):
|
|||||||
else:
|
else:
|
||||||
options.append('-DGMX_RELAXED_DOUBLE_PRECISION:BOOL=OFF')
|
options.append('-DGMX_RELAXED_DOUBLE_PRECISION:BOOL=OFF')
|
||||||
|
|
||||||
|
if '+cycle_subcounters' in self.spec:
|
||||||
|
options.append('-DGMX_CYCLE_SUBCOUNTERS:BOOL=ON')
|
||||||
|
else:
|
||||||
|
options.append('-DGMX_CYCLE_SUBCOUNTERS:BOOL=OFF')
|
||||||
|
|
||||||
if '^mkl' in self.spec:
|
if '^mkl' in self.spec:
|
||||||
# fftw-api@3 is provided by intel-mkl or intel-parllel-studio
|
# fftw-api@3 is provided by intel-mkl or intel-parllel-studio
|
||||||
# we use the mkl interface of gromacs
|
# we use the mkl interface of gromacs
|
||||||
@ -234,5 +255,13 @@ def cmake_args(self):
|
|||||||
else:
|
else:
|
||||||
# we rely on the fftw-api@3
|
# we rely on the fftw-api@3
|
||||||
options.append('-DGMX_FFT_LIBRARY=fftw3')
|
options.append('-DGMX_FFT_LIBRARY=fftw3')
|
||||||
|
if '^amdfftw' in self.spec:
|
||||||
|
options.append('-DGMX_FFT_LIBRARY=fftw3')
|
||||||
|
options.append(
|
||||||
|
'-DFFTWF_INCLUDE_DIRS={0}'.
|
||||||
|
format(self.spec['amdfftw'].headers.directories[0])
|
||||||
|
)
|
||||||
|
options.append('-DFFTWF_LIBRARIES={0}'.
|
||||||
|
format(self.spec['amdfftw'].libs.joined(';')))
|
||||||
|
|
||||||
return options
|
return options
|
||||||
|
Loading…
Reference in New Issue
Block a user