Skip to content

Commit c4b34e5

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 a7d255a commit c4b34e5

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
@@ -160,8 +160,10 @@ cdef void _pycapsule_versioned_deleter(object dlt_capsule) noexcept:
160160

161161
cdef void _managed_tensor_versioned_deleter(DLManagedTensorVersioned *dlmv_tensor) noexcept with gil:
162162
if dlmv_tensor is not NULL:
163+
# we only delete shape, because we make single allocation to
164+
# acommodate both shape and strides if strides are needed
163165
stdlib.free(dlmv_tensor.dl_tensor.shape)
164-
cpython.Py_DECREF(<usm_ndarray>dlmv_tensor.manager_ctx)
166+
cpython.Py_DECREF(<object>dlmv_tensor.manager_ctx)
165167
dlmv_tensor.manager_ctx = NULL
166168
stdlib.free(dlmv_tensor)
167169

@@ -543,14 +545,15 @@ cdef class _DLManagedTensorVersionedOwner:
543545
Helper class managing the lifetime of the DLManagedTensorVersioned
544546
struct transferred from a 'dlpack_versioned' capsule.
545547
"""
546-
cdef DLManagedTensorVersioned *dlmv_tensor
548+
cdef DLManagedTensorVersioned * dlmv_tensor
547549

548550
def __cinit__(self):
549551
self.dlmv_tensor = NULL
550552

551553
def __dealloc__(self):
552554
if self.dlmv_tensor:
553555
self.dlmv_tensor.deleter(self.dlmv_tensor)
556+
self.dlmv_tensor = NULL
554557

555558
@staticmethod
556559
cdef _DLManagedTensorVersionedOwner _create(DLManagedTensorVersioned *dlmv_tensor_src):

0 commit comments

Comments
 (0)