Skip to content

Commit 6920790

Browse files
committed
Versioned DLpack tensor deleter and owner tweaked
These tweaks are based on similar changes made for the managed tensor during memory work
1 parent c5e1859 commit 6920790

File tree

1 file changed

+5
-2
lines changed

1 file changed

+5
-2
lines changed

dpctl/tensor/_dlpack.pyx

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -154,8 +154,10 @@ cdef void _pycapsule_versioned_deleter(object dlt_capsule) noexcept:
154154

155155
cdef void _managed_tensor_versioned_deleter(DLManagedTensorVersioned *dlmv_tensor) noexcept with gil:
156156
if dlmv_tensor is not NULL:
157+
# we only delete shape, because we make single allocation to
158+
# acommodate both shape and strides if strides are needed
157159
stdlib.free(dlmv_tensor.dl_tensor.shape)
158-
cpython.Py_DECREF(<usm_ndarray>dlmv_tensor.manager_ctx)
160+
cpython.Py_DECREF(<object>dlmv_tensor.manager_ctx)
159161
dlmv_tensor.manager_ctx = NULL
160162
stdlib.free(dlmv_tensor)
161163

@@ -535,14 +537,15 @@ cdef class _DLManagedTensorVersionedOwner:
535537
Helper class managing the lifetime of the DLManagedTensorVersioned
536538
struct transferred from a 'dlpack_versioned' capsule.
537539
"""
538-
cdef DLManagedTensorVersioned *dlmv_tensor
540+
cdef DLManagedTensorVersioned * dlmv_tensor
539541

540542
def __cinit__(self):
541543
self.dlmv_tensor = NULL
542544

543545
def __dealloc__(self):
544546
if self.dlmv_tensor:
545547
self.dlmv_tensor.deleter(self.dlmv_tensor)
548+
self.dlmv_tensor = NULL
546549

547550
@staticmethod
548551
cdef _DLManagedTensorVersionedOwner _create(DLManagedTensorVersioned *dlmv_tensor_src):

0 commit comments

Comments
 (0)