Browse Source

l2 buffer

tags/v1.3.0
yangwei 3 years ago
parent
commit
93025cabf4
4 changed files with 13 additions and 26 deletions
  1. +8
    -15
      ge/graph/load/model_manager/davinci_model.cc
  2. +0
    -3
      ge/graph/load/model_manager/davinci_model.h
  3. +5
    -3
      ge/graph/load/model_manager/task_info/kernel_task_info.cc
  4. +0
    -5
      ge/hybrid/node_executor/compiledsubgraph/known_node_executor.cc

+ 8
- 15
ge/graph/load/model_manager/davinci_model.cc View File

@@ -2875,23 +2875,16 @@ Status DavinciModel::UpdateKnownNodeArgs(const vector<void *> &inputs, const vec
GELOGI("DavinciModel::UpdateKnownNodeArgs in"); GELOGI("DavinciModel::UpdateKnownNodeArgs in");
GE_CHK_STATUS_RET(CreateKnownZeroCopyMap(inputs, outputs), GE_CHK_STATUS_RET(CreateKnownZeroCopyMap(inputs, outputs),
"DavinciModel::UpdateKnownNodeArgs create map for input/output zero copy."); "DavinciModel::UpdateKnownNodeArgs create map for input/output zero copy.");
if (!base_addr_not_changed_) {
total_io_addrs_.clear();
orig_total_io_addrs_.clear();
for (size_t task_index = 0; task_index < task_list_.size(); ++task_index) {
auto &task = task_list_[task_index];
if (task != nullptr) {
Status ret = task->UpdateArgs();
if (ret != SUCCESS) {
GELOGE(FAILED, "task %zu created by davinci model is nullptr.", task_index);
return FAILED;
}
total_io_addrs_.clear();
for (size_t task_index = 0; task_index < task_list_.size(); ++task_index) {
auto &task = task_list_[task_index];
if (task != nullptr) {
Status ret = task->UpdateArgs();
if (ret != SUCCESS) {
GELOGE(FAILED, "task %zu created by davinci model is nullptr.", task_index);
return FAILED;
} }
} }
// cache latest iterator io addr
orig_total_io_addrs_ = total_io_addrs_;
} else {
total_io_addrs_ = orig_total_io_addrs_;
} }
GE_CHK_STATUS_RET(UpdateKnownZeroCopyAddr(total_io_addrs_, false), "DavinciModel::UpdateKnownZeroCopyAddr failed."); GE_CHK_STATUS_RET(UpdateKnownZeroCopyAddr(total_io_addrs_, false), "DavinciModel::UpdateKnownZeroCopyAddr failed.");




+ 0
- 3
ge/graph/load/model_manager/davinci_model.h View File

@@ -534,7 +534,6 @@ class DavinciModel {
Status UpdateKnownNodeArgs(const vector<void *> &inputs, const vector<void *> &outputs); Status UpdateKnownNodeArgs(const vector<void *> &inputs, const vector<void *> &outputs);
Status CreateKnownZeroCopyMap(const vector<void *> &inputs, const vector<void *> &outputs); Status CreateKnownZeroCopyMap(const vector<void *> &inputs, const vector<void *> &outputs);
Status UpdateKnownZeroCopyAddr(vector<void *> &total_io_addrs, bool update_args = true); Status UpdateKnownZeroCopyAddr(vector<void *> &total_io_addrs, bool update_args = true);
void SetKnownNodeAddrNotChanged(bool base_addr_not_changed) { base_addr_not_changed_ = base_addr_not_changed; }


Status GetOrigInputInfo(uint32_t index, OriginInputInfo &orig_input_info) const; Status GetOrigInputInfo(uint32_t index, OriginInputInfo &orig_input_info) const;
Status GetAllAippInputOutputDims(uint32_t index, vector<InputOutputDims> &input_dims, Status GetAllAippInputOutputDims(uint32_t index, vector<InputOutputDims> &input_dims,
@@ -1007,8 +1006,6 @@ class DavinciModel {
map<const void *, void *> known_input_data_info_; map<const void *, void *> known_input_data_info_;
map<const void *, void *> known_output_data_info_; map<const void *, void *> known_output_data_info_;
vector<void *> total_io_addrs_; vector<void *> total_io_addrs_;
vector<void *> orig_total_io_addrs_;
bool base_addr_not_changed_ = false;


vector<vector<int64_t>> batch_info_; vector<vector<int64_t>> batch_info_;
vector<vector<int64_t>> combined_batch_info_; vector<vector<int64_t>> combined_batch_info_;


+ 5
- 3
ge/graph/load/model_manager/task_info/kernel_task_info.cc View File

@@ -492,11 +492,13 @@ void KernelTaskInfo::SetIoAddrs(const OpDescPtr &op_desc) {


Status KernelTaskInfo::CopyNoncontinuousArgs(uint16_t offset) { Status KernelTaskInfo::CopyNoncontinuousArgs(uint16_t offset) {
GE_CHECK_NOTNULL(davinci_model_); GE_CHECK_NOTNULL(davinci_model_);
davinci_model_->UpdateKnownZeroCopyAddr(io_addrs_);
auto addr_size = kAddrLen * io_addrs_.size();
// copy new io addrs
vector<void *> io_addrs = io_addrs_;
davinci_model_->UpdateKnownZeroCopyAddr(io_addrs);
auto addr_size = kAddrLen * io_addrs.size();


// copy io addr // copy io addr
errno_t sec_ret = memcpy_s(args_addr.get() + offset, addr_size, io_addrs_.data(), addr_size);
errno_t sec_ret = memcpy_s(args_addr.get() + offset, addr_size, io_addrs.data(), addr_size);
if (sec_ret != EOK) { if (sec_ret != EOK) {
REPORT_CALL_ERROR("E19999", "Call memcpy_s fail, size:%zu, ret:0x%X, when KernelTaskInfo %s", REPORT_CALL_ERROR("E19999", "Call memcpy_s fail, size:%zu, ret:0x%X, when KernelTaskInfo %s",
addr_size, sec_ret, __FUNCTION__); addr_size, sec_ret, __FUNCTION__);


+ 0
- 5
ge/hybrid/node_executor/compiledsubgraph/known_node_executor.cc View File

@@ -112,11 +112,6 @@ Status KnownNodeTask::Init(TaskContext &context) {
"known node task allocate workspace failed."); "known node task allocate workspace failed.");
RECORD_EXECUTION_EVENT(context.GetExecutionContext(), context.GetNodeName(), RECORD_EXECUTION_EVENT(context.GetExecutionContext(), context.GetNodeName(),
"[KnownNodeTask_AllocateWorkspace] End, size %zu", davinci_model_->TotalMemSize()); "[KnownNodeTask_AllocateWorkspace] End, size %zu", davinci_model_->TotalMemSize());
bool addr_not_changed = false;
if (davinci_model_->GetRuntimeParam().mem_base == buffer) {
addr_not_changed = true;
}
davinci_model_->SetKnownNodeAddrNotChanged(addr_not_changed);
// update mem base // update mem base
davinci_model_->UpdateMemBase(static_cast<uint8_t *>(buffer)); davinci_model_->UpdateMemBase(static_cast<uint8_t *>(buffer));
GELOGI("KnownNodeTask::Init mem base is %p, size %lu.", GELOGI("KnownNodeTask::Init mem base is %p, size %lu.",


Loading…
Cancel
Save