diff options
Diffstat (limited to 'var/spack/repos/builtin/packages/hip/package.py')
-rw-r--r-- | var/spack/repos/builtin/packages/hip/package.py | 51 |
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') |