Browse Source

Add GetRunAddress

pull/803/head
zhangxiaokun 5 years ago
parent
commit
514c8254fe
2 changed files with 23 additions and 14 deletions
  1. +21
    -14
      ge/graph/load/new_model_manager/davinci_model.cc
  2. +2
    -0
      ge/graph/load/new_model_manager/davinci_model.h

+ 21
- 14
ge/graph/load/new_model_manager/davinci_model.cc View File

@@ -2802,6 +2802,19 @@ void DavinciModel::UnbindTaskSinkStream() {
}
}

void *DavinciModel::GetRunAddress(void *addr) const {
if (fixed_mem_base_ == reinterpret_cast<uintptr_t>(mem_base_)) {
return addr;
}

uintptr_t ptr = reinterpret_cast<uintptr_t>(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<void *> &inputs, const vector<void *> &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<void *> &inputs, const
known_output_data_info_.clear();
for (size_t i = 0; i < inputs.size(); ++i) {
const vector<void *> &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<void *> &inputs, const
}
const vector<void *> &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<void *> &io_addrs) {
}

for (size_t i = 0; i < io_addrs.size(); ++i) {
uintptr_t addr = reinterpret_cast<uintptr_t>(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<void *> &total_io_addrs) {
if (fixed_mem_base_ != reinterpret_cast<uintptr_t>(mem_base_)) {
for (size_t i = 0; i < total_io_addrs.size(); ++i) {
uintptr_t addr = reinterpret_cast<uintptr_t>(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]);
}
}



+ 2
- 0
ge/graph/load/new_model_manager/davinci_model.h View File

@@ -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.


Loading…
Cancel
Save