Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 6 additions & 6 deletions cuda_bindings/cuda/bindings/_internal/driver_linux.pyx
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
# SPDX-License-Identifier: Apache-2.0
#
# This code was automatically generated across versions from 12.9.0 to 13.4.1. Do not modify it directly.
# CYTHON-BINDINGS-GENERATED-DO-NOT-MODIFY-THIS-FILE: format=1; content-sha256=f23c5b6833163c19813f5a513216d2a4192b545a5ae8a47ffe7c95ebbc9bdbaf
# CYTHON-BINDINGS-GENERATED-DO-NOT-MODIFY-THIS-FILE: format=1; content-sha256=c6a477ceb1a35675c0ffe5e40f9826ea3e3bd9cbec23720f78fe4cf28feafbe0


# <<<< PREAMBLE CONTENT >>>>
Expand Down Expand Up @@ -1896,19 +1896,19 @@ cdef int _init_driver() except -1 nogil:
cuGetProcAddress_v2('cuGreenCtxStreamCreate', <void **>&__cuGreenCtxStreamCreate, 12050, ptds_mode, NULL)

global __cuLogsRegisterCallback
cuGetProcAddress_v2('cuLogsRegisterCallback', <void **>&__cuLogsRegisterCallback, 12080, ptds_mode, NULL)
cuGetProcAddress_v2('cuLogsRegisterCallback', <void **>&__cuLogsRegisterCallback, 12090, ptds_mode, NULL)

global __cuLogsUnregisterCallback
cuGetProcAddress_v2('cuLogsUnregisterCallback', <void **>&__cuLogsUnregisterCallback, 12080, ptds_mode, NULL)
cuGetProcAddress_v2('cuLogsUnregisterCallback', <void **>&__cuLogsUnregisterCallback, 12090, ptds_mode, NULL)

global __cuLogsCurrent
cuGetProcAddress_v2('cuLogsCurrent', <void **>&__cuLogsCurrent, 12080, ptds_mode, NULL)
cuGetProcAddress_v2('cuLogsCurrent', <void **>&__cuLogsCurrent, 12090, ptds_mode, NULL)

global __cuLogsDumpToFile
cuGetProcAddress_v2('cuLogsDumpToFile', <void **>&__cuLogsDumpToFile, 12080, ptds_mode, NULL)
cuGetProcAddress_v2('cuLogsDumpToFile', <void **>&__cuLogsDumpToFile, 12090, ptds_mode, NULL)

global __cuLogsDumpToMemory
cuGetProcAddress_v2('cuLogsDumpToMemory', <void **>&__cuLogsDumpToMemory, 12080, ptds_mode, NULL)
cuGetProcAddress_v2('cuLogsDumpToMemory', <void **>&__cuLogsDumpToMemory, 12090, ptds_mode, NULL)

global __cuCheckpointProcessGetRestoreThreadId
cuGetProcAddress_v2('cuCheckpointProcessGetRestoreThreadId', <void **>&__cuCheckpointProcessGetRestoreThreadId, 12080, ptds_mode, NULL)
Expand Down
12 changes: 6 additions & 6 deletions cuda_bindings/cuda/bindings/_internal/driver_windows.pyx
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
# SPDX-License-Identifier: Apache-2.0
#
# This code was automatically generated across versions from 12.9.0 to 13.4.1. Do not modify it directly.
# CYTHON-BINDINGS-GENERATED-DO-NOT-MODIFY-THIS-FILE: format=1; content-sha256=f49a90c93b3876714d90f8948fabc654d408ba6c8bc3a122503b1d1ef663f434
# CYTHON-BINDINGS-GENERATED-DO-NOT-MODIFY-THIS-FILE: format=1; content-sha256=a04dbfec5a461010c493b3aca0b092910ff3eb49d31942a68c957309892b2aa6


# <<<< PREAMBLE CONTENT >>>>
Expand Down Expand Up @@ -1899,19 +1899,19 @@ cdef int _init_driver() except -1 nogil:
cuGetProcAddress_v2('cuGreenCtxStreamCreate', <void **>&__cuGreenCtxStreamCreate, 12050, ptds_mode, NULL)

global __cuLogsRegisterCallback
cuGetProcAddress_v2('cuLogsRegisterCallback', <void **>&__cuLogsRegisterCallback, 12080, ptds_mode, NULL)
cuGetProcAddress_v2('cuLogsRegisterCallback', <void **>&__cuLogsRegisterCallback, 12090, ptds_mode, NULL)

global __cuLogsUnregisterCallback
cuGetProcAddress_v2('cuLogsUnregisterCallback', <void **>&__cuLogsUnregisterCallback, 12080, ptds_mode, NULL)
cuGetProcAddress_v2('cuLogsUnregisterCallback', <void **>&__cuLogsUnregisterCallback, 12090, ptds_mode, NULL)

global __cuLogsCurrent
cuGetProcAddress_v2('cuLogsCurrent', <void **>&__cuLogsCurrent, 12080, ptds_mode, NULL)
cuGetProcAddress_v2('cuLogsCurrent', <void **>&__cuLogsCurrent, 12090, ptds_mode, NULL)

global __cuLogsDumpToFile
cuGetProcAddress_v2('cuLogsDumpToFile', <void **>&__cuLogsDumpToFile, 12080, ptds_mode, NULL)
cuGetProcAddress_v2('cuLogsDumpToFile', <void **>&__cuLogsDumpToFile, 12090, ptds_mode, NULL)

global __cuLogsDumpToMemory
cuGetProcAddress_v2('cuLogsDumpToMemory', <void **>&__cuLogsDumpToMemory, 12080, ptds_mode, NULL)
cuGetProcAddress_v2('cuLogsDumpToMemory', <void **>&__cuLogsDumpToMemory, 12090, ptds_mode, NULL)

global __cuCheckpointProcessGetRestoreThreadId
cuGetProcAddress_v2('cuCheckpointProcessGetRestoreThreadId', <void **>&__cuCheckpointProcessGetRestoreThreadId, 12080, ptds_mode, NULL)
Expand Down
36 changes: 36 additions & 0 deletions cuda_bindings/tests/test_cuda.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@
# SPDX-License-Identifier: Apache-2.0

import ctypes
import os
import shutil
import tempfile
import textwrap

import numpy as np
Expand All @@ -13,6 +15,7 @@
import cuda.bindings.driver as cuda
import cuda.bindings.runtime as cudart
from cuda.bindings import driver
from cuda.bindings._internal.utils import FunctionNotFoundError
from cuda_python_test_helpers import driver_version_less_than


Expand Down Expand Up @@ -974,6 +977,39 @@ def test_cuCheckpointProcessGetState_failure():
assert state is None


@pytest.mark.skipif(
driver_version_less_than(12090),
reason="cuLogs* functions were introduced in CUDA 12.9",
)
def test_culogs_functions():
try:
err, callback_handle = cuda.cuLogsRegisterCallback(0, None)
assert err == cuda.CUresult.CUDA_SUCCESS

err, _ = cuda.cuLogsCurrent(0)
assert err == cuda.CUresult.CUDA_SUCCESS

with tempfile.NamedTemporaryFile(delete=False) as f:
log_path = f.name
try:
err, _ = cuda.cuLogsDumpToFile(None, log_path.encode(), 0)
assert err == cuda.CUresult.CUDA_SUCCESS
finally:
os.remove(log_path)

# cuLogsDumpToMemory's own docstring states the driver's internal log
# buffer is capped at 25600 bytes, so a buffer of that size is always
# large enough to hold the dump without risking a buffer overrun.
buf = bytearray(25600)
err, _, _ = cuda.cuLogsDumpToMemory(None, buf, len(buf), 0)
assert err == cuda.CUresult.CUDA_SUCCESS

(err,) = cuda.cuLogsUnregisterCallback(callback_handle)
assert err == cuda.CUresult.CUDA_SUCCESS
except FunctionNotFoundError as e:
pytest.fail(f"cuLogs* function unexpectedly not found on the driver: {e}")


def test_private_function_pointer_inspector():
from cuda.bindings._internal.driver import _inspect_function_pointer

Expand Down
Loading