Browse Source

!524 dts fix

Merge pull request !524 from 韩健/hanjian
pull/525/head
i-robot Gitee 3 years ago
parent
commit
87ea040b5a
No known key found for this signature in database GPG Key ID: 173E9B9CA92EEF8F
8 changed files with 54 additions and 9 deletions
  1. +3
    -3
      parser/caffe/caffe_parser.cc
  2. +5
    -3
      parser/common/pre_checker.cc
  3. +6
    -3
      parser/tensorflow/tensorflow_parser.cc
  4. +5
    -0
      tests/st/testcase/test_caffe_parser.cc
  5. +9
    -0
      tests/st/testcase/test_tensorflow_parser.cc
  6. +5
    -0
      tests/ut/parser/testcase/caffe_parser_testcase/caffe_parser_unittest.cc
  7. +12
    -0
      tests/ut/parser/testcase/common/acl_graph_parser_unittest.cc
  8. +9
    -0
      tests/ut/parser/testcase/tensorflow_parser_testcase/tensorflow_parser_unittest.cc

+ 3
- 3
parser/caffe/caffe_parser.cc View File

@@ -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;
} }




+ 5
- 3
parser/common/pre_checker.cc View File

@@ -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.");
} }


+ 6
- 3
parser/tensorflow/tensorflow_parser.cc View File

@@ -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);


+ 5
- 0
tests/st/testcase/test_caffe_parser.cc View File

@@ -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)


+ 9
- 0
tests/st/testcase/test_tensorflow_parser.cc View File

@@ -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)


+ 5
- 0
tests/ut/parser/testcase/caffe_parser_testcase/caffe_parser_unittest.cc View File

@@ -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)


+ 12
- 0
tests/ut/parser/testcase/common/acl_graph_parser_unittest.cc View File

@@ -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

+ 9
- 0
tests/ut/parser/testcase/tensorflow_parser_testcase/tensorflow_parser_unittest.cc View File

@@ -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)


Loading…
Cancel
Save