summaryrefslogtreecommitdiff
path: root/var/spack/repos/builtin/packages/hip/package.py
diff options
context:
space:
mode:
Diffstat (limited to 'var/spack/repos/builtin/packages/hip/package.py')
-rw-r--r--var/spack/repos/builtin/packages/hip/package.py51
1 files changed, 35 insertions, 16 deletions
diff --git a/var/spack/repos/builtin/packages/hip/package.py b/var/spack/repos/builtin/packages/hip/package.py
index 72730c36a7..261b34e936 100644
--- a/var/spack/repos/builtin/packages/hip/package.py
+++ b/var/spack/repos/builtin/packages/hip/package.py
@@ -50,17 +50,25 @@ class Hip(CMakePackage):
patch('0002-Fix-detection-of-HIP_CLANG_ROOT.patch', when='@3.5.0:')
def setup_run_environment(self, env):
- env.set('ROCM_PATH', '')
+ # 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', self.spec['llvm-amdgpu'].prefix.bin)
- env.set('HSA_PATH', self.spec['hsa-rocr-dev'].prefix)
- env.set('ROCMINFO_PATH', self.spec['rocminfo'].prefix)
- env.set('HIP_PATH', self.prefix)
- env.set('DEVICE_LIB_PATH',
- self.spec['rocm-device-libs'].prefix.amdgcn.bitcode)
+ 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(self.prefix))
+ '--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)
@@ -85,31 +93,42 @@ class Hip(CMakePackage):
raise RuntimeError(msg)
return {
+ 'rocm-path': fallback_prefix,
'llvm-amdgpu': fallback_prefix.llvm,
'hsa-rocr-dev': fallback_prefix.hsa,
'rocminfo': fallback_prefix.bin,
'rocm-device-libs': fallback_prefix,
}
else:
- return dict((name, self.spec[name].prefix)
- for name in ('llvm-amdgpu', 'hsa-rocr-dev', 'rocminfo',
- 'rocm-device-libs'))
+ 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)
+ return mydict
def setup_dependent_build_environment(self, env, dependent_spec):
# Indirection for dependency paths because hip may be an external in
- # Spack. See block comment on get_rocm_prefix_info
+ # Spack. See block comment on get_rocm_prefix_info .
+
+ # 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', '')
+ 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',
- self.spec['rocm-device-libs'].prefix.amdgcn.bitcode)
+ 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(self.prefix))
+ '--rocm-path={0}'.format(rocm_prefixes['rocm-path']))
+
+ if 'amdgpu_target' in dependent_spec.variants:
+ arch = dependent_spec.variants['amdgpu_target'].value
+ if arch != 'none':
+ env.set('HCC_AMDGPU_TARGET', arch)
def setup_dependent_package(self, module, dependent_spec):
self.spec.hipcc = join_path(self.prefix.bin, 'hipcc')