File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1+ # SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
2+ # SPDX-License-Identifier: Apache-2.0
3+
4+ import threading
5+
6+ import pytest
7+
8+ from cuda .bindings import driver
9+ from cuda_python_test_helpers import driver_version_less_than
10+
11+ NUM_THREADS = 16
12+ NUM_ITERATIONS = 500
13+
14+
15+ @pytest .mark .agent_authored (model = "claude-sonnet-5-5" )
16+ @pytest .mark .skipif (
17+ driver_version_less_than (12090 ),
18+ reason = "cuLogs* functions were introduced in CUDA 12.9" ,
19+ )
20+ @pytest .mark .thread_unsafe (reason = "starts its own threads and needs them to overlap" )
21+ def test_culogs_register_unregister_from_many_threads ():
22+ (err ,) = driver .cuInit (0 )
23+ assert err == driver .CUresult .CUDA_SUCCESS
24+
25+ barrier = threading .Barrier (NUM_THREADS )
26+ failures = []
27+
28+ def worker ():
29+ try :
30+ barrier .wait ()
31+ for _ in range (NUM_ITERATIONS ):
32+ err , handle = driver .cuLogsRegisterCallback (0 , None )
33+ assert err == driver .CUresult .CUDA_SUCCESS
34+ (err ,) = driver .cuLogsUnregisterCallback (handle )
35+ assert err == driver .CUresult .CUDA_SUCCESS
36+ except BaseException as e :
37+ failures .append (e )
38+
39+ threads = [threading .Thread (target = worker ) for _ in range (NUM_THREADS )]
40+ for t in threads :
41+ t .start ()
42+ for t in threads :
43+ t .join ()
44+
45+ assert not failures , failures
You can’t perform that action at this time.
0 commit comments