Browse Source

refactor(mge): refactor physical tensor

GitOrigin-RevId: 93ba67ca5a
tags/v1.9.0
Megvii Engine Team 3 years ago
parent
commit
6c413ba943
2 changed files with 3 additions and 13 deletions
  1. +1
    -0
      imperative/python/src/tensor_utils.cpp
  2. +2
    -13
      imperative/src/impl/physical_tensor.cpp

+ 1
- 0
imperative/python/src/tensor_utils.cpp View File

@@ -949,6 +949,7 @@ std::tuple<std::vector<int32_t>, 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]


+ 2
- 13
imperative/src/impl/physical_tensor.cpp View File

@@ -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();
}


Loading…
Cancel
Save