wkcn commented on a change in pull request #12047: [MXNET-779]Add DLPack Transformation API URL: https://github.com/apache/incubator-mxnet/pull/12047#discussion_r209124075
########## File path: python/mxnet/_ctypes/ndarray.py ########## @@ -31,21 +31,24 @@ class NDArrayBase(object): """Base data structure for ndarray""" - __slots__ = ["handle", "writable"] + __slots__ = ["handle", "writable", "dlpack"] # pylint: disable= no-member - def __init__(self, handle, writable=True): + def __init__(self, handle, writable=True, dlpack=None): Review comment: NDArray in MXNet and TVM are different. NDArray in TVM has the function `IncRef` and `DecRef` to change the reference count, however that in MXNet uses `NDArray::ptr_` (std::shared_ptr<Chunk>) to manage the reference count. `NDArray::ptr_` is a private member of `NDArray`. The PR is similar to the PyTorch DLPack implementation [Code](https://github.com/pytorch/pytorch/blob/master/aten/src/ATen/DLConvertor.cpp#L128) I add a `NDArrayDLManager` to manage the reference count of NDArray. [Code](https://github.com/apache/incubator-mxnet/pull/12047/files#diff-67d2910557c85e38570cd7c4f940cdbdR315) line 315 in src/ndarray/ndarray.cc Setting `dlpack` as the NDArray(Python Class) member is to avoid the release of NDArrayDLManager, e.g. When the original NDArray and the PyCapsule (DLPack) are release, the new NDArray (generated by from_dlpack) still exists. ---------------------------------------------------------------- This is an automated message from the Apache Git Service. To respond to the message, please log on GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org With regards, Apache Git Services