@@ -29,52 +29,38 @@ else:
2929 from cuda.core._utils.cuda_utils import driver, handle_return, runtime
3030
3131
32- def get_driver_version (kernel_mode: bool = False ) -> tuple[int , int]:
32+ def get_driver_version () -> tuple[tuple[ int , ...], tuple[ int , ...] ]:
3333 """
3434 Get the driver version.
3535
36- Parameters
37- ----------
38- kernel_mode: bool
39- When `True`, return the kernel-mode driver version , e.g. 580.65.06.
40- Otherwise , return the user-mode driver version , e.g. 13.0.1.
36+ Returns both the user-mode (UMD / CUDA ) driver version and the
37+ kernel-mode (KMD / GPU ) driver version.
4138
4239 Returns
4340 -------
44- version: tuple[int , int]
45- Tuple in the format `(MAJOR , MINOR )`.
41+ version : tuple[tuple[int , ...], tuple[int , ...]]
42+ ``(umd_version , kmd_version )`` where ``umd_version`` is typically
43+ a 2-tuple ``(MAJOR , MINOR )`` and ``kmd_version`` is typically
44+ a 3-tuple ``(MAJOR , MINOR , PATCH )``.
45+
46+ Raises
47+ ------
48+ RuntimeError
49+ If the NVML library is not available.
4650 """
47- return get_driver_version_full(kernel_mode )[:2]
51+ if not CUDA_BINDINGS_NVML_IS_COMPATIBLE:
52+ raise RuntimeError("get_driver_version requires NVML support")
53+ initialize()
4854
55+ # UMD (user-mode / CUDA toolkit ) version
56+ cdef int v
57+ v = nvml.system_get_cuda_driver_version()
58+ umd = (v // 1000 , (v // 10 ) % 100 )
4959
50- def get_driver_version_full(kernel_mode: bool = False ) -> tuple[int , int , int]:
51- """
52- Get the full driver version.
60+ # KMD (kernel-mode / GPU driver ) version
61+ kmd = tuple (int (x) for x in nvml.system_get_driver_version().split(" ." ))
5362
54- Parameters
55- ----------
56- kernel_mode: bool
57- When `True`, return the kernel-mode driver version , e.g. 580.65.06.
58- Otherwise , return the user-mode driver version , e.g. 13.0.1.
59-
60- Returns
61- -------
62- version: tuple[int , int , int]
63- Tuple in the format `(MAJOR , MINOR , PATCH )`.
64- """
65- cdef int v
66- if kernel_mode:
67- if not CUDA_BINDINGS_NVML_IS_COMPATIBLE:
68- raise ValueError("Kernel-mode driver version requires NVML support")
69- initialize()
70- return tuple(int(v ) for v in nvml.system_get_driver_version().split("."))
71- else:
72- if CUDA_BINDINGS_NVML_IS_COMPATIBLE:
73- initialize()
74- v = nvml.system_get_cuda_driver_version()
75- else:
76- v = handle_return(driver.cuDriverGetVersion())
77- return (v // 1000, (v // 10) % 100, v % 10)
63+ return (umd , kmd )
7864
7965
8066def get_nvml_version() -> tuple[int , ...]:
@@ -138,7 +124,6 @@ def get_process_name(pid: int) -> str:
138124__all__ = [
139125 " get_driver_branch" ,
140126 " get_driver_version" ,
141- " get_driver_version_full" ,
142127 " get_nvml_version" ,
143128 " get_num_devices" ,
144129 " get_process_name" ,
0 commit comments