From 54b6ce9eea0f78ea3bad270fa3711e7da2155381 Mon Sep 17 00:00:00 2001 From: l00444296 Date: Mon, 14 Dec 2020 21:30:42 +0800 Subject: [PATCH 1/5] Feature: Get default op format from ge graph --- ge/ir_build/ge_ir_build.cc | 110 +++++++++++++++++++++++++++++++------ 1 file changed, 93 insertions(+), 17 deletions(-) diff --git a/ge/ir_build/ge_ir_build.cc b/ge/ir_build/ge_ir_build.cc index f181170c..34e612a2 100644 --- a/ge/ir_build/ge_ir_build.cc +++ b/ge/ir_build/ge_ir_build.cc @@ -226,9 +226,11 @@ class Impl { }; ~Impl() { (void)generator_.Finalize(); }; graphStatus CheckOptions(const std::map &options); + graphStatus CheckInputFormat(const string &input_format); graphStatus CreateInputsForIRBuild(const ge::Graph &graph, vector &inputs); - graphStatus GetDefaultInputShape(const Graph &graph, string &default_shape); - graphStatus UpdateDataOpAttr(const Graph &graph); + graphStatus GetDefaultInputShape(const Graph &graph, string &default_shape, bool &dynamic_shape_flag); + graphStatus GetDefaultInputFormat(const Graph &graph, string &default_format); + const Graph &graph, string &default_shape, string &input_fo graphStatus UpdateDataOpAttr(const Graph &graph); graphStatus Init(const Graph &graph, const std::map &options); graphStatus BuildModel(const Graph &graph, const std::map &options, ModelBufferData &ge_models); @@ -321,7 +323,62 @@ graphStatus Impl::CheckOptions(const std::map &options return GRAPH_SUCCESS; } -graphStatus Impl::GetDefaultInputShape(const Graph &graph, string &default_shape) { +graphStatus Impl::CheckInputFormat(const string &input_format) { + if (!input_format.empty()) { + auto iter = ge::input_format_str_to_geformat.find(input_format); + if (iter == ge::input_format_str_to_geformat.end()) { + GELOGE(GRAPH_PARAM_INVALID, "Input format %s not support , expect ND/NCHW/NHWC/CHWN/NC1HWC0/NHWC1C0.", + input_format.c_str()); + return GRAPH_PARAM_INVALID; + } + } + return GRAPH_SUCCESS; +} + +graphStatus Impl::GetDefaultInputFormat(const Graph &graph, string &default_format) { + auto compute_graph = ge::GraphUtils::GetComputeGraph(graph); + GE_CHECK_NOTNULL(compute_graph); + for (ge::NodePtr &input_node : compute_graph->GetDirectNode()) { + GE_CHECK_NOTNULL(input_node); + ge::OpDescPtr op = input_node->GetOpDesc(); + GE_CHECK_NOTNULL(op); + if (op->GetType() == DATA) { + string data_op_name = op->GetName(); + GELOGD("Data op name: %s, data op inputDesc size: %zu", data_op_name.c_str(), op->GetAllInputsDesc().size()); + ge::GeTensorDesc tensor = op->GetInputDesc(0); + ge::GeShape data_shape = tensor.GetShape(); + GELOGD("Data op get shape from InputDesc in ge ir graph."); + + const std::vector &tmp_shape = data_shape.GetDims(); + if (tmp_shape.empty()) { + GELOGD("Data op: %s has zero shape dims!", data_op_name.c_str()); + continue; + } + + bool is_dynamic_input = false; + for (auto tmp_dim : tmp_shape) { + if (tmp_dim < 0) { + is_dynamic_input = true; + } + } + + if (is_dynamic_input) { + string tmp_data_format = ge::TypeUtils::FormatToSerialString(tensor.GetFormat()); + if (!default_format.empty() && tmp_data_format!=default_format) { + GELOGE(GRAPH_PARAM_INVALID, "All data op with dynamic shape has no default format!"); + return GRAPH_PARAM_INVALID; + } else if (default_format.empty()) { + default_format.assign(tmp_data_format); + } + GELOGD("Data op name: %s, data format: %s.", data_op_name.c_str(), default_format.c_str()); + } + } + } + GELOGI("Get default data op format: %s from ge ir graph.", default_format.c_str()); + return GRAPH_SUCCESS; +} + +graphStatus Impl::(const Graph &graph, string &default_shape, bool &dynamic_shape_flag) { auto compute_graph = ge::GraphUtils::GetComputeGraph(graph); GE_CHECK_NOTNULL(compute_graph); for (ge::NodePtr &input_node : compute_graph->GetDirectNode()) { @@ -335,21 +392,30 @@ graphStatus Impl::GetDefaultInputShape(const Graph &graph, string &default_shape ge::GeShape data_shape = tensor.GetShape(); GELOGD("Data op get shape from InputDesc in ge ir graph."); - string tmp_shape_str; const std::vector &tmp_shape = data_shape.GetDims(); if (tmp_shape.empty()) { GELOGW("Data op: %s has zero shape dims!", data_op_name.c_str()); - } else { - tmp_shape_str += data_op_name + ":"; - for (auto tmp_dim : tmp_shape) { - tmp_shape_str += to_string((long)tmp_dim) + ","; + continue; + } + + string tmp_shape_str; + bool is_dynamic_input = false; + + tmp_shape_str += data_op_name + ":"; + for (auto tmp_dim : tmp_shape) { + if (tmp_dim < 0) { + is_dynamic_input = true; } - tmp_shape_str = tmp_shape_str.substr(0, tmp_shape_str.size() - 1); - tmp_shape_str += ";"; - default_shape += tmp_shape_str; + tmp_shape_str += to_string((long)tmp_dim) + ","; } + tmp_shape_str = tmp_shape_str.substr(0, tmp_shape_str.size() - 1); + tmp_shape_str += ";"; - GELOGD("Data op name: %s, data shape: %s.", data_op_name.c_str(), tmp_shape_str.c_str()); + if (is_dynamic_input) { + dynamic_shape_flag = true; + default_shape += tmp_shape_str; + GELOGD("Data op name: %s, data shape: %s.", data_op_name.c_str(), tmp_shape_str.c_str(),); + } } } default_shape = (default_shape.empty() ? default_shape : default_shape.substr(0, default_shape.size() - 1)); @@ -378,14 +444,24 @@ graphStatus Impl::Init(const Graph &graph, const std::map Date: Tue, 15 Dec 2020 10:19:42 +0800 Subject: [PATCH 2/5] Feature: Get default op format from ge graph --- ge/ir_build/ge_ir_build.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ge/ir_build/ge_ir_build.cc b/ge/ir_build/ge_ir_build.cc index 34e612a2..1b00b334 100644 --- a/ge/ir_build/ge_ir_build.cc +++ b/ge/ir_build/ge_ir_build.cc @@ -230,7 +230,7 @@ class Impl { graphStatus CreateInputsForIRBuild(const ge::Graph &graph, vector &inputs); graphStatus GetDefaultInputShape(const Graph &graph, string &default_shape, bool &dynamic_shape_flag); graphStatus GetDefaultInputFormat(const Graph &graph, string &default_format); - const Graph &graph, string &default_shape, string &input_fo graphStatus UpdateDataOpAttr(const Graph &graph); + graphStatus UpdateDataOpAttr(const Graph &graph); graphStatus Init(const Graph &graph, const std::map &options); graphStatus BuildModel(const Graph &graph, const std::map &options, ModelBufferData &ge_models); @@ -378,7 +378,7 @@ graphStatus Impl::GetDefaultInputFormat(const Graph &graph, string &default_form return GRAPH_SUCCESS; } -graphStatus Impl::(const Graph &graph, string &default_shape, bool &dynamic_shape_flag) { +graphStatus Impl::Init(const Graph &graph, string &default_shape, bool &dynamic_shape_flag) { auto compute_graph = ge::GraphUtils::GetComputeGraph(graph); GE_CHECK_NOTNULL(compute_graph); for (ge::NodePtr &input_node : compute_graph->GetDirectNode()) { From 842d3f271689834fbe4a70ff144a8cb1ae794df8 Mon Sep 17 00:00:00 2001 From: l00444296 Date: Tue, 15 Dec 2020 10:27:10 +0800 Subject: [PATCH 3/5] Feature: Get default op format from ge graph --- ge/ir_build/ge_ir_build.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ge/ir_build/ge_ir_build.cc b/ge/ir_build/ge_ir_build.cc index 1b00b334..7ae6cd49 100644 --- a/ge/ir_build/ge_ir_build.cc +++ b/ge/ir_build/ge_ir_build.cc @@ -378,7 +378,7 @@ graphStatus Impl::GetDefaultInputFormat(const Graph &graph, string &default_form return GRAPH_SUCCESS; } -graphStatus Impl::Init(const Graph &graph, string &default_shape, bool &dynamic_shape_flag) { +graphStatus Impl::GetDefaultInputShape(const Graph &graph, string &default_shape, bool &dynamic_shape_flag) { auto compute_graph = ge::GraphUtils::GetComputeGraph(graph); GE_CHECK_NOTNULL(compute_graph); for (ge::NodePtr &input_node : compute_graph->GetDirectNode()) { From 9a43c9afb2a47d5aee4830f867b54f758182f175 Mon Sep 17 00:00:00 2001 From: l00444296 Date: Tue, 15 Dec 2020 10:45:45 +0800 Subject: [PATCH 4/5] Feature: Get default op format from ge graph --- ge/ir_build/ge_ir_build.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ge/ir_build/ge_ir_build.cc b/ge/ir_build/ge_ir_build.cc index 7ae6cd49..3a1a9fb9 100644 --- a/ge/ir_build/ge_ir_build.cc +++ b/ge/ir_build/ge_ir_build.cc @@ -414,7 +414,7 @@ graphStatus Impl::GetDefaultInputShape(const Graph &graph, string &default_shape if (is_dynamic_input) { dynamic_shape_flag = true; default_shape += tmp_shape_str; - GELOGD("Data op name: %s, data shape: %s.", data_op_name.c_str(), tmp_shape_str.c_str(),); + GELOGD("Data op name: %s, data shape: %s.", data_op_name.c_str(), tmp_shape_str.c_str()); } } } From 70651ccf70234d12dae1c25482f7be55e14c367d Mon Sep 17 00:00:00 2001 From: l00444296 Date: Thu, 17 Dec 2020 16:17:57 +0800 Subject: [PATCH 5/5] Feature: delete several para of aclgrphParse interface --- ge/ir_build/ge_ir_build.cc | 119 ------------------------------------- 1 file changed, 119 deletions(-) diff --git a/ge/ir_build/ge_ir_build.cc b/ge/ir_build/ge_ir_build.cc index 3a1a9fb9..0e1d9452 100644 --- a/ge/ir_build/ge_ir_build.cc +++ b/ge/ir_build/ge_ir_build.cc @@ -226,10 +226,7 @@ class Impl { }; ~Impl() { (void)generator_.Finalize(); }; graphStatus CheckOptions(const std::map &options); - graphStatus CheckInputFormat(const string &input_format); graphStatus CreateInputsForIRBuild(const ge::Graph &graph, vector &inputs); - graphStatus GetDefaultInputShape(const Graph &graph, string &default_shape, bool &dynamic_shape_flag); - graphStatus GetDefaultInputFormat(const Graph &graph, string &default_format); graphStatus UpdateDataOpAttr(const Graph &graph); graphStatus Init(const Graph &graph, const std::map &options); graphStatus BuildModel(const Graph &graph, const std::map &options, @@ -323,106 +320,6 @@ graphStatus Impl::CheckOptions(const std::map &options return GRAPH_SUCCESS; } -graphStatus Impl::CheckInputFormat(const string &input_format) { - if (!input_format.empty()) { - auto iter = ge::input_format_str_to_geformat.find(input_format); - if (iter == ge::input_format_str_to_geformat.end()) { - GELOGE(GRAPH_PARAM_INVALID, "Input format %s not support , expect ND/NCHW/NHWC/CHWN/NC1HWC0/NHWC1C0.", - input_format.c_str()); - return GRAPH_PARAM_INVALID; - } - } - return GRAPH_SUCCESS; -} - -graphStatus Impl::GetDefaultInputFormat(const Graph &graph, string &default_format) { - auto compute_graph = ge::GraphUtils::GetComputeGraph(graph); - GE_CHECK_NOTNULL(compute_graph); - for (ge::NodePtr &input_node : compute_graph->GetDirectNode()) { - GE_CHECK_NOTNULL(input_node); - ge::OpDescPtr op = input_node->GetOpDesc(); - GE_CHECK_NOTNULL(op); - if (op->GetType() == DATA) { - string data_op_name = op->GetName(); - GELOGD("Data op name: %s, data op inputDesc size: %zu", data_op_name.c_str(), op->GetAllInputsDesc().size()); - ge::GeTensorDesc tensor = op->GetInputDesc(0); - ge::GeShape data_shape = tensor.GetShape(); - GELOGD("Data op get shape from InputDesc in ge ir graph."); - - const std::vector &tmp_shape = data_shape.GetDims(); - if (tmp_shape.empty()) { - GELOGD("Data op: %s has zero shape dims!", data_op_name.c_str()); - continue; - } - - bool is_dynamic_input = false; - for (auto tmp_dim : tmp_shape) { - if (tmp_dim < 0) { - is_dynamic_input = true; - } - } - - if (is_dynamic_input) { - string tmp_data_format = ge::TypeUtils::FormatToSerialString(tensor.GetFormat()); - if (!default_format.empty() && tmp_data_format!=default_format) { - GELOGE(GRAPH_PARAM_INVALID, "All data op with dynamic shape has no default format!"); - return GRAPH_PARAM_INVALID; - } else if (default_format.empty()) { - default_format.assign(tmp_data_format); - } - GELOGD("Data op name: %s, data format: %s.", data_op_name.c_str(), default_format.c_str()); - } - } - } - GELOGI("Get default data op format: %s from ge ir graph.", default_format.c_str()); - return GRAPH_SUCCESS; -} - -graphStatus Impl::GetDefaultInputShape(const Graph &graph, string &default_shape, bool &dynamic_shape_flag) { - auto compute_graph = ge::GraphUtils::GetComputeGraph(graph); - GE_CHECK_NOTNULL(compute_graph); - for (ge::NodePtr &input_node : compute_graph->GetDirectNode()) { - GE_CHECK_NOTNULL(input_node); - ge::OpDescPtr op = input_node->GetOpDesc(); - GE_CHECK_NOTNULL(op); - if (op->GetType() == DATA) { - string data_op_name = op->GetName(); - GELOGD("Data op name: %s, data op inputDesc size: %zu", data_op_name.c_str(), op->GetAllInputsDesc().size()); - ge::GeTensorDesc tensor = op->GetInputDesc(0); - ge::GeShape data_shape = tensor.GetShape(); - GELOGD("Data op get shape from InputDesc in ge ir graph."); - - const std::vector &tmp_shape = data_shape.GetDims(); - if (tmp_shape.empty()) { - GELOGW("Data op: %s has zero shape dims!", data_op_name.c_str()); - continue; - } - - string tmp_shape_str; - bool is_dynamic_input = false; - - tmp_shape_str += data_op_name + ":"; - for (auto tmp_dim : tmp_shape) { - if (tmp_dim < 0) { - is_dynamic_input = true; - } - tmp_shape_str += to_string((long)tmp_dim) + ","; - } - tmp_shape_str = tmp_shape_str.substr(0, tmp_shape_str.size() - 1); - tmp_shape_str += ";"; - - if (is_dynamic_input) { - dynamic_shape_flag = true; - default_shape += tmp_shape_str; - GELOGD("Data op name: %s, data shape: %s.", data_op_name.c_str(), tmp_shape_str.c_str()); - } - } - } - default_shape = (default_shape.empty() ? default_shape : default_shape.substr(0, default_shape.size() - 1)); - GELOGI("Get default data op shape: %s from ge ir graph.", default_shape.c_str()); - return GRAPH_SUCCESS; -} - graphStatus Impl::Init(const Graph &graph, const std::map &options) { // 1. check options graphStatus ret = CheckOptions(options); @@ -444,24 +341,8 @@ graphStatus Impl::Init(const Graph &graph, const std::map