From 23d1b3e8ed8187bfb3bd926934dd6cc71e691e53 Mon Sep 17 00:00:00 2001 From: Jiabin Yang <360788950@qq.com> Date: Fri, 22 Apr 2022 11:19:45 +0800 Subject: [PATCH] [Eager] fix memory issue for eager (#42086) * fix memory issue for eager * fix bug --- paddle/fluid/eager/tensor_wrapper.h | 14 ++++++++++++++ paddle/phi/api/lib/tensor.cc | 6 +++++- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/paddle/fluid/eager/tensor_wrapper.h b/paddle/fluid/eager/tensor_wrapper.h index 405105771b..3ee1603a53 100644 --- a/paddle/fluid/eager/tensor_wrapper.h +++ b/paddle/fluid/eager/tensor_wrapper.h @@ -55,6 +55,20 @@ class TensorWrapper { if (full_reserved_) { VLOG(6) << "Fully reserved tensor: " << tensor.name(); intermidiate_tensor_ = tensor; + if (no_need_buffer_) { + if (phi::DenseTensor::classof(tensor.impl().get())) { + // Only Copy Meta + phi::DenseTensor* dense_tensor = + static_cast(tensor.impl().get()); + auto tw_dense_tensor = + std::make_shared(*dense_tensor); + tw_dense_tensor->clear(); + intermidiate_tensor_.set_impl(tw_dense_tensor); + } else { + PADDLE_THROW(paddle::platform::errors::Fatal( + "Unrecognized tensor type for no_need_buffer feature")); + } + } return; } diff --git a/paddle/phi/api/lib/tensor.cc b/paddle/phi/api/lib/tensor.cc index be0a937c91..a7b89d7a4d 100644 --- a/paddle/phi/api/lib/tensor.cc +++ b/paddle/phi/api/lib/tensor.cc @@ -341,7 +341,11 @@ bool Tensor::is_initialized() const { return defined() && impl_->initialized(); } -void Tensor::reset() { impl_.reset(); } +void Tensor::reset() { + impl_.reset(); + autograd_meta_.reset(); + name_ = ""; +} /* Part 6: Operator overloading */ -- GitLab