Skip to content

Commit 5d8b58b

Browse files
committed
Also look for versioned library in _find_using_nvidia_lib_dirs()
1 parent ec02838 commit 5d8b58b

1 file changed

Lines changed: 13 additions & 4 deletions

File tree

cuda_bindings/cuda/bindings/_path_finder_utils/find_nvidia_dynamic_library.py

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,27 @@
33
# SPDX-License-Identifier: LicenseRef-NVIDIA-SOFTWARE-LICENSE
44

55
import functools
6+
import glob
67
import os
78

89
from .cuda_paths import get_cuda_paths
910
from .find_nvidia_lib_dirs import find_nvidia_lib_dirs
1011

1112

1213
def _find_using_nvidia_lib_dirs(so_basename, error_messages, attachments):
14+
so_wild = so_basename + "*"
1315
for lib_dir in find_nvidia_lib_dirs():
16+
# First look for an exact match
1417
so_name = os.path.join(lib_dir, so_basename)
1518
if os.path.isfile(so_name):
1619
return so_name
17-
error_messages.append(f"No such file: {so_name}")
20+
# Look for a versioned library
21+
# Using sort here mainly to make the result deterministic.
22+
for node in sorted(glob.glob(so_wild, root_dir=lib_dir)):
23+
so_name = os.path.join(lib_dir, node)
24+
if os.path.isfile(so_name):
25+
return so_name
26+
error_messages.append(f"No such file: {so_wild}")
1827
for lib_dir in find_nvidia_lib_dirs():
1928
attachments.append(f" listdir({repr(lib_dir)}):")
2029
for node in sorted(os.listdir(lib_dir)):
@@ -33,7 +42,7 @@ def _get_cuda_paths_info(key, error_messages):
3342
return env_path_tuple.info
3443

3544

36-
def _find_using_lib_dir(so_basename, error_messages, attachments):
45+
def _find_using_cudalib_dir(so_basename, error_messages, attachments):
3746
lib_dir = _get_cuda_paths_info("cudalib_dir", error_messages)
3847
if lib_dir is None:
3948
return None
@@ -71,8 +80,8 @@ def find_nvidia_dynamic_library(libbasename):
7180
if libbasename == "nvvm":
7281
so_name = _get_cuda_paths_info("nvvm", error_messages)
7382
else:
74-
so_name = _find_using_lib_dir(so_basename, error_messages, attachments)
83+
so_name = _find_using_cudalib_dir(so_basename, error_messages, attachments)
7584
if so_name is None:
7685
attachments = "\n".join(attachments)
77-
raise RuntimeError(f"Unable to load {so_basename} from: {', '.join(error_messages)}\n{attachments}")
86+
raise RuntimeError(f"Failure finding {so_basename}: {', '.join(error_messages)}\n{attachments}")
7887
return so_name

0 commit comments

Comments
 (0)