From 98f07e7ccb341b6a0b8b69ce13c167c9fc4269c7 Mon Sep 17 00:00:00 2001 From: wjm Date: Mon, 28 Dec 2020 16:55:56 +0800 Subject: [PATCH 1/4] fix dynamic aipp error --- ge/graph/passes/multi_batch_clone_pass.cc | 24 ++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/ge/graph/passes/multi_batch_clone_pass.cc b/ge/graph/passes/multi_batch_clone_pass.cc index 872f94fb..ed654d4f 100755 --- a/ge/graph/passes/multi_batch_clone_pass.cc +++ b/ge/graph/passes/multi_batch_clone_pass.cc @@ -478,8 +478,30 @@ Status MultiBatchClonePass::SetMaxShapeToData(const NodePtr &data) { if (std::all_of(dims.begin(), dims.end(), [](int64_t val) { return val >= 0; })) { return SUCCESS; } - (void)AttrUtils::SetListInt(data->GetOpDesc(), ATTR_MBATCH_ORIGIN_INPUT_DIMS, data_shape.GetDims()); + + GeTensorDesc tensor(NodeUtils::GetOutputDesc(*data, kDataOutIndex)); + std::vector input_dims_str; + for (size_t i = 0; i < batch_shapes_.size(); ++i) { + auto shape = data_shape; + auto ret = CalcShape(data_to_dynamic_info_.at(data_name).at(i), shape); + if (ret != SUCCESS) { + GELOGE(ret, "Failed to calculate the batched shape for data node %s, the shapes may not match", + data->GetName().c_str()); + return ret; + } + tensor.SetShape(shape); + string input_str; + int64_t tensor_size = 0; + (void)TensorUtils::GetTensorSizeInBytes(tensor, tensor_size); + input_str = TypeUtils::FormatToSerialString(tensor.GetFormat()) + ":" + + TypeUtils::DataTypeToSerialString(tensor.GetDataType()) + ":" + data->GetName() + ":" + + std::to_string(tensor_size) + ":" + std::to_string(tensor.GetShape().GetDimNum()) + ":" + + formats::JoinToString(tensor.GetShape().GetDims()); + input_dims_str.emplace_back(input_str); + } + (void)AttrUtils::SetListStr(data->GetOpDesc(), "_all_origin_gears_inputs", input_dims_str); + size_t max_shape_index = 0; int64_t max_size = 0; for (size_t i = 0; i < batch_shapes_.size(); ++i) { From c23544fb23accb35ce1bc455f33fe2c02a43f0b5 Mon Sep 17 00:00:00 2001 From: wjm Date: Mon, 28 Dec 2020 17:04:04 +0800 Subject: [PATCH 2/4] fix --- ge/graph/passes/multi_batch_clone_pass.cc | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/ge/graph/passes/multi_batch_clone_pass.cc b/ge/graph/passes/multi_batch_clone_pass.cc index ed654d4f..333005a2 100755 --- a/ge/graph/passes/multi_batch_clone_pass.cc +++ b/ge/graph/passes/multi_batch_clone_pass.cc @@ -484,20 +484,19 @@ Status MultiBatchClonePass::SetMaxShapeToData(const NodePtr &data) { std::vector input_dims_str; for (size_t i = 0; i < batch_shapes_.size(); ++i) { auto shape = data_shape; - auto ret = CalcShape(data_to_dynamic_info_.at(data_name).at(i), shape); + auto ret = multibatch::CalcShape(data_to_dynamic_info_.at(data_name).at(i), shape); if (ret != SUCCESS) { GELOGE(ret, "Failed to calculate the batched shape for data node %s, the shapes may not match", - data->GetName().c_str()); + data->GetName().c_str()); return ret; } tensor.SetShape(shape); - string input_str; int64_t tensor_size = 0; - (void)TensorUtils::GetTensorSizeInBytes(tensor, tensor_size); - input_str = TypeUtils::FormatToSerialString(tensor.GetFormat()) + ":" + - TypeUtils::DataTypeToSerialString(tensor.GetDataType()) + ":" + data->GetName() + ":" + - std::to_string(tensor_size) + ":" + std::to_string(tensor.GetShape().GetDimNum()) + ":" + - formats::JoinToString(tensor.GetShape().GetDims()); + (void)TensorUtils::GetTensorSizeInBytes(tensor, tensor_size); + string input_str = TypeUtils::FormatToSerialString(tensor.GetFormat()) + ":" + + TypeUtils::DataTypeToSerialString(tensor.GetDataType()) + ":" + data->GetName() + ":" + + std::to_string(tensor_size) + ":" + std::to_string(tensor.GetShape().GetDimNum()) + ":" + + formats::JoinToString(tensor.GetShape().GetDims()); input_dims_str.emplace_back(input_str); } (void)AttrUtils::SetListStr(data->GetOpDesc(), "_all_origin_gears_inputs", input_dims_str); From 37e937aedcb2adf1463c9530b9a8c53360a2d1c5 Mon Sep 17 00:00:00 2001 From: wjm Date: Mon, 28 Dec 2020 17:35:27 +0800 Subject: [PATCH 3/4] fix --- ge/graph/passes/multi_batch_clone_pass.cc | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/ge/graph/passes/multi_batch_clone_pass.cc b/ge/graph/passes/multi_batch_clone_pass.cc index 333005a2..d3bf416a 100755 --- a/ge/graph/passes/multi_batch_clone_pass.cc +++ b/ge/graph/passes/multi_batch_clone_pass.cc @@ -22,6 +22,8 @@ #include "graph/preprocess/multi_batch_options.h" #include "graph/utils/node_utils.h" #include "graph/utils/op_desc_utils.h" +#include "graph/utils/tensor_utils.h" +#include "graph/utils/type_utils.h" #include "register/op_registry.h" namespace ge { @@ -614,7 +616,7 @@ Status MultiBatchClonePass::CreateSubgraphs(const ComputeGraphPtr &graph, const graph->AddSubgraph(subgraph->GetName(), subgraph); all_branch_output_[subgraph] = subgraph->FindFirstNodeMatchType(NETOUTPUT); GE_CHK_STATUS_RET(UpdateSubgraphOutput(all_branch_output_[subgraph]), - "Update %s failed", all_branch_output_[subgraph]->GetName().c_str()); + "Update %s failed", all_branch_output_[subgraph]->GetName().c_str()); const string key_name = "branches" + std::to_string(i); op_desc->AddSubgraphName(key_name); From 801625bb36b52502a866d961bd7555638bbb791d Mon Sep 17 00:00:00 2001 From: wjm Date: Tue, 29 Dec 2020 10:32:04 +0800 Subject: [PATCH 4/4] fix --- ge/graph/passes/multi_batch_clone_pass.cc | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/ge/graph/passes/multi_batch_clone_pass.cc b/ge/graph/passes/multi_batch_clone_pass.cc index d3bf416a..f8451ace 100755 --- a/ge/graph/passes/multi_batch_clone_pass.cc +++ b/ge/graph/passes/multi_batch_clone_pass.cc @@ -488,8 +488,7 @@ Status MultiBatchClonePass::SetMaxShapeToData(const NodePtr &data) { auto shape = data_shape; auto ret = multibatch::CalcShape(data_to_dynamic_info_.at(data_name).at(i), shape); if (ret != SUCCESS) { - GELOGE(ret, "Failed to calculate the batched shape for data node %s, the shapes may not match", - data->GetName().c_str()); + GELOGE(ret, "Failed to calculate the shape for data node %s, the shape may not match", data->GetName().c_str()); return ret; } tensor.SetShape(shape);