Update hip support for Cached CMake Packages (#49635)
* Clearly split old and new hip settings requirements * Apply generic rocm handling to every project * make default logic for hip support more robust * GPU_TARGET is only necessary under certain project specific conditions, it should not be necessary in general * Update logic to find amdclang++
This commit is contained in:
parent
3c4cb0d4f3
commit
22c38e5975
@ -276,30 +276,18 @@ def initconfig_hardware_entries(self):
|
|||||||
entries.append("# ROCm")
|
entries.append("# ROCm")
|
||||||
entries.append("#------------------{0}\n".format("-" * 30))
|
entries.append("#------------------{0}\n".format("-" * 30))
|
||||||
|
|
||||||
if spec.satisfies("^blt@0.7:"):
|
|
||||||
rocm_root = os.path.dirname(spec["llvm-amdgpu"].prefix)
|
rocm_root = os.path.dirname(spec["llvm-amdgpu"].prefix)
|
||||||
entries.append(cmake_cache_path("ROCM_PATH", rocm_root))
|
entries.append(cmake_cache_path("ROCM_PATH", rocm_root))
|
||||||
else:
|
|
||||||
# Explicitly setting HIP_ROOT_DIR may be a patch that is no longer necessary
|
|
||||||
entries.append(cmake_cache_path("HIP_ROOT_DIR", "{0}".format(spec["hip"].prefix)))
|
|
||||||
llvm_bin = spec["llvm-amdgpu"].prefix.bin
|
|
||||||
llvm_prefix = spec["llvm-amdgpu"].prefix
|
|
||||||
# Some ROCm systems seem to point to /<path>/rocm-<ver>/ and
|
|
||||||
# others point to /<path>/rocm-<ver>/llvm
|
|
||||||
if os.path.basename(os.path.normpath(llvm_prefix)) != "llvm":
|
|
||||||
llvm_bin = os.path.join(llvm_prefix, "llvm/bin/")
|
|
||||||
entries.append(
|
|
||||||
cmake_cache_filepath(
|
|
||||||
"CMAKE_HIP_COMPILER", os.path.join(llvm_bin, "amdclang++")
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
archs = self.spec.variants["amdgpu_target"].value
|
archs = self.spec.variants["amdgpu_target"].value
|
||||||
if archs[0] != "none":
|
if archs[0] != "none":
|
||||||
arch_str = ";".join(archs)
|
arch_str = ";".join(archs)
|
||||||
entries.append(cmake_cache_string("CMAKE_HIP_ARCHITECTURES", arch_str))
|
entries.append(cmake_cache_string("CMAKE_HIP_ARCHITECTURES", arch_str))
|
||||||
entries.append(cmake_cache_string("AMDGPU_TARGETS", arch_str))
|
|
||||||
entries.append(cmake_cache_string("GPU_TARGETS", arch_str))
|
llvm_bin = spec["llvm-amdgpu"].prefix.bin
|
||||||
|
entries.append(
|
||||||
|
cmake_cache_filepath("CMAKE_HIP_COMPILER", os.path.join(llvm_bin, "amdclang++"))
|
||||||
|
)
|
||||||
|
|
||||||
if spec.satisfies("%gcc"):
|
if spec.satisfies("%gcc"):
|
||||||
entries.append(
|
entries.append(
|
||||||
@ -308,6 +296,15 @@ def initconfig_hardware_entries(self):
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# Extra definitions that might be required in other cases
|
||||||
|
if not spec.satisfies("^blt"):
|
||||||
|
entries.append(cmake_cache_path("HIP_ROOT_DIR", "{0}".format(spec["hip"].prefix)))
|
||||||
|
|
||||||
|
if archs[0] != "none":
|
||||||
|
arch_str = ";".join(archs)
|
||||||
|
entries.append(cmake_cache_string("AMDGPU_TARGETS", arch_str))
|
||||||
|
entries.append(cmake_cache_string("GPU_TARGETS", arch_str))
|
||||||
|
|
||||||
return entries
|
return entries
|
||||||
|
|
||||||
def std_initconfig_entries(self):
|
def std_initconfig_entries(self):
|
||||||
|
Loading…
Reference in New Issue
Block a user