summaryrefslogtreecommitdiff
path: root/var/spack/repos/builtin/packages/chai/package.py
diff options
context:
space:
mode:
authorDanny Taller <66029857+dtaller@users.noreply.github.com>2020-11-18 11:52:21 -0800
committerGitHub <noreply@github.com>2020-11-18 11:52:21 -0800
commit3b9155239b83cd22074f8db057e9ad28f37f008e (patch)
tree585d87ef6a2463aab9cf5c5693af1854e8797a5c /var/spack/repos/builtin/packages/chai/package.py
parent676d68a9792b5bc6cea3ab91e77ed8a9eab10f55 (diff)
downloadspack-3b9155239b83cd22074f8db057e9ad28f37f008e.tar.gz
spack-3b9155239b83cd22074f8db057e9ad28f37f008e.tar.bz2
spack-3b9155239b83cd22074f8db057e9ad28f37f008e.tar.xz
spack-3b9155239b83cd22074f8db057e9ad28f37f008e.zip
hip support for umpire, chai, raja, camp (#19715)
* create HipPackage base class and do some refactoring * comments and added conflict to raja for openmp with hip
Diffstat (limited to 'var/spack/repos/builtin/packages/chai/package.py')
-rw-r--r--var/spack/repos/builtin/packages/chai/package.py27
1 files changed, 26 insertions, 1 deletions
diff --git a/var/spack/repos/builtin/packages/chai/package.py b/var/spack/repos/builtin/packages/chai/package.py
index c7bdebaac7..d4fa53071d 100644
--- a/var/spack/repos/builtin/packages/chai/package.py
+++ b/var/spack/repos/builtin/packages/chai/package.py
@@ -6,7 +6,7 @@
from spack import *
-class Chai(CMakePackage, CudaPackage):
+class Chai(CMakePackage, CudaPackage, HipPackage):
"""
Copy-hiding array interface for data migration between memory spaces
"""
@@ -36,6 +36,15 @@ class Chai(CMakePackage, CudaPackage):
depends_on('umpire+cuda', when="+cuda")
depends_on('raja+cuda', when="+raja+cuda")
+ # variants +hip and amdgpu_targets are not automatically passed to
+ # dependencies, so do it manually.
+ amdgpu_targets = HipPackage.amd_gputargets_list()
+ depends_on('umpire+hip', when='+hip')
+ depends_on('raja+hip', when="+raja+hip")
+ for val in amdgpu_targets:
+ depends_on('umpire amdgpu_target=%s' % val, when='amdgpu_target=%s' % val)
+ depends_on('raja amdgpu_target=%s' % val, when='+raja amdgpu_target=%s' % val)
+
def cmake_args(self):
spec = self.spec
@@ -54,6 +63,15 @@ class Chai(CMakePackage, CudaPackage):
else:
options.append('-DENABLE_CUDA=OFF')
+ if '+hip' in spec:
+ arch = self.spec.variants['amdgpu_target'].value
+ options.extend([
+ '-DENABLE_HIP=ON',
+ '-DHIP_ROOT_DIR={0}'.format(spec['hip'].prefix),
+ '-DHIP_HIPCC_FLAGS=--amdgpu-target={0}'.format(arch)])
+ else:
+ options.append('-DENABLE_HIP=OFF')
+
if '+raja' in spec:
options.extend(['-DENABLE_RAJA_PLUGIN=ON',
'-DRAJA_DIR=' + spec['raja'].prefix])
@@ -64,6 +82,13 @@ class Chai(CMakePackage, CudaPackage):
options.append('-DENABLE_TESTS={0}'.format(
'ON' if self.run_tests else 'OFF'))
+ # give clear error for conflict between self.run_tests and
+ # benchmarks variant.
+ if not self.run_tests and '+benchmarks' in spec:
+ raise InstallError(
+ 'ENABLE_BENCHMARKS requires ENABLE_TESTS to be ON'
+ )
+
options.append('-DENABLE_BENCHMARKS={0}'.format(
'ON' if '+benchmarks' in spec else 'OFF'))