From 05df6d57aee65bae998604ab7c82d64e4a229c47 Mon Sep 17 00:00:00 2001 From: "wangwenhua1@huawei.com" Date: Tue, 22 Dec 2020 15:47:01 +0800 Subject: [PATCH 01/28] display model info --- ge/common/helper/model_helper.cc | 17 ++++++- ge/generator/ge_generator.cc | 70 +++++++++++++++++++++++++++++ ge/offline/main.cc | 32 ++++++++++++- ge/session/omg.cc | 57 ++++++++++++++++++++--- inc/external/ge/ge_api_types.h | 3 ++ inc/framework/omg/omg.h | 4 +- inc/framework/omg/omg_inner_types.h | 9 ++-- 7 files changed, 178 insertions(+), 14 deletions(-) diff --git a/ge/common/helper/model_helper.cc b/ge/common/helper/model_helper.cc index aacef88c..5b23d6b4 100644 --- a/ge/common/helper/model_helper.cc +++ b/ge/common/helper/model_helper.cc @@ -87,7 +87,9 @@ Status ModelHelper::SaveModelDef(std::shared_ptr &om_file_save model_tmp->SetGraph(ge_model->GetGraph()); model_tmp->SetVersion(ge_model->GetVersion()); model_tmp->SetAttr(ge_model->MutableAttrMap()); - + GE_CHK_BOOL_EXEC(ge::AttrUtils::SetInt(ge_model, "modeldef_size", model_buffer.GetSize()), + GELOGE(FAILED, "SetInt of modeldef_size failed."); + return FAILED); (void)model_tmp->Save(model_buffer); GELOGD("MODEL_DEF size is %zu", model_buffer.GetSize()); @@ -105,6 +107,9 @@ Status ModelHelper::SaveModelWeights(std::shared_ptr &om_file_ const GeModelPtr &ge_model, size_t model_index) { auto ge_model_weight = ge_model->GetWeight(); GELOGD("WEIGHTS_DATA size is %zu, %p", ge_model_weight.GetSize(), ge_model_weight.GetData()); + GE_CHK_BOOL_EXEC(ge::AttrUtils::SetInt(ge_model, "weight_data_size", ge_model_weight.GetSize()), + GELOGE(FAILED, "SetInt of weight_data_size failed."); + return FAILED); // weight is not necessary if (ge_model_weight.GetSize() > 0) { GE_CHK_STATUS_RET(SaveModelPartition(om_file_save_helper, @@ -119,6 +124,9 @@ Status ModelHelper::SaveModelTbeKernel(std::shared_ptr &om_fil const GeModelPtr &ge_model, size_t model_index) { TBEKernelStore tbe_kernel_store = ge_model->GetTBEKernelStore(); GELOGD("TBE_KERNELS size is %zu", tbe_kernel_store.DataSize()); + GE_CHK_BOOL_EXEC(ge::AttrUtils::SetInt(ge_model, "tbe_kernels_size", tbe_kernel_store.DataSize()), + GELOGE(FAILED, "SetInt of tbe_kernels_size failed."); + return FAILED); if (tbe_kernel_store.DataSize() > 0) { GE_CHK_STATUS_RET( SaveModelPartition(om_file_save_helper, ModelPartitionType::TBE_KERNELS, @@ -135,6 +143,9 @@ Status ModelHelper::SaveModelCustAICPU(std::shared_ptr &om_fil const GeModelPtr &ge_model, size_t model_index) { CustAICPUKernelStore cust_aicpu_kernel_store = ge_model->GetCustAICPUKernelStore(); GELOGD("cust aicpu kernels size is %zu", cust_aicpu_kernel_store.DataSize()); + GE_CHK_BOOL_EXEC(ge::AttrUtils::SetInt(ge_model, "cust_aicpu_kernel_store_size", cust_aicpu_kernel_store.DataSize()), + GELOGE(FAILED, "SetInt of tbe_kernels_size failed."); + return FAILED); if (cust_aicpu_kernel_store.DataSize() > 0) { GE_CHK_STATUS_RET(SaveModelPartition(om_file_save_helper, ModelPartitionType::CUST_AICPU_KERNELS, @@ -167,6 +178,10 @@ Status ModelHelper::SaveModelTaskDef(std::shared_ptr &om_file_ GELOGD("TASK_INFO op_size:%d, stream_num:%u", model_task_def->op().size(), model_task_def->stream_num()); GELOGD("TASK_INFO size is %zu", partition_task_size); + GE_CHK_BOOL_EXEC(ge::AttrUtils::SetInt(ge_model, "task_info_size", partition_task_size), + GELOGE(FAILED, "SetInt of task_info_size failed."); + return FAILED); + if (SaveModelPartition(om_file_save_helper, ModelPartitionType::TASK_INFO, task_buffer.GetData(), partition_task_size, model_index) != SUCCESS) { GELOGE(PARAM_INVALID, "Add model task def partition failed"); diff --git a/ge/generator/ge_generator.cc b/ge/generator/ge_generator.cc index acb029e9..d10d5673 100644 --- a/ge/generator/ge_generator.cc +++ b/ge/generator/ge_generator.cc @@ -318,6 +318,8 @@ class GeGenerator::Impl { bool GetVersionFromPath(const std::string &file_path, std::string &version); bool SetAtcVersionInfo(AttrHolder &obj); bool SetOppVersionInfo(AttrHolder &obj); + bool SetOmSystemInfo(AttrHolder &obj); + void DisplayModelInfo(AttrHolder &obj); }; Status GeGenerator::Initialize(const map &options) { @@ -528,6 +530,70 @@ bool GeGenerator::Impl::SetOppVersionInfo(AttrHolder &obj) { return true; } +bool GeGenerator::Impl::SetOmSystemInfo(AttrHolder &obj) { + std::string soc_version; + (void)ge::GetContext().GetOption(ge::SOC_VERSION, soc_version); + GELOGI("SetOmSystemInfo soc_version: %s", soc_version.c_str()); + if (!ge::AttrUtils::SetStr(obj, "soc_version", soc_version)) { + GELOGW("SetStr of soc_version failed."); + return false; + } + std::string framework_type; + (void)ge::GetContext().GetOption(ge::FRAMEWORK_TYPE, framework_type); + GELOGI("SetOmSystemInfo framework_type: %s", framework_type.c_str()); + if (!ge::AttrUtils::SetStr(obj, "framework_type", framework_type)) { + GELOGW("SetStr of framework_type failed."); + return false; + } + return true; +} + +void GeGenerator::Impl::DisplayModelInfo(AttrHolder &obj) { + std::string display_model; + (void)ge::GetContext().GetOption(ge::DISPLAY_MODEL_INFO, display_model); + if (display_model != "1") { + GELOGD("display_model not 1"); + return; + } + // + int64_t memory_size; + (void)ge::AttrUtils::GetInt(obj, ATTR_MODEL_MEMORY_SIZE, memory_size); + int64_t weight_size; + (void)ge::AttrUtils::GetInt(obj, ATTR_MODEL_WEIGHT_SIZE, weight_size); + int64_t stream_num; + (void)ge::AttrUtils::GetInt(obj, ATTR_MODEL_STREAM_NUM, stream_num); + int64_t event_num; + (void)ge::AttrUtils::GetInt(obj, ATTR_MODEL_EVENT_NUM, event_num); + std::cout << ATTR_MODEL_MEMORY_SIZE << "[" << memory_size << "], " << ATTR_MODEL_WEIGHT_SIZE << "[" << weight_size << + "], " << ATTR_MODEL_STREAM_NUM << "[" << stream_num << "], " << ATTR_MODEL_EVENT_NUM << "[" << event_num << "]." + << std::endl; + + // + std::string atc_version; + (void)ge::AttrUtils::GetStr(obj, ATTR_MODEL_ATC_VERSION, atc_version); + std::string soc_version; + (void)ge::AttrUtils::GetStr(obj, "soc_version", soc_version); + std::string framework_type; + (void)ge::AttrUtils::GetStr(obj, "framework_type", framework_type); + std::cout << ATTR_MODEL_ATC_VERSION << "[" << atc_version << "], " << "soc_version" << "[" << soc_version << + "], " << "framework_type" << "[" << framework_type << "]." << std::endl; + + // + int64_t modeldef_size; + (void)ge::AttrUtils::GetInt(obj, "modeldef_size", modeldef_size); + int64_t weight_data_size; + (void)ge::AttrUtils::GetInt(obj, "weight_data_size", weight_data_size); + int64_t tbe_kernels_size; + (void)ge::AttrUtils::GetInt(obj, "tbe_kernels_size", tbe_kernels_size); + int64_t cust_aicpu_kernel_store_size; + (void)ge::AttrUtils::GetInt(obj, "cust_aicpu_kernel_store_size", cust_aicpu_kernel_store_size); + int64_t task_info_size; + (void)ge::AttrUtils::GetInt(obj, "task_info_size", task_info_size); + std::cout << "modeldef_size" << "[" << modeldef_size << "], " << "weight_data_size" << "[" << weight_data_size << + "], " << "tbe_kernels_size" << "[" << tbe_kernels_size << "], " << "cust_aicpu_kernel_store_size" << "[" << + cust_aicpu_kernel_store_size << "], " << "task_info_size" << "[" << task_info_size << "]." << std::endl; +} + Status GeGenerator::GenerateModel(const Graph &graph, const string &file_name_prefix, const vector &inputs, ModelBufferData &model, bool is_offline) { rtContext_t ctx = nullptr; @@ -786,6 +852,9 @@ Status GeGenerator::Impl::SaveModel(const string &file_name_prefix, GeModelPtr & if (!SetOppVersionInfo(*(model.get()))) { GELOGW("SetPackageVersionInfo of ops failed!"); } + if (!SetOmSystemInfo(*(model.get()))) { + GELOGW("SetOmsystemInfo failed!"); + } ModelHelper model_helper; model_helper.SetSaveMode(is_offline_); Status ret = model_helper.SaveToOmModel(model, save_param_, file_name_prefix, model_buff); @@ -793,6 +862,7 @@ Status GeGenerator::Impl::SaveModel(const string &file_name_prefix, GeModelPtr & GELOGE(ret, "Save to om model failed"); return ret; } + DisplayModelInfo(*(model.get())); return SUCCESS; } diff --git a/ge/offline/main.cc b/ge/offline/main.cc index b7188a85..0b4ea7f7 100755 --- a/ge/offline/main.cc +++ b/ge/offline/main.cc @@ -202,6 +202,8 @@ DEFINE_string(mdl_bank_path, "", "Optional; model bank path"); DEFINE_string(op_bank_path, "", "Optional; op bank path"); +DEFINE_string(display_model_info, "0", "Optional; display model info"); + class GFlagUtils { public: /** @@ -307,7 +309,8 @@ class GFlagUtils { " --op_compiler_cache_dir Set the save path of operator compilation cache files.\n" "Default value: $HOME/atc_data/kernel_cache\n" " --op_compiler_cache_mode Set the operator compilation cache mode." - "Options are disable(default), enable and force(force to refresh the cache)"); + "Options are disable(default), enable and force(force to refresh the cache)" + " --display_model_info enable for display model inf; 0(default): close display, 1: open display"); gflags::ParseCommandLineNonHelpFlags(&argc, &argv, true); // Using gflags to analyze input parameters @@ -853,7 +856,7 @@ domi::Status GenerateInfershapeJson() { static Status ConvertModelToJson(int fwk_type, const string &model_file, const string &json_file) { Status ret = ge::SUCCESS; if (fwk_type == -1) { - ret = ge::ConvertOmModelToJson(model_file.c_str(), json_file.c_str()); + ret = ge::ConvertOm(model_file.c_str(), json_file.c_str(), true); return ret; } @@ -1162,6 +1165,8 @@ domi::Status GenerateOmModel() { options.insert(std::pair(string(ge::MDL_BANK_PATH_FLAG), FLAGS_mdl_bank_path)); options.insert(std::pair(string(ge::OP_BANK_PATH_FLAG), FLAGS_op_bank_path)); + + options.insert(std::pair(string(ge::DISPLAY_MODEL_INFO), FLAGS_display_model_info)); // set enable scope fusion passes SetEnableScopeFusionPasses(FLAGS_enable_scope_fusion_passes); // print atc option map @@ -1187,6 +1192,26 @@ domi::Status ConvertModelToJson() { return domi::SUCCESS; } +domi::Status DisplayModelInfo() { + // No model path passed in + GE_CHK_BOOL_TRUE_EXEC_WITH_LOG(FLAGS_om == "", + ErrorManager::GetInstance().ATCReportErrMessage("E10004", {"parameter"}, {"om"}); + return ge::FAILED, + "Input parameter[--om]'s value is empty!!"); + + // Check if the model path is valid + GE_CHK_BOOL_TRUE_EXEC_WITH_LOG( + FLAGS_om != "" && !ge::CheckInputPathValid(FLAGS_om, "--om"), + return ge::FAILED, + "model file path is invalid: %s.", FLAGS_om.c_str()); + + if (FLAGS_framework == -1) { + return ge::ConvertOm(FLAGS_om.c_str(), "", false); + } + + return ge::FAILED; +} + bool CheckRet(domi::Status ret) { if (ret != domi::SUCCESS) { if (FLAGS_mode == ONLY_PRE_CHECK) { @@ -1330,6 +1355,9 @@ int main(int argc, char* argv[]) { } else if (FLAGS_mode == ge::RunMode::PBTXT_TO_JSON) { GE_CHK_BOOL_EXEC(ConvertPbtxtToJson() == domi::SUCCESS, ret = domi::FAILED; break, "ATC convert pbtxt to json execute failed!!"); + } else if (FLAGS_mode == ge::RunMode::DISPLAY_OM_INFO) { + GE_CHK_BOOL_EXEC(DisplayModelInfo() == domi::SUCCESS, ret = domi::FAILED; + break, "ATC ConvertJson execute failed!!"); } else { ErrorManager::GetInstance().ATCReportErrMessage( "E10001", {"parameter", "value", "reason"}, {"--mode", std::to_string(FLAGS_mode), kModeSupport}); diff --git a/ge/session/omg.cc b/ge/session/omg.cc index 7ff52e82..36d171cd 100755 --- a/ge/session/omg.cc +++ b/ge/session/omg.cc @@ -869,9 +869,50 @@ void GetGroupName(ge::proto::ModelDef &model_def) { }); } -FMK_FUNC_HOST_VISIBILITY Status ConvertOmModelToJson(const char *model_file, const char *json_file) { +FMK_FUNC_HOST_VISIBILITY void PrintModelInfo(ge::proto::ModelDef *model_def) { + auto model_attr_map = model_def->mutable_attr(); + auto iter = model_attr_map->find(ATTR_MODEL_MEMORY_SIZE); + auto memory_size = (iter != model_attr_map->end()) ? iter->second.i() : -1; + iter = model_attr_map->find(ATTR_MODEL_WEIGHT_SIZE); + auto weight_size = (iter != model_attr_map->end()) ? iter->second.i() : -1; + iter = model_attr_map->find(ATTR_MODEL_STREAM_NUM); + auto stream_num = (iter != model_attr_map->end()) ? iter->second.i() : -1; + iter = model_attr_map->find(ATTR_MODEL_EVENT_NUM); + auto event_num = (iter != model_attr_map->end()) ? iter->second.i() : -1; + std::cout << ATTR_MODEL_MEMORY_SIZE << "[" << memory_size << "], " << ATTR_MODEL_WEIGHT_SIZE << "[" << weight_size << + "], " << ATTR_MODEL_STREAM_NUM << "[" << stream_num << "], " << ATTR_MODEL_EVENT_NUM << "[" << event_num << "]." + << std::endl; + + iter = model_attr_map->find(ATTR_MODEL_ATC_VERSION); + auto atc_version = (iter != model_attr_map->end()) ? iter->second.s() : ""; + iter = model_attr_map->find("soc_version"); + auto soc_version = (iter != model_attr_map->end()) ? iter->second.s() : ""; + iter = model_attr_map->find("framework_type"); + auto framework_type = (iter != model_attr_map->end()) ? iter->second.s() : ""; + std::cout << ATTR_MODEL_ATC_VERSION << "[" << atc_version << "], " << "soc_version" << "[" << soc_version << + "], " << "framework_type" << "[" << framework_type << "]." << std::endl; + + iter = model_attr_map->find("modeldef_size"); + auto modeldef_size = (iter != model_attr_map->end()) ? iter->second.i() : -1; + iter = model_attr_map->find("weight_data_size"); + auto weight_data_size = (iter != model_attr_map->end()) ? iter->second.i() : -1; + iter = model_attr_map->find("tbe_kernels_size"); + auto tbe_kernels_size = (iter != model_attr_map->end()) ? iter->second.i() : -1; + iter = model_attr_map->find("cust_aicpu_kernel_store_size"); + auto cust_aicpu_kernel_store_size = (iter != model_attr_map->end()) ? iter->second.i() : -1; + iter = model_attr_map->find("task_info_size"); + auto task_info_size = (iter != model_attr_map->end()) ? iter->second.i() : -1; + + std::cout << "modeldef_size" << "[" << modeldef_size << "], " << "weight_data_size" << "[" << weight_data_size << + "], " << "tbe_kernels_size" << "[" << tbe_kernels_size << "], " << "cust_aicpu_kernel_store_size" << "[" << + cust_aicpu_kernel_store_size << "], " << "task_info_size" << "[" << task_info_size << "]." << std::endl; +} + +FMK_FUNC_HOST_VISIBILITY Status ConvertOm(const char *model_file, const char *json_file, bool is_covert_to_json) { GE_CHECK_NOTNULL(model_file); - GE_CHECK_NOTNULL(json_file); + if (is_covert_to_json) { + GE_CHECK_NOTNULL(json_file); + } ge::ModelData model; // Mode 2 does not need to verify the priority, and a default value of 0 is passed @@ -917,12 +958,16 @@ FMK_FUNC_HOST_VISIBILITY Status ConvertOmModelToJson(const char *model_file, con // De serialization bool flag = ReadProtoFromArray(ir_part.data, ir_part.size, &model_def); if (flag) { - GetGroupName(model_def); + if (is_covert_to_json) { + GetGroupName(model_def); - json j; - Pb2Json::Message2Json(model_def, kOmBlackFields, j, true); + json j; + Pb2Json::Message2Json(model_def, kOmBlackFields, j, true); - ret = ModelSaver::SaveJsonToFile(json_file, j); + ret = ModelSaver::SaveJsonToFile(json_file, j); + } else { + PrintModelInfo(&model_def); + } } else { ret = INTERNAL_ERROR; GELOGE(ret, "ReadProtoFromArray failed."); diff --git a/inc/external/ge/ge_api_types.h b/inc/external/ge/ge_api_types.h index 59e8808b..ed9fc71e 100644 --- a/inc/external/ge/ge_api_types.h +++ b/inc/external/ge/ge_api_types.h @@ -291,6 +291,9 @@ const std::string OP_DEBUG_LEVEL = "ge.opDebugLevel"; // Configure model bank path const std::string MDL_BANK_PATH_FLAG = "ge.mdl_bank_path"; +// Configure display_model_info flag +const std::string DISPLAY_MODEL_INFO = "ge.display_model_info"; + // Configure op bank path const std::string OP_BANK_PATH_FLAG = "ge.op_bank_path"; const std::string OP_BANK_UPDATE_FLAG = "ge.op_bank_update"; diff --git a/inc/framework/omg/omg.h b/inc/framework/omg/omg.h index e7ca05f7..62332b8d 100644 --- a/inc/framework/omg/omg.h +++ b/inc/framework/omg/omg.h @@ -73,7 +73,7 @@ Status ParseGraph(ge::Graph &graph, const std::map &atc_params, * @param [key] encrypted key * @return Status result code */ -Status ConvertOmModelToJson(const char *model_file, const char *json_file); +Status ConvertOm(const char *model_file, const char *json_file, bool is_covert_to_json); Status ConvertPbtxtToJson(const char *model_file, const char *json_file); /** @@ -103,6 +103,8 @@ void GetOutputNodesNameAndIndex(std::vector> &ou void UpdateOmgCtxWithParserCtx(); void UpdateParserCtxWithOmgCtx(); + +void PrintModelInfo(ge::proto::ModelDef *model_def); } // namespace ge namespace domi { diff --git a/inc/framework/omg/omg_inner_types.h b/inc/framework/omg/omg_inner_types.h index 454890aa..abae1fbb 100644 --- a/inc/framework/omg/omg_inner_types.h +++ b/inc/framework/omg/omg_inner_types.h @@ -43,10 +43,11 @@ namespace ge { * @brief run model */ enum RunMode { - GEN_OM_MODEL = 0, // generate offline model file - MODEL_TO_JSON = 1, // convert to JSON file - ONLY_PRE_CHECK = 3, // only for pre-check - PBTXT_TO_JSON = 5 // pbtxt to json + GEN_OM_MODEL = 0, // generate offline model file + MODEL_TO_JSON = 1, // convert to JSON file + ONLY_PRE_CHECK = 3, // only for pre-check + PBTXT_TO_JSON = 5, // pbtxt to json + DISPLAY_OM_INFO = 6 // display model info }; /// From 6a499ee98e702389698f175d0c99daf8abd319b2 Mon Sep 17 00:00:00 2001 From: "wangwenhua1@huawei.com" Date: Tue, 22 Dec 2020 16:04:11 +0800 Subject: [PATCH 02/28] display model info --- inc/framework/omg/omg_inner_types.h | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/inc/framework/omg/omg_inner_types.h b/inc/framework/omg/omg_inner_types.h index abae1fbb..dab79053 100644 --- a/inc/framework/omg/omg_inner_types.h +++ b/inc/framework/omg/omg_inner_types.h @@ -43,11 +43,11 @@ namespace ge { * @brief run model */ enum RunMode { - GEN_OM_MODEL = 0, // generate offline model file - MODEL_TO_JSON = 1, // convert to JSON file - ONLY_PRE_CHECK = 3, // only for pre-check - PBTXT_TO_JSON = 5, // pbtxt to json - DISPLAY_OM_INFO = 6 // display model info + GEN_OM_MODEL = 0, // generate offline model file + MODEL_TO_JSON = 1, // convert to JSON file + ONLY_PRE_CHECK = 3, // only for pre-check + PBTXT_TO_JSON = 5, // pbtxt to json + DISPLAY_OM_INFO = 6 // display model info }; /// From 1868a9cc10b3c9b7b2b363fd3068d6e0bdb6d521 Mon Sep 17 00:00:00 2001 From: "wangwenhua1@huawei.com" Date: Tue, 22 Dec 2020 17:25:26 +0800 Subject: [PATCH 03/28] display model info --- ge/generator/ge_generator.cc | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/ge/generator/ge_generator.cc b/ge/generator/ge_generator.cc index d10d5673..99b41100 100644 --- a/ge/generator/ge_generator.cc +++ b/ge/generator/ge_generator.cc @@ -852,9 +852,6 @@ Status GeGenerator::Impl::SaveModel(const string &file_name_prefix, GeModelPtr & if (!SetOppVersionInfo(*(model.get()))) { GELOGW("SetPackageVersionInfo of ops failed!"); } - if (!SetOmSystemInfo(*(model.get()))) { - GELOGW("SetOmsystemInfo failed!"); - } ModelHelper model_helper; model_helper.SetSaveMode(is_offline_); Status ret = model_helper.SaveToOmModel(model, save_param_, file_name_prefix, model_buff); @@ -862,7 +859,6 @@ Status GeGenerator::Impl::SaveModel(const string &file_name_prefix, GeModelPtr & GELOGE(ret, "Save to om model failed"); return ret; } - DisplayModelInfo(*(model.get())); return SUCCESS; } @@ -894,6 +890,9 @@ Status GeGenerator::Impl::SaveRootModel(const string &file_name_prefix, GeRootMo if (!SetOppVersionInfo(*(model_root.get()))) { GELOGW("SetPackageVersionInfo of ops failed!"); } + if (!SetOmSystemInfo(*(model_root.get()))) { + GELOGW("SetOmsystemInfo failed!"); + } ModelHelper model_helper; model_helper.SetSaveMode(is_offline_); ret = model_helper.SaveToOmRootModel(ge_root_model, save_param_, file_name_prefix, model_buff, is_unknown_shape); @@ -901,6 +900,7 @@ Status GeGenerator::Impl::SaveRootModel(const string &file_name_prefix, GeRootMo GELOGE(ret, "Save to om model failed"); return ret; } + DisplayModelInfo(*(model_root.get())); return SUCCESS; } From a115528b0ce6ee6641d33a5027df6050f1b4846e Mon Sep 17 00:00:00 2001 From: "wangwenhua1@huawei.com" Date: Wed, 23 Dec 2020 10:44:11 +0800 Subject: [PATCH 04/28] display model info --- ge/common/helper/model_helper.cc | 55 +++++++++++++---- ge/generator/ge_generator.cc | 70 +++++++++++++++------- ge/session/omg.cc | 68 +++++++++++++++------ inc/framework/common/helper/model_helper.h | 1 + 4 files changed, 142 insertions(+), 52 deletions(-) diff --git a/ge/common/helper/model_helper.cc b/ge/common/helper/model_helper.cc index 5b23d6b4..d357394f 100644 --- a/ge/common/helper/model_helper.cc +++ b/ge/common/helper/model_helper.cc @@ -76,6 +76,48 @@ Status ModelHelper::SaveModelPartition(std::shared_ptr &om_fil return SUCCESS; } +Status ModelHelper::SaveSizeToModelDef(const GeModelPtr &ge_model, ge::Buffer &model_buffer) { + vector om_info; + om_info.push_back(model_buffer.GetSize()); +// GE_CHK_BOOL_EXEC(ge::AttrUtils::SetInt(ge_model, "modeldef_size", model_buffer.GetSize()), +// GELOGE(FAILED, "SetInt of modeldef_size failed."); +// return FAILED); + auto ge_model_weight = ge_model->GetWeight(); + GELOGD("SaveSizeToModelDef weight_data_size is %zu, %p", ge_model_weight.GetSize(), ge_model_weight.GetData()); + om_info.push_back(ge_model_weight.GetSize()); +// GE_CHK_BOOL_EXEC(ge::AttrUtils::SetInt(ge_model, "weight_data_size", ge_model_weight.GetSize()), +// GELOGE(FAILED, "SetInt of weight_data_size failed."); +// return FAILED); + TBEKernelStore tbe_kernel_store = ge_model->GetTBEKernelStore(); + GELOGD("SaveSizeToModelDef tbe_kernels_size is %zu", tbe_kernel_store.DataSize()); + om_info.push_back(tbe_kernel_store.DataSize()); +// GE_CHK_BOOL_EXEC(ge::AttrUtils::SetInt(ge_model, "tbe_kernels_size", tbe_kernel_store.DataSize()), +// GELOGE(FAILED, "SetInt of tbe_kernels_size failed."); +// return FAILED); + CustAICPUKernelStore cust_aicpu_kernel_store = ge_model->GetCustAICPUKernelStore(); + GELOGD("SaveSizeToModelDef cust aicpu kernels size is %zu", cust_aicpu_kernel_store.DataSize()); + om_info.push_back(cust_aicpu_kernel_store.DataSize()); +// GE_CHK_BOOL_EXEC(ge::AttrUtils::SetInt(ge_model, "cust_aicpu_kernel_store_size", cust_aicpu_kernel_store.DataSize()), +// GELOGE(FAILED, "SetInt of tbe_kernels_size failed."); +// return FAILED); + + std::shared_ptr model_task_def = ge_model->GetModelTaskDefPtr(); + if (model_task_def == nullptr) { + GELOGE(ACL_ERROR_GE_MEMORY_ALLOCATION, "Create model task def ptr failed"); + return ACL_ERROR_GE_MEMORY_ALLOCATION; + } + size_t partition_task_size = model_task_def->ByteSizeLong(); + GELOGD("SaveSizeToModelDef task_info_size is %zu", partition_task_size); + om_info.push_back(partition_task_size); +// GE_CHK_BOOL_EXEC(ge::AttrUtils::SetInt(ge_model, "task_info_size", partition_task_size), +// GELOGE(FAILED, "SetInt of task_info_size failed."); +// return FAILED); + GE_CHK_BOOL_EXEC(ge::AttrUtils::SetListInt(ge_model, "om_info_list", om_info), + GELOGE(FAILED, "SetListInt of om_info_list failed."); + return FAILED); + + return SUCCESS; +} Status ModelHelper::SaveModelDef(std::shared_ptr &om_file_save_helper, const GeModelPtr &ge_model, ge::Buffer &model_buffer, size_t model_index) { @@ -87,9 +129,7 @@ Status ModelHelper::SaveModelDef(std::shared_ptr &om_file_save model_tmp->SetGraph(ge_model->GetGraph()); model_tmp->SetVersion(ge_model->GetVersion()); model_tmp->SetAttr(ge_model->MutableAttrMap()); - GE_CHK_BOOL_EXEC(ge::AttrUtils::SetInt(ge_model, "modeldef_size", model_buffer.GetSize()), - GELOGE(FAILED, "SetInt of modeldef_size failed."); - return FAILED); + SaveSizeToModelDef(ge_model, model_buffer); (void)model_tmp->Save(model_buffer); GELOGD("MODEL_DEF size is %zu", model_buffer.GetSize()); @@ -107,9 +147,6 @@ Status ModelHelper::SaveModelWeights(std::shared_ptr &om_file_ const GeModelPtr &ge_model, size_t model_index) { auto ge_model_weight = ge_model->GetWeight(); GELOGD("WEIGHTS_DATA size is %zu, %p", ge_model_weight.GetSize(), ge_model_weight.GetData()); - GE_CHK_BOOL_EXEC(ge::AttrUtils::SetInt(ge_model, "weight_data_size", ge_model_weight.GetSize()), - GELOGE(FAILED, "SetInt of weight_data_size failed."); - return FAILED); // weight is not necessary if (ge_model_weight.GetSize() > 0) { GE_CHK_STATUS_RET(SaveModelPartition(om_file_save_helper, @@ -124,9 +161,6 @@ Status ModelHelper::SaveModelTbeKernel(std::shared_ptr &om_fil const GeModelPtr &ge_model, size_t model_index) { TBEKernelStore tbe_kernel_store = ge_model->GetTBEKernelStore(); GELOGD("TBE_KERNELS size is %zu", tbe_kernel_store.DataSize()); - GE_CHK_BOOL_EXEC(ge::AttrUtils::SetInt(ge_model, "tbe_kernels_size", tbe_kernel_store.DataSize()), - GELOGE(FAILED, "SetInt of tbe_kernels_size failed."); - return FAILED); if (tbe_kernel_store.DataSize() > 0) { GE_CHK_STATUS_RET( SaveModelPartition(om_file_save_helper, ModelPartitionType::TBE_KERNELS, @@ -143,9 +177,6 @@ Status ModelHelper::SaveModelCustAICPU(std::shared_ptr &om_fil const GeModelPtr &ge_model, size_t model_index) { CustAICPUKernelStore cust_aicpu_kernel_store = ge_model->GetCustAICPUKernelStore(); GELOGD("cust aicpu kernels size is %zu", cust_aicpu_kernel_store.DataSize()); - GE_CHK_BOOL_EXEC(ge::AttrUtils::SetInt(ge_model, "cust_aicpu_kernel_store_size", cust_aicpu_kernel_store.DataSize()), - GELOGE(FAILED, "SetInt of tbe_kernels_size failed."); - return FAILED); if (cust_aicpu_kernel_store.DataSize() > 0) { GE_CHK_STATUS_RET(SaveModelPartition(om_file_save_helper, ModelPartitionType::CUST_AICPU_KERNELS, diff --git a/ge/generator/ge_generator.cc b/ge/generator/ge_generator.cc index 99b41100..9db7f795 100644 --- a/ge/generator/ge_generator.cc +++ b/ge/generator/ge_generator.cc @@ -555,7 +555,10 @@ void GeGenerator::Impl::DisplayModelInfo(AttrHolder &obj) { GELOGD("display_model not 1"); return; } - // + + std::cout << "------ Display Model Info start ------" << std::endl; + + // resource info int64_t memory_size; (void)ge::AttrUtils::GetInt(obj, ATTR_MODEL_MEMORY_SIZE, memory_size); int64_t weight_size; @@ -564,34 +567,59 @@ void GeGenerator::Impl::DisplayModelInfo(AttrHolder &obj) { (void)ge::AttrUtils::GetInt(obj, ATTR_MODEL_STREAM_NUM, stream_num); int64_t event_num; (void)ge::AttrUtils::GetInt(obj, ATTR_MODEL_EVENT_NUM, event_num); - std::cout << ATTR_MODEL_MEMORY_SIZE << "[" << memory_size << "], " << ATTR_MODEL_WEIGHT_SIZE << "[" << weight_size << - "], " << ATTR_MODEL_STREAM_NUM << "[" << stream_num << "], " << ATTR_MODEL_EVENT_NUM << "[" << event_num << "]." + std::cout << ATTR_MODEL_MEMORY_SIZE + << "[" << memory_size << "], " + << ATTR_MODEL_WEIGHT_SIZE + << "[" << weight_size << "], " + << ATTR_MODEL_STREAM_NUM + << "[" << stream_num << "], " + << ATTR_MODEL_EVENT_NUM + << "[" << event_num << "]." << std::endl; - // + // system info std::string atc_version; (void)ge::AttrUtils::GetStr(obj, ATTR_MODEL_ATC_VERSION, atc_version); std::string soc_version; (void)ge::AttrUtils::GetStr(obj, "soc_version", soc_version); std::string framework_type; (void)ge::AttrUtils::GetStr(obj, "framework_type", framework_type); - std::cout << ATTR_MODEL_ATC_VERSION << "[" << atc_version << "], " << "soc_version" << "[" << soc_version << - "], " << "framework_type" << "[" << framework_type << "]." << std::endl; - - // - int64_t modeldef_size; - (void)ge::AttrUtils::GetInt(obj, "modeldef_size", modeldef_size); - int64_t weight_data_size; - (void)ge::AttrUtils::GetInt(obj, "weight_data_size", weight_data_size); - int64_t tbe_kernels_size; - (void)ge::AttrUtils::GetInt(obj, "tbe_kernels_size", tbe_kernels_size); - int64_t cust_aicpu_kernel_store_size; - (void)ge::AttrUtils::GetInt(obj, "cust_aicpu_kernel_store_size", cust_aicpu_kernel_store_size); - int64_t task_info_size; - (void)ge::AttrUtils::GetInt(obj, "task_info_size", task_info_size); - std::cout << "modeldef_size" << "[" << modeldef_size << "], " << "weight_data_size" << "[" << weight_data_size << - "], " << "tbe_kernels_size" << "[" << tbe_kernels_size << "], " << "cust_aicpu_kernel_store_size" << "[" << - cust_aicpu_kernel_store_size << "], " << "task_info_size" << "[" << task_info_size << "]." << std::endl; + std::cout << ATTR_MODEL_ATC_VERSION + << "[" << atc_version << "], " + << "soc_version" + << "[" << soc_version << "], " + << "framework_type" + << "[" << framework_type << "]." << std::endl; + + // om info +// int64_t modeldef_size; +// (void)ge::AttrUtils::GetInt(obj, "modeldef_size", modeldef_size); +// int64_t weight_data_size; +// (void)ge::AttrUtils::GetInt(obj, "weight_data_size", weight_data_size); +// int64_t tbe_kernels_size; +// (void)ge::AttrUtils::GetInt(obj, "tbe_kernels_size", tbe_kernels_size); +// int64_t cust_aicpu_kernel_store_size; +// (void)ge::AttrUtils::GetInt(obj, "cust_aicpu_kernel_store_size", cust_aicpu_kernel_store_size); +// int64_t task_info_size; +// (void)ge::AttrUtils::GetInt(obj, "task_info_size", task_info_size); + vector om_info; + (void)ge::AttrUtils::GetListInt(obj, "om_info_list", om_info); + if (om_info.size() == 5) { + std::cout << "modeldef_size" + << "[" << om_info[0] << "], " + << "weight_data_size" + << "[" << om_info[1] << "], " + << "tbe_kernels_size" + << "[" << om_info[2] << "], " + << "cust_aicpu_kernel_store_size" + << "[" << om_info[3] << "], " + << "task_info_size" + << "[" << om_info[4] << "]." << std::endl; + } else { + std::cout << "Display Model Info error, please check!" << std::endl; + }; + + std::cout << "------ Display Model Info end ------" << std::endl; } Status GeGenerator::GenerateModel(const Graph &graph, const string &file_name_prefix, const vector &inputs, diff --git a/ge/session/omg.cc b/ge/session/omg.cc index 36d171cd..2c136348 100755 --- a/ge/session/omg.cc +++ b/ge/session/omg.cc @@ -870,6 +870,9 @@ void GetGroupName(ge::proto::ModelDef &model_def) { } FMK_FUNC_HOST_VISIBILITY void PrintModelInfo(ge::proto::ModelDef *model_def) { + std::cout << "------ Display Model Info start ------" << std::endl; + + // resource info auto model_attr_map = model_def->mutable_attr(); auto iter = model_attr_map->find(ATTR_MODEL_MEMORY_SIZE); auto memory_size = (iter != model_attr_map->end()) ? iter->second.i() : -1; @@ -879,33 +882,60 @@ FMK_FUNC_HOST_VISIBILITY void PrintModelInfo(ge::proto::ModelDef *model_def) { auto stream_num = (iter != model_attr_map->end()) ? iter->second.i() : -1; iter = model_attr_map->find(ATTR_MODEL_EVENT_NUM); auto event_num = (iter != model_attr_map->end()) ? iter->second.i() : -1; - std::cout << ATTR_MODEL_MEMORY_SIZE << "[" << memory_size << "], " << ATTR_MODEL_WEIGHT_SIZE << "[" << weight_size << - "], " << ATTR_MODEL_STREAM_NUM << "[" << stream_num << "], " << ATTR_MODEL_EVENT_NUM << "[" << event_num << "]." + std::cout << ATTR_MODEL_MEMORY_SIZE + << "[" << memory_size << "], " + << ATTR_MODEL_WEIGHT_SIZE + << "[" << weight_size << "], " + << ATTR_MODEL_STREAM_NUM + << "[" << stream_num << "], " + << ATTR_MODEL_EVENT_NUM + << "[" << event_num << "]." << std::endl; + // system info iter = model_attr_map->find(ATTR_MODEL_ATC_VERSION); auto atc_version = (iter != model_attr_map->end()) ? iter->second.s() : ""; iter = model_attr_map->find("soc_version"); auto soc_version = (iter != model_attr_map->end()) ? iter->second.s() : ""; iter = model_attr_map->find("framework_type"); auto framework_type = (iter != model_attr_map->end()) ? iter->second.s() : ""; - std::cout << ATTR_MODEL_ATC_VERSION << "[" << atc_version << "], " << "soc_version" << "[" << soc_version << - "], " << "framework_type" << "[" << framework_type << "]." << std::endl; - - iter = model_attr_map->find("modeldef_size"); - auto modeldef_size = (iter != model_attr_map->end()) ? iter->second.i() : -1; - iter = model_attr_map->find("weight_data_size"); - auto weight_data_size = (iter != model_attr_map->end()) ? iter->second.i() : -1; - iter = model_attr_map->find("tbe_kernels_size"); - auto tbe_kernels_size = (iter != model_attr_map->end()) ? iter->second.i() : -1; - iter = model_attr_map->find("cust_aicpu_kernel_store_size"); - auto cust_aicpu_kernel_store_size = (iter != model_attr_map->end()) ? iter->second.i() : -1; - iter = model_attr_map->find("task_info_size"); - auto task_info_size = (iter != model_attr_map->end()) ? iter->second.i() : -1; - - std::cout << "modeldef_size" << "[" << modeldef_size << "], " << "weight_data_size" << "[" << weight_data_size << - "], " << "tbe_kernels_size" << "[" << tbe_kernels_size << "], " << "cust_aicpu_kernel_store_size" << "[" << - cust_aicpu_kernel_store_size << "], " << "task_info_size" << "[" << task_info_size << "]." << std::endl; + std::cout << ATTR_MODEL_ATC_VERSION + << "[" << atc_version << "], " + << "soc_version" + << "[" << soc_version << "], " + << "framework_type" + << "[" << framework_type << "]." << std::endl; + +// iter = model_attr_map->find("modeldef_size"); +// auto modeldef_size = (iter != model_attr_map->end()) ? iter->second.i() : -1; +// iter = model_attr_map->find("weight_data_size"); +// auto weight_data_size = (iter != model_attr_map->end()) ? iter->second.i() : -1; +// iter = model_attr_map->find("tbe_kernels_size"); +// auto tbe_kernels_size = (iter != model_attr_map->end()) ? iter->second.i() : -1; +// iter = model_attr_map->find("cust_aicpu_kernel_store_size"); +// auto cust_aicpu_kernel_store_size = (iter != model_attr_map->end()) ? iter->second.i() : -1; +// iter = model_attr_map->find("task_info_size"); +// auto task_info_size = (iter != model_attr_map->end()) ? iter->second.i() : -1; + + // om info + iter = model_attr_map->find("om_info_size"); + auto bt = iter->second.list().i_size(); + if (bt == 5) { + std::cout << "modeldef_size" + << "[" << iter->second.list().i(0) << "], " + << "weight_data_size" + << "[" << iter->second.list().i(1) << "], " + << "tbe_kernels_size" + << "[" << iter->second.list().i(2) << "], " + << "cust_aicpu_kernel_store_size" + << "[" << iter->second.list().i(3) << "], " + << "task_info_size" + << "[" << iter->second.list().i(4) << "]." << std::endl; + } else { + std::cout << "Display Model Info error, please check!" << std::endl; + }; + + std::cout << "------ Display Model Info end ------" << std::endl; } FMK_FUNC_HOST_VISIBILITY Status ConvertOm(const char *model_file, const char *json_file, bool is_covert_to_json) { diff --git a/inc/framework/common/helper/model_helper.h b/inc/framework/common/helper/model_helper.h index 7867e63d..5493b7b9 100644 --- a/inc/framework/common/helper/model_helper.h +++ b/inc/framework/common/helper/model_helper.h @@ -84,6 +84,7 @@ class ModelHelper { const uint8_t *data, size_t size, size_t model_index); Status SaveModelDef(shared_ptr &om_file_save_helper, const GeModelPtr &ge_model, Buffer &model_buffer, size_t model_index = 0); + Status SaveSizeToModelDef(const GeModelPtr &ge_model, ge::Buffer &model_buffer); Status SaveModelWeights(shared_ptr &om_file_save_helper, const GeModelPtr &ge_model, size_t model_index = 0); Status SaveModelTbeKernel(shared_ptr &om_file_save_helper, const GeModelPtr &ge_model, From 465c03cdb7fe56ed0f322cfaf26fbee06b2b2048 Mon Sep 17 00:00:00 2001 From: "wangwenhua1@huawei.com" Date: Wed, 23 Dec 2020 11:37:14 +0800 Subject: [PATCH 05/28] display model info --- ge/common/helper/model_helper.cc | 3 +- ge/generator/ge_generator.cc | 38 +++++++++--------------- ge/session/omg.cc | 50 ++++++++++++++------------------ 3 files changed, 36 insertions(+), 55 deletions(-) diff --git a/ge/common/helper/model_helper.cc b/ge/common/helper/model_helper.cc index d357394f..9ad5a1bd 100644 --- a/ge/common/helper/model_helper.cc +++ b/ge/common/helper/model_helper.cc @@ -78,6 +78,7 @@ Status ModelHelper::SaveModelPartition(std::shared_ptr &om_fil Status ModelHelper::SaveSizeToModelDef(const GeModelPtr &ge_model, ge::Buffer &model_buffer) { vector om_info; + GELOGD("SaveSizeToModelDef modeldef_size is %zu", model_buffer.GetSize()); om_info.push_back(model_buffer.GetSize()); // GE_CHK_BOOL_EXEC(ge::AttrUtils::SetInt(ge_model, "modeldef_size", model_buffer.GetSize()), // GELOGE(FAILED, "SetInt of modeldef_size failed."); @@ -129,9 +130,9 @@ Status ModelHelper::SaveModelDef(std::shared_ptr &om_file_save model_tmp->SetGraph(ge_model->GetGraph()); model_tmp->SetVersion(ge_model->GetVersion()); model_tmp->SetAttr(ge_model->MutableAttrMap()); - SaveSizeToModelDef(ge_model, model_buffer); (void)model_tmp->Save(model_buffer); + SaveSizeToModelDef(ge_model, model_buffer); GELOGD("MODEL_DEF size is %zu", model_buffer.GetSize()); if (model_buffer.GetSize() > 0) { if (SaveModelPartition(om_file_save_helper, ModelPartitionType::MODEL_DEF, model_buffer.GetData(), diff --git a/ge/generator/ge_generator.cc b/ge/generator/ge_generator.cc index 9db7f795..efef82d4 100644 --- a/ge/generator/ge_generator.cc +++ b/ge/generator/ge_generator.cc @@ -557,6 +557,19 @@ void GeGenerator::Impl::DisplayModelInfo(AttrHolder &obj) { } std::cout << "------ Display Model Info start ------" << std::endl; + // system info + std::string atc_version; + (void)ge::AttrUtils::GetStr(obj, ATTR_MODEL_ATC_VERSION, atc_version); + std::string soc_version; + (void)ge::AttrUtils::GetStr(obj, "soc_version", soc_version); + std::string framework_type; + (void)ge::AttrUtils::GetStr(obj, "framework_type", framework_type); + std::cout << ATTR_MODEL_ATC_VERSION + << "[" << atc_version << "], " + << "soc_version" + << "[" << soc_version << "], " + << "framework_type" + << "[" << framework_type << "]." << std::endl; // resource info int64_t memory_size; @@ -577,31 +590,6 @@ void GeGenerator::Impl::DisplayModelInfo(AttrHolder &obj) { << "[" << event_num << "]." << std::endl; - // system info - std::string atc_version; - (void)ge::AttrUtils::GetStr(obj, ATTR_MODEL_ATC_VERSION, atc_version); - std::string soc_version; - (void)ge::AttrUtils::GetStr(obj, "soc_version", soc_version); - std::string framework_type; - (void)ge::AttrUtils::GetStr(obj, "framework_type", framework_type); - std::cout << ATTR_MODEL_ATC_VERSION - << "[" << atc_version << "], " - << "soc_version" - << "[" << soc_version << "], " - << "framework_type" - << "[" << framework_type << "]." << std::endl; - - // om info -// int64_t modeldef_size; -// (void)ge::AttrUtils::GetInt(obj, "modeldef_size", modeldef_size); -// int64_t weight_data_size; -// (void)ge::AttrUtils::GetInt(obj, "weight_data_size", weight_data_size); -// int64_t tbe_kernels_size; -// (void)ge::AttrUtils::GetInt(obj, "tbe_kernels_size", tbe_kernels_size); -// int64_t cust_aicpu_kernel_store_size; -// (void)ge::AttrUtils::GetInt(obj, "cust_aicpu_kernel_store_size", cust_aicpu_kernel_store_size); -// int64_t task_info_size; -// (void)ge::AttrUtils::GetInt(obj, "task_info_size", task_info_size); vector om_info; (void)ge::AttrUtils::GetListInt(obj, "om_info_list", om_info); if (om_info.size() == 5) { diff --git a/ge/session/omg.cc b/ge/session/omg.cc index 2c136348..59ecbbed 100755 --- a/ge/session/omg.cc +++ b/ge/session/omg.cc @@ -870,7 +870,22 @@ void GetGroupName(ge::proto::ModelDef &model_def) { } FMK_FUNC_HOST_VISIBILITY void PrintModelInfo(ge::proto::ModelDef *model_def) { - std::cout << "------ Display Model Info start ------" << std::endl; + std::cout << "------------ Display Model Info start ------------" << std::endl; + + // system info + iter = model_attr_map->find(ATTR_MODEL_ATC_VERSION); + auto atc_version = (iter != model_attr_map->end()) ? iter->second.s() : ""; + iter = model_attr_map->find("soc_version"); + auto soc_version = (iter != model_attr_map->end()) ? iter->second.s() : ""; + iter = model_attr_map->find("framework_type"); + auto framework_type = (iter != model_attr_map->end()) ? iter->second.s() : ""; + std::cout << "system info: " + << ATTR_MODEL_ATC_VERSION + << "[" << atc_version << "], " + << "soc_version" + << "[" << soc_version << "], " + << "framework_type" + << "[" << framework_type << "]." << std::endl; // resource info auto model_attr_map = model_def->mutable_attr(); @@ -882,7 +897,8 @@ FMK_FUNC_HOST_VISIBILITY void PrintModelInfo(ge::proto::ModelDef *model_def) { auto stream_num = (iter != model_attr_map->end()) ? iter->second.i() : -1; iter = model_attr_map->find(ATTR_MODEL_EVENT_NUM); auto event_num = (iter != model_attr_map->end()) ? iter->second.i() : -1; - std::cout << ATTR_MODEL_MEMORY_SIZE + std::cout << "resource info: " + << ATTR_MODEL_MEMORY_SIZE << "[" << memory_size << "], " << ATTR_MODEL_WEIGHT_SIZE << "[" << weight_size << "], " @@ -892,36 +908,12 @@ FMK_FUNC_HOST_VISIBILITY void PrintModelInfo(ge::proto::ModelDef *model_def) { << "[" << event_num << "]." << std::endl; - // system info - iter = model_attr_map->find(ATTR_MODEL_ATC_VERSION); - auto atc_version = (iter != model_attr_map->end()) ? iter->second.s() : ""; - iter = model_attr_map->find("soc_version"); - auto soc_version = (iter != model_attr_map->end()) ? iter->second.s() : ""; - iter = model_attr_map->find("framework_type"); - auto framework_type = (iter != model_attr_map->end()) ? iter->second.s() : ""; - std::cout << ATTR_MODEL_ATC_VERSION - << "[" << atc_version << "], " - << "soc_version" - << "[" << soc_version << "], " - << "framework_type" - << "[" << framework_type << "]." << std::endl; - -// iter = model_attr_map->find("modeldef_size"); -// auto modeldef_size = (iter != model_attr_map->end()) ? iter->second.i() : -1; -// iter = model_attr_map->find("weight_data_size"); -// auto weight_data_size = (iter != model_attr_map->end()) ? iter->second.i() : -1; -// iter = model_attr_map->find("tbe_kernels_size"); -// auto tbe_kernels_size = (iter != model_attr_map->end()) ? iter->second.i() : -1; -// iter = model_attr_map->find("cust_aicpu_kernel_store_size"); -// auto cust_aicpu_kernel_store_size = (iter != model_attr_map->end()) ? iter->second.i() : -1; -// iter = model_attr_map->find("task_info_size"); -// auto task_info_size = (iter != model_attr_map->end()) ? iter->second.i() : -1; - // om info iter = model_attr_map->find("om_info_size"); auto bt = iter->second.list().i_size(); if (bt == 5) { - std::cout << "modeldef_size" + std::cout << "om info: " + << "modeldef_size" << "[" << iter->second.list().i(0) << "], " << "weight_data_size" << "[" << iter->second.list().i(1) << "], " @@ -935,7 +927,7 @@ FMK_FUNC_HOST_VISIBILITY void PrintModelInfo(ge::proto::ModelDef *model_def) { std::cout << "Display Model Info error, please check!" << std::endl; }; - std::cout << "------ Display Model Info end ------" << std::endl; + std::cout << "------------ Display Model Info end ------------" << std::endl; } FMK_FUNC_HOST_VISIBILITY Status ConvertOm(const char *model_file, const char *json_file, bool is_covert_to_json) { From ed8774fb6d33b3bff48338f6cd0a04f396f5ad1c Mon Sep 17 00:00:00 2001 From: "wangwenhua1@huawei.com" Date: Wed, 23 Dec 2020 11:39:45 +0800 Subject: [PATCH 06/28] display model info --- ge/common/helper/model_helper.cc | 19 ++++--------------- 1 file changed, 4 insertions(+), 15 deletions(-) diff --git a/ge/common/helper/model_helper.cc b/ge/common/helper/model_helper.cc index 9ad5a1bd..a69bcc0b 100644 --- a/ge/common/helper/model_helper.cc +++ b/ge/common/helper/model_helper.cc @@ -80,27 +80,18 @@ Status ModelHelper::SaveSizeToModelDef(const GeModelPtr &ge_model, ge::Buffer &m vector om_info; GELOGD("SaveSizeToModelDef modeldef_size is %zu", model_buffer.GetSize()); om_info.push_back(model_buffer.GetSize()); -// GE_CHK_BOOL_EXEC(ge::AttrUtils::SetInt(ge_model, "modeldef_size", model_buffer.GetSize()), -// GELOGE(FAILED, "SetInt of modeldef_size failed."); -// return FAILED); + auto ge_model_weight = ge_model->GetWeight(); GELOGD("SaveSizeToModelDef weight_data_size is %zu, %p", ge_model_weight.GetSize(), ge_model_weight.GetData()); om_info.push_back(ge_model_weight.GetSize()); -// GE_CHK_BOOL_EXEC(ge::AttrUtils::SetInt(ge_model, "weight_data_size", ge_model_weight.GetSize()), -// GELOGE(FAILED, "SetInt of weight_data_size failed."); -// return FAILED); + TBEKernelStore tbe_kernel_store = ge_model->GetTBEKernelStore(); GELOGD("SaveSizeToModelDef tbe_kernels_size is %zu", tbe_kernel_store.DataSize()); om_info.push_back(tbe_kernel_store.DataSize()); -// GE_CHK_BOOL_EXEC(ge::AttrUtils::SetInt(ge_model, "tbe_kernels_size", tbe_kernel_store.DataSize()), -// GELOGE(FAILED, "SetInt of tbe_kernels_size failed."); -// return FAILED); + CustAICPUKernelStore cust_aicpu_kernel_store = ge_model->GetCustAICPUKernelStore(); GELOGD("SaveSizeToModelDef cust aicpu kernels size is %zu", cust_aicpu_kernel_store.DataSize()); om_info.push_back(cust_aicpu_kernel_store.DataSize()); -// GE_CHK_BOOL_EXEC(ge::AttrUtils::SetInt(ge_model, "cust_aicpu_kernel_store_size", cust_aicpu_kernel_store.DataSize()), -// GELOGE(FAILED, "SetInt of tbe_kernels_size failed."); -// return FAILED); std::shared_ptr model_task_def = ge_model->GetModelTaskDefPtr(); if (model_task_def == nullptr) { @@ -110,9 +101,7 @@ Status ModelHelper::SaveSizeToModelDef(const GeModelPtr &ge_model, ge::Buffer &m size_t partition_task_size = model_task_def->ByteSizeLong(); GELOGD("SaveSizeToModelDef task_info_size is %zu", partition_task_size); om_info.push_back(partition_task_size); -// GE_CHK_BOOL_EXEC(ge::AttrUtils::SetInt(ge_model, "task_info_size", partition_task_size), -// GELOGE(FAILED, "SetInt of task_info_size failed."); -// return FAILED); + GE_CHK_BOOL_EXEC(ge::AttrUtils::SetListInt(ge_model, "om_info_list", om_info), GELOGE(FAILED, "SetListInt of om_info_list failed."); return FAILED); From f5e40a9df5cce2f02bb8282ca839b4453e30001e Mon Sep 17 00:00:00 2001 From: "wangwenhua1@huawei.com" Date: Wed, 23 Dec 2020 11:43:51 +0800 Subject: [PATCH 07/28] display model info --- ge/common/helper/model_helper.cc | 2 +- ge/generator/ge_generator.cc | 9 ++++++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/ge/common/helper/model_helper.cc b/ge/common/helper/model_helper.cc index a69bcc0b..aad348d6 100644 --- a/ge/common/helper/model_helper.cc +++ b/ge/common/helper/model_helper.cc @@ -101,7 +101,7 @@ Status ModelHelper::SaveSizeToModelDef(const GeModelPtr &ge_model, ge::Buffer &m size_t partition_task_size = model_task_def->ByteSizeLong(); GELOGD("SaveSizeToModelDef task_info_size is %zu", partition_task_size); om_info.push_back(partition_task_size); - + GE_CHK_BOOL_EXEC(ge::AttrUtils::SetListInt(ge_model, "om_info_list", om_info), GELOGE(FAILED, "SetListInt of om_info_list failed."); return FAILED); diff --git a/ge/generator/ge_generator.cc b/ge/generator/ge_generator.cc index efef82d4..eb40bf5f 100644 --- a/ge/generator/ge_generator.cc +++ b/ge/generator/ge_generator.cc @@ -564,7 +564,8 @@ void GeGenerator::Impl::DisplayModelInfo(AttrHolder &obj) { (void)ge::AttrUtils::GetStr(obj, "soc_version", soc_version); std::string framework_type; (void)ge::AttrUtils::GetStr(obj, "framework_type", framework_type); - std::cout << ATTR_MODEL_ATC_VERSION + std::cout << "system info: " + << ATTR_MODEL_ATC_VERSION << "[" << atc_version << "], " << "soc_version" << "[" << soc_version << "], " @@ -580,7 +581,8 @@ void GeGenerator::Impl::DisplayModelInfo(AttrHolder &obj) { (void)ge::AttrUtils::GetInt(obj, ATTR_MODEL_STREAM_NUM, stream_num); int64_t event_num; (void)ge::AttrUtils::GetInt(obj, ATTR_MODEL_EVENT_NUM, event_num); - std::cout << ATTR_MODEL_MEMORY_SIZE + std::cout << "resource info: " + << ATTR_MODEL_MEMORY_SIZE << "[" << memory_size << "], " << ATTR_MODEL_WEIGHT_SIZE << "[" << weight_size << "], " @@ -593,7 +595,8 @@ void GeGenerator::Impl::DisplayModelInfo(AttrHolder &obj) { vector om_info; (void)ge::AttrUtils::GetListInt(obj, "om_info_list", om_info); if (om_info.size() == 5) { - std::cout << "modeldef_size" + std::cout << "om info: " + << "modeldef_size" << "[" << om_info[0] << "], " << "weight_data_size" << "[" << om_info[1] << "], " From f53e4f255040878cec3f6d7459df78d0175fcd76 Mon Sep 17 00:00:00 2001 From: "wangwenhua1@huawei.com" Date: Wed, 23 Dec 2020 14:18:34 +0800 Subject: [PATCH 08/28] display model info --- ge/session/omg.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ge/session/omg.cc b/ge/session/omg.cc index 59ecbbed..c507a9d8 100755 --- a/ge/session/omg.cc +++ b/ge/session/omg.cc @@ -872,6 +872,7 @@ void GetGroupName(ge::proto::ModelDef &model_def) { FMK_FUNC_HOST_VISIBILITY void PrintModelInfo(ge::proto::ModelDef *model_def) { std::cout << "------------ Display Model Info start ------------" << std::endl; + auto model_attr_map = model_def->mutable_attr(); // system info iter = model_attr_map->find(ATTR_MODEL_ATC_VERSION); auto atc_version = (iter != model_attr_map->end()) ? iter->second.s() : ""; @@ -888,7 +889,6 @@ FMK_FUNC_HOST_VISIBILITY void PrintModelInfo(ge::proto::ModelDef *model_def) { << "[" << framework_type << "]." << std::endl; // resource info - auto model_attr_map = model_def->mutable_attr(); auto iter = model_attr_map->find(ATTR_MODEL_MEMORY_SIZE); auto memory_size = (iter != model_attr_map->end()) ? iter->second.i() : -1; iter = model_attr_map->find(ATTR_MODEL_WEIGHT_SIZE); From 500c35d3a92b952d61dc325eb92e4915093e1f1f Mon Sep 17 00:00:00 2001 From: "wangwenhua1@huawei.com" Date: Wed, 23 Dec 2020 14:23:28 +0800 Subject: [PATCH 09/28] display model info --- ge/session/omg.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ge/session/omg.cc b/ge/session/omg.cc index c507a9d8..3a05467a 100755 --- a/ge/session/omg.cc +++ b/ge/session/omg.cc @@ -874,7 +874,7 @@ FMK_FUNC_HOST_VISIBILITY void PrintModelInfo(ge::proto::ModelDef *model_def) { auto model_attr_map = model_def->mutable_attr(); // system info - iter = model_attr_map->find(ATTR_MODEL_ATC_VERSION); + auto iter = model_attr_map->find(ATTR_MODEL_ATC_VERSION); auto atc_version = (iter != model_attr_map->end()) ? iter->second.s() : ""; iter = model_attr_map->find("soc_version"); auto soc_version = (iter != model_attr_map->end()) ? iter->second.s() : ""; @@ -889,7 +889,7 @@ FMK_FUNC_HOST_VISIBILITY void PrintModelInfo(ge::proto::ModelDef *model_def) { << "[" << framework_type << "]." << std::endl; // resource info - auto iter = model_attr_map->find(ATTR_MODEL_MEMORY_SIZE); + iter = model_attr_map->find(ATTR_MODEL_MEMORY_SIZE); auto memory_size = (iter != model_attr_map->end()) ? iter->second.i() : -1; iter = model_attr_map->find(ATTR_MODEL_WEIGHT_SIZE); auto weight_size = (iter != model_attr_map->end()) ? iter->second.i() : -1; From beb2a9ca51a6acf46451d0153543a3f2ebdd038f Mon Sep 17 00:00:00 2001 From: "wangwenhua1@huawei.com" Date: Wed, 23 Dec 2020 14:36:05 +0800 Subject: [PATCH 10/28] display model info --- ge/generator/ge_generator.cc | 4 ++-- ge/session/omg.cc | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/ge/generator/ge_generator.cc b/ge/generator/ge_generator.cc index eb40bf5f..a3ad443d 100644 --- a/ge/generator/ge_generator.cc +++ b/ge/generator/ge_generator.cc @@ -556,7 +556,7 @@ void GeGenerator::Impl::DisplayModelInfo(AttrHolder &obj) { return; } - std::cout << "------ Display Model Info start ------" << std::endl; + std::cout << "------------ Display Model Info start ------------" << std::endl; // system info std::string atc_version; (void)ge::AttrUtils::GetStr(obj, ATTR_MODEL_ATC_VERSION, atc_version); @@ -610,7 +610,7 @@ void GeGenerator::Impl::DisplayModelInfo(AttrHolder &obj) { std::cout << "Display Model Info error, please check!" << std::endl; }; - std::cout << "------ Display Model Info end ------" << std::endl; + std::cout << "------------ Display Model Info end ------------" << std::endl; } Status GeGenerator::GenerateModel(const Graph &graph, const string &file_name_prefix, const vector &inputs, diff --git a/ge/session/omg.cc b/ge/session/omg.cc index 3a05467a..c9da9a40 100755 --- a/ge/session/omg.cc +++ b/ge/session/omg.cc @@ -909,7 +909,7 @@ FMK_FUNC_HOST_VISIBILITY void PrintModelInfo(ge::proto::ModelDef *model_def) { << std::endl; // om info - iter = model_attr_map->find("om_info_size"); + iter = model_attr_map->find("om_info_list"); auto bt = iter->second.list().i_size(); if (bt == 5) { std::cout << "om info: " From df5f18c9ba69b9d664dcf7167fbb13551ed553a7 Mon Sep 17 00:00:00 2001 From: "wangwenhua1@huawei.com" Date: Wed, 23 Dec 2020 14:54:45 +0800 Subject: [PATCH 11/28] display model info --- ge/generator/ge_generator.cc | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/ge/generator/ge_generator.cc b/ge/generator/ge_generator.cc index a3ad443d..81d4a8cb 100644 --- a/ge/generator/ge_generator.cc +++ b/ge/generator/ge_generator.cc @@ -538,10 +538,18 @@ bool GeGenerator::Impl::SetOmSystemInfo(AttrHolder &obj) { GELOGW("SetStr of soc_version failed."); return false; } + + // 0(Caffe) 1(MindSpore) 3(TensorFlow) 5(Onnx) + std::map framework_type_to_string = { + {"0", "Caffe"}, + {"1", "MindSpore"}, + {"3", "TensorFlow"}, + {"5", "Onnx"} + }; std::string framework_type; (void)ge::GetContext().GetOption(ge::FRAMEWORK_TYPE, framework_type); GELOGI("SetOmSystemInfo framework_type: %s", framework_type.c_str()); - if (!ge::AttrUtils::SetStr(obj, "framework_type", framework_type)) { + if (!ge::AttrUtils::SetStr(obj, "framework_type", framework_type_to_string[framework_type.c_str()])) { GELOGW("SetStr of framework_type failed."); return false; } From 6031e5576c185d8658a11e085f9e3ddf7d9687ef Mon Sep 17 00:00:00 2001 From: "wangwenhua1@huawei.com" Date: Wed, 23 Dec 2020 15:22:11 +0800 Subject: [PATCH 12/28] display model info --- ge/session/omg.cc | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/ge/session/omg.cc b/ge/session/omg.cc index c9da9a40..35939553 100755 --- a/ge/session/omg.cc +++ b/ge/session/omg.cc @@ -910,6 +910,12 @@ FMK_FUNC_HOST_VISIBILITY void PrintModelInfo(ge::proto::ModelDef *model_def) { // om info iter = model_attr_map->find("om_info_list"); + if (iter == model_attr_map->end()) { + std::cout << "Display Model Info error, om_info_list is not find in om, please check atc version is matched." + << std::endl; + std::cout << "------------ Display Model Info end ------------" << std::endl; + return; + } auto bt = iter->second.list().i_size(); if (bt == 5) { std::cout << "om info: " From 8ae9370dbf8ecf17f4a528484b1b5509f179262f Mon Sep 17 00:00:00 2001 From: "wangwenhua1@huawei.com" Date: Wed, 23 Dec 2020 16:07:21 +0800 Subject: [PATCH 13/28] display model info --- ge/common/helper/model_helper.cc | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/ge/common/helper/model_helper.cc b/ge/common/helper/model_helper.cc index aad348d6..e552424c 100644 --- a/ge/common/helper/model_helper.cc +++ b/ge/common/helper/model_helper.cc @@ -78,6 +78,8 @@ Status ModelHelper::SaveModelPartition(std::shared_ptr &om_fil Status ModelHelper::SaveSizeToModelDef(const GeModelPtr &ge_model, ge::Buffer &model_buffer) { vector om_info; + ModelPtr model_tmp = ge::MakeShared(ge_model->GetName(), ge_model->GetPlatformVersion()); + (void)model_tmp->Save(model_buffer); GELOGD("SaveSizeToModelDef modeldef_size is %zu", model_buffer.GetSize()); om_info.push_back(model_buffer.GetSize()); @@ -118,10 +120,10 @@ Status ModelHelper::SaveModelDef(std::shared_ptr &om_file_save } model_tmp->SetGraph(ge_model->GetGraph()); model_tmp->SetVersion(ge_model->GetVersion()); + SaveSizeToModelDef(ge_model, model_buffer); model_tmp->SetAttr(ge_model->MutableAttrMap()); (void)model_tmp->Save(model_buffer); - SaveSizeToModelDef(ge_model, model_buffer); GELOGD("MODEL_DEF size is %zu", model_buffer.GetSize()); if (model_buffer.GetSize() > 0) { if (SaveModelPartition(om_file_save_helper, ModelPartitionType::MODEL_DEF, model_buffer.GetData(), From 1b2341f2d6ed5fb5adcf199a5f6d525917a26136 Mon Sep 17 00:00:00 2001 From: "wangwenhua1@huawei.com" Date: Wed, 23 Dec 2020 17:06:43 +0800 Subject: [PATCH 14/28] display model info --- ge/common/helper/model_helper.cc | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/ge/common/helper/model_helper.cc b/ge/common/helper/model_helper.cc index e552424c..454e6464 100644 --- a/ge/common/helper/model_helper.cc +++ b/ge/common/helper/model_helper.cc @@ -104,7 +104,7 @@ Status ModelHelper::SaveSizeToModelDef(const GeModelPtr &ge_model, ge::Buffer &m GELOGD("SaveSizeToModelDef task_info_size is %zu", partition_task_size); om_info.push_back(partition_task_size); - GE_CHK_BOOL_EXEC(ge::AttrUtils::SetListInt(ge_model, "om_info_list", om_info), + GE_CHK_BOOL_EXEC(ge::AttrUtils::SetListInt(*(ge_model.get()), "om_info_list", om_info), GELOGE(FAILED, "SetListInt of om_info_list failed."); return FAILED); @@ -201,10 +201,6 @@ Status ModelHelper::SaveModelTaskDef(std::shared_ptr &om_file_ GELOGD("TASK_INFO op_size:%d, stream_num:%u", model_task_def->op().size(), model_task_def->stream_num()); GELOGD("TASK_INFO size is %zu", partition_task_size); - GE_CHK_BOOL_EXEC(ge::AttrUtils::SetInt(ge_model, "task_info_size", partition_task_size), - GELOGE(FAILED, "SetInt of task_info_size failed."); - return FAILED); - if (SaveModelPartition(om_file_save_helper, ModelPartitionType::TASK_INFO, task_buffer.GetData(), partition_task_size, model_index) != SUCCESS) { GELOGE(PARAM_INVALID, "Add model task def partition failed"); From 441493ad0ea63bf375ca9670f53bbce1f877817d Mon Sep 17 00:00:00 2001 From: "wangwenhua1@huawei.com" Date: Thu, 24 Dec 2020 09:24:16 +0800 Subject: [PATCH 15/28] display model info --- ge/common/helper/model_helper.cc | 7 +++++-- ge/session/omg.cc | 2 +- inc/framework/common/helper/model_helper.h | 2 +- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/ge/common/helper/model_helper.cc b/ge/common/helper/model_helper.cc index 454e6464..7e54a224 100644 --- a/ge/common/helper/model_helper.cc +++ b/ge/common/helper/model_helper.cc @@ -76,9 +76,12 @@ Status ModelHelper::SaveModelPartition(std::shared_ptr &om_fil return SUCCESS; } -Status ModelHelper::SaveSizeToModelDef(const GeModelPtr &ge_model, ge::Buffer &model_buffer) { +Status ModelHelper::SaveSizeToModelDef(const GeModelPtr &ge_model) { vector om_info; ModelPtr model_tmp = ge::MakeShared(ge_model->GetName(), ge_model->GetPlatformVersion()); + model_tmp->SetVersion(ge_model->GetVersion()); + model_tmp->SetAttr(ge_model->MutableAttrMap()); + ge::Buffer model_buffer (void)model_tmp->Save(model_buffer); GELOGD("SaveSizeToModelDef modeldef_size is %zu", model_buffer.GetSize()); om_info.push_back(model_buffer.GetSize()); @@ -120,8 +123,8 @@ Status ModelHelper::SaveModelDef(std::shared_ptr &om_file_save } model_tmp->SetGraph(ge_model->GetGraph()); model_tmp->SetVersion(ge_model->GetVersion()); - SaveSizeToModelDef(ge_model, model_buffer); model_tmp->SetAttr(ge_model->MutableAttrMap()); + SaveSizeToModelDef(ge_model); (void)model_tmp->Save(model_buffer); GELOGD("MODEL_DEF size is %zu", model_buffer.GetSize()); diff --git a/ge/session/omg.cc b/ge/session/omg.cc index 35939553..c376f682 100755 --- a/ge/session/omg.cc +++ b/ge/session/omg.cc @@ -911,7 +911,7 @@ FMK_FUNC_HOST_VISIBILITY void PrintModelInfo(ge::proto::ModelDef *model_def) { // om info iter = model_attr_map->find("om_info_list"); if (iter == model_attr_map->end()) { - std::cout << "Display Model Info error, om_info_list is not find in om, please check atc version is matched." + std::cout << "Display Model Info failed, attr \"om_info_list\" is not found in om, check the version is matched." << std::endl; std::cout << "------------ Display Model Info end ------------" << std::endl; return; diff --git a/inc/framework/common/helper/model_helper.h b/inc/framework/common/helper/model_helper.h index 5493b7b9..c609347b 100644 --- a/inc/framework/common/helper/model_helper.h +++ b/inc/framework/common/helper/model_helper.h @@ -84,7 +84,7 @@ class ModelHelper { const uint8_t *data, size_t size, size_t model_index); Status SaveModelDef(shared_ptr &om_file_save_helper, const GeModelPtr &ge_model, Buffer &model_buffer, size_t model_index = 0); - Status SaveSizeToModelDef(const GeModelPtr &ge_model, ge::Buffer &model_buffer); + Status SaveSizeToModelDef(const GeModelPtr &ge_model); Status SaveModelWeights(shared_ptr &om_file_save_helper, const GeModelPtr &ge_model, size_t model_index = 0); Status SaveModelTbeKernel(shared_ptr &om_file_save_helper, const GeModelPtr &ge_model, From ee0b5272cdd76f1568eeeaa16744695fb4e87006 Mon Sep 17 00:00:00 2001 From: "wangwenhua1@huawei.com" Date: Thu, 24 Dec 2020 09:29:29 +0800 Subject: [PATCH 16/28] display model info --- ge/offline/main.cc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ge/offline/main.cc b/ge/offline/main.cc index 0b4ea7f7..60385144 100755 --- a/ge/offline/main.cc +++ b/ge/offline/main.cc @@ -223,7 +223,8 @@ class GFlagUtils { "===== Basic Functionality =====\n" "[General]\n" " --h/help Show this help message\n" - " --mode Run mode. 0(default): generate offline model; 1: convert model to JSON format " + " --mode Run mode. 0(default): generate offline model; 1: convert model to JSON format; " + "6: display model info" "3: only pre-check; 5: convert ge dump txt file to JSON format\n" "\n[Input]\n" " --model Model file\n" From 6b5580cc4e255e38eeb4902fbad49dbdd6e00605 Mon Sep 17 00:00:00 2001 From: "wangwenhua1@huawei.com" Date: Thu, 24 Dec 2020 09:30:24 +0800 Subject: [PATCH 17/28] display model info --- ge/offline/main.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ge/offline/main.cc b/ge/offline/main.cc index 60385144..ed541f10 100755 --- a/ge/offline/main.cc +++ b/ge/offline/main.cc @@ -311,7 +311,7 @@ class GFlagUtils { "Default value: $HOME/atc_data/kernel_cache\n" " --op_compiler_cache_mode Set the operator compilation cache mode." "Options are disable(default), enable and force(force to refresh the cache)" - " --display_model_info enable for display model inf; 0(default): close display, 1: open display"); + " --display_model_info enable for display model info; 0(default): close display, 1: open display"); gflags::ParseCommandLineNonHelpFlags(&argc, &argv, true); // Using gflags to analyze input parameters From 0376d5434aeed9a22073238d989118f66c8d7ddf Mon Sep 17 00:00:00 2001 From: "wangwenhua1@huawei.com" Date: Thu, 24 Dec 2020 09:32:21 +0800 Subject: [PATCH 18/28] display model info --- ge/offline/main.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ge/offline/main.cc b/ge/offline/main.cc index ed541f10..74837e7a 100755 --- a/ge/offline/main.cc +++ b/ge/offline/main.cc @@ -1358,7 +1358,7 @@ int main(int argc, char* argv[]) { break, "ATC convert pbtxt to json execute failed!!"); } else if (FLAGS_mode == ge::RunMode::DISPLAY_OM_INFO) { GE_CHK_BOOL_EXEC(DisplayModelInfo() == domi::SUCCESS, ret = domi::FAILED; - break, "ATC ConvertJson execute failed!!"); + break, "ATC DisplayModelInfo failed!!"); } else { ErrorManager::GetInstance().ATCReportErrMessage( "E10001", {"parameter", "value", "reason"}, {"--mode", std::to_string(FLAGS_mode), kModeSupport}); From 26817b9435a069d7eb6dd89fa31406612ac9f6df Mon Sep 17 00:00:00 2001 From: "wangwenhua1@huawei.com" Date: Thu, 24 Dec 2020 09:45:38 +0800 Subject: [PATCH 19/28] display model info --- ge/common/helper/model_helper.cc | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/ge/common/helper/model_helper.cc b/ge/common/helper/model_helper.cc index 7e54a224..abd1a4f5 100644 --- a/ge/common/helper/model_helper.cc +++ b/ge/common/helper/model_helper.cc @@ -79,9 +79,14 @@ Status ModelHelper::SaveModelPartition(std::shared_ptr &om_fil Status ModelHelper::SaveSizeToModelDef(const GeModelPtr &ge_model) { vector om_info; ModelPtr model_tmp = ge::MakeShared(ge_model->GetName(), ge_model->GetPlatformVersion()); + if (model_tmp == nullptr) { + GELOGE(FAILED, "Create Model %s Ptr failed", ge_model->GetName().c_str()); + return FAILED; + } + model_tmp->SetGraph(ge_model->GetGraph()); model_tmp->SetVersion(ge_model->GetVersion()); model_tmp->SetAttr(ge_model->MutableAttrMap()); - ge::Buffer model_buffer + ge::Buffer model_buffer; (void)model_tmp->Save(model_buffer); GELOGD("SaveSizeToModelDef modeldef_size is %zu", model_buffer.GetSize()); om_info.push_back(model_buffer.GetSize()); From d32d81a4112f9a62172c8187e89c29b1d565c5a2 Mon Sep 17 00:00:00 2001 From: "wangwenhua1@huawei.com" Date: Thu, 24 Dec 2020 10:01:55 +0800 Subject: [PATCH 20/28] display model info --- ge/generator/ge_generator.cc | 5 +++-- ge/session/omg.cc | 5 +++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/ge/generator/ge_generator.cc b/ge/generator/ge_generator.cc index 81d4a8cb..ff55e968 100644 --- a/ge/generator/ge_generator.cc +++ b/ge/generator/ge_generator.cc @@ -49,6 +49,7 @@ const char *const kAIcoreEngine = "AIcoreEngine"; const char *const kFileNameSuffix = "online"; const size_t kDynamicDimSize = 1; const int64_t kDynamicDimValue = -2; +const size_t kOmInfoSize = 5; std::map engine_type_map{ {ge::ENGINE_SYS, kEngineNameDefault}, {ge::ENGINE_AICORE, kAIcoreEngine}, {ge::ENGINE_VECTOR, kVectorEngine}}; @@ -602,7 +603,7 @@ void GeGenerator::Impl::DisplayModelInfo(AttrHolder &obj) { vector om_info; (void)ge::AttrUtils::GetListInt(obj, "om_info_list", om_info); - if (om_info.size() == 5) { + if (om_info.size() == kOmInfoSize) { std::cout << "om info: " << "modeldef_size" << "[" << om_info[0] << "], " @@ -615,7 +616,7 @@ void GeGenerator::Impl::DisplayModelInfo(AttrHolder &obj) { << "task_info_size" << "[" << om_info[4] << "]." << std::endl; } else { - std::cout << "Display Model Info error, please check!" << std::endl; + std::cout << "Display Model Info failed, please check!" << std::endl; }; std::cout << "------------ Display Model Info end ------------" << std::endl; diff --git a/ge/session/omg.cc b/ge/session/omg.cc index c376f682..2a2f3274 100755 --- a/ge/session/omg.cc +++ b/ge/session/omg.cc @@ -71,6 +71,7 @@ const char *const kOutputTypeError = "The multiple out nodes set in output_type const size_t kNodeNameIndex = 0; const size_t kIndexStrIndex = 1; const size_t kDTValueIndex = 2; +const size_t kOmInfoSize = 5; } // namespace // When the model is converted to a JSON file, the following operator attributes in the blacklist will be ignored @@ -916,8 +917,8 @@ FMK_FUNC_HOST_VISIBILITY void PrintModelInfo(ge::proto::ModelDef *model_def) { std::cout << "------------ Display Model Info end ------------" << std::endl; return; } - auto bt = iter->second.list().i_size(); - if (bt == 5) { + auto list_size = iter->second.list().i_size(); + if (list_size == kOmInfoSize) { std::cout << "om info: " << "modeldef_size" << "[" << iter->second.list().i(0) << "], " From 4dad1b8467a9bef2e0488b919de9af89d6417427 Mon Sep 17 00:00:00 2001 From: "wangwenhua1@huawei.com" Date: Thu, 24 Dec 2020 11:08:07 +0800 Subject: [PATCH 21/28] display model info --- ge/common/helper/model_helper.cc | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/ge/common/helper/model_helper.cc b/ge/common/helper/model_helper.cc index abd1a4f5..b2a71bc1 100644 --- a/ge/common/helper/model_helper.cc +++ b/ge/common/helper/model_helper.cc @@ -129,7 +129,11 @@ Status ModelHelper::SaveModelDef(std::shared_ptr &om_file_save model_tmp->SetGraph(ge_model->GetGraph()); model_tmp->SetVersion(ge_model->GetVersion()); model_tmp->SetAttr(ge_model->MutableAttrMap()); - SaveSizeToModelDef(ge_model); + Status ret = SaveSizeToModelDef(ge_model); + if (ret != SUCCESS) { + GELOGE(ret, "SaveSizeToModelDef failed"); + return ret; + } (void)model_tmp->Save(model_buffer); GELOGD("MODEL_DEF size is %zu", model_buffer.GetSize()); From d248531bc111ea3d1beb5e5e928fe22d665a8a5d Mon Sep 17 00:00:00 2001 From: "wangwenhua1@huawei.com" Date: Thu, 24 Dec 2020 11:40:28 +0800 Subject: [PATCH 22/28] display model info --- ge/generator/ge_generator.cc | 2 +- ge/offline/main.cc | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/ge/generator/ge_generator.cc b/ge/generator/ge_generator.cc index ff55e968..a509c879 100644 --- a/ge/generator/ge_generator.cc +++ b/ge/generator/ge_generator.cc @@ -928,7 +928,7 @@ Status GeGenerator::Impl::SaveRootModel(const string &file_name_prefix, GeRootMo GELOGE(ret, "Save to om model failed"); return ret; } - DisplayModelInfo(*(model_root.get())); + // DisplayModelInfo(*(model_root.get())); return SUCCESS; } diff --git a/ge/offline/main.cc b/ge/offline/main.cc index 74837e7a..55478991 100755 --- a/ge/offline/main.cc +++ b/ge/offline/main.cc @@ -1180,6 +1180,11 @@ domi::Status GenerateOmModel() { return domi::FAILED; } + if (FLAGS_display_model_info == "1") { + GELOGI("need to display model info."); + return ge::ConvertOm(FLAGS_output.c_str(), "", false); + } + return domi::SUCCESS; } From ecf11d19fcd748c455809990247e0a4fa69cf1a6 Mon Sep 17 00:00:00 2001 From: "wangwenhua1@huawei.com" Date: Thu, 24 Dec 2020 11:51:30 +0800 Subject: [PATCH 23/28] display model info --- ge/generator/ge_generator.cc | 66 ------------------------------------ 1 file changed, 66 deletions(-) diff --git a/ge/generator/ge_generator.cc b/ge/generator/ge_generator.cc index a509c879..bd904698 100644 --- a/ge/generator/ge_generator.cc +++ b/ge/generator/ge_generator.cc @@ -557,71 +557,6 @@ bool GeGenerator::Impl::SetOmSystemInfo(AttrHolder &obj) { return true; } -void GeGenerator::Impl::DisplayModelInfo(AttrHolder &obj) { - std::string display_model; - (void)ge::GetContext().GetOption(ge::DISPLAY_MODEL_INFO, display_model); - if (display_model != "1") { - GELOGD("display_model not 1"); - return; - } - - std::cout << "------------ Display Model Info start ------------" << std::endl; - // system info - std::string atc_version; - (void)ge::AttrUtils::GetStr(obj, ATTR_MODEL_ATC_VERSION, atc_version); - std::string soc_version; - (void)ge::AttrUtils::GetStr(obj, "soc_version", soc_version); - std::string framework_type; - (void)ge::AttrUtils::GetStr(obj, "framework_type", framework_type); - std::cout << "system info: " - << ATTR_MODEL_ATC_VERSION - << "[" << atc_version << "], " - << "soc_version" - << "[" << soc_version << "], " - << "framework_type" - << "[" << framework_type << "]." << std::endl; - - // resource info - int64_t memory_size; - (void)ge::AttrUtils::GetInt(obj, ATTR_MODEL_MEMORY_SIZE, memory_size); - int64_t weight_size; - (void)ge::AttrUtils::GetInt(obj, ATTR_MODEL_WEIGHT_SIZE, weight_size); - int64_t stream_num; - (void)ge::AttrUtils::GetInt(obj, ATTR_MODEL_STREAM_NUM, stream_num); - int64_t event_num; - (void)ge::AttrUtils::GetInt(obj, ATTR_MODEL_EVENT_NUM, event_num); - std::cout << "resource info: " - << ATTR_MODEL_MEMORY_SIZE - << "[" << memory_size << "], " - << ATTR_MODEL_WEIGHT_SIZE - << "[" << weight_size << "], " - << ATTR_MODEL_STREAM_NUM - << "[" << stream_num << "], " - << ATTR_MODEL_EVENT_NUM - << "[" << event_num << "]." - << std::endl; - - vector om_info; - (void)ge::AttrUtils::GetListInt(obj, "om_info_list", om_info); - if (om_info.size() == kOmInfoSize) { - std::cout << "om info: " - << "modeldef_size" - << "[" << om_info[0] << "], " - << "weight_data_size" - << "[" << om_info[1] << "], " - << "tbe_kernels_size" - << "[" << om_info[2] << "], " - << "cust_aicpu_kernel_store_size" - << "[" << om_info[3] << "], " - << "task_info_size" - << "[" << om_info[4] << "]." << std::endl; - } else { - std::cout << "Display Model Info failed, please check!" << std::endl; - }; - - std::cout << "------------ Display Model Info end ------------" << std::endl; -} - Status GeGenerator::GenerateModel(const Graph &graph, const string &file_name_prefix, const vector &inputs, ModelBufferData &model, bool is_offline) { rtContext_t ctx = nullptr; @@ -928,7 +863,6 @@ Status GeGenerator::Impl::SaveRootModel(const string &file_name_prefix, GeRootMo GELOGE(ret, "Save to om model failed"); return ret; } - // DisplayModelInfo(*(model_root.get())); return SUCCESS; } From ed1dcac6156d29d2418e812e3ffff0b876d84695 Mon Sep 17 00:00:00 2001 From: "wangwenhua1@huawei.com" Date: Thu, 24 Dec 2020 11:53:27 +0800 Subject: [PATCH 24/28] display model info --- ge/generator/ge_generator.cc | 1 - 1 file changed, 1 deletion(-) diff --git a/ge/generator/ge_generator.cc b/ge/generator/ge_generator.cc index bd904698..83521fbf 100644 --- a/ge/generator/ge_generator.cc +++ b/ge/generator/ge_generator.cc @@ -320,7 +320,6 @@ class GeGenerator::Impl { bool SetAtcVersionInfo(AttrHolder &obj); bool SetOppVersionInfo(AttrHolder &obj); bool SetOmSystemInfo(AttrHolder &obj); - void DisplayModelInfo(AttrHolder &obj); }; Status GeGenerator::Initialize(const map &options) { From 8cd3a6f8808c0152e263ac13306b61fada70e65e Mon Sep 17 00:00:00 2001 From: "wangwenhua1@huawei.com" Date: Thu, 24 Dec 2020 12:26:55 +0800 Subject: [PATCH 25/28] display model info --- ge/generator/ge_generator.cc | 1 - 1 file changed, 1 deletion(-) diff --git a/ge/generator/ge_generator.cc b/ge/generator/ge_generator.cc index 83521fbf..d8134f89 100644 --- a/ge/generator/ge_generator.cc +++ b/ge/generator/ge_generator.cc @@ -49,7 +49,6 @@ const char *const kAIcoreEngine = "AIcoreEngine"; const char *const kFileNameSuffix = "online"; const size_t kDynamicDimSize = 1; const int64_t kDynamicDimValue = -2; -const size_t kOmInfoSize = 5; std::map engine_type_map{ {ge::ENGINE_SYS, kEngineNameDefault}, {ge::ENGINE_AICORE, kAIcoreEngine}, {ge::ENGINE_VECTOR, kVectorEngine}}; From 1bcb3340231ec7f23ce093985e2875ed663b9225 Mon Sep 17 00:00:00 2001 From: "wangwenhua1@huawei.com" Date: Fri, 25 Dec 2020 16:33:04 +0800 Subject: [PATCH 26/28] display model info --- ge/session/omg.cc | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/ge/session/omg.cc b/ge/session/omg.cc index 2a2f3274..1af48948 100755 --- a/ge/session/omg.cc +++ b/ge/session/omg.cc @@ -900,9 +900,9 @@ FMK_FUNC_HOST_VISIBILITY void PrintModelInfo(ge::proto::ModelDef *model_def) { auto event_num = (iter != model_attr_map->end()) ? iter->second.i() : -1; std::cout << "resource info: " << ATTR_MODEL_MEMORY_SIZE - << "[" << memory_size << "], " + << "[" << memory_size << " B], " << ATTR_MODEL_WEIGHT_SIZE - << "[" << weight_size << "], " + << "[" << weight_size << " B], " << ATTR_MODEL_STREAM_NUM << "[" << stream_num << "], " << ATTR_MODEL_EVENT_NUM @@ -914,27 +914,27 @@ FMK_FUNC_HOST_VISIBILITY void PrintModelInfo(ge::proto::ModelDef *model_def) { if (iter == model_attr_map->end()) { std::cout << "Display Model Info failed, attr \"om_info_list\" is not found in om, check the version is matched." << std::endl; - std::cout << "------------ Display Model Info end ------------" << std::endl; + std::cout << "============ Display Model Info end ============" << std::endl; return; } auto list_size = iter->second.list().i_size(); if (list_size == kOmInfoSize) { std::cout << "om info: " << "modeldef_size" - << "[" << iter->second.list().i(0) << "], " + << "[" << iter->second.list().i(0) << " B], " << "weight_data_size" - << "[" << iter->second.list().i(1) << "], " + << "[" << iter->second.list().i(1) << " B], " << "tbe_kernels_size" - << "[" << iter->second.list().i(2) << "], " + << "[" << iter->second.list().i(2) << " B], " << "cust_aicpu_kernel_store_size" - << "[" << iter->second.list().i(3) << "], " + << "[" << iter->second.list().i(3) << " B], " << "task_info_size" - << "[" << iter->second.list().i(4) << "]." << std::endl; + << "[" << iter->second.list().i(4) << " B]." << std::endl; } else { std::cout << "Display Model Info error, please check!" << std::endl; }; - std::cout << "------------ Display Model Info end ------------" << std::endl; + std::cout << "============ Display Model Info end ============" << std::endl; } FMK_FUNC_HOST_VISIBILITY Status ConvertOm(const char *model_file, const char *json_file, bool is_covert_to_json) { From 7a002aedb092723517d6645a66a6805b1e40ce38 Mon Sep 17 00:00:00 2001 From: "wangwenhua1@huawei.com" Date: Fri, 25 Dec 2020 16:42:26 +0800 Subject: [PATCH 27/28] display model info --- ge/session/omg.cc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ge/session/omg.cc b/ge/session/omg.cc index 1af48948..11384cfb 100755 --- a/ge/session/omg.cc +++ b/ge/session/omg.cc @@ -871,7 +871,7 @@ void GetGroupName(ge::proto::ModelDef &model_def) { } FMK_FUNC_HOST_VISIBILITY void PrintModelInfo(ge::proto::ModelDef *model_def) { - std::cout << "------------ Display Model Info start ------------" << std::endl; + std::cout << "============ Display Model Info start ============" << std::endl; auto model_attr_map = model_def->mutable_attr(); // system info @@ -881,7 +881,7 @@ FMK_FUNC_HOST_VISIBILITY void PrintModelInfo(ge::proto::ModelDef *model_def) { auto soc_version = (iter != model_attr_map->end()) ? iter->second.s() : ""; iter = model_attr_map->find("framework_type"); auto framework_type = (iter != model_attr_map->end()) ? iter->second.s() : ""; - std::cout << "system info: " + std::cout << "system info: " << ATTR_MODEL_ATC_VERSION << "[" << atc_version << "], " << "soc_version" @@ -919,7 +919,7 @@ FMK_FUNC_HOST_VISIBILITY void PrintModelInfo(ge::proto::ModelDef *model_def) { } auto list_size = iter->second.list().i_size(); if (list_size == kOmInfoSize) { - std::cout << "om info: " + std::cout << "om info: " << "modeldef_size" << "[" << iter->second.list().i(0) << " B], " << "weight_data_size" From fe775369dddc34b050df39bf3f16773d6971898b Mon Sep 17 00:00:00 2001 From: "wangwenhua1@huawei.com" Date: Sat, 26 Dec 2020 11:17:22 +0800 Subject: [PATCH 28/28] display model info --- ge/offline/main.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ge/offline/main.cc b/ge/offline/main.cc index 55478991..9cd7c6a7 100755 --- a/ge/offline/main.cc +++ b/ge/offline/main.cc @@ -310,7 +310,7 @@ class GFlagUtils { " --op_compiler_cache_dir Set the save path of operator compilation cache files.\n" "Default value: $HOME/atc_data/kernel_cache\n" " --op_compiler_cache_mode Set the operator compilation cache mode." - "Options are disable(default), enable and force(force to refresh the cache)" + "Options are disable(default), enable and force(force to refresh the cache)\n" " --display_model_info enable for display model info; 0(default): close display, 1: open display"); gflags::ParseCommandLineNonHelpFlags(&argc, &argv, true);