From 5cc537011a2e0a76dfbd3e83d9fdaef6deaac3ba Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 24 Nov 2020 15:36:02 +0800 Subject: [PATCH] No session in tf_singleop_task and add cpu kernels cache. --- ge/graph/load/new_model_manager/task_info/kernel_task_info.cc | 8 ++++---- ge/hybrid/node_executor/aicpu/aicpu_ext_info.cc | 4 ++-- ge/hybrid/node_executor/aicpu/aicpu_node_executor.cc | 4 ++-- ge/single_op/single_op_model.cc | 6 +++--- ge/single_op/task/aicpu_task_builder.cc | 5 +++++ ge/single_op/task/op_task.cc | 4 ++-- 6 files changed, 18 insertions(+), 13 deletions(-) diff --git a/ge/graph/load/new_model_manager/task_info/kernel_task_info.cc b/ge/graph/load/new_model_manager/task_info/kernel_task_info.cc index 11a92813..4ac484fd 100755 --- a/ge/graph/load/new_model_manager/task_info/kernel_task_info.cc +++ b/ge/graph/load/new_model_manager/task_info/kernel_task_info.cc @@ -969,7 +969,7 @@ Status KernelTaskInfo::InitAicpuTaskExtInfo(const std::string &ext_info) { auto ext_info_data = copy_ext_info.get(); size_t offset = 0; - while (offset + sizeof(aicpu::FWKAdapter::ExtInfo) <= ext_info_len_) { + while (offset + sizeof(aicpu::FWKAdapter::ExtInfo) <= ext_info.size()) { auto aicpu_ext_info = reinterpret_cast(ext_info_data + offset); GELOGD("Ext infoType=%d, infoLen=%u.", aicpu_ext_info->infoType, aicpu_ext_info->infoLen); if (aicpu_ext_info->infoType == aicpu::FWKAdapter::FWK_ADPT_EXT_SESSION_INFO) { @@ -977,11 +977,11 @@ Status KernelTaskInfo::InitAicpuTaskExtInfo(const std::string &ext_info) { "Parse ext session info failed as infoLen must be %zu but %u.", sizeof(SessionInfo), aicpu_ext_info->infoLen); SessionInfo *session_info = reinterpret_cast(aicpu_ext_info->infoMsg); - session_info_->sessionId = davinci_model_->GetSessionId(); - session_info_->sessFlag = true; + session_info->sessionId = davinci_model_->GetSessionId(); + session_info->sessFlag = true; GELOGD("Update aicpu_task ext_info session_info session_id is %lu", session_info->sessionId); } - offset += sizeof(AicpuExtInfo); + offset += sizeof(aicpu::FWKAdapter::ExtInfo); offset += aicpu_ext_info->infoLen; } diff --git a/ge/hybrid/node_executor/aicpu/aicpu_ext_info.cc b/ge/hybrid/node_executor/aicpu/aicpu_ext_info.cc index 1c075c15..d7837144 100644 --- a/ge/hybrid/node_executor/aicpu/aicpu_ext_info.cc +++ b/ge/hybrid/node_executor/aicpu/aicpu_ext_info.cc @@ -141,7 +141,7 @@ Status AicpuExtInfoHandler::UpdateSessionInfo(uint64_t session_id, uint64_t kern GELOGD("There is no session info in ext_info, no need update."); return SUCCESS; } - + session_info_->sessionId = session_id; session_info_->kernelId = kernel_id; session_info_->sessFlag = sess_flag; @@ -153,7 +153,7 @@ Status AicpuExtInfoHandler::UpdateSessionInfoSessionId(uint64_t session_id) { GELOGD("There is no session info in ext_info, no need update."); return SUCCESS; } - + session_info_->sessionId = session_id; session_info_->sessFlag = true; return SUCCESS; diff --git a/ge/hybrid/node_executor/aicpu/aicpu_node_executor.cc b/ge/hybrid/node_executor/aicpu/aicpu_node_executor.cc index f772ed02..d921c57c 100755 --- a/ge/hybrid/node_executor/aicpu/aicpu_node_executor.cc +++ b/ge/hybrid/node_executor/aicpu/aicpu_node_executor.cc @@ -57,9 +57,9 @@ Status AicpuNodeTaskBase::InitExtInfo(const std::string &kernel_ext_info, int64_ GE_CHK_STATUS_RET(aicpu_ext_handle_.Parse(kernel_ext_info), "Node[%s] parse kernel ext info failed, kernel_ext_info_size=%zu.", node_name_.c_str(), kernel_ext_info.size()); - } GELOGD("To update aicpu_task ext_info session_info session_id to %lu", session_id); - GE_CHK_STATUS_RET(aicpu_ext_handle_.UpdateSessionInfoSessionId(session_id)); + GE_CHK_STATUS_RET(aicpu_ext_handle_.UpdateSessionInfoSessionId(session_id), + "UpdateSessionInfoSessionId failed."); // copy task args buf GE_CHK_STATUS_RET(AllocTensorBuffer(aicpu_ext_handle_.GetExtInfoLen(), ext_info_addr_dev_), diff --git a/ge/single_op/single_op_model.cc b/ge/single_op/single_op_model.cc index aa82ba6b..49968f4f 100755 --- a/ge/single_op/single_op_model.cc +++ b/ge/single_op/single_op_model.cc @@ -252,8 +252,8 @@ Status SingleOpModel::BuildTaskList(SingleOp &single_op) { } else if (kernel_type == cce::ccKernelType::AI_CPU || kernel_type == cce::ccKernelType::CUST_AI_CPU) { GELOGD("Building AICPU_CC task"); OpTask *task = nullptr; - uint64_t singleop_kernel_id = aicpu_kernel_id++ - GELOGI("Build singleOp CCTask, kernel_id = %lu", singleop_kernel_id);; + uint64_t singleop_kernel_id = aicpu_kernel_id++; + GELOGI("Build singleOp CCTask, kernel_id = %lu", singleop_kernel_id); auto ret = BuildCpuKernelTask(task_def.kernel(), &task, singleop_kernel_id); if (ret != SUCCESS) { return ret; @@ -368,7 +368,7 @@ Status SingleOpModel::BuildCpuKernelTask(const domi::KernelDef &kernel_def, OpTa } auto builder = AiCpuCCTaskBuilder(iter->second->GetOpDesc(), kernel_def); - auto ret = builder.BuildTask(*aicpucc_task, uint64_t kernel_id); + auto ret = builder.BuildTask(*aicpucc_task, kernel_id); if (ret != SUCCESS) { GELOGE(ret, "build aicpu_CC op task failed"); return ret; diff --git a/ge/single_op/task/aicpu_task_builder.cc b/ge/single_op/task/aicpu_task_builder.cc index aef847ca..d91bba17 100755 --- a/ge/single_op/task/aicpu_task_builder.cc +++ b/ge/single_op/task/aicpu_task_builder.cc @@ -141,6 +141,11 @@ namespace ge { fwk_op_kernel.fwkKernelBase.fwk_kernel.sessionID = ULLONG_MAX; fwk_op_kernel.fwkKernelBase.fwk_kernel.kernelID = kernel_id; fwk_op_kernel.fwkKernelBase.fwk_kernel.opType = aicpu::FWKAdapter::FWKOperateType::FWK_ADPT_KERNEL_RUN_NO_SESS; + ret = SetKernelArgs(&task.args_, fwk_op_kernel); + if (ret != SUCCESS) { + return ret; + } + task.arg_size_ = sizeof(STR_FWK_OP_KERNEL); task.op_type_ = op_desc_->GetName(); task.task_info_ = kernel_def_.task_info(); diff --git a/ge/single_op/task/op_task.cc b/ge/single_op/task/op_task.cc index 5bbd29de..1b4b23ff 100755 --- a/ge/single_op/task/op_task.cc +++ b/ge/single_op/task/op_task.cc @@ -269,12 +269,12 @@ Status AiCpuBaseTask::SetExtInfoAndType(const std::string &kernel_ext_info, uint } GE_CHK_STATUS_RET(aicpu_ext_handle_->UpdateSessionInfo(ULLONG_MAX, kernel_id, false), - "UpdateOutputShapeAndType failed."); + "UpdateSessionInfo failed."); GE_CHK_RT_RET(rtMalloc(&ext_info_addr_dev_, aicpu_ext_handle_->GetExtInfoLen(), RT_MEMORY_HBM)); GE_CHK_RT_RET(rtMemcpy(ext_info_addr_dev_, aicpu_ext_handle_->GetExtInfoLen(), aicpu_ext_handle_->GetExtInfo(), aicpu_ext_handle_->GetExtInfoLen(), - RT_MEMCPY_HOST_TO_DEVICE)) + RT_MEMCPY_HOST_TO_DEVICE)); return SUCCESS; }