From 7e5430ea52c3358bc51d6aff13149d8c310d43a5 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 2 Mar 2021 17:29:03 +0800 Subject: [PATCH 1/2] Reform optiling interface. --- ge/hybrid/node_executor/aicore/aicore_op_task.cc | 1 + 1 file changed, 1 insertion(+) diff --git a/ge/hybrid/node_executor/aicore/aicore_op_task.cc b/ge/hybrid/node_executor/aicore/aicore_op_task.cc index 07c2ddb5..d58be620 100644 --- a/ge/hybrid/node_executor/aicore/aicore_op_task.cc +++ b/ge/hybrid/node_executor/aicore/aicore_op_task.cc @@ -354,6 +354,7 @@ Status AiCoreOpTask::CalcTilingInfo(const NodePtr &node, OpRunInfo &tiling_info) if (is_single_op_) { tiling_info.clear_atomic = false; } + GELOGD("[%s] Done invoking OpParaCalculate successfully.", node->GetName().c_str()); return SUCCESS; } From d9c6710d2d538e9ebbb200af40806979f2164b1c Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 3 Mar 2021 15:12:30 +0800 Subject: [PATCH 2/2] Reform optiling interface. --- .../node_executor/aicore/aicore_op_task.cc | 25 +++++++++++-------- ge/single_op/task/op_task.cc | 16 ++++++++---- 2 files changed, 26 insertions(+), 15 deletions(-) diff --git a/ge/hybrid/node_executor/aicore/aicore_op_task.cc b/ge/hybrid/node_executor/aicore/aicore_op_task.cc index d58be620..9ce93213 100644 --- a/ge/hybrid/node_executor/aicore/aicore_op_task.cc +++ b/ge/hybrid/node_executor/aicore/aicore_op_task.cc @@ -302,8 +302,8 @@ Status AiCoreOpTask::UpdateTilingInfo(TaskContext &context) { GELOGD("[%s] Start to update tiling info for task: [%s]", node->GetName().c_str(), stub_name_.c_str()); OpRunInfo tiling_info; - tiling_info.block_dim = -1; // codex: Using uninitialized value - tiling_info.clear_atomic = true; + tiling_info.SetBlockDim(-1); // codex: Using uninitialized value + tiling_info.SetClearAtomic(true); auto execution_context = context.GetExecutionContext(); @@ -314,12 +314,18 @@ Status AiCoreOpTask::UpdateTilingInfo(TaskContext &context) { GetContext().SetSessionId(execution_context->session_id); // update op args by tiling info - block_dim_ = static_cast(tiling_info.block_dim); - op_desc->SetWorkspaceBytes(tiling_info.workspaces); - clear_atomic_ = tiling_info.clear_atomic; - - tiling_data_ = tiling_info.tiling_data.str(); - tiling_key_ = tiling_info.tiling_key; + block_dim_ = static_cast(tiling_info.GetBlockDim()); + vector workspaces; + for (size_t i = 0; i < tiling_info.GetWorkSpaceNum(); ++i) { + int64_t workspace = 0; + GE_CHK_STATUS_RET(tiling_info.GetWorkSpace(i, workspace)); + workspaces.emplace_back(workspace); + } + op_desc->SetWorkspaceBytes(workspaces); + clear_atomic_ = tiling_info.GetClearAtomic(); + + tiling_data_ = tiling_info.ByteBufferGet().str(); // todo + tiling_key_ = tiling_info.GetTilingKey(); GELOGD("Successfully getting [tiling_key] : %u", tiling_key_); if (tiling_data_.empty()) { GELOGD("[%s] Tiling data is empty.", op_desc->GetName().c_str()); @@ -352,9 +358,8 @@ Status AiCoreOpTask::CalcTilingInfo(const NodePtr &node, OpRunInfo &tiling_info) "Failed calc tiling data of node %s.", node->GetName().c_str()); if (is_single_op_) { - tiling_info.clear_atomic = false; + tiling_info.SetClearAtomic(false); } - GELOGD("[%s] Done invoking OpParaCalculate successfully.", node->GetName().c_str()); return SUCCESS; } diff --git a/ge/single_op/task/op_task.cc b/ge/single_op/task/op_task.cc index 729386df..205c6386 100755 --- a/ge/single_op/task/op_task.cc +++ b/ge/single_op/task/op_task.cc @@ -219,19 +219,25 @@ Status TbeOpTask::UpdateRunInfo(const vector &input_desc, const ve // invoke OpParaCalculate GELOGD("Start to invoke OpParaCalculate."); optiling::OpRunInfo run_info; - run_info.block_dim = 0; + run_info.SetBlockDim(0); auto ret = optiling::OpParaCalculate(*node_, run_info); if (ret != GRAPH_SUCCESS) { GELOGE(ACL_ERROR_GE_INTERNAL_ERROR, "Failed to invoke OpParaCalculate. ret = %u", ret); return ACL_ERROR_GE_INTERNAL_ERROR; } - block_dim_ = run_info.block_dim; - tiling_data_ = run_info.tiling_data.str(); - tiling_key_ = run_info.tiling_key; + block_dim_ = run_info.GetBlockDim(); + tiling_data_ = run_info.ByteBufferGet().str(); // todo + tiling_key_ = run_info.GetTilingKey(); GELOGD("Done invoking OpParaCalculate successfully. block_dim = %u, tiling size = %zu, tiling_key = %u", block_dim_, tiling_data_.size(), tiling_key_); - GE_CHK_STATUS_RET(AllocateWorkspaces(run_info.workspaces), "Failed to allocate workspaces"); + vector workspaces; + for (size_t i = 0; i < run_info.GetWorkSpaceNum(); ++i) { + int64_t workspace = 0; + GE_CHK_STATUS_RET(run_info.GetWorkSpace(i, workspace)); + workspaces.emplace_back(workspace); + } + GE_CHK_STATUS_RET(AllocateWorkspaces(workspaces), "Failed to allocate workspaces"); return SUCCESS; }