Skip to content

Commit 389cd5a

Browse files
committed
Add _inspect_environment() in find_nvidia_dynamic_library.py, call from nvjitlink_windows.pyx, nvvm_windows.pyx
1 parent 00466f8 commit 389cd5a

4 files changed

Lines changed: 44 additions & 4 deletions

File tree

cuda_bindings/cuda/bindings/_internal/nvjitlink_windows.pyx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ from .utils cimport get_nvjitlink_dso_version_suffix
1010

1111
from .utils import FunctionNotFoundError, NotSupportedError
1212

13+
from cuda.bindings import path_finder
14+
1315
import os
1416
import site
1517

@@ -88,6 +90,8 @@ cdef load_library(const int driver_ver):
8890
else:
8991
raise RuntimeError('Failed to load nvJitLink')
9092

93+
path_finder.find_nvidia_dynamic_library("nvJitLink", handle)
94+
9195
assert handle != 0
9296
return handle
9397

cuda_bindings/cuda/bindings/_internal/nvvm_windows.pyx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ from .utils cimport get_nvvm_dso_version_suffix
1010

1111
from .utils import FunctionNotFoundError, NotSupportedError
1212

13+
from cuda.bindings import path_finder
14+
1315
import os
1416
import site
1517

@@ -86,6 +88,8 @@ cdef load_library(const int driver_ver):
8688
else:
8789
raise RuntimeError('Failed to load nvvm')
8890

91+
path_finder.find_nvidia_dynamic_library("nvvm", handle)
92+
8993
assert handle != 0
9094
return handle
9195

cuda_bindings/cuda/bindings/_path_finder_utils/find_nvidia_dynamic_library.py

Lines changed: 34 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,10 @@
55
import functools
66
import glob
77
import os
8+
import sys
9+
import traceback
810

9-
from .cuda_paths import get_cuda_paths
11+
from .cuda_paths import IS_WIN32, get_cuda_paths
1012
from .find_nvidia_lib_dirs import find_nvidia_lib_dirs
1113

1214

@@ -70,8 +72,38 @@ def _find_using_cudalib_dir(so_basename, error_messages, attachments):
7072
return None
7173

7274

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+
7397
@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
75107
so_basename = f"lib{libbasename}.so"
76108
error_messages = []
77109
attachments = []

cuda_bindings/tests/path_finder.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,5 +5,5 @@
55
for k, v in paths.items():
66
print(f"{k}: {v}", flush=True)
77

8-
print(path_finder.find_nvidia_dynamic_library("nvvm"))
9-
print(path_finder.find_nvidia_dynamic_library("nvJitLink"))
8+
print(path_finder.find_nvidia_dynamic_library("nvvm", "TEST"))
9+
print(path_finder.find_nvidia_dynamic_library("nvJitLink", "TEST"))

0 commit comments

Comments
 (0)