summaryrefslogtreecommitdiff
path: root/var/spack/repos/builtin/packages/chai/package.py
diff options
context:
space:
mode:
authorDavid Beckingsale <davidbeckingsale@gmail.com>2021-09-17 21:29:41 -0700
committerGitHub <noreply@github.com>2021-09-17 21:29:41 -0700
commitfa3265ea519ea64a67186a0bd395e275c292221f (patch)
treee55a2c5ce162a6ea5dd31927ce613757492f818e /var/spack/repos/builtin/packages/chai/package.py
parent79ac572f21b7852f012e173dd98a898018291b09 (diff)
downloadspack-fa3265ea519ea64a67186a0bd395e275c292221f.tar.gz
spack-fa3265ea519ea64a67186a0bd395e275c292221f.tar.bz2
spack-fa3265ea519ea64a67186a0bd395e275c292221f.tar.xz
spack-fa3265ea519ea64a67186a0bd395e275c292221f.zip
Convert RAJA, CHAI and Umpire to CachedCMakePackages (#25788)
* Switch Umpire to CMakeCachedPackage * Fix missing import * Correct tests option in Umpire * Switch RAJA to CachedCMakePackage * Convert CHAI to CachedCMakePackage * Corrections in RAJA * Patches in Umpire & RAJA for BLT target export * Fixup style * Fixup incorrect use of cmake_cache_string
Diffstat (limited to 'var/spack/repos/builtin/packages/chai/package.py')
-rw-r--r--var/spack/repos/builtin/packages/chai/package.py97
1 files changed, 59 insertions, 38 deletions
diff --git a/var/spack/repos/builtin/packages/chai/package.py b/var/spack/repos/builtin/packages/chai/package.py
index 0c755a79e9..430dadc92f 100644
--- a/var/spack/repos/builtin/packages/chai/package.py
+++ b/var/spack/repos/builtin/packages/chai/package.py
@@ -3,10 +3,12 @@
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
+import socket
+
from spack import *
-class Chai(CMakePackage, CudaPackage, ROCmPackage):
+class Chai(CachedCMakePackage, CudaPackage, ROCmPackage):
"""
Copy-hiding array interface for data migration between memory spaces
"""
@@ -85,60 +87,79 @@ class Chai(CMakePackage, CudaPackage, ROCmPackage):
conflicts('+benchmarks', when='~tests')
- def cmake_args(self):
+ def _get_sys_type(self, spec):
+ sys_type = spec.architecture
+ if "SYS_TYPE" in env:
+ sys_type = env["SYS_TYPE"]
+ return sys_type
+
+ @property
+ def cache_name(self):
+ hostname = socket.gethostname()
+ if "SYS_TYPE" in env:
+ hostname = hostname.rstrip('1234567890')
+ return "{0}-{1}-{2}@{3}.cmake".format(
+ hostname,
+ self._get_sys_type(self.spec),
+ self.spec.compiler.name,
+ self.spec.compiler.version
+ )
+
+ def initconfig_hardware_entries(self):
spec = self.spec
+ entries = super(Chai, self).initconfig_hardware_entries()
- options = []
- options.append('-DBLT_SOURCE_DIR={0}'.format(spec['blt'].prefix))
-
- options.append(self.define_from_variant('ENABLE_OPENMP', 'openmp'))
+ entries.append(cmake_cache_option("ENABLE_OPENMP", '+openmp' in spec))
if '+cuda' in spec:
- options.extend([
- '-DENABLE_CUDA=ON',
- '-DCMAKE_CUDA_SEPARABLE_COMPILATION=On',
- '-DCUDA_SEPARABLE_COMPILATION=On',
- '-DCUDA_TOOLKIT_ROOT_DIR=' + spec['cuda'].prefix])
+ entries.append(cmake_cache_option("ENABLE_CUDA", True))
+ entries.append(cmake_cache_option("CMAKE_CUDA_SEPARABLE_COMPILATION", True))
+ entries.append(cmake_cache_option("CUDA_SEPARABLE_COMPILATION", True))
if not spec.satisfies('cuda_arch=none'):
cuda_arch = spec.variants['cuda_arch'].value
- options.append('-DCUDA_ARCH=sm_{0}'.format(cuda_arch[0]))
+ entries.append(cmake_cache_string(
+ "CUDA_ARCH", 'sm_{0}'.format(cuda_arch[0])))
+ entries.append(cmake_cache_string(
+ "CMAKE_CUDA_ARCHITECTURES", '{0}'.format(cuda_arch[0])))
flag = '-arch sm_{0}'.format(cuda_arch[0])
- options.append('-DCMAKE_CUDA_FLAGS:STRING={0}'.format(flag))
+ entries.append(cmake_cache_string(
+ "CMAKE_CUDA_FLAGS", '{0}'.format(flag)))
else:
- options.append('-DENABLE_CUDA=OFF')
+ entries.append(cmake_cache_option("ENABLE_CUDA", False))
if '+rocm' in spec:
- options.extend([
- '-DENABLE_HIP=ON',
- '-DHIP_ROOT_DIR={0}'.format(spec['hip'].prefix)
- ])
+ entries.append(cmake_cache_option("ENABLE_HIP", True))
+ entries.append(cmake_cache_path(
+ "HIP_ROOT_DIR", '{0}'.format(spec['hip'].prefix)))
archs = self.spec.variants['amdgpu_target'].value
if archs != 'none':
arch_str = ",".join(archs)
- options.append(
- '-DHIP_HIPCC_FLAGS=--amdgpu-target={0}'.format(arch_str)
- )
+ entries.append(cmake_cache_string(
+ "HIP_HIPCC_FLAGS", '--amdgpu-target={0}'.format(arch_str)))
else:
- options.append('-DENABLE_HIP=OFF')
-
- if '+raja' in spec:
- options.extend(['-DENABLE_RAJA_PLUGIN=ON',
- '-DRAJA_DIR=' + spec['raja'].prefix])
-
- options.append(self.define_from_variant('ENABLE_PICK', 'enable_pick'))
+ entries.append(cmake_cache_option("ENABLE_HIP", False))
- options.append('-Dumpire_DIR:PATH='
- + spec['umpire'].prefix.share.umpire.cmake)
+ return entries
- options.append('-DENABLE_TESTS={0}'.format(
- 'ON' if '+tests' in spec else 'OFF'))
-
- options.append(self.define_from_variant('ENABLE_BENCHMARKS', 'benchmarks'))
-
- options.append(self.define_from_variant('ENABLE_EXAMPLES', 'examples'))
+ def initconfig_package_entries(self):
+ spec = self.spec
+ entries = []
- options.append('-DENABLE_BENCHMARKS={0}'.format(
- 'ON' if '+benchmarks' in spec else 'OFF'))
+ entries.append(cmake_cache_path("BLT_SOURCE_DIR", spec['blt'].prefix))
+ if '+raja' in spec:
+ entries.append(cmake_cache_option("ENABLE_RAJA_PLUGIN", True))
+ entries.append(cmake_cache_path("RAJA_DIR", spec['raja'].prefix))
+ entries.append(cmake_cache_option('ENABLE_PICK', '+enable_pick' in spec))
+ entries.append(cmake_cache_path(
+ "umpire_DIR", spec['umpire'].prefix.share.umpire.cmake))
+ entries.append(cmake_cache_option("ENABLE_TESTS", '+tests' in spec))
+ entries.append(cmake_cache_option("ENABLE_BENCHMARKS", '+benchmarks' in spec))
+ entries.append(cmake_cache_option("ENABLE_EXAMPLES", '+examples' in spec))
+ entries.append(cmake_cache_option("BUILD_SHARED_LIBS", '+shared' in spec))
+
+ return entries
+ def cmake_args(self):
+ options = []
return options