diff options
author | Harmen Stoppels <harmenstoppels@gmail.com> | 2020-12-02 15:58:58 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-12-02 15:58:58 +0100 |
commit | b0baf429889ca22eaf8e7028ecb0061918c03dbd (patch) | |
tree | 1180c9c903738d0650409ad3999aaa156df1b876 /var | |
parent | e575a38d967cd20c44fa4eb515d543f0a21127ec (diff) | |
download | spack-b0baf429889ca22eaf8e7028ecb0061918c03dbd.tar.gz spack-b0baf429889ca22eaf8e7028ecb0061918c03dbd.tar.bz2 spack-b0baf429889ca22eaf8e7028ecb0061918c03dbd.tar.xz spack-b0baf429889ca22eaf8e7028ecb0061918c03dbd.zip |
Fix hipcc once more (#20095)
Diffstat (limited to 'var')
-rw-r--r-- | var/spack/repos/builtin/packages/camp/package.py | 15 | ||||
-rw-r--r-- | var/spack/repos/builtin/packages/chai/package.py | 24 | ||||
-rw-r--r-- | var/spack/repos/builtin/packages/hip/package.py | 46 | ||||
-rw-r--r-- | var/spack/repos/builtin/packages/raja/package.py | 16 | ||||
-rw-r--r-- | var/spack/repos/builtin/packages/rocblas/package.py | 8 | ||||
-rw-r--r-- | var/spack/repos/builtin/packages/umpire/package.py | 22 |
6 files changed, 68 insertions, 63 deletions
diff --git a/var/spack/repos/builtin/packages/camp/package.py b/var/spack/repos/builtin/packages/camp/package.py index 0d0f26280c..882bfec528 100644 --- a/var/spack/repos/builtin/packages/camp/package.py +++ b/var/spack/repos/builtin/packages/camp/package.py @@ -6,7 +6,7 @@ from spack import * -class Camp(CMakePackage, CudaPackage, HipPackage): +class Camp(CMakePackage, CudaPackage, ROCmPackage): """ Compiler agnostic metaprogramming library providing concepts, type operations and tuples for C++ and cuda @@ -40,12 +40,17 @@ class Camp(CMakePackage, CudaPackage, HipPackage): else: options.append('-DENABLE_CUDA=OFF') - if '+hip' in spec: - arch = self.spec.variants['amdgpu_target'].value + if '+rocm' in spec: options.extend([ '-DENABLE_HIP=ON', - '-DHIP_ROOT_DIR={0}'.format(spec['hip'].prefix), - '-DHIP_HIPCC_FLAGS=--amdgpu-target={0}'.format(arch)]) + '-DHIP_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) + ) else: options.append('-DENABLE_HIP=OFF') diff --git a/var/spack/repos/builtin/packages/chai/package.py b/var/spack/repos/builtin/packages/chai/package.py index d4fa53071d..6fd33dea8b 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, HipPackage): +class Chai(CMakePackage, CudaPackage, ROCmPackage): """ Copy-hiding array interface for data migration between memory spaces """ @@ -36,12 +36,11 @@ class Chai(CMakePackage, CudaPackage, HipPackage): depends_on('umpire+cuda', when="+cuda") depends_on('raja+cuda', when="+raja+cuda") - # variants +hip and amdgpu_targets are not automatically passed to + # variants +rocm 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+rocm', when='+rocm') + depends_on('raja+rocm', when="+raja+rocm") + for val in ROCmPackage.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) @@ -63,12 +62,17 @@ class Chai(CMakePackage, CudaPackage, HipPackage): else: options.append('-DENABLE_CUDA=OFF') - if '+hip' in spec: - arch = self.spec.variants['amdgpu_target'].value + if '+rocm' in spec: options.extend([ '-DENABLE_HIP=ON', - '-DHIP_ROOT_DIR={0}'.format(spec['hip'].prefix), - '-DHIP_HIPCC_FLAGS=--amdgpu-target={0}'.format(arch)]) + '-DHIP_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) + ) else: options.append('-DENABLE_HIP=OFF') diff --git a/var/spack/repos/builtin/packages/hip/package.py b/var/spack/repos/builtin/packages/hip/package.py index 2712832564..91d9fcb8af 100644 --- a/var/spack/repos/builtin/packages/hip/package.py +++ b/var/spack/repos/builtin/packages/hip/package.py @@ -49,30 +49,6 @@ class Hip(CMakePackage): # See https://github.com/ROCm-Developer-Tools/HIP/pull/2141 patch('0002-Fix-detection-of-HIP_CLANG_ROOT.patch', when='@3.5.0:') - def setup_run_environment(self, env): - # NOTE: DO NOT PUT LOGIC LIKE self.spec[name] in this function!!!!! - # It DOES NOT WORK FOR EXTERNAL PACKAGES!!!! See get_rocm_prefix_info - rocm_prefixes = self.get_rocm_prefix_info() - - env.set('ROCM_PATH', rocm_prefixes['rocm-path']) - env.set('HIP_COMPILER', 'clang') - env.set('HIP_PLATFORM', 'hcc') - env.set('HIP_CLANG_PATH', rocm_prefixes['llvm-amdgpu'].bin) - env.set('HSA_PATH', rocm_prefixes['hsa-rocr-dev']) - env.set('ROCMINFO_PATH', rocm_prefixes['rocminfo']) - env.set('DEVICE_LIB_PATH', rocm_prefixes['rocm-device-libs'].lib) - env.set('HIP_PATH', rocm_prefixes['rocm-path']) - env.set('HIPCC_COMPILE_FLAGS_APPEND', - '--rocm-path={0}'.format(rocm_prefixes['rocm-path'])) - - if 'amdgpu_target' in self.spec.variants: - arch = self.spec.variants['amdgpu_target'].value - if arch != 'none': - env.set('HCC_AMDGPU_TARGET', arch) - - def setup_dependent_run_environment(self, env, dependent_spec): - self.setup_run_environment(env) - def get_rocm_prefix_info(self): # External packages in Spack do not currently contain dependency # information. External installations of hip therefore must compute @@ -98,15 +74,18 @@ class Hip(CMakePackage): 'hsa-rocr-dev': fallback_prefix.hsa, 'rocminfo': fallback_prefix.bin, 'rocm-device-libs': fallback_prefix, + 'device_lib_path': fallback_prefix } else: mydict = dict((name, self.spec[name].prefix) for name in ('llvm-amdgpu', 'hsa-rocr-dev', 'rocminfo', 'rocm-device-libs')) - mydict['rocm-path'] = os.path.dirname(self.spec.prefix) + mydict['rocm-path'] = self.spec.prefix + device_lib_path = mydict['rocm-device-libs'].amdgcn.bitcode + mydict['device_lib_path'] = device_lib_path return mydict - def setup_dependent_build_environment(self, env, dependent_spec): + def set_variables(self, env): # Indirection for dependency paths because hip may be an external in # Spack. See block comment on get_rocm_prefix_info . @@ -120,15 +99,24 @@ class Hip(CMakePackage): env.set('HIP_CLANG_PATH', rocm_prefixes['llvm-amdgpu'].bin) env.set('HSA_PATH', rocm_prefixes['hsa-rocr-dev']) env.set('ROCMINFO_PATH', rocm_prefixes['rocminfo']) - env.set('DEVICE_LIB_PATH', rocm_prefixes['rocm-device-libs'].lib) + env.set('DEVICE_LIB_PATH', rocm_prefixes['device_lib_path']) env.set('HIP_PATH', rocm_prefixes['rocm-path']) env.set('HIPCC_COMPILE_FLAGS_APPEND', - '--rocm-path={0}'.format(rocm_prefixes['rocm-path'])) + '--rocm-path={0}'.format(rocm_prefixes['device_lib_path'])) + + def setup_run_environment(self, env): + self.set_variables(env) + + def setup_dependent_build_environment(self, env, dependent_spec): + self.set_variables(env) if 'amdgpu_target' in dependent_spec.variants: arch = dependent_spec.variants['amdgpu_target'].value if arch != 'none': - env.set('HCC_AMDGPU_TARGET', arch) + env.set('HCC_AMDGPU_TARGET', ','.join(arch)) + + def setup_dependent_run_environment(self, env, dependent_spec): + self.setup_dependent_build_environment(env, dependent_spec) def setup_dependent_package(self, module, dependent_spec): self.spec.hipcc = join_path(self.prefix.bin, 'hipcc') diff --git a/var/spack/repos/builtin/packages/raja/package.py b/var/spack/repos/builtin/packages/raja/package.py index 7c139640f7..c2cdf5a607 100644 --- a/var/spack/repos/builtin/packages/raja/package.py +++ b/var/spack/repos/builtin/packages/raja/package.py @@ -4,7 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) -class Raja(CMakePackage, CudaPackage, HipPackage): +class Raja(CMakePackage, CudaPackage, ROCmPackage): """RAJA Parallel Framework.""" homepage = "http://software.llnl.gov/RAJA/" @@ -33,7 +33,7 @@ class Raja(CMakePackage, CudaPackage, HipPackage): variant('examples', default=True, description='Build examples.') variant('exercises', default=True, description='Build exercises.') - conflicts('+openmp', when='+hip') + conflicts('+openmp', when='+rocm') depends_on('cmake@3.8:', type='build') depends_on('cmake@3.9:', when='+cuda', type='build') @@ -56,12 +56,16 @@ class Raja(CMakePackage, CudaPackage, HipPackage): else: options.append('-DENABLE_CUDA=OFF') - if '+hip' in spec: - arch = self.spec.variants['amdgpu_target'].value + if '+rocm' in spec: options.extend([ '-DENABLE_HIP=ON', - '-DHIP_ROOT_DIR={0}'.format(spec['hip'].prefix), - '-DHIP_HIPCC_FLAGS=--amdgpu-target={0}'.format(arch)]) + '-DHIP_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) + ) else: options.append('-DENABLE_HIP=OFF') diff --git a/var/spack/repos/builtin/packages/rocblas/package.py b/var/spack/repos/builtin/packages/rocblas/package.py index 2c6127317a..66c63ce9ab 100644 --- a/var/spack/repos/builtin/packages/rocblas/package.py +++ b/var/spack/repos/builtin/packages/rocblas/package.py @@ -20,9 +20,9 @@ class Rocblas(CMakePackage): version('3.7.0', sha256='9425db5f8e8b6f7fb172d09e2a360025b63a4e54414607709efc5acb28819642') version('3.5.0', sha256='8560fabef7f13e8d67da997de2295399f6ec595edfd77e452978c140d5f936f0') - amdgpu_targets = ('all', 'gfx803', 'gfx900', 'gfx906', 'gfx908') + tensile_architecture = ('all', 'gfx803', 'gfx900', 'gfx906', 'gfx908') - variant('amdgpu_target', default='all', multi=True, values=amdgpu_targets) + variant('tensile_architecture', default='all', values=tensile_architecture, multi=False) depends_on('cmake@3:', type='build') @@ -73,7 +73,7 @@ class Rocblas(CMakePackage): env.set('CXX', self.spec['hip'].hipcc) def cmake_args(self): - archs = ",".join(self.spec.variants['amdgpu_target'].value) + arch = self.spec.variants['tensile_architecture'].value tensile = join_path(self.stage.source_path, 'Tensile') @@ -86,7 +86,7 @@ class Rocblas(CMakePackage): '-DBUILD_WITH_TENSILE=ON', '-DTensile_TEST_LOCAL_PATH={0}'.format(tensile), '-DTensile_COMPILER=hipcc', - '-DTensile_ARCHITECTURE={0}'.format(archs), + '-DTensile_ARCHITECTURE={0}'.format(arch), '-DTensile_LOGIC=asm_full', '-DTensile_CODE_OBJECT_VERSION=V3', '-DBUILD_WITH_TENSILE_HOST={0}'.format( diff --git a/var/spack/repos/builtin/packages/umpire/package.py b/var/spack/repos/builtin/packages/umpire/package.py index 14eed00747..8b035e59df 100644 --- a/var/spack/repos/builtin/packages/umpire/package.py +++ b/var/spack/repos/builtin/packages/umpire/package.py @@ -7,7 +7,7 @@ import llnl.util.lang as lang import llnl.util.tty as tty -class Umpire(CMakePackage, CudaPackage, HipPackage): +class Umpire(CMakePackage, CudaPackage, ROCmPackage): """An application-focused API for memory management on NUMA & GPU architectures""" @@ -62,11 +62,10 @@ class Umpire(CMakePackage, CudaPackage, HipPackage): depends_on('blt', type='build') - # variants +hip and amdgpu_targets are not automatically passed to + # variants +rocm and amdgpu_targets are not automatically passed to # dependencies, so do it manually. - depends_on('camp+hip', when='+hip') - amdgpu_targets = HipPackage.amd_gputargets_list() - for val in amdgpu_targets: + depends_on('camp+rocm', when='+rocm') + for val in ROCmPackage.amdgpu_targets: depends_on('camp amdgpu_target=%s' % val, when='amdgpu_target=%s' % val) depends_on('camp') @@ -97,12 +96,17 @@ class Umpire(CMakePackage, CudaPackage, HipPackage): else: options.append('-DENABLE_CUDA=Off') - if '+hip' in spec: - arch = self.spec.variants['amdgpu_target'].value + if '+rocm' in spec: options.extend([ '-DENABLE_HIP=ON', - '-DHIP_ROOT_DIR={0}'.format(spec['hip'].prefix), - '-DHIP_HIPCC_FLAGS=--amdgpu-target={0}'.format(arch)]) + '-DHIP_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) + ) else: options.append('-DENABLE_HIP=OFF') |