Skip to content

Commit 2c86825

Browse files
committed
release gil for record
1 parent 1f84a5a commit 2c86825

4 files changed

Lines changed: 19 additions & 10 deletions

File tree

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
from cuda.bindings cimport cydriver
2+
3+
4+
cdef class Event:
5+
6+
cdef:
7+
cydriver.CUevent _handle
8+
bint _timing_disabled
9+
bint _busy_waited
10+
int _device_id
11+
object _ctx_handle
12+
13+
cdef _shutdown_safe_close(self, is_shutting_down=*)
14+
cpdef close(self)

cuda_core/cuda/core/experimental/_event.pyx

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -81,13 +81,6 @@ cdef class Event:
8181
and they should instead be created through a :obj:`~_stream.Stream` object.
8282
8383
"""
84-
cdef:
85-
cydriver.CUevent _handle
86-
bint _timing_disabled
87-
bint _busy_waited
88-
int _device_id
89-
object _ctx_handle
90-
9184
def __cinit__(self):
9285
self._handle = <cydriver.CUevent>(NULL)
9386

cuda_core/cuda/core/experimental/_stream.pyx

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ from libc.stdint cimport uintptr_t
88

99
from cuda.bindings cimport cydriver
1010

11+
from cuda.core.experimental._event cimport Event as cyEvent
1112
from cuda.core.experimental._utils.cuda_utils cimport (
1213
check_or_create_options,
1314
HANDLE_RETURN,
@@ -292,8 +293,9 @@ cdef class Stream:
292293
if event is None:
293294
self._get_device_and_context()
294295
event = Event._init(self._device_id, self._ctx_handle, options)
295-
# TODO: revisit after Event is cythonized
296-
HANDLE_RETURN(cydriver.cuEventRecord(<cydriver.CUevent><uintptr_t>(event.handle), self._handle))
296+
cdef cydriver.CUevent e = (<cyEvent?>(event))._handle
297+
with nogil:
298+
HANDLE_RETURN(cydriver.cuEventRecord(e, self._handle))
297299
return event
298300

299301
def wait(self, event_or_stream: Union[Event, Stream]):

cuda_core/tests/test_stream.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ def test_stream_record(init_cuda):
5151

5252
def test_stream_record_invalid_event(init_cuda):
5353
stream = Device().create_stream(options=StreamOptions())
54-
with pytest.raises(AttributeError):
54+
with pytest.raises(TypeError):
5555
stream.record(event="invalid_event")
5656

5757

0 commit comments

Comments
 (0)