Skip to content

Commit 85d5329

Browse files
committed
test(bindings): isolate CUDA 12 graph capture by thread
Signed-off-by: Ralf W. Grosse-Kunstleve <rgrossekunst@nvidia.com>
1 parent b3934df commit 85d5329

2 files changed

Lines changed: 12 additions & 3 deletions

File tree

‎cuda_bindings_12/tests/test_cuda.py‎

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -804,7 +804,10 @@ def host_fn(userData):
804804
err, stream = cuda.cuStreamCreate(0)
805805
assert err == cuda.CUresult.CUDA_SUCCESS
806806
try:
807-
(err,) = cuda.cuStreamBeginCapture(stream, cuda.CUstreamCaptureMode.CU_STREAM_CAPTURE_MODE_GLOBAL)
807+
# Thread-local mode: pytest-run-parallel runs this test in several threads
808+
# at once, and in global mode a call such as cuGraphInstantiate in one
809+
# thread fails while another thread is capturing.
810+
(err,) = cuda.cuStreamBeginCapture(stream, cuda.CUstreamCaptureMode.CU_STREAM_CAPTURE_MODE_THREAD_LOCAL)
808811
assert err == cuda.CUresult.CUDA_SUCCESS
809812
(err,) = cuda.cuLaunchHostFunc(stream, callback, ctypes.addressof(counter))
810813
assert err == cuda.CUresult.CUDA_SUCCESS

‎cuda_bindings_12/tests/test_cudart.py‎

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -521,7 +521,10 @@ def test_cudart_cudaStreamGetCaptureInfo():
521521
assert status == cudart.cudaStreamCaptureStatus.cudaStreamCaptureStatusNone
522522

523523
# start capture
524-
(err,) = cudart.cudaStreamBeginCapture(stream, cudart.cudaStreamCaptureMode.cudaStreamCaptureModeGlobal)
524+
# Thread-local mode: pytest-run-parallel runs this test in several threads
525+
# at once, and in global mode a call such as cudaGraphInstantiate in one
526+
# thread fails while another thread is capturing.
527+
(err,) = cudart.cudaStreamBeginCapture(stream, cudart.cudaStreamCaptureMode.cudaStreamCaptureModeThreadLocal)
525528
assertSuccess(err)
526529

527530
# validate that stream is capturing now
@@ -1374,7 +1377,10 @@ def host_fn(userData):
13741377
err, stream = cudart.cudaStreamCreate()
13751378
assertSuccess(err)
13761379
try:
1377-
(err,) = cudart.cudaStreamBeginCapture(stream, cudart.cudaStreamCaptureMode.cudaStreamCaptureModeGlobal)
1380+
# Thread-local mode: pytest-run-parallel runs this test in several threads
1381+
# at once, and in global mode a call such as cudaGraphInstantiate in one
1382+
# thread fails while another thread is capturing.
1383+
(err,) = cudart.cudaStreamBeginCapture(stream, cudart.cudaStreamCaptureMode.cudaStreamCaptureModeThreadLocal)
13781384
assertSuccess(err)
13791385
(err,) = cudart.cudaLaunchHostFunc(stream, callback, ctypes.addressof(counter))
13801386
assertSuccess(err)

0 commit comments

Comments
 (0)