| @@ -1439,7 +1439,7 @@ Status CaffeModelParser::Parse(const char *model_path, ge::ComputeGraphPtr &grap | |||||
| bool has_error = false; | bool has_error = false; | ||||
| GE_CHECK_NOTNULL(model_path); | GE_CHECK_NOTNULL(model_path); | ||||
| GE_CHECK_NOTNULL(graph); | GE_CHECK_NOTNULL(graph); | ||||
| GELOGI("Caffe Parse model file %s", model_path); | |||||
| GELOGI("Caffe Parse model file [%s]", model_path); | |||||
| PreChecker::Instance().Clear(); | PreChecker::Instance().Clear(); | ||||
| @@ -1473,8 +1473,8 @@ Status CaffeModelParser::Parse(const char *model_path, ge::ComputeGraphPtr &grap | |||||
| GE_RETURN_IF_ERROR(PreCheck(proto_message)); | GE_RETURN_IF_ERROR(PreCheck(proto_message)); | ||||
| if (PreChecker::Instance().HasError()) { | if (PreChecker::Instance().HasError()) { | ||||
| REPORT_INNER_ERROR("E19999", "Precheck failed. Please read check report."); | |||||
| GELOGE(INTERNAL_ERROR, "[Has][Error]Precheck failed. Please read check report."); | |||||
| REPORT_INNER_ERROR("E19999", "Precheck failed. a report of json format will be create, Please read it."); | |||||
| GELOGE(INTERNAL_ERROR, "[Has][Error]Precheck failed. a report of json format will be create, Please read it."); | |||||
| return FAILED; | return FAILED; | ||||
| } | } | ||||
| @@ -99,9 +99,9 @@ Status PreChecker::CheckName(OpId id) { | |||||
| if (id != v.first && info.name == v.second.name) { | if (id != v.first && info.name == v.second.name) { | ||||
| Cause cause; | Cause cause; | ||||
| cause.code = ErrorCode::NAME_REPEATED; | cause.code = ErrorCode::NAME_REPEATED; | ||||
| cause.message = "The name is repeated."; | |||||
| cause.message = "The name is repeated in the graph."; | |||||
| GELOGI("Name %s repeated.", info.name.c_str()); | |||||
| GELOGE(FAILED, "opname %s repeated, same name op in the graph", info.name.c_str()); | |||||
| ErrorManager::GetInstance().ATCReportErrMessage("E19009", {"opname"}, {info.name}); | ErrorManager::GetInstance().ATCReportErrMessage("E19009", {"opname"}, {info.name}); | ||||
| GE_RETURN_WITH_LOG_IF_ERROR(AddCause(id, cause), "[Add][Cause] failed."); | GE_RETURN_WITH_LOG_IF_ERROR(AddCause(id, cause), "[Add][Cause] failed."); | ||||
| GE_RETURN_WITH_LOG_IF_ERROR(AddCause(v.first, cause), "[Add][Cause] failed."); | GE_RETURN_WITH_LOG_IF_ERROR(AddCause(v.first, cause), "[Add][Cause] failed."); | ||||
| @@ -265,9 +265,11 @@ Status PreChecker::CheckTypeSupported(OpId id, const string &type, const string | |||||
| cause.code = ErrorCode::TYPE_UNSUPPORTED; | cause.code = ErrorCode::TYPE_UNSUPPORTED; | ||||
| cause.message = "The type is not supported."; | cause.message = "The type is not supported."; | ||||
| GELOGI("Check op[%s]'s type[%s] failed, it is not supported.", name.c_str(), type.c_str()); | |||||
| if (!is_tensorflow) { | if (!is_tensorflow) { | ||||
| ErrorManager::GetInstance().ATCReportErrMessage("E19010", {"opname", "optype"}, {name, type}); | ErrorManager::GetInstance().ATCReportErrMessage("E19010", {"opname", "optype"}, {name, type}); | ||||
| GELOGE(FAILED, "Check op[%s]'s type[%s] failed, it is not supported.", name.c_str(), type.c_str()); | |||||
| } else { | |||||
| GELOGI("Check op[%s]'s type[%s] is not supported.", name.c_str(), type.c_str()); | |||||
| } | } | ||||
| GE_RETURN_WITH_LOG_IF_ERROR(AddCause(id, cause), "[Add][Cause] failed."); | GE_RETURN_WITH_LOG_IF_ERROR(AddCause(id, cause), "[Add][Cause] failed."); | ||||
| } | } | ||||
| @@ -1361,7 +1361,7 @@ Status TensorFlowModelParser::Parse(const char *model_path, ge::ComputeGraphPtr | |||||
| domi::tensorflow::GraphDef ori_def; | domi::tensorflow::GraphDef ori_def; | ||||
| bool read = ge::parser::ReadProtoFromBinaryFile(model_path, &ori_def); | bool read = ge::parser::ReadProtoFromBinaryFile(model_path, &ori_def); | ||||
| if (!read) { | if (!read) { | ||||
| GELOGE(FAILED, "read_proto_from_binary failed."); | |||||
| GELOGE(FAILED, "read_proto_from_binary failed. --framework=3, file format should be tensorflow."); | |||||
| return INTERNAL_ERROR; | return INTERNAL_ERROR; | ||||
| } | } | ||||
| @@ -3186,7 +3186,7 @@ Status TensorFlowModelParser::TrimGraphByOutput(const domi::tensorflow::GraphDef | |||||
| GE_CHK_BOOL_EXEC(node_lookup.count(current_input) > 0U, | GE_CHK_BOOL_EXEC(node_lookup.count(current_input) > 0U, | ||||
| ErrorManager::GetInstance().ATCReportErrMessage("E10016", {"parameter", "opname"}, | ErrorManager::GetInstance().ATCReportErrMessage("E10016", {"parameter", "opname"}, | ||||
| {"out_nodes", current_input}); | {"out_nodes", current_input}); | ||||
| return FAILED, "Input op[%s] not found in graph.", current_input.c_str()); | |||||
| return FAILED, "op[%s] not found in graph.", current_input.c_str()); | |||||
| const NodeDef *current_node = node_lookup[current_input]; | const NodeDef *current_node = node_lookup[current_input]; | ||||
| GE_CHECK_NOTNULL(current_node); | GE_CHECK_NOTNULL(current_node); | ||||
| for (const string &input_name : current_node->input()) { | for (const string &input_name : current_node->input()) { | ||||
| @@ -3442,7 +3442,10 @@ Status TensorFlowModelParser::AddControlEdgeAfterRemoveInputs(domi::tensorflow:: | |||||
| if (input_node_def->op() == parser::SWITCH || input_node_def->op() == parser::REFSWITCH) { | if (input_node_def->op() == parser::SWITCH || input_node_def->op() == parser::REFSWITCH) { | ||||
| NodeDef *identity_node_def = graph_def->add_node(); | NodeDef *identity_node_def = graph_def->add_node(); | ||||
| GE_CHECK_NOTNULL(identity_node_def); | GE_CHECK_NOTNULL(identity_node_def); | ||||
| input_node_name = input_node_name + "identity"; | |||||
| std::string remove_input_name = remove_input; | |||||
| remove_input_name = remove_input_name.find(":") == std::string::npos ? | |||||
| input_node_name : (remove_input_name.replace(remove_input_name.find(":"), 1, "_")); | |||||
| input_node_name = remove_input_name + "_identity"; | |||||
| identity_node_def->set_name(input_node_name); | identity_node_def->set_name(input_node_name); | ||||
| identity_node_def->set_op(parser::IDENTITY); | identity_node_def->set_op(parser::IDENTITY); | ||||
| identity_node_def->add_input(remove_input); | identity_node_def->add_input(remove_input); | ||||
| @@ -36,6 +36,7 @@ | |||||
| #include "parser/caffe/caffe_op_parser.h" | #include "parser/caffe/caffe_op_parser.h" | ||||
| #include "graph/operator_reg.h" | #include "graph/operator_reg.h" | ||||
| #include "parser/common/acl_graph_parser_util.h" | #include "parser/common/acl_graph_parser_util.h" | ||||
| #include "common/op_map.h" | |||||
| #undef protected | #undef protected | ||||
| #undef private | #undef private | ||||
| @@ -223,6 +224,10 @@ TEST_F(STestCaffeParser, acl_caffe_parser) { | |||||
| EXPECT_EQ(ret, GRAPH_FAILED); | EXPECT_EQ(ret, GRAPH_FAILED); | ||||
| ret = ge::aclgrphParseCaffe(model_file.c_str(), weight_file.c_str(), graph); | ret = ge::aclgrphParseCaffe(model_file.c_str(), weight_file.c_str(), graph); | ||||
| EXPECT_EQ(ret, GRAPH_FAILED); | EXPECT_EQ(ret, GRAPH_FAILED); | ||||
| caffe_op_map.clear(); | |||||
| ret = ge::aclgrphParseCaffe(model_file.c_str(), weight_file.c_str(), parser_params, graph); | |||||
| EXPECT_EQ(ret, GRAPH_FAILED); | |||||
| } | } | ||||
| TEST_F(STestCaffeParser, modelparser_parsefrommemory_success) | TEST_F(STestCaffeParser, modelparser_parsefrommemory_success) | ||||
| @@ -2832,6 +2832,15 @@ TEST_F(STestTensorflowParser, tensorflow_AddControlEdgeAfterRemoveInputs_test) | |||||
| removed_inputs_vec.emplace_back("Add0"); | removed_inputs_vec.emplace_back("Add0"); | ||||
| Status ret = tensorflow_parser.AddControlEdgeAfterRemoveInputs(&graph_def, node_def, all_node_map, removed_inputs_vec); | Status ret = tensorflow_parser.AddControlEdgeAfterRemoveInputs(&graph_def, node_def, all_node_map, removed_inputs_vec); | ||||
| EXPECT_EQ(ret, SUCCESS); | EXPECT_EQ(ret, SUCCESS); | ||||
| tensorflow::NodeDef *node_swith = initNodeDef(); | |||||
| node_swith->set_name("switch_op"); | |||||
| node_swith->set_op(parser::SWITCH); | |||||
| all_node_map.emplace("switch_op", node_swith); | |||||
| removed_inputs_vec.clear(); | |||||
| removed_inputs_vec.emplace_back("switch_op"); | |||||
| ret = tensorflow_parser.AddControlEdgeAfterRemoveInputs(&graph_def, node_swith, all_node_map, removed_inputs_vec); | |||||
| EXPECT_EQ(ret, SUCCESS); | |||||
| } | } | ||||
| TEST_F(STestTensorflowParser, tensorflow_GraphDefOptimizeIdentity_test) | TEST_F(STestTensorflowParser, tensorflow_GraphDefOptimizeIdentity_test) | ||||
| @@ -39,6 +39,7 @@ | |||||
| #include "graph/operator_reg.h" | #include "graph/operator_reg.h" | ||||
| #include "parser/common/acl_graph_parser_util.h" | #include "parser/common/acl_graph_parser_util.h" | ||||
| #include "parser/caffe/caffe_reshape_parser.h" | #include "parser/caffe/caffe_reshape_parser.h" | ||||
| #include "common/op_map.h" | |||||
| #undef protected | #undef protected | ||||
| #undef private | #undef private | ||||
| @@ -266,6 +267,10 @@ TEST_F(UtestCaffeParser, acl_caffe_parser) { | |||||
| EXPECT_EQ(ret, GRAPH_FAILED); | EXPECT_EQ(ret, GRAPH_FAILED); | ||||
| ret = ge::aclgrphParseCaffe(model_file.c_str(), weight_file.c_str(), graph); | ret = ge::aclgrphParseCaffe(model_file.c_str(), weight_file.c_str(), graph); | ||||
| EXPECT_EQ(ret, GRAPH_FAILED); | EXPECT_EQ(ret, GRAPH_FAILED); | ||||
| caffe_op_map.clear(); | |||||
| ret = ge::aclgrphParseCaffe(model_file.c_str(), weight_file.c_str(), parser_params, graph); | |||||
| EXPECT_EQ(ret, GRAPH_FAILED); | |||||
| } | } | ||||
| TEST_F(UtestCaffeParser, ParseFromMemory_success) | TEST_F(UtestCaffeParser, ParseFromMemory_success) | ||||
| @@ -34,6 +34,7 @@ | |||||
| #include "parser/common/pass_manager.h" | #include "parser/common/pass_manager.h" | ||||
| #include "parser/common/tbe_plugin_loader.h" | #include "parser/common/tbe_plugin_loader.h" | ||||
| #include "parser/common/parser_fp16_t.h" | #include "parser/common/parser_fp16_t.h" | ||||
| #include "parser/common/pre_checker.h" | |||||
| #undef protected | #undef protected | ||||
| #undef private | #undef private | ||||
| @@ -342,4 +343,15 @@ TEST_F(UtestAclGraphParser, test_operatoreq) | |||||
| int8 = fp16; | int8 = fp16; | ||||
| } | } | ||||
| TEST_F(UtestAclGraphParser, test_pre_checker) { | |||||
| PreChecker::Instance().fmk_op_types_ = nullptr; | |||||
| const char* str = "iiii"; | |||||
| PreChecker::OpId id = str; | |||||
| std::string type("ddd"); | |||||
| std::string name("lll"); | |||||
| Status ret = PreChecker::Instance().CheckTypeSupported(id, type, name, false); | |||||
| EXPECT_EQ(ret, FAILED); | |||||
| ret = PreChecker::Instance().CheckTypeSupported(id, type, name, true); | |||||
| EXPECT_EQ(ret, FAILED); | |||||
| } | |||||
| } // namespace ge | } // namespace ge | ||||
| @@ -3008,6 +3008,15 @@ TEST_F(UtestTensorflowParser, tensorflow_AddControlEdgeAfterRemoveInputs_test) | |||||
| removed_inputs_vec.emplace_back("Add0"); | removed_inputs_vec.emplace_back("Add0"); | ||||
| Status ret = tensorflow_parser.AddControlEdgeAfterRemoveInputs(&graph_def, node_def, all_node_map, removed_inputs_vec); | Status ret = tensorflow_parser.AddControlEdgeAfterRemoveInputs(&graph_def, node_def, all_node_map, removed_inputs_vec); | ||||
| EXPECT_EQ(ret, SUCCESS); | EXPECT_EQ(ret, SUCCESS); | ||||
| tensorflow::NodeDef *node_swith = initNodeDef(); | |||||
| node_swith->set_name("switch_op"); | |||||
| node_swith->set_op(parser::SWITCH); | |||||
| all_node_map.emplace("switch_op", node_swith); | |||||
| removed_inputs_vec.clear(); | |||||
| removed_inputs_vec.emplace_back("switch_op"); | |||||
| ret = tensorflow_parser.AddControlEdgeAfterRemoveInputs(&graph_def, node_swith, all_node_map, removed_inputs_vec); | |||||
| EXPECT_EQ(ret, SUCCESS); | |||||
| } | } | ||||
| TEST_F(UtestTensorflowParser, tensorflow_GraphDefOptimizeIdentity_test) | TEST_F(UtestTensorflowParser, tensorflow_GraphDefOptimizeIdentity_test) | ||||