@@ -130,9 +130,9 @@ target_compile_definitions(parser_graph_library_proto_obj PRIVATE | |||||
) | ) | ||||
target_link_libraries(parser_graph_library_proto_obj PRIVATE ascend_protobuf $<BUILD_INTERFACE:intf_pub>) | target_link_libraries(parser_graph_library_proto_obj PRIVATE ascend_protobuf $<BUILD_INTERFACE:intf_pub>) | ||||
target_compile_options(parser_graph_library_proto_obj PRIVATE | target_compile_options(parser_graph_library_proto_obj PRIVATE | ||||
$<$<STREQUAL:${TARGET_SYSTEM_NAME},Linux>:-O2 -fPIC> | |||||
$<$<STREQUAL:${TARGET_SYSTEM_NAME},Linux>:-O2 -fPIC -Wextra -Wfloat-equal> | |||||
$<$<OR:$<STREQUAL:${PRODUCT_SIDE},host>,$<STREQUAL:${ENABLE_OPEN_SRC},True>>:-fexceptions> | $<$<OR:$<STREQUAL:${PRODUCT_SIDE},host>,$<STREQUAL:${ENABLE_OPEN_SRC},True>>:-fexceptions> | ||||
$<$<OR:$<STREQUAL:${TARGET_SYSTEM_NAME},Linux>,$<STREQUAL:${TARGET_SYSTEM_NAME},Android>>: -Wno-deprecated-declarations -fno-common> | |||||
$<$<OR:$<STREQUAL:${TARGET_SYSTEM_NAME},Linux>,$<STREQUAL:${TARGET_SYSTEM_NAME},Android>>:-fno-common -Wextra -Wfloat-equal> | |||||
$<$<AND:$<STREQUAL:${TARGET_SYSTEM_NAME},Windows>,$<STREQUAL:${CMAKE_CONFIGURATION_TYPES},Debug>>:/MTd> | $<$<AND:$<STREQUAL:${TARGET_SYSTEM_NAME},Windows>,$<STREQUAL:${CMAKE_CONFIGURATION_TYPES},Debug>>:/MTd> | ||||
$<$<AND:$<STREQUAL:${TARGET_SYSTEM_NAME},Windows>,$<STREQUAL:${CMAKE_CONFIGURATION_TYPES},Release>>:/MT> | $<$<AND:$<STREQUAL:${TARGET_SYSTEM_NAME},Windows>,$<STREQUAL:${CMAKE_CONFIGURATION_TYPES},Release>>:/MT> | ||||
) | ) | ||||
@@ -151,9 +151,9 @@ target_compile_definitions(parser_tensorflow_protos_obj PRIVATE | |||||
) | ) | ||||
target_link_libraries(parser_tensorflow_protos_obj PRIVATE ascend_protobuf $<BUILD_INTERFACE:intf_pub>) | target_link_libraries(parser_tensorflow_protos_obj PRIVATE ascend_protobuf $<BUILD_INTERFACE:intf_pub>) | ||||
target_compile_options(parser_tensorflow_protos_obj PRIVATE | target_compile_options(parser_tensorflow_protos_obj PRIVATE | ||||
$<$<STREQUAL:${TARGET_SYSTEM_NAME},Linux>:-O2 -fPIC> | |||||
$<$<STREQUAL:${TARGET_SYSTEM_NAME},Linux>:-O2 -fPIC -Wextra -Wfloat-equal> | |||||
$<$<OR:$<STREQUAL:${PRODUCT_SIDE},host>,$<STREQUAL:${ENABLE_OPEN_SRC},True>>:-fexceptions> | $<$<OR:$<STREQUAL:${PRODUCT_SIDE},host>,$<STREQUAL:${ENABLE_OPEN_SRC},True>>:-fexceptions> | ||||
$<$<OR:$<STREQUAL:${TARGET_SYSTEM_NAME},Linux>,$<STREQUAL:${TARGET_SYSTEM_NAME},Android>>: -Wno-deprecated-declarations -fno-common> | |||||
$<$<OR:$<STREQUAL:${TARGET_SYSTEM_NAME},Linux>,$<STREQUAL:${TARGET_SYSTEM_NAME},Android>>:-fno-common -Wextra -Wfloat-equal> | |||||
$<$<AND:$<STREQUAL:${TARGET_SYSTEM_NAME},Windows>,$<STREQUAL:${CMAKE_CONFIGURATION_TYPES},Debug>>:/MTd> | $<$<AND:$<STREQUAL:${TARGET_SYSTEM_NAME},Windows>,$<STREQUAL:${CMAKE_CONFIGURATION_TYPES},Debug>>:/MTd> | ||||
$<$<AND:$<STREQUAL:${TARGET_SYSTEM_NAME},Windows>,$<STREQUAL:${CMAKE_CONFIGURATION_TYPES},Release>>:/MT> | $<$<AND:$<STREQUAL:${TARGET_SYSTEM_NAME},Windows>,$<STREQUAL:${CMAKE_CONFIGURATION_TYPES},Release>>:/MT> | ||||
) | ) | ||||
@@ -172,9 +172,9 @@ target_compile_definitions(parser_onnx_protos_obj PRIVATE | |||||
) | ) | ||||
target_link_libraries(parser_onnx_protos_obj PRIVATE ascend_protobuf $<BUILD_INTERFACE:intf_pub>) | target_link_libraries(parser_onnx_protos_obj PRIVATE ascend_protobuf $<BUILD_INTERFACE:intf_pub>) | ||||
target_compile_options(parser_onnx_protos_obj PRIVATE | target_compile_options(parser_onnx_protos_obj PRIVATE | ||||
$<$<STREQUAL:${TARGET_SYSTEM_NAME},Linux>:-O2 -fPIC> | |||||
$<$<STREQUAL:${TARGET_SYSTEM_NAME},Linux>:-O2 -fPIC -Wextra -Wfloat-equal> | |||||
$<$<OR:$<STREQUAL:${PRODUCT_SIDE},host>,$<STREQUAL:${ENABLE_OPEN_SRC},True>>:-fexceptions> | $<$<OR:$<STREQUAL:${PRODUCT_SIDE},host>,$<STREQUAL:${ENABLE_OPEN_SRC},True>>:-fexceptions> | ||||
$<$<OR:$<STREQUAL:${TARGET_SYSTEM_NAME},Linux>,$<STREQUAL:${TARGET_SYSTEM_NAME},Android>>: -Wno-deprecated-declarations -fno-common> | |||||
$<$<OR:$<STREQUAL:${TARGET_SYSTEM_NAME},Linux>,$<STREQUAL:${TARGET_SYSTEM_NAME},Android>>:-fno-common -Wextra -Wfloat-equal> | |||||
$<$<AND:$<STREQUAL:${TARGET_SYSTEM_NAME},Windows>,$<STREQUAL:${CMAKE_CONFIGURATION_TYPES},Debug>>:/MTd> | $<$<AND:$<STREQUAL:${TARGET_SYSTEM_NAME},Windows>,$<STREQUAL:${CMAKE_CONFIGURATION_TYPES},Debug>>:/MTd> | ||||
$<$<AND:$<STREQUAL:${TARGET_SYSTEM_NAME},Windows>,$<STREQUAL:${CMAKE_CONFIGURATION_TYPES},Release>>:/MT> | $<$<AND:$<STREQUAL:${TARGET_SYSTEM_NAME},Windows>,$<STREQUAL:${CMAKE_CONFIGURATION_TYPES},Release>>:/MT> | ||||
) | ) | ||||
@@ -193,9 +193,9 @@ target_compile_definitions(parser_caffe_proto_obj PRIVATE | |||||
) | ) | ||||
target_link_libraries(parser_caffe_proto_obj PRIVATE ascend_protobuf $<BUILD_INTERFACE:intf_pub>) | target_link_libraries(parser_caffe_proto_obj PRIVATE ascend_protobuf $<BUILD_INTERFACE:intf_pub>) | ||||
target_compile_options(parser_caffe_proto_obj PRIVATE | target_compile_options(parser_caffe_proto_obj PRIVATE | ||||
$<$<STREQUAL:${TARGET_SYSTEM_NAME},Linux>:-O2 -fPIC> | |||||
$<$<STREQUAL:${TARGET_SYSTEM_NAME},Linux>:-O2 -fPIC -Wextra -Wfloat-equal> | |||||
$<$<OR:$<STREQUAL:${PRODUCT_SIDE},host>,$<STREQUAL:${ENABLE_OPEN_SRC},True>>:-fexceptions> | $<$<OR:$<STREQUAL:${PRODUCT_SIDE},host>,$<STREQUAL:${ENABLE_OPEN_SRC},True>>:-fexceptions> | ||||
$<$<OR:$<STREQUAL:${TARGET_SYSTEM_NAME},Linux>,$<STREQUAL:${TARGET_SYSTEM_NAME},Android>>: -Wno-deprecated-declarations -fno-common> | |||||
$<$<OR:$<STREQUAL:${TARGET_SYSTEM_NAME},Linux>,$<STREQUAL:${TARGET_SYSTEM_NAME},Android>>:-fno-common -Wextra -Wfloat-equal> | |||||
$<$<AND:$<STREQUAL:${TARGET_SYSTEM_NAME},Windows>,$<STREQUAL:${CMAKE_CONFIGURATION_TYPES},Debug>>:/MTd> | $<$<AND:$<STREQUAL:${TARGET_SYSTEM_NAME},Windows>,$<STREQUAL:${CMAKE_CONFIGURATION_TYPES},Debug>>:/MTd> | ||||
$<$<AND:$<STREQUAL:${TARGET_SYSTEM_NAME},Windows>,$<STREQUAL:${CMAKE_CONFIGURATION_TYPES},Release>>:/MT> | $<$<AND:$<STREQUAL:${TARGET_SYSTEM_NAME},Windows>,$<STREQUAL:${CMAKE_CONFIGURATION_TYPES},Release>>:/MT> | ||||
) | ) | ||||
@@ -1 +1 @@ | |||||
Subproject commit 8102890add03198d569205ea704b38c9b2a6d280 | |||||
Subproject commit f62cba4fdf845ffe04e5c1e37ea990d22c438910 |
@@ -44,9 +44,10 @@ add_library(fmk_parser SHARED | |||||
target_compile_options(fmk_parser PRIVATE | target_compile_options(fmk_parser PRIVATE | ||||
-Werror | -Werror | ||||
-Wno-deprecated-declarations | |||||
-fno-common | -fno-common | ||||
-fvisibility=hidden | -fvisibility=hidden | ||||
-Wextra | |||||
-Wfloat-equal | |||||
) | ) | ||||
target_compile_definitions(fmk_parser PRIVATE | target_compile_definitions(fmk_parser PRIVATE | ||||
@@ -136,6 +137,8 @@ add_library(fmk_parser_stub SHARED | |||||
target_compile_options(fmk_parser_stub PRIVATE | target_compile_options(fmk_parser_stub PRIVATE | ||||
-O2 | -O2 | ||||
-fno-common | -fno-common | ||||
-Wextra | |||||
-Wfloat-equal | |||||
) | ) | ||||
target_compile_definitions(fmk_parser_stub PRIVATE | target_compile_definitions(fmk_parser_stub PRIVATE | ||||
@@ -25,6 +25,7 @@ | |||||
#include "graph/utils/graph_utils.h" | #include "graph/utils/graph_utils.h" | ||||
#include "parser/common/op_parser_factory.h" | #include "parser/common/op_parser_factory.h" | ||||
#include "register/op_registry.h" | #include "register/op_registry.h" | ||||
#include "parser/common/parser_utils.h" | |||||
using domi::ParseParamByOpFunc; | using domi::ParseParamByOpFunc; | ||||
using domi::ParseParamFunc; | using domi::ParseParamFunc; | ||||
@@ -60,19 +61,20 @@ Status CaffeCustomParserAdapter::ParseParams(const Message *op_src, ge::OpDescPt | |||||
} | } | ||||
Status CaffeCustomParserAdapter::ParseParams(const Operator &op_src, const ge::OpDescPtr &op_dest) { | Status CaffeCustomParserAdapter::ParseParams(const Operator &op_src, const ge::OpDescPtr &op_dest) { | ||||
GELOGI("Caffe custom op begin to params: layer name = %s, layer type= %s ", op_src.GetName().c_str(), | |||||
op_src.GetOpType().c_str()); | |||||
GELOGI("Caffe custom op begin to params: layer name = %s, layer type= %s ", | |||||
ParserUtils::GetOperatorName(op_src).c_str(), ParserUtils::GetOperatorType(op_src).c_str()); | |||||
GE_CHECK_NOTNULL(op_dest); | GE_CHECK_NOTNULL(op_dest); | ||||
ParseParamByOpFunc custom_op_parser = domi::OpRegistry::Instance()->GetParseParamByOperatorFunc(op_src.GetOpType()); | |||||
ParseParamByOpFunc custom_op_parser = domi::OpRegistry::Instance()->GetParseParamByOperatorFunc( | |||||
ParserUtils::GetOperatorType(op_src)); | |||||
GE_CHECK_NOTNULL(custom_op_parser); | GE_CHECK_NOTNULL(custom_op_parser); | ||||
op_dest->SetName(op_src.GetName()); | |||||
op_dest->SetName(ParserUtils::GetOperatorName(op_src)); | |||||
ge::Operator op = ge::OpDescUtils::CreateOperatorFromOpDesc(op_dest); | ge::Operator op = ge::OpDescUtils::CreateOperatorFromOpDesc(op_dest); | ||||
GE_CHK_BOOL_RET_STATUS(custom_op_parser(op_src, op) == SUCCESS, FAILED, | GE_CHK_BOOL_RET_STATUS(custom_op_parser(op_src, op) == SUCCESS, FAILED, | ||||
"[Invoke][CustomOpParser] failed, layer name:%s, type:%s", | "[Invoke][CustomOpParser] failed, layer name:%s, type:%s", | ||||
op_src.GetName().c_str(), op_src.GetOpType().c_str()); | |||||
ParserUtils::GetOperatorName(op_src).c_str(), ParserUtils::GetOperatorType(op_src).c_str()); | |||||
return SUCCESS; | return SUCCESS; | ||||
} | } | ||||
@@ -25,11 +25,22 @@ using domi::caffe::BlobProto; | |||||
using domi::CAFFE; | using domi::CAFFE; | ||||
namespace ge { | namespace ge { | ||||
Status CaffeOpParser::ParseParams(const Message *op_src, ge::OpDescPtr &op_dest) { return SUCCESS; } | |||||
Status CaffeOpParser::ParseParams(const Message *op_src, ge::OpDescPtr &op_dest) { | |||||
(void)op_src; | |||||
(void)op_dest; | |||||
return SUCCESS; | |||||
} | |||||
Status CaffeOpParser::ParseWeights(const Message *op_src, ge::NodePtr &node) { return SUCCESS; } | |||||
Status CaffeOpParser::ParseWeights(const Message *op_src, ge::NodePtr &node) { | |||||
(void)op_src; | |||||
(void)node; | |||||
return SUCCESS; | |||||
} | |||||
Status CaffeOpParser::AddConstInput(ge::NodePtr &node) { return SUCCESS; } | |||||
Status CaffeOpParser::AddConstInput(ge::NodePtr &node) { | |||||
(void)node; | |||||
return SUCCESS; | |||||
} | |||||
void CaffeOpParser::ConvertShape(const BlobProto &proto, std::vector<int64_t> &shape) { | void CaffeOpParser::ConvertShape(const BlobProto &proto, std::vector<int64_t> &shape) { | ||||
shape.clear(); | shape.clear(); | ||||
@@ -55,6 +55,8 @@ class PARSER_FUNC_VISIBILITY CaffeOpParser : public OpParser { | |||||
Status ParseParams(const Message *op_src, ge::OpDescPtr &op_dest) override; | Status ParseParams(const Message *op_src, ge::OpDescPtr &op_dest) override; | ||||
Status ParseParams(const Message *op_src, ge::Operator &op_dest) override { | Status ParseParams(const Message *op_src, ge::Operator &op_dest) override { | ||||
(void)op_src; | |||||
(void)op_dest; | |||||
return domi::SUCCESS; | return domi::SUCCESS; | ||||
} | } | ||||
@@ -54,6 +54,7 @@ | |||||
#include "register/op_registry.h" | #include "register/op_registry.h" | ||||
#include "register/register_fmk_types.h" | #include "register/register_fmk_types.h" | ||||
#include "mmpa/mmpa_api.h" | #include "mmpa/mmpa_api.h" | ||||
#include "parser/common/parser_utils.h" | |||||
using domi::caffe::ConvolutionParameter; | using domi::caffe::ConvolutionParameter; | ||||
using domi::caffe::InnerProductParameter; | using domi::caffe::InnerProductParameter; | ||||
@@ -106,27 +107,31 @@ graphStatus aclgrphParseCaffe(const char *model_file, const char *weights_file, | |||||
// parse caffe model_file and weights_file to GE graph | // parse caffe model_file and weights_file to GE graph | ||||
ge::graphStatus ret = model_parser->Parse(model_file, graph); | ge::graphStatus ret = model_parser->Parse(model_file, graph); | ||||
if (ret != ge::SUCCESS) { | if (ret != ge::SUCCESS) { | ||||
REPORT_CALL_ERROR("E19999", "parse param:model_file %s failed, graph:%s.", model_file, graph.GetName().c_str()); | |||||
GELOGE(ret, "[Parser][Param]ModelFile %s failed, graph:%s.", model_file, graph.GetName().c_str()); | |||||
REPORT_CALL_ERROR("E19999", "parse param:model_file %s failed, graph:%s.", | |||||
model_file, ParserUtils::GetGraphName(graph).c_str()); | |||||
GELOGE(ret, "[Parser][Param]ModelFile %s failed, graph:%s.", model_file, | |||||
ParserUtils::GetGraphName(graph).c_str()); | |||||
return ge::FAILED; | return ge::FAILED; | ||||
} | } | ||||
GELOGI("Parser graph %s success.", graph.GetName().c_str()); | |||||
GELOGI("Parser graph %s success.", ParserUtils::GetGraphName(graph).c_str()); | |||||
auto weights_parser = domi::WeightsParserFactory::Instance()->CreateWeightsParser(domi::CAFFE); | auto weights_parser = domi::WeightsParserFactory::Instance()->CreateWeightsParser(domi::CAFFE); | ||||
GE_CHECK_NOTNULL(weights_parser); | GE_CHECK_NOTNULL(weights_parser); | ||||
ret = weights_parser->Parse(weights_file, graph); | ret = weights_parser->Parse(weights_file, graph); | ||||
if (ret != ge::SUCCESS) { | if (ret != ge::SUCCESS) { | ||||
REPORT_CALL_ERROR("E19999", "parse param:weights_file %s failed, graph:%s", weights_file, graph.GetName().c_str()); | |||||
GELOGE(ret, "[Parse][Param]WeightsFile %s failed. graph: %s", weights_file, graph.GetName().c_str()); | |||||
REPORT_CALL_ERROR("E19999", "parse param:weights_file %s failed, graph:%s", | |||||
weights_file, ParserUtils::GetGraphName(graph).c_str()); | |||||
GELOGE(ret, "[Parse][Param]WeightsFile %s failed. graph: %s", weights_file, | |||||
ParserUtils::GetGraphName(graph).c_str()); | |||||
return ret; | return ret; | ||||
} | } | ||||
GELOGI("Weights parse success. graph: %s", graph.GetName().c_str()); | |||||
GELOGI("Weights parse success. graph: %s", ParserUtils::GetGraphName(graph).c_str()); | |||||
std::map<AscendString, AscendString> parser_params; | std::map<AscendString, AscendString> parser_params; | ||||
if (acl_graph_parse_util.SetOutputNodeInfo(graph, parser_params) != ge::SUCCESS) { | if (acl_graph_parse_util.SetOutputNodeInfo(graph, parser_params) != ge::SUCCESS) { | ||||
REPORT_CALL_ERROR("E19999", "SetOutputNodeInfo failed, model file:%s graph:%s", | REPORT_CALL_ERROR("E19999", "SetOutputNodeInfo failed, model file:%s graph:%s", | ||||
model_file, graph.GetName().c_str()); | |||||
model_file, ParserUtils::GetGraphName(graph).c_str()); | |||||
GELOGE(ret, "[Invoke][SetOutputNodeInfo]Set graph %s default output node failed, model file:%s.", | GELOGE(ret, "[Invoke][SetOutputNodeInfo]Set graph %s default output node failed, model file:%s.", | ||||
graph.GetName().c_str(), model_file); | |||||
ParserUtils::GetGraphName(graph).c_str(), model_file); | |||||
return ge::FAILED; | return ge::FAILED; | ||||
} | } | ||||
return ge::SUCCESS; | return ge::SUCCESS; | ||||
@@ -166,15 +171,17 @@ graphStatus aclgrphParseCaffe(const char *model_file, const char *weights_file, | |||||
// parse caffe model_file and weights_file to GE graph | // parse caffe model_file and weights_file to GE graph | ||||
ge::graphStatus ret = model_parser->Parse(model_file, graph); | ge::graphStatus ret = model_parser->Parse(model_file, graph); | ||||
if (ret != ge::SUCCESS) { | if (ret != ge::SUCCESS) { | ||||
REPORT_CALL_ERROR("E19999", "Parse param:model_file %s failed, graph:%s", model_file, graph.GetName().c_str()); | |||||
GELOGE(ret, "[Parser][Param]ModelFile %s failed, graph %s.", model_file, graph.GetName().c_str()); | |||||
REPORT_CALL_ERROR("E19999", "Parse param:model_file %s failed, graph:%s", | |||||
model_file, ParserUtils::GetGraphName(graph).c_str()); | |||||
GELOGE(ret, "[Parser][Param]ModelFile %s failed, graph %s.", | |||||
model_file, ParserUtils::GetGraphName(graph).c_str()); | |||||
return ge::FAILED; | return ge::FAILED; | ||||
} | } | ||||
GELOGI("Parser graph %s success.", graph.GetName().c_str()); | |||||
GELOGI("Parser graph %s success.", ParserUtils::GetGraphName(graph).c_str()); | |||||
if (acl_graph_parse_util.ParseParamsAfterGraph(graph, parser_params) != ge::SUCCESS) { | if (acl_graph_parse_util.ParseParamsAfterGraph(graph, parser_params) != ge::SUCCESS) { | ||||
REPORT_CALL_ERROR("E19999", "ParseParamsAfterGraph failed, graph:%s.", graph.GetName().c_str()); | |||||
GELOGE(ge::FAILED, "[Parser][Params] after graph failed, graph:%s.", graph.GetName().c_str()); | |||||
REPORT_CALL_ERROR("E19999", "ParseParamsAfterGraph failed, graph:%s.", ParserUtils::GetGraphName(graph).c_str()); | |||||
GELOGE(ge::FAILED, "[Parser][Params] after graph failed, graph:%s.", ParserUtils::GetGraphName(graph).c_str()); | |||||
return ge::FAILED; | return ge::FAILED; | ||||
} | } | ||||
@@ -182,19 +189,21 @@ graphStatus aclgrphParseCaffe(const char *model_file, const char *weights_file, | |||||
GE_CHECK_NOTNULL(weights_parser); | GE_CHECK_NOTNULL(weights_parser); | ||||
ret = weights_parser->Parse(weights_file, graph); | ret = weights_parser->Parse(weights_file, graph); | ||||
if (ret != ge::SUCCESS) { | if (ret != ge::SUCCESS) { | ||||
REPORT_CALL_ERROR("E19999", "parse param:weights_file %s failed, graph: %s", weights_file, graph.GetName().c_str()); | |||||
GELOGE(ret, "[Parse][Param]WeightsFile %s failed. graph: %s", weights_file, graph.GetName().c_str()); | |||||
REPORT_CALL_ERROR("E19999", "parse param:weights_file %s failed, graph: %s", | |||||
weights_file, ParserUtils::GetGraphName(graph).c_str()); | |||||
GELOGE(ret, "[Parse][Param]WeightsFile %s failed. graph: %s", | |||||
weights_file, ParserUtils::GetGraphName(graph).c_str()); | |||||
return ret; | return ret; | ||||
} | } | ||||
GELOGI("Weights parse success. graph: %s", graph.GetName().c_str()); | |||||
GELOGI("Weights parse success. graph: %s", ParserUtils::GetGraphName(graph).c_str()); | |||||
if (acl_graph_parse_util.SetOutputNodeInfo(graph, parser_params) != ge::SUCCESS) { | if (acl_graph_parse_util.SetOutputNodeInfo(graph, parser_params) != ge::SUCCESS) { | ||||
REPORT_CALL_ERROR("E19999", "SetOutputNodeInfo failed, graph:%s", graph.GetName().c_str()); | |||||
REPORT_CALL_ERROR("E19999", "SetOutputNodeInfo failed, graph:%s", ParserUtils::GetGraphName(graph).c_str()); | |||||
GELOGE(ge::FAILED, "[Invoke][SetOutputNodeInfo]Set graph %s default output node failed.", | GELOGE(ge::FAILED, "[Invoke][SetOutputNodeInfo]Set graph %s default output node failed.", | ||||
graph.GetName().c_str()); | |||||
ParserUtils::GetGraphName(graph).c_str()); | |||||
return ge::FAILED; | return ge::FAILED; | ||||
} | } | ||||
GELOGI("AclgrphParse graph %s success.", graph.GetName().c_str()); | |||||
GELOGI("AclgrphParse graph %s success.", ParserUtils::GetGraphName(graph).c_str()); | |||||
return ge::SUCCESS; | return ge::SUCCESS; | ||||
} | } | ||||
} // namespace ge | } // namespace ge | ||||
@@ -423,6 +432,7 @@ Status CaffeModelParser::ParseNetModelByCustomProto(const char *model_path, cons | |||||
Status CaffeModelParser::CustomProtoParse(const char *model_path, const string &custom_proto, | Status CaffeModelParser::CustomProtoParse(const char *model_path, const string &custom_proto, | ||||
const string &caffe_proto, vector<ge::Operator> &operators) { | const string &caffe_proto, vector<ge::Operator> &operators) { | ||||
(void)caffe_proto; | |||||
string custom_proto_path = ge::parser::RealPath(custom_proto.c_str()); | string custom_proto_path = ge::parser::RealPath(custom_proto.c_str()); | ||||
if (custom_proto_path.empty()) { | if (custom_proto_path.empty()) { | ||||
GELOGW("Valid custom proto: %s does not exist, skip parsing custom proto", custom_proto.c_str()); | GELOGW("Valid custom proto: %s does not exist, skip parsing custom proto", custom_proto.c_str()); | ||||
@@ -572,8 +582,8 @@ Status CaffeModelParser::CreateCustomOperator(string op_name, string op_type, co | |||||
} | } | ||||
GELOGI("Start to create new operator, name: %s, type: %s, index: %d.", op_name.c_str(), op_type.c_str(), index); | GELOGI("Start to create new operator, name: %s, type: %s, index: %d.", op_name.c_str(), op_type.c_str(), index); | ||||
ge::Operator ops(op_name, op_type); | |||||
if (ops.GetName() != op_name) { | |||||
ge::Operator ops(op_name.c_str(), op_type.c_str()); | |||||
if (ParserUtils::GetOperatorName(ops) != op_name) { | |||||
REPORT_INNER_ERROR("E19999", "Create Operator failed, name: %s, type: %s, index: %d.", | REPORT_INNER_ERROR("E19999", "Create Operator failed, name: %s, type: %s, index: %d.", | ||||
op_name.c_str(), op_type.c_str(), index); | op_name.c_str(), op_type.c_str(), index); | ||||
GELOGE(FAILED, "[Create][Operator] failed, name: %s, type: %s, index: %d.", | GELOGE(FAILED, "[Create][Operator] failed, name: %s, type: %s, index: %d.", | ||||
@@ -682,19 +692,22 @@ Status CaffeModelParser::AddBlobsToMap(const domi::caffe::LayerParameter &layer, | |||||
} | } | ||||
bool CaffeModelParser::IsOpAttrEmpty(const ge::Operator &op, const std::string &type) { | bool CaffeModelParser::IsOpAttrEmpty(const ge::Operator &op, const std::string &type) { | ||||
const std::map<std::string, std::string> attrs = op.GetAllAttrNamesAndTypes(); | |||||
std::map<AscendString, AscendString> attrs; | |||||
(void)op.GetAllAttrNamesAndTypes(attrs); | |||||
if (type == kCustom) { | if (type == kCustom) { | ||||
for (const auto &attr : attrs) { | for (const auto &attr : attrs) { | ||||
if (kCustomProtoLayerCommonField.count(attr.first) == 0) { | |||||
GELOGI("Custom op[%s] attr name[%s] exists, not empty.", op.GetName().c_str(), attr.first.c_str()); | |||||
if (kCustomProtoLayerCommonField.count(attr.first.GetString()) == 0) { | |||||
GELOGI("Custom op[%s] attr name[%s] exists, not empty.", | |||||
ParserUtils::GetOperatorName(op).c_str(), attr.first.GetString()); | |||||
return false; | return false; | ||||
} | } | ||||
} | } | ||||
} else if (type == kBuiltin) { | } else if (type == kBuiltin) { | ||||
for (const auto &attr : attrs) { | for (const auto &attr : attrs) { | ||||
if (kCaffeProtoLayerCommonField.count(attr.first) == 0) { | |||||
GELOGI("Built-in op[%s] attr name[%s] exists, not empty.", op.GetName().c_str(), attr.first.c_str()); | |||||
if (kCaffeProtoLayerCommonField.count(attr.first.GetString()) == 0) { | |||||
GELOGI("Built-in op[%s] attr name[%s] exists, not empty.", | |||||
ParserUtils::GetOperatorName(op).c_str(), attr.first.GetString()); | |||||
return false; | return false; | ||||
} | } | ||||
} | } | ||||
@@ -709,7 +722,7 @@ Status CaffeModelParser::GetCustomOp(const domi::caffe::LayerParameter &layer, v | |||||
bool is_search_built_in_layer = false; | bool is_search_built_in_layer = false; | ||||
for (ge::Operator &custom_op : custom_operator_) { | for (ge::Operator &custom_op : custom_operator_) { | ||||
if (custom_op.GetName() == layer.name() && custom_op.GetOpType() == op_type) { | |||||
if (ParserUtils::GetOperatorName(custom_op) == layer.name() && ParserUtils::GetOperatorType(custom_op) == op_type) { | |||||
if (IsOpAttrEmpty(custom_op, kCustom)) { | if (IsOpAttrEmpty(custom_op, kCustom)) { | ||||
GELOGW("Custom op attr is empty, should try to get op params from built-in layer."); | GELOGW("Custom op attr is empty, should try to get op params from built-in layer."); | ||||
is_search_built_in_layer = true; | is_search_built_in_layer = true; | ||||
@@ -922,8 +935,8 @@ Status CaffeModelParser::AddTensorDescToOpDescByIr(ge::OpDescPtr &op_desc, const | |||||
// Get opDesc by ir | // Get opDesc by ir | ||||
string layer_name = layer.name(); | string layer_name = layer.name(); | ||||
ge::Operator op_factory = ge::OperatorFactory::CreateOperator(layer_name, op_type); | |||||
if (op_factory.GetName() != layer.name()) { | |||||
ge::Operator op_factory = ge::OperatorFactory::CreateOperator(layer_name.c_str(), op_type.c_str()); | |||||
if (ParserUtils::GetOperatorName(op_factory) != layer.name()) { | |||||
ErrorManager::GetInstance().ATCReportErrMessage("E10501", {"opname", "optype"}, {layer_name, op_type}); | ErrorManager::GetInstance().ATCReportErrMessage("E10501", {"opname", "optype"}, {layer_name, op_type}); | ||||
GELOGE(FAILED, "[Invoke][CreateOperator]IR for op[%s] optype[%s] is not registered.", | GELOGE(FAILED, "[Invoke][CreateOperator]IR for op[%s] optype[%s] is not registered.", | ||||
layer_name.c_str(), op_type.c_str()); | layer_name.c_str(), op_type.c_str()); | ||||
@@ -1352,11 +1365,11 @@ Status CaffeModelParser::Parse(const char *model_path, ge::Graph &graph) { | |||||
Status ret = Parse(model_path, compute_graph); | Status ret = Parse(model_path, compute_graph); | ||||
if (ret != SUCCESS) { | if (ret != SUCCESS) { | ||||
GELOGE(ret, "[Parser][Model] %s for graph %s failed.", model_path, graph.GetName().c_str()); | |||||
GELOGE(ret, "[Parser][Model] %s for graph %s failed.", model_path, ParserUtils::GetGraphName(graph).c_str()); | |||||
return ret; | return ret; | ||||
} | } | ||||
GELOGI("Parser model for graph %s success.", graph.GetName().c_str()); | |||||
GELOGI("Parser model for graph %s success.", ParserUtils::GetGraphName(graph).c_str()); | |||||
return SUCCESS; | return SUCCESS; | ||||
} | } | ||||
@@ -1675,11 +1688,11 @@ Status CaffeWeightsParser::Parse(const char *file, ge::Graph &graph) { | |||||
Status ret = Parse(file, compute_graph); | Status ret = Parse(file, compute_graph); | ||||
if (ret != SUCCESS) { | if (ret != SUCCESS) { | ||||
GELOGE(ret, "[Parser][Weight] %s for graph %s failed.", file, graph.GetName().c_str()); | |||||
GELOGE(ret, "[Parser][Weight] %s for graph %s failed.", file, ParserUtils::GetGraphName(graph).c_str()); | |||||
return ret; | return ret; | ||||
} | } | ||||
GELOGI("Parser weight for graph %s success.", graph.GetName().c_str()); | |||||
GELOGI("Parser weight for graph %s success.", ParserUtils::GetGraphName(graph).c_str()); | |||||
return SUCCESS; | return SUCCESS; | ||||
} | } | ||||
@@ -2290,11 +2303,16 @@ Status CaffeWeightsParser::ConvertNetParameter(const NetParameter ¶m, ge::Co | |||||
} | } | ||||
Status CaffeModelParser::ParseProto(const google::protobuf::Message *proto, ge::ComputeGraphPtr &graph) { | Status CaffeModelParser::ParseProto(const google::protobuf::Message *proto, ge::ComputeGraphPtr &graph) { | ||||
(void)proto; | |||||
(void)graph; | |||||
return SUCCESS; | return SUCCESS; | ||||
} | } | ||||
Status CaffeModelParser::ParseProtoWithSubgraph(const google::protobuf::Message *root_proto, | Status CaffeModelParser::ParseProtoWithSubgraph(const google::protobuf::Message *root_proto, | ||||
domi::GetGraphCallback callback, | domi::GetGraphCallback callback, | ||||
ge::ComputeGraphPtr &graph) { | ge::ComputeGraphPtr &graph) { | ||||
(void)root_proto; | |||||
(void)callback; | |||||
(void)graph; | |||||
return SUCCESS; | return SUCCESS; | ||||
} | } | ||||
} // namespace ge | } // namespace ge | ||||
@@ -79,6 +79,9 @@ class PARSER_FUNC_VISIBILITY CaffeModelParser : public domi::ModelParser { | |||||
Status ParseFromMemory(const char *data, uint32_t size, ge::ComputeGraphPtr &graph) override; | Status ParseFromMemory(const char *data, uint32_t size, ge::ComputeGraphPtr &graph) override; | ||||
Status ParseFromMemory(const char *data, uint32_t size, ge::Graph &graph) override { | Status ParseFromMemory(const char *data, uint32_t size, ge::Graph &graph) override { | ||||
(void)data; | |||||
(void)size; | |||||
(void)graph; | |||||
return domi::SUCCESS; | return domi::SUCCESS; | ||||
} | } | ||||
@@ -108,9 +111,14 @@ class PARSER_FUNC_VISIBILITY CaffeModelParser : public domi::ModelParser { | |||||
* @param [in] type, datatype types of operators in CAFFE networks | * @param [in] type, datatype types of operators in CAFFE networks | ||||
* @return ge::DataType | * @return ge::DataType | ||||
*/ | */ | ||||
ge::DataType ConvertToGeDataType(const uint32_t type) override { return ge::DT_FLOAT; } | |||||
ge::DataType ConvertToGeDataType(const uint32_t type) override { | |||||
(void)type; | |||||
return ge::DT_FLOAT; | |||||
} | |||||
Status ParseAllGraph(const google::protobuf::Message *root_proto, ge::ComputeGraphPtr &root_graph) override { | Status ParseAllGraph(const google::protobuf::Message *root_proto, ge::ComputeGraphPtr &root_graph) override { | ||||
(void)root_proto; | |||||
(void)root_graph; | |||||
return domi::SUCCESS; | return domi::SUCCESS; | ||||
} | } | ||||
@@ -37,8 +37,9 @@ add_dependencies(parser_common | |||||
target_compile_options(parser_common PRIVATE | target_compile_options(parser_common PRIVATE | ||||
-Werror | -Werror | ||||
-Wno-deprecated-declarations | |||||
-fno-common | -fno-common | ||||
-Wextra | |||||
-Wfloat-equal | |||||
) | ) | ||||
target_compile_definitions(parser_common PRIVATE | target_compile_definitions(parser_common PRIVATE | ||||
@@ -520,6 +520,7 @@ domi::Status AclGrphParseUtil::GetDefaultOutInfo(ge::ComputeGraphPtr &compute_gr | |||||
domi::Status AclGrphParseUtil::SetOutputNodeInfo(ge::Graph &graph, | domi::Status AclGrphParseUtil::SetOutputNodeInfo(ge::Graph &graph, | ||||
const std::map<AscendString, AscendString> &parser_params) { | const std::map<AscendString, AscendString> &parser_params) { | ||||
(void)parser_params; | |||||
ge::ComputeGraphPtr compute_graph = ge::GraphUtils::GetComputeGraph(graph); | ge::ComputeGraphPtr compute_graph = ge::GraphUtils::GetComputeGraph(graph); | ||||
GE_CHECK_NOTNULL(compute_graph); | GE_CHECK_NOTNULL(compute_graph); | ||||
@@ -562,15 +563,15 @@ domi::Status AclGrphParseUtil::SetOutputNodeInfo(ge::Graph &graph, | |||||
// default output node (leaf) | // default output node (leaf) | ||||
if (user_out_nodes.empty()) { | if (user_out_nodes.empty()) { | ||||
if (GetDefaultOutInfo(compute_graph, output_nodes_info) != SUCCESS) { | if (GetDefaultOutInfo(compute_graph, output_nodes_info) != SUCCESS) { | ||||
REPORT_CALL_ERROR("E19999", "GetDefaultOutInfo failed for graph:%s", graph.GetName().c_str()); | |||||
GELOGE(domi::FAILED, "[Invoke][GetDefaultOutInfo] failed, graph:%s.", graph.GetName().c_str()); | |||||
REPORT_CALL_ERROR("E19999", "GetDefaultOutInfo failed for graph:%s", compute_graph->GetName().c_str()); | |||||
GELOGE(domi::FAILED, "[Invoke][GetDefaultOutInfo] failed, graph:%s.", compute_graph->GetName().c_str()); | |||||
return domi::FAILED; | return domi::FAILED; | ||||
} | } | ||||
} | } | ||||
CreateOutputNodesInfo(output_nodes_info, output_nodes_name); | CreateOutputNodesInfo(output_nodes_info, output_nodes_name); | ||||
compute_graph->SetGraphOutNodesInfo(output_nodes_info); | compute_graph->SetGraphOutNodesInfo(output_nodes_info); | ||||
ge::GetParserContext().net_out_nodes = output_nodes_name; | ge::GetParserContext().net_out_nodes = output_nodes_name; | ||||
GELOGI("Set graph %s output node success.", graph.GetName().c_str()); | |||||
GELOGI("Set graph %s output node success.", compute_graph->GetName().c_str()); | |||||
return domi::SUCCESS; | return domi::SUCCESS; | ||||
} | } | ||||
@@ -726,7 +727,7 @@ static bool ReadProtoFromCodedInputStream(CodedInputStream &coded_stream, Messag | |||||
REPORT_INNER_ERROR("E19999", "param proto is nullptr, check invalid"); | REPORT_INNER_ERROR("E19999", "param proto is nullptr, check invalid"); | ||||
return false, "[Check][Param] incorrect parameter. nullptr == proto"); | return false, "[Check][Param] incorrect parameter. nullptr == proto"); | ||||
coded_stream.SetTotalBytesLimit(kProtoReadBytesLimit, kWarningThreshold); | |||||
coded_stream.SetTotalBytesLimit(kProtoReadBytesLimit); | |||||
return proto->ParseFromCodedStream(&coded_stream); | return proto->ParseFromCodedStream(&coded_stream); | ||||
} | } | ||||
@@ -130,14 +130,14 @@ Status AutoMappingSubgraphIndexByDataNodeAndOutputNodesInfo( | |||||
auto ret = AutoMappingSubgraphIndexByDataNode(compute_graph, input); | auto ret = AutoMappingSubgraphIndexByDataNode(compute_graph, input); | ||||
if (ret != SUCCESS) { | if (ret != SUCCESS) { | ||||
REPORT_CALL_ERROR("E19999", "Auto mapping graph:%s input index failed,", graph.GetName().c_str()); | |||||
GELOGE(ret, "[Mapping][InputIndex] Auto mapping graph:%s input index failed,", graph.GetName().c_str()); | |||||
REPORT_CALL_ERROR("E19999", "Auto mapping graph:%s input index failed,", compute_graph->GetName().c_str()); | |||||
GELOGE(ret, "[Mapping][InputIndex] Auto mapping graph:%s input index failed,", compute_graph->GetName().c_str()); | |||||
return ret; | return ret; | ||||
} | } | ||||
ret = AutoMappingSubgraphIndexByOutputNodesInfo(compute_graph, output); | ret = AutoMappingSubgraphIndexByOutputNodesInfo(compute_graph, output); | ||||
if (ret != SUCCESS) { | if (ret != SUCCESS) { | ||||
REPORT_CALL_ERROR("E19999", "Auto mapping graph:%s output index failed,", graph.GetName().c_str()); | |||||
GELOGE(ret, "[Mapping][OutputIndex] Auto mapping graph:%s output index failed,", graph.GetName().c_str()); | |||||
REPORT_CALL_ERROR("E19999", "Auto mapping graph:%s output index failed,", compute_graph->GetName().c_str()); | |||||
GELOGE(ret, "[Mapping][OutputIndex] Auto mapping graph:%s output index failed,", compute_graph->GetName().c_str()); | |||||
return ret; | return ret; | ||||
} | } | ||||
@@ -44,7 +44,7 @@ Status Message2Operator::ParseOperatorAttrs(const google::protobuf::Message *mes | |||||
for (auto &field : field_desc) { | for (auto &field : field_desc) { | ||||
GE_CHECK_NOTNULL(field); | GE_CHECK_NOTNULL(field); | ||||
if (field->is_repeated()) { | if (field->is_repeated()) { | ||||
if (ParseRepeatedField(reflection, message, field, depth, ops) != SUCCESS) { | |||||
if (ParseRepeatedField(reflection, message, field, ops) != SUCCESS) { | |||||
GELOGE(FAILED, "[Parse][RepeatedField] %s failed.", field->name().c_str()); | GELOGE(FAILED, "[Parse][RepeatedField] %s failed.", field->name().c_str()); | ||||
return FAILED; | return FAILED; | ||||
} | } | ||||
@@ -67,7 +67,7 @@ Status Message2Operator::ParseField(const google::protobuf::Reflection *reflecti | |||||
case google::protobuf::FieldDescriptor::CPPTYPE_##cpptype: { \ | case google::protobuf::FieldDescriptor::CPPTYPE_##cpptype: { \ | ||||
valuetype value = reflection->Get##method(*message, field); \ | valuetype value = reflection->Get##method(*message, field); \ | ||||
GELOGD("Parse result(%s : %" #logtype ")", field->name().c_str(), value); \ | GELOGD("Parse result(%s : %" #logtype ")", field->name().c_str(), value); \ | ||||
(void)ops.SetAttr(field->name(), value); \ | |||||
(void)ops.SetAttr(field->name().c_str(), value); \ | |||||
break; \ | break; \ | ||||
} | } | ||||
CASE_FIELD_TYPE(INT32, Int32, int32_t, d); | CASE_FIELD_TYPE(INT32, Int32, int32_t, d); | ||||
@@ -80,13 +80,13 @@ Status Message2Operator::ParseField(const google::protobuf::Reflection *reflecti | |||||
GE_CHECK_NOTNULL(reflection->GetEnum(*message, field)); | GE_CHECK_NOTNULL(reflection->GetEnum(*message, field)); | ||||
int value = reflection->GetEnum(*message, field)->number(); | int value = reflection->GetEnum(*message, field)->number(); | ||||
GELOGD("Parse result(%s : %d)", field->name().c_str(), value); | GELOGD("Parse result(%s : %d)", field->name().c_str(), value); | ||||
(void)ops.SetAttr(field->name(), value); | |||||
(void)ops.SetAttr(field->name().c_str(), value); | |||||
break; | break; | ||||
} | } | ||||
case google::protobuf::FieldDescriptor::CPPTYPE_STRING: { | case google::protobuf::FieldDescriptor::CPPTYPE_STRING: { | ||||
string value = reflection->GetString(*message, field); | string value = reflection->GetString(*message, field); | ||||
GELOGD("Parse result(%s : %s)", field->name().c_str(), value.c_str()); | GELOGD("Parse result(%s : %s)", field->name().c_str(), value.c_str()); | ||||
(void)ops.SetAttr(field->name(), value); | |||||
(void)ops.SetAttr(field->name().c_str(), value); | |||||
break; | break; | ||||
} | } | ||||
case google::protobuf::FieldDescriptor::CPPTYPE_MESSAGE: { | case google::protobuf::FieldDescriptor::CPPTYPE_MESSAGE: { | ||||
@@ -110,7 +110,7 @@ Status Message2Operator::ParseField(const google::protobuf::Reflection *reflecti | |||||
Status Message2Operator::ParseRepeatedField(const google::protobuf::Reflection *reflection, | Status Message2Operator::ParseRepeatedField(const google::protobuf::Reflection *reflection, | ||||
const google::protobuf::Message *message, | const google::protobuf::Message *message, | ||||
const google::protobuf::FieldDescriptor *field, int depth, | |||||
const google::protobuf::FieldDescriptor *field, | |||||
ge::Operator &ops) { | ge::Operator &ops) { | ||||
GELOGD("Start to parse field: %s.", field->name().c_str()); | GELOGD("Start to parse field: %s.", field->name().c_str()); | ||||
int field_size = reflection->FieldSize(*message, field); | int field_size = reflection->FieldSize(*message, field); | ||||
@@ -128,7 +128,7 @@ Status Message2Operator::ParseRepeatedField(const google::protobuf::Reflection * | |||||
valuetype value = reflection->GetRepeated##method(*message, field, i); \ | valuetype value = reflection->GetRepeated##method(*message, field, i); \ | ||||
attr_value.push_back(value); \ | attr_value.push_back(value); \ | ||||
} \ | } \ | ||||
(void)ops.SetAttr(field->name(), attr_value); \ | |||||
(void)ops.SetAttr(field->name().c_str(), attr_value); \ | |||||
break; \ | break; \ | ||||
} | } | ||||
CASE_FIELD_TYPE_REPEATED(INT32, Int32, int32_t); | CASE_FIELD_TYPE_REPEATED(INT32, Int32, int32_t); | ||||
@@ -154,7 +154,7 @@ Status Message2Operator::ParseRepeatedField(const google::protobuf::Reflection * | |||||
GELOGE(FAILED, "[Parse][JSON]Failed to convert JSON to string."); | GELOGE(FAILED, "[Parse][JSON]Failed to convert JSON to string."); | ||||
return FAILED; | return FAILED; | ||||
} | } | ||||
(void)ops.SetAttr(field->name(), repeated_message_str); | |||||
(void)ops.SetAttr(field->name().c_str(), repeated_message_str); | |||||
break; | break; | ||||
} | } | ||||
default: { | default: { | ||||
@@ -32,7 +32,7 @@ class Message2Operator { | |||||
static Status ParseRepeatedField(const google::protobuf::Reflection *reflection, | static Status ParseRepeatedField(const google::protobuf::Reflection *reflection, | ||||
const google::protobuf::Message *message, | const google::protobuf::Message *message, | ||||
const google::protobuf::FieldDescriptor *field, int depth, ge::Operator &ops); | |||||
const google::protobuf::FieldDescriptor *field, ge::Operator &ops); | |||||
}; | }; | ||||
} // namespace ge | } // namespace ge | ||||
#endif // PARSER_MESSAGE2OPERATOR_H | #endif // PARSER_MESSAGE2OPERATOR_H |
@@ -76,7 +76,7 @@ void Pb2Json::OneField2Json(const ProtobufMsg &message, const ProtobufFieldDescr | |||||
switch (field->type()) { | switch (field->type()) { | ||||
case ProtobufFieldDescriptor::TYPE_MESSAGE: { | case ProtobufFieldDescriptor::TYPE_MESSAGE: { | ||||
const ProtobufMsg &tmp_message = reflection->GetMessage(message, field); | const ProtobufMsg &tmp_message = reflection->GetMessage(message, field); | ||||
if (0 != tmp_message.ByteSize()) { | |||||
if (0UL != tmp_message.ByteSizeLong()) { | |||||
Message2Json(tmp_message, black_fields, json[field->name()], enum2str); | Message2Json(tmp_message, black_fields, json[field->name()], enum2str); | ||||
} | } | ||||
break; | break; | ||||
@@ -174,7 +174,7 @@ void Pb2Json::RepeatedMessage2Json(const ProtobufMsg &message, const ProtobufFie | |||||
switch (field->type()) { | switch (field->type()) { | ||||
case ProtobufFieldDescriptor::TYPE_MESSAGE: { | case ProtobufFieldDescriptor::TYPE_MESSAGE: { | ||||
const ProtobufMsg &tmp_message = reflection->GetRepeatedMessage(message, field, i); | const ProtobufMsg &tmp_message = reflection->GetRepeatedMessage(message, field, i); | ||||
if (0 != tmp_message.ByteSize()) { | |||||
if (0UL != tmp_message.ByteSizeLong()) { | |||||
Message2Json(tmp_message, black_fields, tmp_json, enum2str); | Message2Json(tmp_message, black_fields, tmp_json, enum2str); | ||||
} | } | ||||
} break; | } break; | ||||
@@ -91,13 +91,15 @@ Status ParserUtils::ExpandOneToManyGraph(const Graph &graph, OutputMapping &outp | |||||
Operator op = OpDescUtils::CreateOperatorFromNode(n); | Operator op = OpDescUtils::CreateOperatorFromNode(n); | ||||
Status ret = parse_op_to_graph_func(op, subgraph); | Status ret = parse_op_to_graph_func(op, subgraph); | ||||
if (ret != SUCCESS) { | if (ret != SUCCESS) { | ||||
REPORT_CALL_ERROR("E19999", "Get one to many graph failed for op:%s.", op.GetName().c_str()); | |||||
GELOGE(FAILED, "[Invoke][ParseOpToGraphFunc]Get one to many graph failed for op:%s.", op.GetName().c_str()); | |||||
REPORT_CALL_ERROR("E19999", "Get one to many graph failed for op:%s.", GetOperatorName(op).c_str()); | |||||
GELOGE(FAILED, "[Invoke][ParseOpToGraphFunc]Get one to many graph failed for op:%s.", | |||||
GetOperatorName(op).c_str()); | |||||
return FAILED; | return FAILED; | ||||
} | } | ||||
ret = ExpandNodeToSubgraph(subgraph, n, graph, output_mapping); | ret = ExpandNodeToSubgraph(subgraph, n, graph, output_mapping); | ||||
if (ret != SUCCESS) { | if (ret != SUCCESS) { | ||||
GELOGE(FAILED, "[Invoke][ExpandNodeToSubgraph]Expand one to many graph failed for op:%s.", op.GetName().c_str()); | |||||
GELOGE(FAILED, "[Invoke][ExpandNodeToSubgraph]Expand one to many graph failed for op:%s.", | |||||
GetOperatorName(op).c_str()); | |||||
return FAILED; | return FAILED; | ||||
} | } | ||||
} | } | ||||
@@ -299,4 +301,22 @@ void ParserUtils::UpdateOutputCtx(const OutputMapping &final_output_nodes, Outpu | |||||
UpdateOutputNodeInfo(final_output_nodes, output_node_info); | UpdateOutputNodeInfo(final_output_nodes, output_node_info); | ||||
} | } | ||||
} | } | ||||
std::string ParserUtils::GetOperatorName(const Operator &op) { | |||||
AscendString name; | |||||
(void)op.GetName(name); | |||||
return name.GetString() == nullptr ? "" : std::string(name.GetString()); | |||||
} | |||||
std::string ParserUtils::GetOperatorType(const Operator &op) { | |||||
AscendString type; | |||||
(void)op.GetOpType(type); | |||||
return type.GetString() == nullptr ? "" : std::string(type.GetString()); | |||||
} | |||||
std::string ParserUtils::GetGraphName(const Graph &graph) { | |||||
AscendString name; | |||||
(void)graph.GetName(name); | |||||
return name.GetString() == nullptr ? "" : std::string(name.GetString()); | |||||
} | |||||
} // namespace ge | } // namespace ge |
@@ -31,6 +31,9 @@ class ParserUtils { | |||||
static string GenOutputKey(const OutputNodeInfo &node_info); | static string GenOutputKey(const OutputNodeInfo &node_info); | ||||
static void UpdateOutputNodeInfo(const OutputMapping &final_output_nodes, OutputNodeInfo &output_node_info); | static void UpdateOutputNodeInfo(const OutputMapping &final_output_nodes, OutputNodeInfo &output_node_info); | ||||
static void UpdateOutputCtx(const OutputMapping &final_output_nodes, OutputMapping &tensor_to_nodes); | static void UpdateOutputCtx(const OutputMapping &final_output_nodes, OutputMapping &tensor_to_nodes); | ||||
static std::string GetOperatorName(const Operator &op); | |||||
static std::string GetOperatorType(const Operator &op); | |||||
static std::string GetGraphName(const Graph &graph); | |||||
private: | private: | ||||
static Status ExpandNodeToSubgraph(const Graph &subgraph, const NodePtr &node, const Graph &graph, | static Status ExpandNodeToSubgraph(const Graph &subgraph, const NodePtr &node, const Graph &graph, | ||||
@@ -28,6 +28,13 @@ | |||||
#include "parser/tensorflow/tensorflow_fusion_custom_parser_adapter.h" | #include "parser/tensorflow/tensorflow_fusion_custom_parser_adapter.h" | ||||
namespace ge { | namespace ge { | ||||
namespace { | |||||
std::string GetOmOptype(const OpRegistrationData ®_data) { | |||||
AscendString om_op_type; | |||||
(void)reg_data.GetOmOptype(om_op_type); | |||||
return om_op_type.GetString() == nullptr ? "" : std::string(om_op_type.GetString()); | |||||
} | |||||
} | |||||
using PARSER_CREATOR_FN = std::function<std::shared_ptr<OpParser>(void)>; | using PARSER_CREATOR_FN = std::function<std::shared_ptr<OpParser>(void)>; | ||||
FMK_FUNC_HOST_VISIBILITY OpRegistrationTbe *OpRegistrationTbe::Instance() { | FMK_FUNC_HOST_VISIBILITY OpRegistrationTbe *OpRegistrationTbe::Instance() { | ||||
@@ -45,16 +52,21 @@ bool OpRegistrationTbe::Finalize(const OpRegistrationData ®_data, bool is_tra | |||||
if (op_map.find(reg_data.GetFrameworkType()) != op_map.end()) { | if (op_map.find(reg_data.GetFrameworkType()) != op_map.end()) { | ||||
std::map<std::string, std::string> *fmk_op_map = op_map[reg_data.GetFrameworkType()]; | std::map<std::string, std::string> *fmk_op_map = op_map[reg_data.GetFrameworkType()]; | ||||
auto ori_optype_set = reg_data.GetOriginOpTypeSet(); | |||||
std::set<AscendString> ori_optype_set; | |||||
(void)reg_data.GetOriginOpTypeSet(ori_optype_set); | |||||
for (auto &tmp : ori_optype_set) { | for (auto &tmp : ori_optype_set) { | ||||
if ((*fmk_op_map).find(tmp) != (*fmk_op_map).end()) { | |||||
GELOGW("Op type does not need to be changed, om_optype:%s, orignal type:%s.", (*fmk_op_map)[tmp].c_str(), | |||||
tmp.c_str()); | |||||
if (tmp.GetString() == nullptr) { | |||||
continue; | |||||
} | |||||
if ((*fmk_op_map).find(tmp.GetString()) != (*fmk_op_map).end()) { | |||||
GELOGW("Op type does not need to be changed, om_optype:%s, orignal type:%s.", | |||||
(*fmk_op_map)[tmp.GetString()].c_str(), tmp.GetString()); | |||||
continue; | continue; | ||||
} else { | } else { | ||||
(*fmk_op_map)[tmp] = reg_data.GetOmOptype(); | |||||
GELOGD("First register in parser initialize, original type: %s, om_optype: %s, imply type: %s.", tmp.c_str(), | |||||
reg_data.GetOmOptype().c_str(), TypeUtils::ImplyTypeToSerialString(reg_data.GetImplyType()).c_str()); | |||||
(*fmk_op_map)[tmp.GetString()] = GetOmOptype(reg_data); | |||||
GELOGD("First register in parser initialize, original type: %s, om_optype: %s, imply type: %s.", | |||||
tmp.GetString(), GetOmOptype(reg_data).c_str(), | |||||
TypeUtils::ImplyTypeToSerialString(reg_data.GetImplyType()).c_str()); | |||||
} | } | ||||
} | } | ||||
} | } | ||||
@@ -72,9 +84,9 @@ bool OpRegistrationTbe::RegisterParser(const OpRegistrationData ®_data) { | |||||
return false; | return false; | ||||
} | } | ||||
if (reg_data.GetParseParamFn() != nullptr || reg_data.GetParseParamByOperatorFn() != nullptr) { | if (reg_data.GetParseParamFn() != nullptr || reg_data.GetParseParamByOperatorFn() != nullptr) { | ||||
bool is_registed = factory->OpParserIsRegistered(reg_data.GetOmOptype()); | |||||
bool is_registed = factory->OpParserIsRegistered(GetOmOptype(reg_data)); | |||||
if (is_registed) { | if (is_registed) { | ||||
GELOGW("Parse param func has already register for op:%s.", reg_data.GetOmOptype().c_str()); | |||||
GELOGW("Parse param func has already register for op:%s.", GetOmOptype(reg_data).c_str()); | |||||
return false; | return false; | ||||
} | } | ||||
std::shared_ptr<TensorFlowCustomParserAdapter> tf_parser_adapter = | std::shared_ptr<TensorFlowCustomParserAdapter> tf_parser_adapter = | ||||
@@ -85,15 +97,15 @@ bool OpRegistrationTbe::RegisterParser(const OpRegistrationData ®_data) { | |||||
return false; | return false; | ||||
} | } | ||||
OpParserRegisterar registerar __attribute__((unused)) = OpParserRegisterar( | OpParserRegisterar registerar __attribute__((unused)) = OpParserRegisterar( | ||||
domi::TENSORFLOW, reg_data.GetOmOptype(), [=]() -> std::shared_ptr<OpParser> { return tf_parser_adapter; }); | |||||
domi::TENSORFLOW, GetOmOptype(reg_data), [=]() -> std::shared_ptr<OpParser> { return tf_parser_adapter; }); | |||||
} | } | ||||
if (reg_data.GetFusionParseParamFn() != nullptr || reg_data.GetFusionParseParamByOpFn() != nullptr) { | if (reg_data.GetFusionParseParamFn() != nullptr || reg_data.GetFusionParseParamByOpFn() != nullptr) { | ||||
bool is_registed = factory->OpParserIsRegistered(reg_data.GetOmOptype(), true); | |||||
bool is_registed = factory->OpParserIsRegistered(GetOmOptype(reg_data), true); | |||||
if (is_registed) { | if (is_registed) { | ||||
GELOGW("Parse param func has already register for fusion op:%s.", reg_data.GetOmOptype().c_str()); | |||||
GELOGW("Parse param func has already register for fusion op:%s.", GetOmOptype(reg_data).c_str()); | |||||
return false; | return false; | ||||
} | } | ||||
GELOGI("Register fusion custom op parser: %s", reg_data.GetOmOptype().c_str()); | |||||
GELOGI("Register fusion custom op parser: %s", GetOmOptype(reg_data).c_str()); | |||||
std::shared_ptr<TensorFlowFusionCustomParserAdapter> tf_fusion_parser_adapter = | std::shared_ptr<TensorFlowFusionCustomParserAdapter> tf_fusion_parser_adapter = | ||||
ge::parser::MakeShared<TensorFlowFusionCustomParserAdapter>(); | ge::parser::MakeShared<TensorFlowFusionCustomParserAdapter>(); | ||||
if (tf_fusion_parser_adapter == nullptr) { | if (tf_fusion_parser_adapter == nullptr) { | ||||
@@ -102,7 +114,7 @@ bool OpRegistrationTbe::RegisterParser(const OpRegistrationData ®_data) { | |||||
return false; | return false; | ||||
} | } | ||||
OpParserRegisterar registerar __attribute__((unused)) = OpParserRegisterar( | OpParserRegisterar registerar __attribute__((unused)) = OpParserRegisterar( | ||||
domi::TENSORFLOW, reg_data.GetOmOptype(), | |||||
domi::TENSORFLOW, GetOmOptype(reg_data), | |||||
[=]() -> std::shared_ptr<OpParser> { return tf_fusion_parser_adapter; }, true); | [=]() -> std::shared_ptr<OpParser> { return tf_fusion_parser_adapter; }, true); | ||||
} | } | ||||
} else { | } else { | ||||
@@ -114,9 +126,9 @@ bool OpRegistrationTbe::RegisterParser(const OpRegistrationData ®_data) { | |||||
TypeUtils::FmkTypeToSerialString(reg_data.GetFrameworkType()).c_str()); | TypeUtils::FmkTypeToSerialString(reg_data.GetFrameworkType()).c_str()); | ||||
return false; | return false; | ||||
} | } | ||||
bool is_registed = factory->OpParserIsRegistered(reg_data.GetOmOptype()); | |||||
bool is_registed = factory->OpParserIsRegistered(GetOmOptype(reg_data)); | |||||
if (is_registed) { | if (is_registed) { | ||||
GELOGW("Parse param func has already register for op:%s.", reg_data.GetOmOptype().c_str()); | |||||
GELOGW("Parse param func has already register for op:%s.", GetOmOptype(reg_data).c_str()); | |||||
return false; | return false; | ||||
} | } | ||||
@@ -128,8 +140,8 @@ bool OpRegistrationTbe::RegisterParser(const OpRegistrationData ®_data) { | |||||
TypeUtils::FmkTypeToSerialString(reg_data.GetFrameworkType()).c_str()); | TypeUtils::FmkTypeToSerialString(reg_data.GetFrameworkType()).c_str()); | ||||
return false; | return false; | ||||
} | } | ||||
OpParserFactory::Instance(reg_data.GetFrameworkType())->RegisterCreator(reg_data.GetOmOptype(), func); | |||||
GELOGD("Register custom parser adapter for op %s of fmk type %s success.", reg_data.GetOmOptype().c_str(), | |||||
OpParserFactory::Instance(reg_data.GetFrameworkType())->RegisterCreator(GetOmOptype(reg_data), func); | |||||
GELOGD("Register custom parser adapter for op %s of fmk type %s success.", GetOmOptype(reg_data).c_str(), | |||||
TypeUtils::FmkTypeToSerialString(reg_data.GetFrameworkType()).c_str()); | TypeUtils::FmkTypeToSerialString(reg_data.GetFrameworkType()).c_str()); | ||||
} | } | ||||
return true; | return true; | ||||
@@ -17,9 +17,10 @@ add_dependencies(fmk_onnx_parser | |||||
target_compile_options(fmk_onnx_parser PRIVATE | target_compile_options(fmk_onnx_parser PRIVATE | ||||
-Werror | -Werror | ||||
-Wno-deprecated-declarations | |||||
-fno-common | -fno-common | ||||
-fvisibility=hidden | -fvisibility=hidden | ||||
-Wextra | |||||
-Wfloat-equal | |||||
) | ) | ||||
target_compile_definitions(fmk_onnx_parser PRIVATE | target_compile_definitions(fmk_onnx_parser PRIVATE | ||||
@@ -89,7 +89,7 @@ Status OnnxConstantParser::ParseConvertData(const ge::onnx::TensorProto &tensor_ | |||||
} | } | ||||
if (data_type == OnnxDataType::STRING) { | if (data_type == OnnxDataType::STRING) { | ||||
tensor.SetData(tensor_proto.raw_data()); | |||||
tensor.SetData(tensor_proto.raw_data().c_str()); | |||||
} else { | } else { | ||||
tensor.SetData(reinterpret_cast<const uint8_t *>(tensor_proto.raw_data().c_str()), | tensor.SetData(reinterpret_cast<const uint8_t *>(tensor_proto.raw_data().c_str()), | ||||
tensor_proto.raw_data().size()); | tensor_proto.raw_data().size()); | ||||
@@ -122,9 +122,9 @@ void OnnxConstantParser::ParseConvertDataElements(const ge::onnx::TensorProto &t | |||||
break; | break; | ||||
// for string values | // for string values | ||||
case OnnxDataType::STRING: { | case OnnxDataType::STRING: { | ||||
std::vector<std::string> data; | |||||
std::vector<AscendString> data; | |||||
for (auto str_data : tensor_proto.string_data()) { | for (auto str_data : tensor_proto.string_data()) { | ||||
data.emplace_back(str_data); | |||||
data.emplace_back(AscendString(str_data.c_str())); | |||||
} | } | ||||
tensor.SetData(data); | tensor.SetData(data); | ||||
break; | break; | ||||
@@ -58,6 +58,16 @@ class PARSER_FUNC_VISIBILITY OnnxConstantParser : public OnnxOpParser { | |||||
DataType data_type = tensor.GetTensorDesc().GetDataType(); | DataType data_type = tensor.GetTensorDesc().GetDataType(); | ||||
switch (data_type) { | switch (data_type) { | ||||
case DT_BOOL: { | |||||
unique_ptr<bool> addr_trans(new(std::nothrow) bool[count]()); | |||||
GE_CHECK_NOTNULL(addr_trans); | |||||
for (int32_t i = 0; i < count; i++) { | |||||
*(addr_trans.get() + i) = static_cast<bool>( | |||||
std::fabs(*((addr).get() + i)) > std::numeric_limits<T>::epsilon()); | |||||
} | |||||
(tensor).SetData(reinterpret_cast<uint8_t *>(addr_trans.get()), (count) * sizeof(bool)); | |||||
break; | |||||
} | |||||
#define CASE_SET_DATA(dt_type, value_type, addr, count, tensor) \ | #define CASE_SET_DATA(dt_type, value_type, addr, count, tensor) \ | ||||
case dt_type: \ | case dt_type: \ | ||||
{ \ | { \ | ||||
@@ -75,7 +85,6 @@ class PARSER_FUNC_VISIBILITY OnnxConstantParser : public OnnxOpParser { | |||||
CASE_SET_DATA(DT_INT8, int8_t, addr, count, tensor) | CASE_SET_DATA(DT_INT8, int8_t, addr, count, tensor) | ||||
CASE_SET_DATA(DT_UINT16, uint16_t, addr, count, tensor) | CASE_SET_DATA(DT_UINT16, uint16_t, addr, count, tensor) | ||||
CASE_SET_DATA(DT_UINT8, uint8_t, addr, count, tensor) | CASE_SET_DATA(DT_UINT8, uint8_t, addr, count, tensor) | ||||
CASE_SET_DATA(DT_BOOL, bool, addr, count, tensor) | |||||
CASE_SET_DATA(DT_UINT32, uint32_t, addr, count, tensor) | CASE_SET_DATA(DT_UINT32, uint32_t, addr, count, tensor) | ||||
#undef CASE_SET_DATA | #undef CASE_SET_DATA | ||||
default: | default: | ||||
@@ -20,6 +20,7 @@ | |||||
#include "framework/common/debug/ge_log.h" | #include "framework/common/debug/ge_log.h" | ||||
#include "parser/common/op_parser_factory.h" | #include "parser/common/op_parser_factory.h" | ||||
#include "register/op_registry.h" | #include "register/op_registry.h" | ||||
#include "parser/common/parser_utils.h" | |||||
using domi::ONNX; | using domi::ONNX; | ||||
using domi::ParseParamByOpFunc; | using domi::ParseParamByOpFunc; | ||||
@@ -33,7 +34,7 @@ Status OnnxCustomParserAdapter::ParseParams(const Message *op_src, ge::Operator | |||||
GELOGI("Onnx op node name = %s, op type= %s, parse params.", node_src->name().c_str(), node_src->op_type().c_str()); | GELOGI("Onnx op node name = %s, op type= %s, parse params.", node_src->name().c_str(), node_src->op_type().c_str()); | ||||
ParseParamFunc custom_op_parser = | ParseParamFunc custom_op_parser = | ||||
domi::OpRegistry::Instance()->GetParseParamFunc(op_dest.GetOpType(), node_src->op_type()); | |||||
domi::OpRegistry::Instance()->GetParseParamFunc(ParserUtils::GetOperatorType(op_dest), node_src->op_type()); | |||||
GE_CHECK_NOTNULL(custom_op_parser); | GE_CHECK_NOTNULL(custom_op_parser); | ||||
if (custom_op_parser(op_src, op_dest) != SUCCESS) { | if (custom_op_parser(op_src, op_dest) != SUCCESS) { | ||||
GELOGE(FAILED, "[Invoke][Custom_Op_Parser] Custom parser params failed."); | GELOGE(FAILED, "[Invoke][Custom_Op_Parser] Custom parser params failed."); | ||||
@@ -43,12 +44,13 @@ Status OnnxCustomParserAdapter::ParseParams(const Message *op_src, ge::Operator | |||||
} | } | ||||
Status OnnxCustomParserAdapter::ParseParams(const Operator &op_src, Operator &op_dest) { | Status OnnxCustomParserAdapter::ParseParams(const Operator &op_src, Operator &op_dest) { | ||||
ParseParamByOpFunc custom_op_parser = domi::OpRegistry::Instance()->GetParseParamByOperatorFunc(op_src.GetOpType()); | |||||
ParseParamByOpFunc custom_op_parser = domi::OpRegistry::Instance()->GetParseParamByOperatorFunc( | |||||
ParserUtils::GetOperatorType(op_src)); | |||||
GE_CHECK_NOTNULL(custom_op_parser); | GE_CHECK_NOTNULL(custom_op_parser); | ||||
if (custom_op_parser(op_src, op_dest) != SUCCESS) { | if (custom_op_parser(op_src, op_dest) != SUCCESS) { | ||||
GELOGE(FAILED, "[Invoke][Custom_Op_Parser] failed, node name:%s, type:%s", op_src.GetName().c_str(), | |||||
op_src.GetOpType().c_str()); | |||||
GELOGE(FAILED, "[Invoke][Custom_Op_Parser] failed, node name:%s, type:%s", | |||||
ParserUtils::GetOperatorName(op_src).c_str(), ParserUtils::GetOperatorType(op_src).c_str()); | |||||
return FAILED; | return FAILED; | ||||
} | } | ||||
@@ -21,6 +21,7 @@ | |||||
#include "parser/common/op_parser_factory.h" | #include "parser/common/op_parser_factory.h" | ||||
#include "framework/omg/parser/parser_inner_ctx.h" | #include "framework/omg/parser/parser_inner_ctx.h" | ||||
#include "parser/onnx/onnx_util.h" | #include "parser/onnx/onnx_util.h" | ||||
#include "parser/common/parser_utils.h" | |||||
using domi::ONNX; | using domi::ONNX; | ||||
using namespace ge::parser; | using namespace ge::parser; | ||||
@@ -32,7 +33,7 @@ Status OnnxDataParser::ParseParams(const Message *op_src, ge::Operator &op_def) | |||||
GE_CHECK_NOTNULL(node_src); | GE_CHECK_NOTNULL(node_src); | ||||
GELOGD("Onnx op node name = %s, op type= %s, parse params", node_src->name().c_str(), node_src->op_type().c_str()); | GELOGD("Onnx op node name = %s, op type= %s, parse params", node_src->name().c_str(), node_src->op_type().c_str()); | ||||
if (ParseInputFromModel(op_src, op_def) != SUCCESS) { | if (ParseInputFromModel(op_src, op_def) != SUCCESS) { | ||||
GELOGE(FAILED, "[Parse][Shape] of data op %s from model failed", op_def.GetName().c_str()); | |||||
GELOGE(FAILED, "[Parse][Shape] of data op %s from model failed", ParserUtils::GetOperatorName(op_def).c_str()); | |||||
return FAILED; | return FAILED; | ||||
} | } | ||||
// Subgraph data operator don't need parse input shape | // Subgraph data operator don't need parse input shape | ||||
@@ -42,7 +43,7 @@ Status OnnxDataParser::ParseParams(const Message *op_src, ge::Operator &op_def) | |||||
} | } | ||||
if (ParseInputFromUser(op_def) != SUCCESS) { | if (ParseInputFromUser(op_def) != SUCCESS) { | ||||
GELOGE(FAILED, "[Parse][Shape] of data op %s from user failed", op_def.GetName().c_str()); | |||||
GELOGE(FAILED, "[Parse][Shape] of data op %s from user failed", ParserUtils::GetOperatorName(op_def).c_str()); | |||||
return FAILED; | return FAILED; | ||||
} | } | ||||
@@ -50,12 +51,12 @@ Status OnnxDataParser::ParseParams(const Message *op_src, ge::Operator &op_def) | |||||
tensor_desc.SetShape(ge::Shape(user_input_dims_v_)); | tensor_desc.SetShape(ge::Shape(user_input_dims_v_)); | ||||
tensor_desc.SetOriginShape(ge::Shape(user_input_dims_v_)); | tensor_desc.SetOriginShape(ge::Shape(user_input_dims_v_)); | ||||
int64_t type = 1; | int64_t type = 1; | ||||
(void)op_def.GetAttr(ge::DATA_ATTR_NAME_DATA_TYPE, type); | |||||
(void)op_def.GetAttr(ge::DATA_ATTR_NAME_DATA_TYPE.c_str(), type); | |||||
tensor_desc.SetDataType(static_cast<DataType>(type)); | tensor_desc.SetDataType(static_cast<DataType>(type)); | ||||
auto op_desc = ge::OpDescUtils::GetOpDescFromOperator(op_def); | auto op_desc = ge::OpDescUtils::GetOpDescFromOperator(op_def); | ||||
op_def.UpdateInputDesc(op_desc->GetInputNameByIndex(0), tensor_desc); | |||||
op_def.UpdateOutputDesc(op_desc->GetOutputNameByIndex(0), tensor_desc); | |||||
op_def.UpdateInputDesc(op_desc->GetInputNameByIndex(0).c_str(), tensor_desc); | |||||
op_def.UpdateOutputDesc(op_desc->GetOutputNameByIndex(0).c_str(), tensor_desc); | |||||
return SUCCESS; | return SUCCESS; | ||||
} | } | ||||
@@ -90,7 +91,7 @@ Status OnnxDataParser::ParseInputFromModel(const Message *op_src, ge::Operator & | |||||
} | } | ||||
} | } | ||||
op_def.SetAttr(ge::ATTR_NAME_INDEX, index); | |||||
op_def.SetAttr(ge::ATTR_NAME_INDEX.c_str(), index); | |||||
if (IsSubgraphDataOp()) { | if (IsSubgraphDataOp()) { | ||||
return SUCCESS; | return SUCCESS; | ||||
} | } | ||||
@@ -102,7 +103,7 @@ Status OnnxDataParser::ParseInputFromModel(const Message *op_src, ge::Operator & | |||||
GELOGE(domi::PARAM_INVALID, "[Check][Param]tensor_proto date type %ld is undefined.", data_type); | GELOGE(domi::PARAM_INVALID, "[Check][Param]tensor_proto date type %ld is undefined.", data_type); | ||||
return FAILED; | return FAILED; | ||||
} | } | ||||
op_def.SetAttr(ge::DATA_ATTR_NAME_DATA_TYPE, static_cast<int64_t>(type)); | |||||
op_def.SetAttr(ge::DATA_ATTR_NAME_DATA_TYPE.c_str(), static_cast<int64_t>(type)); | |||||
return SUCCESS; | return SUCCESS; | ||||
} | } | ||||
@@ -110,7 +111,7 @@ Status OnnxDataParser::ParseInputFromModel(const Message *op_src, ge::Operator & | |||||
Status OnnxDataParser::ParseInputFromUser(const ge::Operator &op_def) { | Status OnnxDataParser::ParseInputFromUser(const ge::Operator &op_def) { | ||||
std::map<std::string, std::vector<int64_t>> input_dims = GetParserContext().input_dims; | std::map<std::string, std::vector<int64_t>> input_dims = GetParserContext().input_dims; | ||||
// User not designate the input_shape | // User not designate the input_shape | ||||
std::string name = op_def.GetName(); | |||||
std::string name = ParserUtils::GetOperatorName(op_def); | |||||
if (input_dims.count(name) == 0) { | if (input_dims.count(name) == 0) { | ||||
GELOGI("input shape of node %s is not designated ,need parse from model", name.c_str()); | GELOGI("input shape of node %s is not designated ,need parse from model", name.c_str()); | ||||
for (uint32_t i = 0; i < model_input_dims_v_.size(); i++) { | for (uint32_t i = 0; i < model_input_dims_v_.size(); i++) { | ||||
@@ -49,6 +49,8 @@ class PARSER_FUNC_VISIBILITY OnnxOpParser : public OpParser { | |||||
/// @return SUCCESS parse success | /// @return SUCCESS parse success | ||||
/// @return FAILED Parse failed | /// @return FAILED Parse failed | ||||
Status ParseParams(const Message *op_src, ge::OpDescPtr &op_dest) override { | Status ParseParams(const Message *op_src, ge::OpDescPtr &op_dest) override { | ||||
(void)op_src; | |||||
(void)op_dest; | |||||
return domi::SUCCESS; | return domi::SUCCESS; | ||||
} | } | ||||
@@ -58,6 +60,8 @@ class PARSER_FUNC_VISIBILITY OnnxOpParser : public OpParser { | |||||
/// @return SUCCESS parse success | /// @return SUCCESS parse success | ||||
/// @return FAILED Parse failed | /// @return FAILED Parse failed | ||||
Status ParseParams(const Message *op_src, ge::Operator &op_dest) override { | Status ParseParams(const Message *op_src, ge::Operator &op_dest) override { | ||||
(void)op_src; | |||||
(void)op_dest; | |||||
return domi::SUCCESS; | return domi::SUCCESS; | ||||
} | } | ||||
@@ -67,6 +71,8 @@ class PARSER_FUNC_VISIBILITY OnnxOpParser : public OpParser { | |||||
/// @return SUCCESS parsing success | /// @return SUCCESS parsing success | ||||
/// @return FAILED parsing failed | /// @return FAILED parsing failed | ||||
Status ParseWeights(const Message *op_src, ge::NodePtr &node) override { | Status ParseWeights(const Message *op_src, ge::NodePtr &node) override { | ||||
(void)op_src; | |||||
(void)node; | |||||
return domi::SUCCESS; | return domi::SUCCESS; | ||||
} | } | ||||
}; | }; | ||||
@@ -88,7 +88,8 @@ graphStatus HandleAfterParse(AclGrphParseUtil &acl_graph_parse_util, | |||||
if (acl_graph_parse_util.SetOutputNodeInfo(graph, parser_params) != ge::SUCCESS) { | if (acl_graph_parse_util.SetOutputNodeInfo(graph, parser_params) != ge::SUCCESS) { | ||||
REPORT_CALL_ERROR("E19999", "Set graph default output node failed."); | REPORT_CALL_ERROR("E19999", "Set graph default output node failed."); | ||||
GELOGE(ge::FAILED, "[Update][NodeInfo] Set graph %s default output node failed.", graph.GetName().c_str()); | |||||
GELOGE(ge::FAILED, "[Update][NodeInfo] Set graph %s default output node failed.", | |||||
ParserUtils::GetGraphName(graph).c_str()); | |||||
return ge::FAILED; | return ge::FAILED; | ||||
} | } | ||||
return ge::SUCCESS; | return ge::SUCCESS; | ||||
@@ -110,18 +111,19 @@ graphStatus aclgrphParseONNX(const char *model_file, | |||||
// parse onnx model_file to GE graph | // parse onnx model_file to GE graph | ||||
ge::graphStatus ret = model_parser->Parse(model_file, graph); | ge::graphStatus ret = model_parser->Parse(model_file, graph); | ||||
if (ret != ge::SUCCESS) { | if (ret != ge::SUCCESS) { | ||||
REPORT_CALL_ERROR("E19999", "parse modelfile %s failed, graph:%s", model_file, graph.GetName().c_str()); | |||||
GELOGE(ret, "[Parse][ModelFile] %s failed, graph %s.", model_file, graph.GetName().c_str()); | |||||
REPORT_CALL_ERROR("E19999", "parse modelfile %s failed, graph:%s", | |||||
model_file, ParserUtils::GetGraphName(graph).c_str()); | |||||
GELOGE(ret, "[Parse][ModelFile] %s failed, graph %s.", model_file, ParserUtils::GetGraphName(graph).c_str()); | |||||
return ge::FAILED; | return ge::FAILED; | ||||
} | } | ||||
GELOGI("Parser graph %s success.", graph.GetName().c_str()); | |||||
GELOGI("Parser graph %s success.", ParserUtils::GetGraphName(graph).c_str()); | |||||
if (HandleAfterParse(acl_graph_parse_util, parser_params, graph) != ge::SUCCESS) { | if (HandleAfterParse(acl_graph_parse_util, parser_params, graph) != ge::SUCCESS) { | ||||
GELOGE(ge::FAILED, "[Invoke][HandleAfterParse] failed."); | GELOGE(ge::FAILED, "[Invoke][HandleAfterParse] failed."); | ||||
return ge::FAILED; | return ge::FAILED; | ||||
} | } | ||||
GELOGI("AclgrphParse graph %s success.", graph.GetName().c_str()); | |||||
GELOGI("AclgrphParse graph %s success.", ParserUtils::GetGraphName(graph).c_str()); | |||||
return ge::SUCCESS; | return ge::SUCCESS; | ||||
} | } | ||||
@@ -141,16 +143,16 @@ graphStatus aclgrphParseONNXFromMem(const char *buffer, size_t size, | |||||
ge::graphStatus ret = model_parser->ParseFromMemory(buffer, (uint32_t)size, graph); | ge::graphStatus ret = model_parser->ParseFromMemory(buffer, (uint32_t)size, graph); | ||||
if (ret != ge::SUCCESS) { | if (ret != ge::SUCCESS) { | ||||
REPORT_CALL_ERROR("E19999", "ParseFromMemory failed"); | REPORT_CALL_ERROR("E19999", "ParseFromMemory failed"); | ||||
GELOGE(ret, "[Parser][Graph] %s failed.", graph.GetName().c_str()); | |||||
GELOGE(ret, "[Parser][Graph] %s failed.", ParserUtils::GetGraphName(graph).c_str()); | |||||
return ge::FAILED; | return ge::FAILED; | ||||
} | } | ||||
GELOGI("Parser graph %s success.", graph.GetName().c_str()); | |||||
GELOGI("Parser graph %s success.", ParserUtils::GetGraphName(graph).c_str()); | |||||
if (HandleAfterParse(acl_graph_parse_util, parser_params, graph) != ge::SUCCESS) { | if (HandleAfterParse(acl_graph_parse_util, parser_params, graph) != ge::SUCCESS) { | ||||
GELOGE(ge::FAILED, "[Invoke][HandleAfterParse] failed."); | GELOGE(ge::FAILED, "[Invoke][HandleAfterParse] failed."); | ||||
return ge::FAILED; | return ge::FAILED; | ||||
} | } | ||||
GELOGI("AclgrphParse graph %s success.", graph.GetName().c_str()); | |||||
GELOGI("AclgrphParse graph %s success.", ParserUtils::GetGraphName(graph).c_str()); | |||||
return ge::SUCCESS; | return ge::SUCCESS; | ||||
} | } | ||||
} // namespace ge | } // namespace ge | ||||
@@ -444,8 +446,8 @@ Status OnnxModelParser::TransNodeToOperator(const ge::onnx::NodeProto *node_prot | |||||
const string &op_type) { | const string &op_type) { | ||||
GE_CHECK_NOTNULL(node_proto); | GE_CHECK_NOTNULL(node_proto); | ||||
string node_name = node_proto->name(); | string node_name = node_proto->name(); | ||||
op = ge::OperatorFactory::CreateOperator(node_name, op_type); | |||||
if (op.GetName() != node_name) { | |||||
op = ge::OperatorFactory::CreateOperator(node_name.c_str(), op_type.c_str()); | |||||
if (ParserUtils::GetOperatorName(op) != node_name) { | |||||
REPORT_INPUT_ERROR("E10501", std::vector<std::string>({"opname", "optype"}), | REPORT_INPUT_ERROR("E10501", std::vector<std::string>({"opname", "optype"}), | ||||
std::vector<std::string>({node_name, op_type})); | std::vector<std::string>({node_name, op_type})); | ||||
GELOGE(INTERNAL_ERROR, "[Creat][Op] IR for op[%s] optype[%s] is not registered.", | GELOGE(INTERNAL_ERROR, "[Creat][Op] IR for op[%s] optype[%s] is not registered.", | ||||
@@ -453,8 +455,9 @@ Status OnnxModelParser::TransNodeToOperator(const ge::onnx::NodeProto *node_prot | |||||
return INTERNAL_ERROR; | return INTERNAL_ERROR; | ||||
} | } | ||||
GELOGI("After create operator, op[%s]: type[%s] have input size: %zu, output size: %zu", op.GetName().c_str(), | |||||
op.GetOpType().c_str(), op.GetInputsSize(), op.GetOutputsSize()); | |||||
GELOGI("After create operator, op[%s]: type[%s] have input size: %zu, output size: %zu", | |||||
ParserUtils::GetOperatorName(op).c_str(), ParserUtils::GetOperatorType(op).c_str(), | |||||
op.GetInputsSize(), op.GetOutputsSize()); | |||||
return SUCCESS; | return SUCCESS; | ||||
} | } | ||||
@@ -509,14 +512,15 @@ Status OnnxModelParser::SetOperatorInputs() { | |||||
auto src_op = output_op_iter->second; | auto src_op = output_op_iter->second; | ||||
int dst_index = input_node_index.second; | int dst_index = input_node_index.second; | ||||
int src_index = out_node_index.second; | int src_index = out_node_index.second; | ||||
GELOGI("Start add output:%d of op:%s as input:%d of op:%s.", src_index, src_op.GetName().c_str(), dst_index, | |||||
dst_op.GetName().c_str()); | |||||
GELOGI("Start add output:%d of op:%s as input:%d of op:%s.", src_index, | |||||
ParserUtils::GetOperatorName(src_op).c_str(), dst_index, | |||||
ParserUtils::GetOperatorName(dst_op).c_str()); | |||||
auto dst_op_desc = ge::OpDescUtils::GetOpDescFromOperator(dst_op); | auto dst_op_desc = ge::OpDescUtils::GetOpDescFromOperator(dst_op); | ||||
GE_CHECK_NOTNULL(dst_op_desc); | GE_CHECK_NOTNULL(dst_op_desc); | ||||
auto src_op_desc = ge::OpDescUtils::GetOpDescFromOperator(src_op); | auto src_op_desc = ge::OpDescUtils::GetOpDescFromOperator(src_op); | ||||
GE_CHECK_NOTNULL(src_op_desc); | GE_CHECK_NOTNULL(src_op_desc); | ||||
dst_op.SetInput(dst_op_desc->GetInputNameByIndex(dst_index), src_op, | |||||
src_op_desc->GetOutputNameByIndex(src_index)); | |||||
dst_op.SetInput(dst_op_desc->GetInputNameByIndex(dst_index).c_str(), src_op, | |||||
src_op_desc->GetOutputNameByIndex(src_index).c_str()); | |||||
} | } | ||||
} | } | ||||
} | } | ||||
@@ -566,7 +570,7 @@ Status OnnxModelParser::ParseOpParam(const ge::onnx::NodeProto *node_proto, ge:: | |||||
if (parse_param_func == nullptr) { | if (parse_param_func == nullptr) { | ||||
status = op_parser->ParseParams(node_proto, op); | status = op_parser->ParseParams(node_proto, op); | ||||
} else { | } else { | ||||
ge::Operator op_src(node_proto->name(), op_type); | |||||
ge::Operator op_src(node_proto->name().c_str(), op_type.c_str()); | |||||
status = Message2Operator::ParseOperatorAttrs(node_proto, 1, op_src); | status = Message2Operator::ParseOperatorAttrs(node_proto, 1, op_src); | ||||
if (status != SUCCESS) { | if (status != SUCCESS) { | ||||
REPORT_CALL_ERROR("E19999", "Auto mapping node:%s(%s) to operator failed", | REPORT_CALL_ERROR("E19999", "Auto mapping node:%s(%s) to operator failed", | ||||
@@ -626,16 +630,17 @@ Status OnnxModelParser::ParseAllNodeProto(ge::onnx::GraphProto &onnx_graph, ge:: | |||||
return status; | return status; | ||||
} | } | ||||
GELOGI("After ParseParams, op[%s]: type[%s] have input size: %zu, output size: %zu", op.GetName().c_str(), | |||||
op.GetOpType().c_str(), op.GetInputsSize(), op.GetOutputsSize()); | |||||
GELOGI("After ParseParams, op[%s]: type[%s] have input size: %zu, output size: %zu", | |||||
ParserUtils::GetOperatorName(op).c_str(), ParserUtils::GetOperatorType(op).c_str(), | |||||
op.GetInputsSize(), op.GetOutputsSize()); | |||||
ge::graphStatus graph_status = graph.AddOp(op); | ge::graphStatus graph_status = graph.AddOp(op); | ||||
if (graph_status != ge::GRAPH_SUCCESS) { | if (graph_status != ge::GRAPH_SUCCESS) { | ||||
GELOGE(FAILED, "[Add][Op] Add op:%s to graph failed.", op.GetName().c_str()); | |||||
REPORT_CALL_ERROR("E19999", "Add op:%s to graph failed.", op.GetName().c_str()); | |||||
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; | return FAILED; | ||||
} | } | ||||
name_operator_[op.GetName()] = op; | |||||
name_operator_[ParserUtils::GetOperatorName(op)] = op; | |||||
// 8. Construct input output relation of every node | // 8. Construct input output relation of every node | ||||
status = ConstructInputOutputContext(node_proto); | status = ConstructInputOutputContext(node_proto); | ||||
@@ -669,7 +674,7 @@ Status OnnxModelParser::GetGraphInputs(ge::onnx::GraphProto &onnx_graph, std::ve | |||||
return PARAM_INVALID; | return PARAM_INVALID; | ||||
} | } | ||||
input_ops.emplace_back(in_op->second); | input_ops.emplace_back(in_op->second); | ||||
GELOGI("Model assigned input node name: %s", in_op->second.GetName().c_str()); | |||||
GELOGI("Model assigned input node name: %s", ParserUtils::GetOperatorName(in_op->second).c_str()); | |||||
} | } | ||||
return SUCCESS; | return SUCCESS; | ||||
} | } | ||||
@@ -800,7 +805,8 @@ Status OnnxModelParser::ModelParseToGraph(const ge::onnx::ModelProto &onnx_model | |||||
domain_verseion_[it.domain()] = it.version(); | domain_verseion_[it.domain()] = it.version(); | ||||
GELOGI("Domain: %s, Version: %ld ", it.domain().c_str(), it.version()); | GELOGI("Domain: %s, Version: %ld ", it.domain().c_str(), it.version()); | ||||
} | } | ||||
std::string root_graph_name = root_graph.GetName().empty() ? "default_graph" : root_graph.GetName(); | |||||
std::string root_graph_name = ParserUtils::GetGraphName(root_graph).empty() ? "default_graph" : | |||||
ParserUtils::GetGraphName(root_graph); | |||||
tasks.push_back({&root_onnx_graph, nullptr, root_graph_name, 0}); | tasks.push_back({&root_onnx_graph, nullptr, root_graph_name, 0}); | ||||
while (!tasks.empty()) { | while (!tasks.empty()) { | ||||
@@ -819,7 +825,7 @@ Status OnnxModelParser::ModelParseToGraph(const ge::onnx::ModelProto &onnx_model | |||||
} | } | ||||
ge::onnx::GraphProto *onnx_graph = arg.onnx_graph; | ge::onnx::GraphProto *onnx_graph = arg.onnx_graph; | ||||
ge::Graph tmp_graph(arg.graph_name); | |||||
ge::Graph tmp_graph(arg.graph_name.c_str()); | |||||
ret = ModelParseToGraphImpl(is_subgraph, *onnx_graph, tmp_graph); | ret = ModelParseToGraphImpl(is_subgraph, *onnx_graph, tmp_graph); | ||||
if (ret != SUCCESS) { | if (ret != SUCCESS) { | ||||
GELOGE(ret, "[Parse][Model] Model parse to graph failed, graph name:%s.", arg.graph_name.c_str()); | GELOGE(ret, "[Parse][Model] Model parse to graph failed, graph name:%s.", arg.graph_name.c_str()); | ||||
@@ -927,7 +933,7 @@ Status OnnxModelParser::ModelParseToGraphImpl(bool is_subgraph, ge::onnx::GraphP | |||||
return ret; | return ret; | ||||
} | } | ||||
std::vector<string> op_names; | |||||
std::vector<AscendString> op_names; | |||||
graph.GetAllOpName(op_names); | graph.GetAllOpName(op_names); | ||||
GELOGI("After trans node to operator, graph has the size of operator is %zu.", op_names.size()); | GELOGI("After trans node to operator, graph has the size of operator is %zu.", op_names.size()); | ||||
@@ -968,7 +974,7 @@ Status OnnxModelParser::ModelParseToGraphImpl(bool is_subgraph, ge::onnx::GraphP | |||||
if (!is_subgraph) { | if (!is_subgraph) { | ||||
ret = SetOutputsInfo(final_output_nodes, out_tensor_to_nodes); | ret = SetOutputsInfo(final_output_nodes, out_tensor_to_nodes); | ||||
if (ret != SUCCESS) { | if (ret != SUCCESS) { | ||||
GELOGE(ret, "[Set][OutputsInfo] Graph:%s.", graph.GetName().c_str()); | |||||
GELOGE(ret, "[Set][OutputsInfo] Graph:%s.", ParserUtils::GetGraphName(graph).c_str()); | |||||
return ret; | return ret; | ||||
} | } | ||||
} | } | ||||
@@ -52,20 +52,32 @@ class PARSER_FUNC_VISIBILITY OnnxModelParser : public domi::ModelParser { | |||||
ge::DataType ConvertToGeDataType(const uint32_t type) override; | ge::DataType ConvertToGeDataType(const uint32_t type) override; | ||||
Status ParseFromMemory(const char *data, uint32_t size, ge::ComputeGraphPtr &graph) override { return domi::SUCCESS; } | |||||
Status ParseFromMemory(const char *data, uint32_t size, ge::ComputeGraphPtr &graph) override { | |||||
(void)data; | |||||
(void)size; | |||||
(void)graph; | |||||
return domi::SUCCESS; | |||||
} | |||||
Status ParseFromMemory(const char *data, uint32_t size, ge::Graph &graph) override; | Status ParseFromMemory(const char *data, uint32_t size, ge::Graph &graph) override; | ||||
Status ParseProto(const google::protobuf::Message *proto, ge::ComputeGraphPtr &graph) override { | Status ParseProto(const google::protobuf::Message *proto, ge::ComputeGraphPtr &graph) override { | ||||
(void)proto; | |||||
(void)graph; | |||||
return domi::SUCCESS; | return domi::SUCCESS; | ||||
} | } | ||||
Status ParseProtoWithSubgraph(const google::protobuf::Message *root_proto, domi::GetGraphCallback callback, | Status ParseProtoWithSubgraph(const google::protobuf::Message *root_proto, domi::GetGraphCallback callback, | ||||
ge::ComputeGraphPtr &graph) override { | ge::ComputeGraphPtr &graph) override { | ||||
(void)root_proto; | |||||
(void)callback; | |||||
(void)graph; | |||||
return domi::SUCCESS; | return domi::SUCCESS; | ||||
} | } | ||||
Status ParseAllGraph(const google::protobuf::Message *root_proto, ge::ComputeGraphPtr &root_graph) override { | Status ParseAllGraph(const google::protobuf::Message *root_proto, ge::ComputeGraphPtr &root_graph) override { | ||||
(void)root_proto; | |||||
(void)root_graph; | |||||
return domi::SUCCESS; | return domi::SUCCESS; | ||||
} | } | ||||
@@ -136,9 +148,18 @@ class PARSER_FUNC_VISIBILITY OnnxModelParser : public domi::ModelParser { | |||||
class PARSER_FUNC_VISIBILITY OnnxWeightsParser : public domi::WeightsParser { | class PARSER_FUNC_VISIBILITY OnnxWeightsParser : public domi::WeightsParser { | ||||
public: | public: | ||||
Status Parse(const char *file, ge::Graph &graph) override { return domi::SUCCESS; } | |||||
Status Parse(const char *file, ge::Graph &graph) override { | |||||
(void)file; | |||||
(void)graph; | |||||
return domi::SUCCESS; | |||||
} | |||||
Status ParseFromMemory(const char *data, uint32_t size, ge::ComputeGraphPtr &graph) override { return domi::SUCCESS; } | |||||
Status ParseFromMemory(const char *data, uint32_t size, ge::ComputeGraphPtr &graph) override { | |||||
(void)data; | |||||
(void)size; | |||||
(void)graph; | |||||
return domi::SUCCESS; | |||||
} | |||||
}; | }; | ||||
} // namespace domi | } // namespace domi | ||||
#endif // PARSER_ONNX_ONNX_PARSER_H_ | #endif // PARSER_ONNX_ONNX_PARSER_H_ |
@@ -50,6 +50,9 @@ class PARSER_FUNC_VISIBILITY SubgraphAdapter { | |||||
virtual domi::Status AdaptAndFindAllSubgraphs(ge::onnx::NodeProto *parent_op, | virtual domi::Status AdaptAndFindAllSubgraphs(ge::onnx::NodeProto *parent_op, | ||||
std::vector<ge::onnx::GraphProto *> &onnx_graphs, | std::vector<ge::onnx::GraphProto *> &onnx_graphs, | ||||
std::map<std::string, ge::onnx::GraphProto *> &name_to_onnx_graph) { | std::map<std::string, ge::onnx::GraphProto *> &name_to_onnx_graph) { | ||||
(void)parent_op; | |||||
(void)onnx_graphs; | |||||
(void)name_to_onnx_graph; | |||||
return domi::SUCCESS; | return domi::SUCCESS; | ||||
} | } | ||||
}; | }; | ||||
@@ -22,7 +22,8 @@ | |||||
#include "parser/common/op_parser_factory.h" | #include "parser/common/op_parser_factory.h" | ||||
#include "register/op_registry.h" | #include "register/op_registry.h" | ||||
#include "register/register.h" | #include "register/register.h" | ||||
#include "register/register_utils.h" | |||||
#include "parser/common/parser_utils.h" | |||||
using domi::TENSORFLOW; | using domi::TENSORFLOW; | ||||
using namespace ge::parser; | using namespace ge::parser; | ||||
@@ -51,9 +52,9 @@ Status TensorFlowAutoMappingParserAdapter::ParseParams(const Message *op_src, ge | |||||
} | } | ||||
ge::Operator op = ge::OpDescUtils::CreateOperatorFromOpDesc(op_dest); | ge::Operator op = ge::OpDescUtils::CreateOperatorFromOpDesc(op_dest); | ||||
Status ret = domi::AutoMappingFn(op_src, op); | |||||
Status ret = domi::OperatorAutoMapping(op_src, op); | |||||
if (ret != SUCCESS) { | if (ret != SUCCESS) { | ||||
REPORT_CALL_ERROR("E19999", "call auto mapping failed for node:%s", op.GetName().c_str()); | |||||
REPORT_CALL_ERROR("E19999", "call auto mapping failed for node:%s", ParserUtils::GetOperatorName(op).c_str()); | |||||
GELOGE(FAILED, "Tensorflow auto mapping parser params failed"); | GELOGE(FAILED, "Tensorflow auto mapping parser params failed"); | ||||
return FAILED; | return FAILED; | ||||
} | } | ||||
@@ -19,6 +19,7 @@ | |||||
#include "framework/common/debug/ge_log.h" | #include "framework/common/debug/ge_log.h" | ||||
#include "parser/common/op_parser_factory.h" | #include "parser/common/op_parser_factory.h" | ||||
#include "register/op_registry.h" | #include "register/op_registry.h" | ||||
#include "parser/common/parser_utils.h" | |||||
using domi::ParseParamFunc; | using domi::ParseParamFunc; | ||||
using domi::ParseParamByOpFunc; | using domi::ParseParamByOpFunc; | ||||
@@ -49,19 +50,22 @@ Status TensorFlowCustomParserAdapter::ParseParams(const Message *op_src, ge::OpD | |||||
Status TensorFlowCustomParserAdapter::ParseParams(const Operator &op_src, ge::OpDescPtr &op_dest) { | Status TensorFlowCustomParserAdapter::ParseParams(const Operator &op_src, ge::OpDescPtr &op_dest) { | ||||
GELOGI("Tensorflow custom op begin to parse params: op node name = %s, op type = %s.", | GELOGI("Tensorflow custom op begin to parse params: op node name = %s, op type = %s.", | ||||
op_src.GetName().c_str(), op_src.GetOpType().c_str()); | |||||
ParserUtils::GetOperatorName(op_src).c_str(), ParserUtils::GetOperatorType(op_src).c_str()); | |||||
GE_CHECK_NOTNULL(op_dest); | GE_CHECK_NOTNULL(op_dest); | ||||
ParseParamByOpFunc custom_op_parser = domi::OpRegistry::Instance()->GetParseParamByOperatorFunc(op_src.GetOpType()); | |||||
ParseParamByOpFunc custom_op_parser = domi::OpRegistry::Instance()->GetParseParamByOperatorFunc( | |||||
ParserUtils::GetOperatorType(op_src)); | |||||
if (custom_op_parser == nullptr) { | if (custom_op_parser == nullptr) { | ||||
REPORT_CALL_ERROR("E19999", "No ParseParamByOperatorFunc of node:%s exist in OpRegistry", op_src.GetName().c_str()); | |||||
GELOGE(FAILED, "No ParseParamByOperatorFunc of node:%s exist in OpRegistry", op_src.GetName().c_str()); | |||||
REPORT_CALL_ERROR("E19999", "No ParseParamByOperatorFunc of node:%s exist in OpRegistry", | |||||
ParserUtils::GetOperatorName(op_src).c_str()); | |||||
GELOGE(FAILED, "No ParseParamByOperatorFunc of node:%s exist in OpRegistry", | |||||
ParserUtils::GetOperatorName(op_src).c_str()); | |||||
return FAILED; | return FAILED; | ||||
} | } | ||||
ge::Operator op = ge::OpDescUtils::CreateOperatorFromOpDesc(op_dest); | ge::Operator op = ge::OpDescUtils::CreateOperatorFromOpDesc(op_dest); | ||||
GE_CHK_BOOL_RET_STATUS(custom_op_parser(op_src, op) == SUCCESS, FAILED, "Custom parser params failed or node:%s", | GE_CHK_BOOL_RET_STATUS(custom_op_parser(op_src, op) == SUCCESS, FAILED, "Custom parser params failed or node:%s", | ||||
op_src.GetName().c_str()); | |||||
ParserUtils::GetOperatorName(op_src).c_str()); | |||||
op_src.BreakConnect(); | op_src.BreakConnect(); | ||||
return SUCCESS; | return SUCCESS; | ||||
@@ -76,10 +76,16 @@ Status TensorFlowFusionOpParser::GetTensorFromNode(const NodeDef *node_def, Tens | |||||
} | } | ||||
Status TensorFlowFusionOpParser::ParseParams(const std::vector<const NodeDef *> &v_input_const, NodePtr &op_dest) { | Status TensorFlowFusionOpParser::ParseParams(const std::vector<const NodeDef *> &v_input_const, NodePtr &op_dest) { | ||||
(void)v_input_const; | |||||
(void)op_dest; | |||||
return SUCCESS; | return SUCCESS; | ||||
} | } | ||||
Status TensorFlowFusionOpParser::ParseParams(const Message *op_src, OpDescPtr &op_dest) { return SUCCESS; } | |||||
Status TensorFlowFusionOpParser::ParseParams(const Message *op_src, OpDescPtr &op_dest) { | |||||
(void)op_src; | |||||
(void)op_dest; | |||||
return SUCCESS; | |||||
} | |||||
Status TensorFlowFusionOpParser::ParseParamFromConst(const NodeDef *node_def, int32_t ¶m) { | Status TensorFlowFusionOpParser::ParseParamFromConst(const NodeDef *node_def, int32_t ¶m) { | ||||
GE_CHECK_NOTNULL(node_def); | GE_CHECK_NOTNULL(node_def); | ||||
@@ -79,6 +79,8 @@ class PARSER_FUNC_VISIBILITY TensorFlowOpParser : public OpParser { | |||||
* | * | ||||
*/ | */ | ||||
Status ParseParams(const Message *op_src, ge::OpDescPtr &op_dest) override { | Status ParseParams(const Message *op_src, ge::OpDescPtr &op_dest) override { | ||||
(void)op_src; | |||||
(void)op_dest; | |||||
return domi::SUCCESS; | return domi::SUCCESS; | ||||
} | } | ||||
@@ -92,6 +94,8 @@ class PARSER_FUNC_VISIBILITY TensorFlowOpParser : public OpParser { | |||||
* | * | ||||
*/ | */ | ||||
Status ParseParams(const Message *op_src, ge::Operator &op_dest) override { | Status ParseParams(const Message *op_src, ge::Operator &op_dest) override { | ||||
(void)op_src; | |||||
(void)op_dest; | |||||
return domi::SUCCESS; | return domi::SUCCESS; | ||||
} | } | ||||
@@ -105,6 +109,8 @@ class PARSER_FUNC_VISIBILITY TensorFlowOpParser : public OpParser { | |||||
* | * | ||||
*/ | */ | ||||
Status ParseWeights(const Message *op_src, ge::NodePtr &node) final { | Status ParseWeights(const Message *op_src, ge::NodePtr &node) final { | ||||
(void)op_src; | |||||
(void)node; | |||||
return domi::SUCCESS; | return domi::SUCCESS; | ||||
} | } | ||||
}; | }; | ||||
@@ -51,6 +51,7 @@ | |||||
#include "parser/tensorflow/tensorflow_op_parser.h" | #include "parser/tensorflow/tensorflow_op_parser.h" | ||||
#include "parser/tensorflow/tensorflow_util.h" | #include "parser/tensorflow/tensorflow_util.h" | ||||
#include "register/op_registry.h" | #include "register/op_registry.h" | ||||
#include "register/register_utils.h" | |||||
#include "register/scope/scope_pass_registry_impl.h" | #include "register/scope/scope_pass_registry_impl.h" | ||||
#include "parser/common/auto_mapping_subgraph_io_index_func.h" | #include "parser/common/auto_mapping_subgraph_io_index_func.h" | ||||
@@ -118,16 +119,16 @@ graphStatus aclgrphParseTensorFlow(const char *model_file, ge::Graph &graph) { | |||||
// parse tensorflow model_file to GE graph | // parse tensorflow model_file to GE graph | ||||
ge::graphStatus ret = model_parser->Parse(model_file, graph); | ge::graphStatus ret = model_parser->Parse(model_file, graph); | ||||
if (ret != ge::SUCCESS) { | if (ret != ge::SUCCESS) { | ||||
GELOGE(ret, "Parser graph %s failed.", graph.GetName().c_str()); | |||||
GELOGE(ret, "Parser graph %s failed.", ParserUtils::GetGraphName(graph).c_str()); | |||||
return ge::FAILED; | return ge::FAILED; | ||||
} | } | ||||
std::map<AscendString, AscendString> parser_params; | std::map<AscendString, AscendString> parser_params; | ||||
if (acl_graph_parse_util.SetOutputNodeInfo(graph, parser_params) != ge::SUCCESS) { | if (acl_graph_parse_util.SetOutputNodeInfo(graph, parser_params) != ge::SUCCESS) { | ||||
GELOGE(ret, "Set graph %s default output node failed.", graph.GetName().c_str()); | |||||
GELOGE(ret, "Set graph %s default output node failed.", ParserUtils::GetGraphName(graph).c_str()); | |||||
return ge::FAILED; | return ge::FAILED; | ||||
} | } | ||||
GELOGI("Parser graph %s success.", graph.GetName().c_str()); | |||||
GELOGI("Parser graph %s success.", ParserUtils::GetGraphName(graph).c_str()); | |||||
return ge::SUCCESS; | return ge::SUCCESS; | ||||
} | } | ||||
@@ -172,7 +173,7 @@ graphStatus aclgrphParseTensorFlow(const char *model_file, const std::map<Ascend | |||||
// parse tensorflow model_file to GE graph | // parse tensorflow model_file to GE graph | ||||
ge::graphStatus ret = model_parser->Parse(model_file, graph); | ge::graphStatus ret = model_parser->Parse(model_file, graph); | ||||
if (ret != ge::SUCCESS) { | if (ret != ge::SUCCESS) { | ||||
GELOGE(ret, "Parser graph %s failed.", graph.GetName().c_str()); | |||||
GELOGE(ret, "Parser graph %s failed.", ParserUtils::GetGraphName(graph).c_str()); | |||||
return ge::FAILED; | return ge::FAILED; | ||||
} | } | ||||
@@ -182,10 +183,10 @@ graphStatus aclgrphParseTensorFlow(const char *model_file, const std::map<Ascend | |||||
} | } | ||||
if (acl_graph_parse_util.SetOutputNodeInfo(graph, parser_params) != ge::SUCCESS) { | if (acl_graph_parse_util.SetOutputNodeInfo(graph, parser_params) != ge::SUCCESS) { | ||||
GELOGE(ge::FAILED, "Set graph %s default output node failed.", graph.GetName().c_str()); | |||||
GELOGE(ge::FAILED, "Set graph %s default output node failed.", ParserUtils::GetGraphName(graph).c_str()); | |||||
return ge::FAILED; | return ge::FAILED; | ||||
} | } | ||||
GELOGI("AclgrphParse graph %s success.", graph.GetName().c_str()); | |||||
GELOGI("AclgrphParse graph %s success.", ParserUtils::GetGraphName(graph).c_str()); | |||||
return ge::SUCCESS; | return ge::SUCCESS; | ||||
} | } | ||||
} // namespace ge | } // namespace ge | ||||
@@ -313,9 +314,9 @@ Status MappingAndAddSubGraph(const NodePtr &node, const Graph &graph, const Comp | |||||
}); | }); | ||||
if (status != SUCCESS) { | if (status != SUCCESS) { | ||||
GELOGE(INTERNAL_ERROR, "[Mapping][Subgraph]node:%s, sub graph name:%s.", node->GetName().c_str(), | GELOGE(INTERNAL_ERROR, "[Mapping][Subgraph]node:%s, sub graph name:%s.", node->GetName().c_str(), | ||||
graph.GetName().c_str()); | |||||
ParserUtils::GetGraphName(graph).c_str()); | |||||
REPORT_CALL_ERROR("E19999", "Failed to map sub graph input and output, node:%s, sub graph name:%s.", | REPORT_CALL_ERROR("E19999", "Failed to map sub graph input and output, node:%s, sub graph name:%s.", | ||||
node->GetName().c_str(), graph.GetName().c_str()); | |||||
node->GetName().c_str(), ParserUtils::GetGraphName(graph).c_str()); | |||||
return INTERNAL_ERROR; | return INTERNAL_ERROR; | ||||
} | } | ||||
@@ -407,8 +408,8 @@ Status TensorFlowModelParser::TransNodeToOpDesc(const domi::tensorflow::NodeDef | |||||
const string &op_type) { | const string &op_type) { | ||||
GE_CHECK_NOTNULL(node_def); | GE_CHECK_NOTNULL(node_def); | ||||
string node_name = node_def->name(); | string node_name = node_def->name(); | ||||
ge::Operator op_factory = ge::OperatorFactory::CreateOperator(node_name, op_type); | |||||
if (op_factory.GetName() != node_name || op_type == ge::parser::DATA) { | |||||
ge::Operator op_factory = ge::OperatorFactory::CreateOperator(node_name.c_str(), op_type.c_str()); | |||||
if (ParserUtils::GetOperatorName(op_factory) != node_name || op_type == ge::parser::DATA) { | |||||
if (std::find(kMakeOperatorNotByIr.begin(), kMakeOperatorNotByIr.end(), op_type) != kMakeOperatorNotByIr.end()) { | if (std::find(kMakeOperatorNotByIr.begin(), kMakeOperatorNotByIr.end(), op_type) != kMakeOperatorNotByIr.end()) { | ||||
op = ge::parser::MakeShared<ge::OpDesc>(node_name, op_type); | op = ge::parser::MakeShared<ge::OpDesc>(node_name, op_type); | ||||
GE_CHECK_NOTNULL(op); | GE_CHECK_NOTNULL(op); | ||||
@@ -455,8 +456,8 @@ Status TensorFlowModelParser::ParseOpParams(const domi::tensorflow::NodeDef *nod | |||||
return status; | return status; | ||||
} | } | ||||
} else { | } else { | ||||
ge::Operator op_src(node_def->name(), node_def->op()); | |||||
status = domi::AutoMappingFn(node_def, op_src); | |||||
ge::Operator op_src(node_def->name().c_str(), node_def->op().c_str()); | |||||
status = domi::OperatorAutoMapping(node_def, op_src); | |||||
if (status != SUCCESS) { | if (status != SUCCESS) { | ||||
REPORT_CALL_ERROR("E19999", "Auto mapping node_def:%s(%s) to operator failed", node_def->name().c_str(), | REPORT_CALL_ERROR("E19999", "Auto mapping node_def:%s(%s) to operator failed", node_def->name().c_str(), | ||||
node_def->op().c_str()); | node_def->op().c_str()); | ||||
@@ -468,7 +469,7 @@ Status TensorFlowModelParser::ParseOpParams(const domi::tensorflow::NodeDef *nod | |||||
GE_CHECK_NOTNULL(tf_custom_op_parser); | GE_CHECK_NOTNULL(tf_custom_op_parser); | ||||
status = tf_custom_op_parser->ParseParams(op_src, op); | status = tf_custom_op_parser->ParseParams(op_src, op); | ||||
if (status != SUCCESS) { | if (status != SUCCESS) { | ||||
GELOGE(status, "Parse params for node[%s] failed", op_src.GetName().c_str()); | |||||
GELOGE(status, "Parse params for node[%s] failed", ParserUtils::GetOperatorName(op_src).c_str()); | |||||
return status; | return status; | ||||
} | } | ||||
} | } | ||||
@@ -501,7 +502,7 @@ Status TensorFlowModelParser::AddNode(const domi::tensorflow::NodeDef *node_def, | |||||
GE_RETURN_IF_ERROR(TransNodeToOpDesc(node_def, op_desc, node_op)); | GE_RETURN_IF_ERROR(TransNodeToOpDesc(node_def, op_desc, node_op)); | ||||
ge::Operator op = ge::OpDescUtils::CreateOperatorFromOpDesc(op_desc); | ge::Operator op = ge::OpDescUtils::CreateOperatorFromOpDesc(op_desc); | ||||
GE_CHK_STATUS(domi::AutoMappingFn(node_def, op)); | |||||
GE_CHK_STATUS(domi::OperatorAutoMapping(node_def, op)); | |||||
op.BreakConnect(); | op.BreakConnect(); | ||||
ge::NodePtr node = nullptr; | ge::NodePtr node = nullptr; | ||||
@@ -938,8 +939,8 @@ Status TensorFlowModelParser::ParseNodeDef(TensorFlowModelParser *parser, ge::Co | |||||
// Construct operator by IR | // Construct operator by IR | ||||
ge::OpDescPtr op; | ge::OpDescPtr op; | ||||
ge::Operator op_factory = ge::OperatorFactory::CreateOperator(node_name, op_type); | |||||
if (op_factory.GetName() != node_name) { | |||||
ge::Operator op_factory = ge::OperatorFactory::CreateOperator(node_name.c_str(), op_type.c_str()); | |||||
if (ParserUtils::GetOperatorName(op_factory) != node_name) { | |||||
if (std::find(kMakeOperatorNotByIr.begin(), kMakeOperatorNotByIr.end(), op_type) != kMakeOperatorNotByIr.end()) { | if (std::find(kMakeOperatorNotByIr.begin(), kMakeOperatorNotByIr.end(), op_type) != kMakeOperatorNotByIr.end()) { | ||||
op = ge::parser::MakeShared<ge::OpDesc>(node_name, op_type); | op = ge::parser::MakeShared<ge::OpDesc>(node_name, op_type); | ||||
GE_CHECK_NOTNULL(op); | GE_CHECK_NOTNULL(op); | ||||
@@ -947,7 +948,7 @@ Status TensorFlowModelParser::ParseNodeDef(TensorFlowModelParser *parser, ge::Co | |||||
GE_RETURN_IF_ERROR(parser->DefunToPartitionedCall(node_def, op)); | GE_RETURN_IF_ERROR(parser->DefunToPartitionedCall(node_def, op)); | ||||
GE_CHECK_NOTNULL(op); | GE_CHECK_NOTNULL(op); | ||||
ge::Operator op_tmp = ge::OpDescUtils::CreateOperatorFromOpDesc(op); | ge::Operator op_tmp = ge::OpDescUtils::CreateOperatorFromOpDesc(op); | ||||
GE_CHK_STATUS(domi::AutoMappingFn(node_def, op_tmp)); | |||||
GE_CHK_STATUS(domi::OperatorAutoMapping(node_def, op_tmp)); | |||||
op_tmp.BreakConnect(); | op_tmp.BreakConnect(); | ||||
ge::NodePtr node; | ge::NodePtr node; | ||||
{ | { | ||||
@@ -1321,11 +1322,11 @@ Status TensorFlowModelParser::Parse(const char *file, ge::Graph &graph) { | |||||
Status ret = Parse(file, root_graph); | Status ret = Parse(file, root_graph); | ||||
if (ret != SUCCESS) { | if (ret != SUCCESS) { | ||||
GELOGE(ret, "Parser graph %s failed.", graph.GetName().c_str()); | |||||
GELOGE(ret, "Parser graph %s failed.", ParserUtils::GetGraphName(graph).c_str()); | |||||
return ret; | return ret; | ||||
} | } | ||||
GELOGI("Parser graph %s success.", graph.GetName().c_str()); | |||||
GELOGI("Parser graph %s success.", ParserUtils::GetGraphName(graph).c_str()); | |||||
return SUCCESS; | return SUCCESS; | ||||
} | } | ||||
@@ -2206,10 +2207,15 @@ Status TensorFlowModelParser::ToJson(const char *model_file, const char *json_fi | |||||
} | } | ||||
Status TensorFlowWeightsParser::ParseFromMemory(const char *data, uint32_t size, ge::ComputeGraphPtr &graph) { | Status TensorFlowWeightsParser::ParseFromMemory(const char *data, uint32_t size, ge::ComputeGraphPtr &graph) { | ||||
(void)data; | |||||
(void)size; | |||||
(void)graph; | |||||
return SUCCESS; | return SUCCESS; | ||||
} | } | ||||
Status TensorFlowWeightsParser::Parse(const char *file, ge::Graph &graph) { | Status TensorFlowWeightsParser::Parse(const char *file, ge::Graph &graph) { | ||||
(void)file; | |||||
(void)graph; | |||||
return SUCCESS; | return SUCCESS; | ||||
} | } | ||||
@@ -2225,7 +2231,6 @@ Status TensorFlowModelParser::ParseProto(const google::protobuf::Message *proto, | |||||
// Make a copy for operation without modifying the original graph def. | // Make a copy for operation without modifying the original graph def. | ||||
domi::tensorflow::GraphDef graph_def_operation = *graph_def_in; | domi::tensorflow::GraphDef graph_def_operation = *graph_def_in; | ||||
domi::tensorflow::GraphDef *graph_def = &graph_def_operation; | domi::tensorflow::GraphDef *graph_def = &graph_def_operation; | ||||
GELOGI("[TF Parser] graph def version:%d", graph_def->version()); | |||||
GE_RETURN_WITH_LOG_IF_ERROR(ProtoTypePassManager::Instance().Run(graph_def, domi::TENSORFLOW), | GE_RETURN_WITH_LOG_IF_ERROR(ProtoTypePassManager::Instance().Run(graph_def, domi::TENSORFLOW), | ||||
"Run ProtoType Pass Failed"); | "Run ProtoType Pass Failed"); | ||||
@@ -3278,8 +3283,8 @@ Status TensorFlowModelParser::FusionNodeParseParams(shared_ptr<OpParser> &op_par | |||||
} else { | } else { | ||||
vector<ge::Operator> op_src_vec; | vector<ge::Operator> op_src_vec; | ||||
for (const auto &node_def_src : node_def_v) { | for (const auto &node_def_src : node_def_v) { | ||||
ge::Operator op_src(node_def_src->name(), node_def_src->op()); | |||||
status = domi::AutoMappingFn(node_def_src, op_src); | |||||
ge::Operator op_src(node_def_src->name().c_str(), node_def_src->op().c_str()); | |||||
status = domi::OperatorAutoMapping(node_def_src, op_src); | |||||
if (status != SUCCESS) { | if (status != SUCCESS) { | ||||
REPORT_CALL_ERROR("E19999", "Auto mapping node_def:%s(%s) to operator failed", node_def_src->name().c_str(), | REPORT_CALL_ERROR("E19999", "Auto mapping node_def:%s(%s) to operator failed", node_def_src->name().c_str(), | ||||
node_def_src->op().c_str()); | node_def_src->op().c_str()); | ||||
@@ -3615,7 +3620,7 @@ Status TensorFlowModelParser::RecordFusionResult(const std::shared_ptr<ge::Scope | |||||
std::vector<std::string> original_names; | std::vector<std::string> original_names; | ||||
auto nodes = fusion_result->Nodes(); | auto nodes = fusion_result->Nodes(); | ||||
std::transform(nodes.begin(), nodes.end(), std::back_inserter(original_names), | std::transform(nodes.begin(), nodes.end(), std::back_inserter(original_names), | ||||
[](ge::OperatorPtr n) -> std::string { return n->GetName(); }); | |||||
[](ge::OperatorPtr n) -> std::string { return ParserUtils::GetOperatorName(*n); }); | |||||
GELOGI("Op %s original_names size = %zu.", op_desc->GetName().c_str(), original_names.size()); | GELOGI("Op %s original_names size = %zu.", op_desc->GetName().c_str(), original_names.size()); | ||||
bool ret = ge::AttrUtils::SetListStr(op_desc, ge::ATTR_NAME_DATA_DUMP_ORIGIN_OP_NAMES, original_names); | bool ret = ge::AttrUtils::SetListStr(op_desc, ge::ATTR_NAME_DATA_DUMP_ORIGIN_OP_NAMES, original_names); | ||||
@@ -4062,7 +4067,7 @@ Status TensorFlowModelParser::AddExternalGraph(const ComputeGraphPtr &root_graph | |||||
return INTERNAL_ERROR; | return INTERNAL_ERROR; | ||||
} | } | ||||
Graph graph = model.GetGraph(); | Graph graph = model.GetGraph(); | ||||
GELOGD("Get subgraph[%s] from model[%s].", graph.GetName().c_str(), node->GetName().c_str()); | |||||
GELOGD("Get subgraph[%s] from model[%s].", ParserUtils::GetGraphName(graph).c_str(), node->GetName().c_str()); | |||||
Status ret = MappingAndAddSubGraph(node, graph, root_graph); | Status ret = MappingAndAddSubGraph(node, graph, root_graph); | ||||
if (ret != SUCCESS) { | if (ret != SUCCESS) { | ||||
GELOGE(INTERNAL_ERROR, "[Mapping][Subgraph]Node:%s.", node->GetName().c_str()); | GELOGE(INTERNAL_ERROR, "[Mapping][Subgraph]Node:%s.", node->GetName().c_str()); | ||||
@@ -102,6 +102,9 @@ class PARSER_FUNC_VISIBILITY TensorFlowModelParser : public domi::ModelParser { | |||||
Status ParseFromMemory(const char *data, uint32_t size, ge::ComputeGraphPtr &graph) override; | Status ParseFromMemory(const char *data, uint32_t size, ge::ComputeGraphPtr &graph) override; | ||||
Status ParseFromMemory(const char *data, uint32_t size, ge::Graph &graph) override { | Status ParseFromMemory(const char *data, uint32_t size, ge::Graph &graph) override { | ||||
(void)data; | |||||
(void)size; | |||||
(void)graph; | |||||
return domi::SUCCESS; | return domi::SUCCESS; | ||||
} | } | ||||
@@ -77,10 +77,14 @@ Status TensorFlowRefSwitchParser::ParseParams(const Message *op_src, ge::OpDescP | |||||
// AUTO GEN PLEASE DO NOT MODIFY IT | // AUTO GEN PLEASE DO NOT MODIFY IT | ||||
Status TensorFlowRefSwitchParser::PreParseParams(const domi::tensorflow::NodeDef *node, RefSwitchOperator *op) { | Status TensorFlowRefSwitchParser::PreParseParams(const domi::tensorflow::NodeDef *node, RefSwitchOperator *op) { | ||||
(void)node; | |||||
(void)op; | |||||
return SUCCESS; | return SUCCESS; | ||||
} | } | ||||
Status TensorFlowRefSwitchParser::PostParseParams(const domi::tensorflow::NodeDef *node, RefSwitchOperator *op) { | Status TensorFlowRefSwitchParser::PostParseParams(const domi::tensorflow::NodeDef *node, RefSwitchOperator *op) { | ||||
(void)node; | |||||
(void)op; | |||||
return SUCCESS; | return SUCCESS; | ||||
} | } | ||||
@@ -155,10 +155,14 @@ Status TensorFlowShapeNParser::ParseParams(const Message *op_src, ge::OpDescPtr | |||||
// AUTO GEN PLEASE DO NOT MODIFY IT | // AUTO GEN PLEASE DO NOT MODIFY IT | ||||
Status TensorFlowShapeNParser::PreParseParams(const domi::tensorflow::NodeDef *node, ShapeNOperator *op) { | Status TensorFlowShapeNParser::PreParseParams(const domi::tensorflow::NodeDef *node, ShapeNOperator *op) { | ||||
(void)node; | |||||
(void)op; | |||||
return SUCCESS; | return SUCCESS; | ||||
} | } | ||||
Status TensorFlowShapeNParser::PostParseParams(const domi::tensorflow::NodeDef *node, ShapeNOperator *op) { | Status TensorFlowShapeNParser::PostParseParams(const domi::tensorflow::NodeDef *node, ShapeNOperator *op) { | ||||
(void)node; | |||||
(void)op; | |||||
return SUCCESS; | return SUCCESS; | ||||
} | } | ||||