From 89c8d444185028bff434dd6a54b6c7e5d5055cb3 Mon Sep 17 00:00:00 2001 From: "Adrien M. BERNEDE" <51493078+adrienbernede@users.noreply.github.com> Date: Wed, 19 Mar 2025 11:53:27 +0100 Subject: [PATCH] Clearly split old and new hip settings requirements --- lib/spack/spack/build_systems/cached_cmake.py | 25 +++++++++++++------ 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/lib/spack/spack/build_systems/cached_cmake.py b/lib/spack/spack/build_systems/cached_cmake.py index c9965bbc144..17360c240ba 100644 --- a/lib/spack/spack/build_systems/cached_cmake.py +++ b/lib/spack/spack/build_systems/cached_cmake.py @@ -278,9 +278,19 @@ def initconfig_hardware_entries(self): entries.append("# ROCm") entries.append("#------------------{0}\n".format("-" * 30)) + # Starting with blt@0.7, support for hip is handled with + # CMake enable_language(HIP). + # TODO: consider applying this all the time, and let package + # add specifics when necessary, e.g. when not using CMake + # support for HIP. if spec.satisfies("^blt@0.7:"): rocm_root = os.path.dirname(spec["llvm-amdgpu"].prefix) entries.append(cmake_cache_path("ROCM_PATH", rocm_root)) + + archs = self.spec.variants["amdgpu_target"].value + if archs[0] != "none": + arch_str = ";".join(archs) + entries.append(cmake_cache_string("CMAKE_HIP_ARCHITECTURES", arch_str)) 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))) @@ -292,16 +302,17 @@ def initconfig_hardware_entries(self): llvm_bin = os.path.join(llvm_prefix, "llvm/bin/") entries.append( cmake_cache_filepath( - "CMAKE_HIP_COMPILER", os.path.join(llvm_bin, "amdclang++") + "CMAKE_HIP_COMPILER", os.path.join(llvm_bin, "clang++") ) ) - archs = self.spec.variants["amdgpu_target"].value - if archs[0] != "none": - arch_str = ";".join(archs) - 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)) + archs = self.spec.variants["amdgpu_target"].value + if archs[0] != "none": + arch_str = ";".join(archs) + 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)) + if spec.satisfies("%gcc"): entries.append(