From 6c413ba9437a9170a7913fb8229ea1e536faef54 Mon Sep 17 00:00:00 2001 From: Megvii Engine Team Date: Fri, 18 Mar 2022 18:33:31 +0800 Subject: [PATCH] refactor(mge): refactor physical tensor GitOrigin-RevId: 93ba67ca5aa3ab06d47c985ca98d6df4927ae393 --- imperative/python/src/tensor_utils.cpp | 1 + imperative/src/impl/physical_tensor.cpp | 15 ++------------- 2 files changed, 3 insertions(+), 13 deletions(-) diff --git a/imperative/python/src/tensor_utils.cpp b/imperative/python/src/tensor_utils.cpp index f69d5c02..09695cf4 100644 --- a/imperative/python/src/tensor_utils.cpp +++ b/imperative/python/src/tensor_utils.cpp @@ -949,6 +949,7 @@ std::tuple, bool> tuple2vector(py::object shape) { } bool enable_fastpath(py::handle inp) { + // FIXME: the way to judge whether it is in traced module is inaccurate if (!TensorWrapper::try_cast(inp.ptr()) || TransformationManager::get_instance() .segments[TransformationManager::Segment::Trace] diff --git a/imperative/src/impl/physical_tensor.cpp b/imperative/src/impl/physical_tensor.cpp index fe301456..eea7b62d 100644 --- a/imperative/src/impl/physical_tensor.cpp +++ b/imperative/src/impl/physical_tensor.cpp @@ -113,12 +113,7 @@ Tensor::Tensor(const HostTensorND& hv) : Tensor(hv.layout(), hv.comp_node()) { MGB_RECORD_EVENT( profiler::HostToDeviceEvent, hv.layout(), hv.comp_node(), hv.raw_ptr(), dev_tensor().raw_ptr()); - DeviceTensorStorage storage; - storage.reset(m_cn, m_blob->size(), m_blob->storage()); - storage = storage.sub(m_offset); - DeviceTensorND dv; - dv.reset(storage, m_layout); - dv.copy_from_fixlayout(hv); + dev_tensor(false).copy_from_fixlayout(hv); // even though hv is saved in m_value, Tensor itself could be // released before copy completes MGB_RECORD_EVENT( @@ -218,15 +213,9 @@ megdnn::TensorND Tensor::dnn_tensor() { } void Tensor::fetch_value() { - MGB_LOCK_GUARD(m_blob_mtx); MGB_LOCK_GUARD(m_value_mtx); if (m_value.empty()) { - DeviceTensorStorage storage; - storage.reset(m_cn, m_blob->size(), m_blob->storage()); - storage = storage.sub(m_offset); - DeviceTensorND dv; - dv.reset(storage, m_layout); - m_value.copy_from(dv); + m_value.copy_from(dev_tensor(false)); m_value_ready.reset(EventPool::without_timer().alloc(comp_node())); m_value_ready->record(); }