From 4bc5a32187efbdc87960a8ca4cd444ac130002bb Mon Sep 17 00:00:00 2001 From: CLAY-panjw <1330286576@qq.com> Date: Mon, 25 Apr 2022 15:49:38 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BC=96=E8=AF=91=E8=BF=9E=E7=BB=AD=E6=8A=A5?= =?UTF-8?q?=E9=94=99=E4=B8=8D=E4=B8=AD=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- parser/onnx/onnx_parser.cc | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/parser/onnx/onnx_parser.cc b/parser/onnx/onnx_parser.cc index 764f8a4..2b04004 100644 --- a/parser/onnx/onnx_parser.cc +++ b/parser/onnx/onnx_parser.cc @@ -594,6 +594,7 @@ Status OnnxModelParser::ParseOpParam(const ge::onnx::NodeProto *node_proto, ge:: } Status OnnxModelParser::ParseAllNodeProto(ge::onnx::GraphProto &onnx_graph, ge::Graph &graph) { + Status status_flag_save = SUCCESS; for (int i = 0; i < onnx_graph.node_size(); i++) { ge::onnx::NodeProto *node_proto = onnx_graph.mutable_node(i); std::string node_name = node_proto->name(); @@ -605,7 +606,8 @@ Status OnnxModelParser::ParseAllNodeProto(ge::onnx::GraphProto &onnx_graph, ge:: if (status != SUCCESS) { GELOGE(status, "[Adapt][OpType] Adapter op type for ori type %s failed.", ori_type.c_str()); REPORT_CALL_ERROR("E19999", "Adapter op type for ori type %s failed.", ori_type.c_str()); - return status; + status_flag_save = status; + continue; } node_proto->set_op_type(ori_type); @@ -616,7 +618,8 @@ Status OnnxModelParser::ParseAllNodeProto(ge::onnx::GraphProto &onnx_graph, ge:: if (status != SUCCESS) { GELOGE(status, "[Trans][Node] Trans node to operator for %s:%s failed.", node_name.c_str(), op_type.c_str()); REPORT_CALL_ERROR("E19999", "Trans node to operator for %s:%s failed.", node_name.c_str(), op_type.c_str()); - return status; + status_flag_save = status; + continue; } // 7. op parser @@ -627,7 +630,8 @@ Status OnnxModelParser::ParseAllNodeProto(ge::onnx::GraphProto &onnx_graph, ge:: status = ParseOpParam(node_proto, op, op_parser); if (status != SUCCESS) { GELOGE(status, "[Parse][Params] for %s:%s failed ret:%d.", node_name.c_str(), op_type.c_str(), status); - return status; + status_flag_save = status; + continue; } GELOGI("After ParseParams, op[%s]: type[%s] have input size: %zu, output size: %zu", @@ -638,7 +642,8 @@ Status OnnxModelParser::ParseAllNodeProto(ge::onnx::GraphProto &onnx_graph, ge:: if (graph_status != ge::GRAPH_SUCCESS) { GELOGE(FAILED, "[Add][Op] Add op:%s to graph failed.", ParserUtils::GetOperatorName(op).c_str()); REPORT_CALL_ERROR("E19999", "Add op:%s to graph failed.", ParserUtils::GetOperatorName(op).c_str()); - return FAILED; + status_flag_save = status; + continue; } name_operator_[ParserUtils::GetOperatorName(op)] = op; @@ -647,11 +652,14 @@ Status OnnxModelParser::ParseAllNodeProto(ge::onnx::GraphProto &onnx_graph, ge:: if (status != SUCCESS) { REPORT_INNER_ERROR("E19999", "ConstructInputOutputContext failed."); GELOGE(status, "[Construct][RelationMap] to input and output failed."); - return status; + status_flag_save = status; + continue; } } - GELOGI("Parse all node proto success."); - return SUCCESS; + if (status_flag_save == SUCCESS) { + GELOGI("Parse all node proto success."); + } + return status_flag_save; } Status OnnxModelParser::GetGraphInputs(ge::onnx::GraphProto &onnx_graph, std::vector &input_ops) {