| | |
| | |
| |
|
| | from typing import Any, Callable |
| |
|
| | from ._ptx_utils import get_minimal_required_cuda_ver_from_ptx_ver, get_ptx_ver |
| |
|
| | _handle_getters: dict[type, Callable[[Any], int]] = {} |
| |
|
| |
|
| | def _add_cuda_native_handle_getter(t: type, getter: Callable[[Any], int]) -> None: |
| | _handle_getters[t] = getter |
| |
|
| |
|
| | def get_cuda_native_handle(obj: Any) -> int: |
| | """Returns the address of the provided CUDA Python object as a Python int. |
| | |
| | Parameters |
| | ---------- |
| | obj : Any |
| | CUDA Python object |
| | |
| | Returns |
| | ------- |
| | int : The object address. |
| | """ |
| | obj_type = type(obj) |
| | try: |
| | return _handle_getters[obj_type](obj) |
| | except KeyError: |
| | raise TypeError("Unknown type: " + str(obj_type)) from None |
| |
|