diff --git a/paddle/optimizer/Tensor.h b/paddle/optimizer/Tensor.h index 49b8dadaaef219517b15cfc99fc47f4eaabf9b83..80a8c93081ea7758d3b5ba016a14d424954db913 100644 --- a/paddle/optimizer/Tensor.h +++ b/paddle/optimizer/Tensor.h @@ -5,7 +5,6 @@ #include #include -#include "paddle/math/MemoryHandle.h" #include "paddle/utils/Common.h" #include "paddle/utils/Logging.h" @@ -15,17 +14,16 @@ namespace optimizer { template class TensorT { public: - TensorT(size_t size) - : TensorT(std::make_shared(size * sizeof(float)), size) { + TensorT(size_t size) : height_(1), width_(size) { + data_ptr_ = std::shared_ptr(new T[size], std::default_delete()); + data_ = data_ptr_.get(); } - TensorT(CpuMemHandlePtr handle, size_t size) - : height_(1), - width_(size), - data_(reinterpret_cast(handle->getBuf())) {} - TensorT(T* data, size_t size) : height_(1), width_(size), data_(data) {} + TensorT(T* data, size_t size) + : height_(1), width_(size), data_ptr_(nullptr), data_(data) {} - TensorT(T* data, size_t h, size_t w) : height_(h), width_(w), data_(data) {} + TensorT(T* data, size_t h, size_t w) + : height_(h), width_(w), data_ptr_(nullptr), data_(data) {} virtual ~TensorT() {} @@ -45,6 +43,7 @@ public: protected: size_t height_; size_t width_; + std::shared_ptr data_ptr_; T* data_; };