@@ -54,16 +54,16 @@ Status CaffeOpParser::ConvertWeight(const BlobProto &proto, const string &lay_na | |||||
ConvertShape(proto, shape_vec); | ConvertShape(proto, shape_vec); | ||||
ge::GeShape shape(shape_vec); | ge::GeShape shape(shape_vec); | ||||
// Calculate the number of data in weight | // Calculate the number of data in weight | ||||
int count = 1; | |||||
int32_t count = 1; | |||||
for (size_t i = 0; i < shape.GetDimNum(); ++i) { | for (size_t i = 0; i < shape.GetDimNum(); ++i) { | ||||
int dim = shape.GetDim(i); | |||||
int32_t dim = static_cast<int32_t>(shape.GetDim(i)); | |||||
if (dim <= 0) { | if (dim <= 0) { | ||||
REPORT_INNER_ERROR("E19999", "Convert weight fail, dim:%d of layer:%s <=0, check invalid", dim, lay_name.c_str()); | REPORT_INNER_ERROR("E19999", "Convert weight fail, dim:%d of layer:%s <=0, check invalid", dim, lay_name.c_str()); | ||||
GELOGE(FAILED, "[Check][Size]Convert weight fail, dim:%d of layer:%s <=0, check invalid", dim, lay_name.c_str()); | GELOGE(FAILED, "[Check][Size]Convert weight fail, dim:%d of layer:%s <=0, check invalid", dim, lay_name.c_str()); | ||||
return FAILED; | return FAILED; | ||||
} | } | ||||
if (dim >= INT64_MAX / count) { | |||||
if (dim >= INT32_MAX / count) { | |||||
REPORT_INNER_ERROR("E19999", "Convert weight fail, shape:%s of layer:%s will overflow after multi", | REPORT_INNER_ERROR("E19999", "Convert weight fail, shape:%s of layer:%s will overflow after multi", | ||||
shape.ToString().c_str(), lay_name.c_str()); | shape.ToString().c_str(), lay_name.c_str()); | ||||
GELOGE(FAILED, "[Check][Size]Convert weight fail, Blob size exceeds INT64_MAX, dim:%d, count:%d, layer name:%s", | GELOGE(FAILED, "[Check][Size]Convert weight fail, Blob size exceeds INT64_MAX, dim:%d, count:%d, layer name:%s", | ||||
@@ -1101,14 +1101,14 @@ Status CaffeModelParser::AddUserOutNodesTop() { | |||||
} | } | ||||
Status CaffeModelParser::AddOutputTop(const domi::caffe::NetParameter &proto_message) { | Status CaffeModelParser::AddOutputTop(const domi::caffe::NetParameter &proto_message) { | ||||
for (int32_t i = 0; i < proto_message.layer_size(); i++) { | |||||
const domi::caffe::LayerParameter &layer = proto_message.layer(i); | |||||
for (int32_t layer_index = 0; layer_index < proto_message.layer_size(); ++layer_index) { | |||||
const domi::caffe::LayerParameter &layer = proto_message.layer(layer_index); | |||||
if (!CheckValidLayer(layer)) { | if (!CheckValidLayer(layer)) { | ||||
continue; | continue; | ||||
} | } | ||||
for (int i = 0; i < layer.top_size(); i++) { | |||||
for (int32_t i = 0; i < layer.top_size(); i++) { | |||||
string top = layer.top(i); | string top = layer.top(i); | ||||
string top_origin = top; | string top_origin = top; | ||||
// Handling 'inplace' scenarios | // Handling 'inplace' scenarios | ||||
@@ -1134,7 +1134,7 @@ Status CaffeModelParser::AddOutputTop(const domi::caffe::NetParameter &proto_mes | |||||
GELOGI("output in top_blob: %s", layer.name().c_str()); | GELOGI("output in top_blob: %s", layer.name().c_str()); | ||||
if (top_node_iter != node_map.end()) { | if (top_node_iter != node_map.end()) { | ||||
ge::GetParserContext().out_tensor_names.push_back(top_origin); | ge::GetParserContext().out_tensor_names.push_back(top_origin); | ||||
ge::GetParserContext().default_out_nodes.push_back(std::make_pair(layer.name(), (int32_t)i)); | |||||
ge::GetParserContext().default_out_nodes.push_back(std::make_pair(layer.name(), i)); | |||||
GELOGI("The top of out node [%s] is [%s]", layer.name().c_str(), top_origin.c_str()); | GELOGI("The top of out node [%s] is [%s]", layer.name().c_str(), top_origin.c_str()); | ||||
} | } | ||||
} | } | ||||
@@ -1261,8 +1261,8 @@ Status CaffeModelParser::ParseFromMemory(const char *data, uint32_t size, ge::Co | |||||
std::map<std::string, std::vector<std::string>> layer_params_map; | std::map<std::string, std::vector<std::string>> layer_params_map; | ||||
// same param name set <paramnames,layernames> | // same param name set <paramnames,layernames> | ||||
// std::map<std::vector<std::string>, std::vector<std::string>> params_share_map; | // std::map<std::vector<std::string>, std::vector<std::string>> params_share_map; | ||||
for (int32_t i = 0; i < layer_count; i++) { | |||||
domi::caffe::LayerParameter &layer = const_cast<domi::caffe::LayerParameter &>(proto_message.layer(i)); | |||||
for (int32_t layer_index = 0; layer_index < layer_count; ++layer_index) { | |||||
domi::caffe::LayerParameter &layer = const_cast<domi::caffe::LayerParameter &>(proto_message.layer(layer_index)); | |||||
GE_CHK_BOOL_EXEC_INFO(CheckValidLayer(layer), continue, | GE_CHK_BOOL_EXEC_INFO(CheckValidLayer(layer), continue, | ||||
"[Check][Layer]layer phase is train, skip this layer, name:%s, type:%s.", | "[Check][Layer]layer phase is train, skip this layer, name:%s, type:%s.", | ||||
@@ -1284,7 +1284,7 @@ Status CaffeModelParser::ParseFromMemory(const char *data, uint32_t size, ge::Co | |||||
// Times accumulation of duplicate operators | // Times accumulation of duplicate operators | ||||
layer_name_map[layer.name()]++; | layer_name_map[layer.name()]++; | ||||
// Set the name in proto and layer | // Set the name in proto and layer | ||||
domi::caffe::LayerParameter *duplicate_name_layer = proto_message.mutable_layer(i); | |||||
domi::caffe::LayerParameter *duplicate_name_layer = proto_message.mutable_layer(layer_index); | |||||
duplicate_name_layer->set_name(new_name); layer.set_name(new_name);) | duplicate_name_layer->set_name(new_name); layer.set_name(new_name);) | ||||
// Insert the new operator name, the number of times of duplicate name is recorded as 1 | // Insert the new operator name, the number of times of duplicate name is recorded as 1 | ||||
@@ -1300,7 +1300,7 @@ Status CaffeModelParser::ParseFromMemory(const char *data, uint32_t size, ge::Co | |||||
// parse ParamSpec | // parse ParamSpec | ||||
std::vector<string> v_param_names; | std::vector<string> v_param_names; | ||||
for (int i = 0; i < layer.param_size(); i++) { | |||||
for (int32_t i = 0; i < layer.param_size(); i++) { | |||||
const domi::caffe::ParamSpec ¶m = layer.param(i); | const domi::caffe::ParamSpec ¶m = layer.param(i); | ||||
GE_IF_BOOL_EXEC((param.has_name()), v_param_names.emplace_back(param.name())); | GE_IF_BOOL_EXEC((param.has_name()), v_param_names.emplace_back(param.name())); | ||||
} | } | ||||
@@ -1483,8 +1483,8 @@ Status CaffeModelParser::Parse(const char *model_path, ge::ComputeGraphPtr &grap | |||||
// <layername,paramnames> | // <layername,paramnames> | ||||
std::map<std::string, std::vector<std::string>> layer_params_map; | std::map<std::string, std::vector<std::string>> layer_params_map; | ||||
// same param name set <paramnames,layernames> | // same param name set <paramnames,layernames> | ||||
for (int32_t i = 0; i < layer_count; i++) { | |||||
domi::caffe::LayerParameter &layer = const_cast<domi::caffe::LayerParameter &>(proto_message.layer(i)); | |||||
for (int32_t layer_index = 0; layer_index < layer_count; ++layer_index) { | |||||
domi::caffe::LayerParameter &layer = const_cast<domi::caffe::LayerParameter &>(proto_message.layer(layer_index)); | |||||
SaveOrigionLayerTops(layer); | SaveOrigionLayerTops(layer); | ||||
GE_CHK_BOOL_EXEC_INFO(CheckValidLayer(layer), continue, | GE_CHK_BOOL_EXEC_INFO(CheckValidLayer(layer), continue, | ||||
"[Check][Layer]layer phase is train, skip this layer, name:%s, type:%s.", | "[Check][Layer]layer phase is train, skip this layer, name:%s, type:%s.", | ||||
@@ -1503,7 +1503,7 @@ Status CaffeModelParser::Parse(const char *model_path, ge::ComputeGraphPtr &grap | |||||
// Times accumulation of duplicate operators | // Times accumulation of duplicate operators | ||||
layer_name_map[layer.name()]++; | layer_name_map[layer.name()]++; | ||||
// Set the name in proto and layer | // Set the name in proto and layer | ||||
domi::caffe::LayerParameter *duplicate_name_layer = proto_message.mutable_layer(i); | |||||
domi::caffe::LayerParameter *duplicate_name_layer = proto_message.mutable_layer(layer_index); | |||||
duplicate_name_layer->set_name(new_name); layer.set_name(new_name);) | duplicate_name_layer->set_name(new_name); layer.set_name(new_name);) | ||||
// Insert the new operator name, the number of times of duplicate name is recorded as 1 | // Insert the new operator name, the number of times of duplicate name is recorded as 1 | ||||
@@ -1519,7 +1519,7 @@ Status CaffeModelParser::Parse(const char *model_path, ge::ComputeGraphPtr &grap | |||||
// parse ParamSpec | // parse ParamSpec | ||||
std::vector<string> v_param_names; | std::vector<string> v_param_names; | ||||
for (int i = 0; i < layer.param_size(); i++) { | |||||
for (int32_t i = 0; i < layer.param_size(); i++) { | |||||
const domi::caffe::ParamSpec ¶m = layer.param(i); | const domi::caffe::ParamSpec ¶m = layer.param(i); | ||||
GE_IF_BOOL_EXEC((param.has_name()), v_param_names.emplace_back(param.name())); | GE_IF_BOOL_EXEC((param.has_name()), v_param_names.emplace_back(param.name())); | ||||
} | } | ||||
@@ -374,7 +374,7 @@ domi::Status AclGrphParseUtil::ParseAclEnableScope(const string &enable_scope_fu | |||||
} | } | ||||
void AclGrphParseUtil::AddAttrsForInputNodes(const vector<string> &adjust_fp16_format_vec, | void AclGrphParseUtil::AddAttrsForInputNodes(const vector<string> &adjust_fp16_format_vec, | ||||
const string &fp16_nodes_name, uint32_t index, OpDescPtr &op_desc) { | |||||
const string &fp16_nodes_name, size_t index, OpDescPtr &op_desc) { | |||||
if (AttrUtils::SetStr(op_desc, ATTR_ATC_USER_DEFINE_DATATYPE, TypeUtils::DataTypeToSerialString(DT_FLOAT16))) { | if (AttrUtils::SetStr(op_desc, ATTR_ATC_USER_DEFINE_DATATYPE, TypeUtils::DataTypeToSerialString(DT_FLOAT16))) { | ||||
if ((index < adjust_fp16_format_vec.size()) && (adjust_fp16_format_vec[index] == "true")) { | if ((index < adjust_fp16_format_vec.size()) && (adjust_fp16_format_vec[index] == "true")) { | ||||
GELOGI("This node [%s] should be set NC1HWC0", fp16_nodes_name.c_str()); | GELOGI("This node [%s] should be set NC1HWC0", fp16_nodes_name.c_str()); | ||||
@@ -405,7 +405,7 @@ domi::Status AclGrphParseUtil::ParseAclInputFp16Nodes(const ComputeGraphPtr &gra | |||||
} | } | ||||
GELOGI("The input_fp16_nodes is set %s", input_fp16_nodes.c_str()); | GELOGI("The input_fp16_nodes is set %s", input_fp16_nodes.c_str()); | ||||
vector<string> input_fp16_nodes_vec = StringUtils::Split(input_fp16_nodes, ';'); | vector<string> input_fp16_nodes_vec = StringUtils::Split(input_fp16_nodes, ';'); | ||||
for (uint32_t i = 0; i < input_fp16_nodes_vec.size(); ++i) { | |||||
for (size_t i = 0; i < input_fp16_nodes_vec.size(); ++i) { | |||||
ge::NodePtr node = graph->FindNode(input_fp16_nodes_vec[i]); | ge::NodePtr node = graph->FindNode(input_fp16_nodes_vec[i]); | ||||
if (node == nullptr) { | if (node == nullptr) { | ||||
ErrorManager::GetInstance().ATCReportErrMessage("E10016", {"parameter", "opname"}, | ErrorManager::GetInstance().ATCReportErrMessage("E10016", {"parameter", "opname"}, | ||||
@@ -494,12 +494,12 @@ domi::Status AclGrphParseUtil::GetDefaultOutInfo(ge::ComputeGraphPtr &compute_gr | |||||
std::vector<std::pair<ge::NodePtr, int32_t>> &output_nodes_info) { | std::vector<std::pair<ge::NodePtr, int32_t>> &output_nodes_info) { | ||||
std::vector<std::pair<std::string, int32_t>> default_out_nodes = ge::GetParserContext().default_out_nodes; | std::vector<std::pair<std::string, int32_t>> default_out_nodes = ge::GetParserContext().default_out_nodes; | ||||
if (!default_out_nodes.empty()) { | if (!default_out_nodes.empty()) { | ||||
for (uint32_t i = 0; i < default_out_nodes.size(); ++i) { | |||||
for (size_t i = 0; i < default_out_nodes.size(); ++i) { | |||||
ge::NodePtr out_node = compute_graph->FindNode(default_out_nodes[i].first); | ge::NodePtr out_node = compute_graph->FindNode(default_out_nodes[i].first); | ||||
if (out_node == nullptr) { | if (out_node == nullptr) { | ||||
ErrorManager::GetInstance().ATCReportErrMessage("E10016", {"parameter", "opname"}, | ErrorManager::GetInstance().ATCReportErrMessage("E10016", {"parameter", "opname"}, | ||||
{"out_nodes", default_out_nodes[i].first}); | {"out_nodes", default_out_nodes[i].first}); | ||||
GELOGE(domi::FAILED, "[Check][Param] Can not find out_nodes(%d) (%s) in graph.", | |||||
GELOGE(domi::FAILED, "[Check][Param] Can not find out_nodes(%zu) (%s) in graph.", | |||||
i, default_out_nodes[i].first.c_str()); | i, default_out_nodes[i].first.c_str()); | ||||
return domi::FAILED; | return domi::FAILED; | ||||
} | } | ||||
@@ -57,7 +57,7 @@ class AclGrphParseUtil { | |||||
domi::Status ParseAclOutputFp16NodesFormat(const std::string &is_output_fp16); | domi::Status ParseAclOutputFp16NodesFormat(const std::string &is_output_fp16); | ||||
domi::Status ParseAclEnableScope(const std::string &enable_scope_fusion_passes); | domi::Status ParseAclEnableScope(const std::string &enable_scope_fusion_passes); | ||||
static void AddAttrsForInputNodes(const vector<string> &adjust_fp16_format_vec, const string &fp16_nodes_name, | static void AddAttrsForInputNodes(const vector<string> &adjust_fp16_format_vec, const string &fp16_nodes_name, | ||||
uint32_t index, OpDescPtr &op_desc); | |||||
size_t index, OpDescPtr &op_desc); | |||||
domi::Status ParseAclInputFp16Nodes(const ComputeGraphPtr &graph, const string &input_fp16_nodes, | domi::Status ParseAclInputFp16Nodes(const ComputeGraphPtr &graph, const string &input_fp16_nodes, | ||||
const string &is_input_adjust_hw_layout); | const string &is_input_adjust_hw_layout); | ||||
domi::Status GetDefaultOutInfo(ge::ComputeGraphPtr &compute_graph, | domi::Status GetDefaultOutInfo(ge::ComputeGraphPtr &compute_graph, | ||||
@@ -1818,17 +1818,20 @@ Status TensorFlowModelParser::GetInPutIndex(shared_ptr<ge::ScopeGraph> &scope_gr | |||||
auto &impl = scope_graph->impl_; | auto &impl = scope_graph->impl_; | ||||
return impl->GetInputOrOutputIndex(info, old_index, true, new_index); | return impl->GetInputOrOutputIndex(info, old_index, true, new_index); | ||||
} | } | ||||
return SUCCESS; | |||||
GELOGE(INTERNAL_ERROR, "Fusion op should come from scope fusion pass, node name:%s, fusion node name:%s", | |||||
info.node_name.c_str(), info.fusion_node_name.c_str()); | |||||
return INTERNAL_ERROR; | |||||
} | } | ||||
Status TensorFlowModelParser::GetOutPutIndex(shared_ptr<ge::ScopeGraph> &scope_graph, const ge::ScopeFusionOpInfo &info, | Status TensorFlowModelParser::GetOutPutIndex(shared_ptr<ge::ScopeGraph> &scope_graph, const ge::ScopeFusionOpInfo &info, | ||||
const int32_t old_index, int32_t &new_index) { | const int32_t old_index, int32_t &new_index) { | ||||
GE_CHECK_NOTNULL(scope_graph); | GE_CHECK_NOTNULL(scope_graph); | ||||
Status ret; | |||||
if (info.scope_pass) { | if (info.scope_pass) { | ||||
auto &impl = scope_graph->impl_; | auto &impl = scope_graph->impl_; | ||||
ret = impl->GetInputOrOutputIndex(info, old_index, false, new_index); | |||||
return impl->GetInputOrOutputIndex(info, old_index, false, new_index); | |||||
} | } | ||||
return ret; | |||||
GELOGE(INTERNAL_ERROR, "Fusion op should come from scope fusion pass, node name:%s, fusion node name:%s", | |||||
info.node_name.c_str(), info.fusion_node_name.c_str()); | |||||
return INTERNAL_ERROR; | |||||
} | } | ||||
bool TensorFlowModelParser::ConstOpNeedUpdate(const string &op_name) { | bool TensorFlowModelParser::ConstOpNeedUpdate(const string &op_name) { | ||||
@@ -4135,7 +4135,7 @@ TEST_F(STestTensorflowParser, parser_UppdateInputMap_test) | |||||
info.fusion_op_type = parser::FUSIONBATCHNORM; | info.fusion_op_type = parser::FUSIONBATCHNORM; | ||||
info.node_name = "conv_conv5/BatchNorm/batchnorm/add"; | info.node_name = "conv_conv5/BatchNorm/batchnorm/add"; | ||||
info.description = ""; | info.description = ""; | ||||
info.scope_pass = false; | |||||
info.scope_pass = true; | |||||
tensorflow_parser.nodedef_map_["dropout"] = node1; | tensorflow_parser.nodedef_map_["dropout"] = node1; | ||||
tensorflow_parser.nodedef_map_["conv_conv5/BatchNorm/moving_variance"] = node2; | tensorflow_parser.nodedef_map_["conv_conv5/BatchNorm/moving_variance"] = node2; | ||||
@@ -2743,7 +2743,7 @@ TEST_F(UtestTensorflowParser, Tensorflow_GetInOutPutIndex_scope_pass) | |||||
input_node_info.scope_pass = false; | input_node_info.scope_pass = false; | ||||
ret = tensorflow_parser.GetInPutIndex(scope_graph, input_node_info, old_index, new_index); | ret = tensorflow_parser.GetInPutIndex(scope_graph, input_node_info, old_index, new_index); | ||||
EXPECT_EQ(domi::SUCCESS, ret); | |||||
EXPECT_EQ(INTERNAL_ERROR, ret); | |||||
delete graph; | delete graph; | ||||
} | } | ||||
@@ -4287,7 +4287,7 @@ TEST_F(UtestTensorflowParser, parser_UppdateInputMap_test) | |||||
info.fusion_op_type = parser::FUSIONBATCHNORM; | info.fusion_op_type = parser::FUSIONBATCHNORM; | ||||
info.node_name = "conv_conv5/BatchNorm/batchnorm/add"; | info.node_name = "conv_conv5/BatchNorm/batchnorm/add"; | ||||
info.description = ""; | info.description = ""; | ||||
info.scope_pass = false; | |||||
info.scope_pass = true; | |||||
tensorflow_parser.nodedef_map_["dropout"] = node1; | tensorflow_parser.nodedef_map_["dropout"] = node1; | ||||
tensorflow_parser.nodedef_map_["conv_conv5/BatchNorm/moving_variance"] = node2; | tensorflow_parser.nodedef_map_["conv_conv5/BatchNorm/moving_variance"] = node2; | ||||