diff options
author | David Beckingsale <davidbeckingsale@gmail.com> | 2021-09-17 21:29:41 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-09-17 21:29:41 -0700 |
commit | fa3265ea519ea64a67186a0bd395e275c292221f (patch) | |
tree | e55a2c5ce162a6ea5dd31927ce613757492f818e /var/spack/repos/builtin/packages/chai/package.py | |
parent | 79ac572f21b7852f012e173dd98a898018291b09 (diff) | |
download | spack-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.py | 97 |
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 |