33# SPDX-License-Identifier: LicenseRef-NVIDIA-SOFTWARE-LICENSE
44
55import functools
6+ import glob
67import os
78
89from .cuda_paths import get_cuda_paths
910from .find_nvidia_lib_dirs import find_nvidia_lib_dirs
1011
1112
1213def _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