|
5 | 5 | import functools |
6 | 6 | import glob |
7 | 7 | import os |
| 8 | +import sys |
| 9 | +import traceback |
8 | 10 |
|
9 | | -from .cuda_paths import get_cuda_paths |
| 11 | +from .cuda_paths import IS_WIN32, get_cuda_paths |
10 | 12 | from .find_nvidia_lib_dirs import find_nvidia_lib_dirs |
11 | 13 |
|
12 | 14 |
|
@@ -70,8 +72,38 @@ def _find_using_cudalib_dir(so_basename, error_messages, attachments): |
70 | 72 | return None |
71 | 73 |
|
72 | 74 |
|
| 75 | +def _inspect_environment(libbasename, handle): |
| 76 | + if IS_WIN32: |
| 77 | + import win32api |
| 78 | + |
| 79 | + dll_path = win32api.GetModuleFileName(handle) |
| 80 | + print(f"LOOOK {libbasename=} Loaded DLL path:", dll_path) |
| 81 | + error_messages = [] |
| 82 | + lib_dir = _get_cuda_paths_info("cudalib_dir", error_messages) |
| 83 | + if lib_dir is None: |
| 84 | + print(f"LOOOK {libbasename=} {error_messages=}") |
| 85 | + elif not os.path.isdir(lib_dir): |
| 86 | + print(f"LOOOK {libbasename=} not isdir({lib_dir=})") |
| 87 | + else: |
| 88 | + print(f"LOOOK {libbasename=} cudalib_dir {lib_dir=}") |
| 89 | + for node in sorted(os.listdir(lib_dir)): |
| 90 | + print(f"LOOOK {node}") |
| 91 | + for lib_dir in find_nvidia_lib_dirs(): |
| 92 | + print(f"LOOOK {libbasename=} NVIDIA {lib_dir=}") |
| 93 | + for node in sorted(os.listdir(lib_dir)): |
| 94 | + print(f"LOOOK {node}") |
| 95 | + |
| 96 | + |
73 | 97 | @functools.cache |
74 | | -def find_nvidia_dynamic_library(libbasename): |
| 98 | +def find_nvidia_dynamic_library(libbasename, handle=None): |
| 99 | + if handle is not None: |
| 100 | + try: |
| 101 | + _inspect_environment(libbasename, handle) |
| 102 | + except Exception as e: |
| 103 | + print("LOOOK EXCEPTION:") |
| 104 | + traceback.print_exception(type(e), e, e.__traceback__, file=sys.stdout) |
| 105 | + if IS_WIN32: |
| 106 | + return |
75 | 107 | so_basename = f"lib{libbasename}.so" |
76 | 108 | error_messages = [] |
77 | 109 | attachments = [] |
|
0 commit comments