From 9ff989aeae54472f766bc6ffef8a13111ca8da51 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=9F=B3=E6=99=93=E4=BC=9F?= <39303645+Shixiaowei02@users.noreply.github.com> Date: Fri, 14 Jan 2022 11:26:01 +0800 Subject: [PATCH] remove interface: DenseTensor::release, test=develop (#38937) --- paddle/fluid/pybind/eager_method.cc | 2 +- paddle/pten/api/lib/utils/tensor_utils.cc | 6 ++---- paddle/pten/core/dense_tensor.h | 6 ------ paddle/pten/tests/core/test_dense_tensor.cc | 7 ------- 4 files changed, 3 insertions(+), 18 deletions(-) diff --git a/paddle/fluid/pybind/eager_method.cc b/paddle/fluid/pybind/eager_method.cc index a8c1da2a8b8..46b56f27ff9 100644 --- a/paddle/fluid/pybind/eager_method.cc +++ b/paddle/fluid/pybind/eager_method.cc @@ -189,7 +189,7 @@ static PyObject* eager_tensor__clear_gradient(EagerTensorObject* self, << " is initialized, will be released."; auto dense_tensor = std::dynamic_pointer_cast(grad->impl()); - dense_tensor->release(); + dense_tensor->MoveMemoryHolder(); } Py_INCREF(Py_None); return Py_None; diff --git a/paddle/pten/api/lib/utils/tensor_utils.cc b/paddle/pten/api/lib/utils/tensor_utils.cc index 0b6cb8d95cc..53d641896e4 100644 --- a/paddle/pten/api/lib/utils/tensor_utils.cc +++ b/paddle/pten/api/lib/utils/tensor_utils.cc @@ -306,10 +306,8 @@ void MovesStorage(pten::DenseTensor* src, paddle::framework::Tensor* dst) { "The destination Tensor is nullptr when move storage.")); dst->Resize(src->dims()); dst->set_type(pten::TransToProtoVarType(src->dtype())); - auto storage = src->release(); - std::shared_ptr holder( - new TensorStorage(std::move(storage))); - dst->ResetHolderWithType(holder, pten::TransToProtoVarType(src->dtype())); + auto storage = src->MoveMemoryHolder(); + dst->ResetHolderWithType(storage, pten::TransToProtoVarType(src->dtype())); dst->set_offset(src->meta().offset); } diff --git a/paddle/pten/core/dense_tensor.h b/paddle/pten/core/dense_tensor.h index 1802a246115..4f25fc29672 100644 --- a/paddle/pten/core/dense_tensor.h +++ b/paddle/pten/core/dense_tensor.h @@ -172,12 +172,6 @@ class DenseTensor : public TensorBase, /// \return The actual storage size occupied by tensor. size_t capacity() const { return storage_->size(); } - /// \brief Release the storage area for other purposes. Because of the - /// destruction of encapsulation, we do not support two dense tensors directly - /// sharing the same intrusive pointer. - /// \return The rvalue of instrusize pointer releated to the released storage. - intrusive_ptr release() { return std::move(storage_); } - /// \brief Get the mutable data pointer value of type T. /// Memory allocation may occur when calling this interface: /// 1. When the storage size is not enough to meet the current shape of the diff --git a/paddle/pten/tests/core/test_dense_tensor.cc b/paddle/pten/tests/core/test_dense_tensor.cc index c6db228c2b7..8277c0d8dad 100644 --- a/paddle/pten/tests/core/test_dense_tensor.cc +++ b/paddle/pten/tests/core/test_dense_tensor.cc @@ -116,9 +116,6 @@ TEST(dense_tensor, resize) { CHECK_EQ(tensor_0.capacity(), 6u); tensor_0.mutable_data(); CHECK_EQ(tensor_0.capacity(), 6u); - - auto storage = tensor_0.release(); - CHECK_EQ(storage->size(), 6u); } TEST(dense_tensor, shallow_copy) { @@ -133,10 +130,6 @@ TEST(dense_tensor, shallow_copy) { DenseTensor tensor_1(tensor_0); CHECK(tensor_0.meta() == tensor_1.meta()); - - // Copy constructor: Now shares the underlying shared_ptr instead - // of Storage - CHECK(tensor_0.release() != tensor_1.release()); } } // namespace tests -- GitLab