Skip to content

Commit feda70e

Browse files
committed
Add nogil in one place.
1 parent ed26c87 commit feda70e

File tree

1 file changed

+11
-4
lines changed
  • cuda_core/cuda/core/experimental/_memory

1 file changed

+11
-4
lines changed

cuda_core/cuda/core/experimental/_memory/_dmr.pyx

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ from cuda.core.experimental._memory cimport _ipc
1414
from cuda.core.experimental._memory._ipc cimport IPCAllocationHandle, IPCData
1515
from cuda.core.experimental._stream cimport default_stream, Stream
1616
from cuda.core.experimental._utils.cuda_utils cimport (
17-
_check_driver_error as raise_if_driver_error,
1817
check_or_create_options,
1918
HANDLE_RETURN,
2019
)
@@ -75,9 +74,8 @@ class DeviceMemoryResourceAttributes:
7574
mr = self._mr()
7675
if mr is None:
7776
raise RuntimeError("DeviceMemoryResource is expired")
78-
# TODO: this implementation does not allow lowering to Cython + nogil
79-
err, value = driver.cuMemPoolGetAttribute(mr.handle, attr_enum)
80-
raise_if_driver_error(err)
77+
value = DMRA_getattribute(<cydriver.CUmemoryPool><uintptr_t> mr.handle,
78+
<cydriver.CUmemPool_attribute><uintptr_t> attr_enum)
8179
return property_type(value)
8280
return property(fget=fget, doc=stub.__doc__)
8381
return decorator
@@ -117,6 +115,15 @@ class DeviceMemoryResourceAttributes:
117115
del mempool_property
118116

119117

118+
cdef int DMRA_getattribute(
119+
cydriver.CUmemoryPool pool_handle, cydriver.CUmemPool_attribute attr_enum
120+
):
121+
cdef int value
122+
with nogil:
123+
HANDLE_RETURN(cydriver.cuMemPoolGetAttribute(pool_handle, attr_enum, <void *> &value))
124+
return value
125+
126+
120127
cdef class DeviceMemoryResource(MemoryResource):
121128
"""
122129
Create a device memory resource managing a stream-ordered memory pool.

0 commit comments

Comments
 (0)