at master 2.5 kB view raw
1From 9e4e58b647c17c5fa098c8a74e221f88d3cb1a43 Mon Sep 17 00:00:00 2001 2From: Luna Nova <git@lunnova.dev> 3Date: Sun, 24 Aug 2025 07:41:30 -0700 4Subject: [PATCH] [AMD] Search HIP_PATH, hipconfig, and ROCM_PATH for 5 libamdhip64 6 7Search for libamdhip64 from HIP_PATH env var, hipconfig --path output, 8and ROCM_PATH before looking in system-wide ldconfig or /opt/rocm. 9 10The system-wide ROCm path isn't guaranteed to be where the ROCm 11install we're building against is located, so follow typical ROCm 12lib behavior and look under env paths first. 13 14This is especially important for non-FHS distros like NixOS 15where /opt/rocm never exists, but may be useful in more 16typical distros if multiple ROCm installs are present 17to ensure the right libamdhip64.so is picked up. 18--- 19 third_party/amd/backend/driver.py | 28 ++++++++++++++++++++++++++++ 20 1 file changed, 28 insertions(+) 21 22diff --git a/third_party/amd/backend/driver.py b/third_party/amd/backend/driver.py 23index af8e1a5c8097..57b0f7388c60 100644 24--- a/third_party/amd/backend/driver.py 25+++ b/third_party/amd/backend/driver.py 26@@ -110,6 +110,34 @@ def _get_path_to_hip_runtime_dylib(): 27 return f 28 paths.append(f) 29 30+ # HIP_PATH should point to HIP SDK root if set 31+ env_hip_path = os.getenv("HIP_PATH") 32+ if env_hip_path: 33+ hip_lib_path = os.path.join(env_hip_path, "lib", lib_name) 34+ if os.path.exists(hip_lib_path): 35+ return hip_lib_path 36+ paths.append(hip_lib_path) 37+ 38+ # if available, `hipconfig --path` prints the HIP SDK root 39+ try: 40+ hip_root = subprocess.check_output(["hipconfig", "--path"]).decode().strip() 41+ if hip_root: 42+ hip_lib_path = os.path.join(hip_root, "lib", lib_name) 43+ if os.path.exists(hip_lib_path): 44+ return hip_lib_path 45+ paths.append(hip_lib_path) 46+ except (subprocess.CalledProcessError, FileNotFoundError): 47+ # hipconfig may not be available 48+ pass 49+ 50+ # ROCm lib dir based on env var 51+ env_rocm_path = os.getenv("ROCM_PATH") 52+ if env_rocm_path: 53+ rocm_lib_path = os.path.join(env_rocm_path, "lib", lib_name) 54+ if os.path.exists(rocm_lib_path): 55+ return rocm_lib_path 56+ paths.append(rocm_lib_path) 57+ 58 # Afterwards try to search the loader dynamic library resolution paths. 59 libs = subprocess.check_output(["/sbin/ldconfig", "-p"]).decode(errors="ignore") 60 # each line looks like the following: