From 514c8254fe9a8a461c6c9a2167807a32ed11db25 Mon Sep 17 00:00:00 2001 From: zhangxiaokun Date: Tue, 29 Dec 2020 19:02:39 +0800 Subject: [PATCH] Add GetRunAddress --- .../load/new_model_manager/davinci_model.cc | 35 +++++++++++-------- .../load/new_model_manager/davinci_model.h | 2 ++ 2 files changed, 23 insertions(+), 14 deletions(-) diff --git a/ge/graph/load/new_model_manager/davinci_model.cc b/ge/graph/load/new_model_manager/davinci_model.cc index 20cb3172..5e658d68 100755 --- a/ge/graph/load/new_model_manager/davinci_model.cc +++ b/ge/graph/load/new_model_manager/davinci_model.cc @@ -2802,6 +2802,19 @@ void DavinciModel::UnbindTaskSinkStream() { } } +void *DavinciModel::GetRunAddress(void *addr) const { + if (fixed_mem_base_ == reinterpret_cast(mem_base_)) { + return addr; + } + + uintptr_t ptr = reinterpret_cast(io_addrs[i]); + if ((fixed_mem_base_ <= ptr) && (ptr < fixed_mem_base_ + runtime_param_.mem_size)) { + return mem_base_ + (ptr - fixed_mem_base_); + } else { + return addr; + } +} + Status DavinciModel::CreateKnownZeroCopyMap(const vector &inputs, const vector &outputs) { GELOGI("in, inputs size: %zu, input addr size: %zu, outputs size: %zu, output addr size: %zu", inputs.size(), input_addrs_list_.size(), outputs.size(), output_addrs_list_.size()); @@ -2814,8 +2827,9 @@ Status DavinciModel::CreateKnownZeroCopyMap(const vector &inputs, const known_output_data_info_.clear(); for (size_t i = 0; i < inputs.size(); ++i) { const vector &addr_list = input_addrs_list_[i]; - known_input_data_info_[addr_list[kDataIndex]] = inputs[i]; - GELOGI("input %zu, v addr %p, p addr %p", i, addr_list[kDataIndex], inputs[i]); + void *addr = GetRunAddress(addr_list[kDataIndex]); + known_input_data_info_[addr] = inputs[i]; + GELOGI("input %zu, v addr %p, r addr %p, p addr %p", i, addr_list[kDataIndex], addr, inputs[i]); } if (output_addrs_list_.empty()) { @@ -2824,8 +2838,9 @@ Status DavinciModel::CreateKnownZeroCopyMap(const vector &inputs, const } const vector &addr_list = output_addrs_list_.front(); for (size_t i = 0; i < addr_list.size() && i < outputs.size(); ++i) { - known_output_data_info_[addr_list[i]] = outputs[i]; - GELOGI("output %zu, v addr %p, p addr %p", i, addr_list[i], outputs[i]); + void *addr = GetRunAddress(addr_list[kDataIndex]); + known_output_data_info_[addr] = outputs[i]; + GELOGI("output %zu, v addr %p, r addr %p, p addr %p", i, addr_list[i], addr, outputs[i]); } GELOGI("success, known input data info size: %zu, known output data info size: %zu", @@ -2840,22 +2855,14 @@ void DavinciModel::SetTotalIOAddrs(const vector &io_addrs) { } for (size_t i = 0; i < io_addrs.size(); ++i) { - uintptr_t addr = reinterpret_cast(io_addrs[i]); - if ((fixed_mem_base_ <= addr) && (addr < fixed_mem_base_ + runtime_param_.mem_size)) { - total_io_addrs_.emplace_back(mem_base_ + (addr - fixed_mem_base_)); - } else { - total_io_addrs_.emplace_back(io_addrs[i]); - } + total_io_addrs_.emplace_back(GetRunAddress(io_addrs[i])); } } Status DavinciModel::UpdateKnownZeroCopyAddr(vector &total_io_addrs) { if (fixed_mem_base_ != reinterpret_cast(mem_base_)) { for (size_t i = 0; i < total_io_addrs.size(); ++i) { - uintptr_t addr = reinterpret_cast(total_io_addrs[i]); - if ((fixed_mem_base_ <= addr) && (addr < fixed_mem_base_ + runtime_param_.mem_size)) { - total_io_addrs[i] = mem_base_ + (addr - fixed_mem_base_); - } + total_io_addrs[i] = GetRunAddress(total_io_addrs[i]); } } diff --git a/ge/graph/load/new_model_manager/davinci_model.h b/ge/graph/load/new_model_manager/davinci_model.h index 9c10b8a7..906c0548 100755 --- a/ge/graph/load/new_model_manager/davinci_model.h +++ b/ge/graph/load/new_model_manager/davinci_model.h @@ -566,6 +566,8 @@ class DavinciModel { struct timeInfo time_info_; int32_t dataInputTid; + void *GetRunAddress(void *addr) const; + /// /// @ingroup ge /// @brief Copy Check input size and model op size.