@@ -14,7 +14,6 @@ from cuda.core.experimental._memory cimport _ipc
1414from cuda.core.experimental._memory._ipc cimport IPCAllocationHandle, IPCData
1515from cuda.core.experimental._stream cimport default_stream, Stream
1616from 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+
120127cdef class DeviceMemoryResource(MemoryResource):
121128 """
122129 Create a device memory resource managing a stream-ordered memory pool.
0 commit comments