Browse Source

fix

pull/1985/head
guopeian 3 years ago
parent
commit
98db350421
3 changed files with 7 additions and 16 deletions
  1. +1
    -1
      ge/hybrid/node_executor/aicpu/aicpu_node_executor.cc
  2. +5
    -13
      ge/single_op/task/op_task.cc
  3. +1
    -2
      ge/single_op/task/op_task.h

+ 1
- 1
ge/hybrid/node_executor/aicpu/aicpu_node_executor.cc View File

@@ -738,7 +738,7 @@ Status AicpuNodeTask::SetMemCopyTask(const domi::TaskDef &task_def) {
auto memcpy_io_addr = memcpy_args_.get() + sizeof(aicpu::AicpuParamHead);
// if has input and output, need copy to ioaddr
int cpy_ret = memcpy_s(memcpy_io_addr, memcpy_args_size_ - sizeof(aicpu::AicpuParamHead),
&copy_ioaddr_dev_, sizeof(uint64_t) * memcpy_io_num);
&copy_io_addr_[0], sizeof(uint64_t) * memcpy_io_num);
GE_IF_BOOL_EXEC(cpy_ret != 0,
REPORT_INNER_ERROR("E19999", "Node[Memcpoy] memcpy io addr to AicpuParamHead failed,"
"ret=%d, args_size=%u, io nums=%u.",


+ 5
- 13
ge/single_op/task/op_task.cc View File

@@ -1137,18 +1137,10 @@ Status AiCpuCCTask::InitForSummaryAndCopy() {
GE_CHK_RT_RET(rtMalloc(&copy_input_src_dev_, copy_input_buf_len, RT_MEMORY_HBM));
GE_CHK_RT_RET(rtMalloc(&copy_input_dst_dev_, copy_input_buf_len, RT_MEMORY_HBM));

std::vector<uint64_t> copy_io_addr;
copy_io_addr.emplace_back(reinterpret_cast<uintptr_t>(copy_input_release_flag_dev_));
copy_io_addr.emplace_back(reinterpret_cast<uintptr_t>(copy_input_data_size_dev_));
copy_io_addr.emplace_back(reinterpret_cast<uintptr_t>(copy_input_src_dev_));
copy_io_addr.emplace_back(reinterpret_cast<uintptr_t>(copy_input_dst_dev_));

const auto copy_io_addr_size = sizeof(uint64_t) * copy_io_addr.size();

GE_CHK_RT_RET(rtMalloc(&copy_ioaddr_dev_, copy_io_addr_size, RT_MEMORY_HBM));

GE_CHK_RT_RET(rtMemcpy(copy_ioaddr_dev_, copy_io_addr_size,
copy_io_addr.data(), copy_io_addr_size, RT_MEMCPY_HOST_TO_DEVICE));
copy_io_addr_.emplace_back(reinterpret_cast<uintptr_t>(copy_input_release_flag_dev_));
copy_io_addr_.emplace_back(reinterpret_cast<uintptr_t>(copy_input_data_size_dev_));
copy_io_addr_.emplace_back(reinterpret_cast<uintptr_t>(copy_input_src_dev_));
copy_io_addr_.emplace_back(reinterpret_cast<uintptr_t>(copy_input_dst_dev_));
return SUCCESS;
}

@@ -1192,7 +1184,7 @@ Status AiCpuCCTask::SetMemCopyTask(const domi::KernelDef &kernel_def) {
auto memcpy_io_addr = memcpy_args_.get() + sizeof(aicpu::AicpuParamHead);
// if has input and output, need copy to ioaddr
int cpy_ret = memcpy_s(memcpy_io_addr, memcpy_args_size_ - sizeof(aicpu::AicpuParamHead),
&copy_ioaddr_dev_, sizeof(uint64_t) * memcpy_io_num);
&copy_io_addr[0], sizeof(uint64_t) * memcpy_io_num);
GE_IF_BOOL_EXEC(cpy_ret != 0,
REPORT_INNER_ERROR("E19999", "Node[Memcpoy] memcpy io addr to AicpuParamHead failed,"
"ret=%d, args_size=%u, io nums=%u.",


+ 1
- 2
ge/single_op/task/op_task.h View File

@@ -200,8 +200,6 @@ class AiCpuBaseTask : public OpTask {
std::vector<void *> output_summary_;
std::vector<aicpu::FWKAdapter::ResultSummary> output_summary_host_;

void *copy_ioaddr_dev_ = nullptr;

void *copy_input_release_flag_dev_ = nullptr;
void *copy_input_data_size_dev_ = nullptr;
void *copy_input_src_dev_ = nullptr;
@@ -295,6 +293,7 @@ private:
std::unique_ptr<uint8_t[]> memcpy_args_;
std::string memcpy_so_name_;
std::string memcpy_kernel_name_;
std::vector<uint64_t> copy_io_addr_;
// args size
uint32_t memcpy_args_size_ = 0;
};


Loading…
Cancel
Save