From a689397af7edff1b5e7a1cb0fd353d21078742d8 Mon Sep 17 00:00:00 2001 From: "wangwenhua1@huawei.com" Date: Thu, 17 Dec 2020 21:42:43 +0800 Subject: [PATCH 1/8] display model info --- ge/common/helper/model_helper.cc | 17 ++++++++- ge/generator/ge_generator.cc | 64 ++++++++++++++++++++++++++++++++ 2 files changed, 80 insertions(+), 1 deletion(-) 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 e50feae2..7a656db1 100644 --- a/ge/generator/ge_generator.cc +++ b/ge/generator/ge_generator.cc @@ -279,6 +279,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) { @@ -489,6 +491,64 @@ bool GeGenerator::Impl::SetOppVersionInfo(AttrHolder &obj) { return true; } +bool GeGenerator::Impl::SetOmSystemInfo(AttrHolder &obj) { + std::string soc_version; + Status ret = ge::GetContext().GetOption(ge::SOC_VERSION, soc_version); + GELOGI("SetOmSystemInfo soc_version: %s", soc_version.c_str());S + if (!ge::AttrUtils::SetStr(obj, "soc_version", soc_version)) { + GELOGW("SetStr of soc_version failed."); + return false; + } + std::string framework_type; + Status ret = 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) { + // + size_t memory_size; + (void)ge::AttrUtils::GetInt(obj, ATTR_MODEL_MEMORY_SIZE, memory_size); + size_t weight_size; + (void)ge::AttrUtils::GetInt(obj, ATTR_MODEL_WEIGHT_SIZE, weight_size); + size_t stream_num; + (void)ge::AttrUtils::GetInt(obj, ATTR_MODEL_STREAM_NUM, stream_num); + size_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; + + // + size_t modeldef_size; + (void)ge::AttrUtils::GetInt(obj, "modeldef_size", modeldef_size); + size_t weight_data_size; + (void)ge::AttrUtils::GetInt(obj, "weight_data_size", weight_data_size); + size_t tbe_kernels_size; + (void)ge::AttrUtils::GetInt(obj, "tbe_kernels_size", tbe_kernels_size); + size_t cust_aicpu_kernel_store_size; + (void)ge::AttrUtils::GetInt(obj, "cust_aicpu_kernel_store_size", cust_aicpu_kernel_store_size); + size_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; @@ -761,6 +821,9 @@ Status GeGenerator::Impl::SaveRootModel(const string &file_name_prefix, GeRootMo if (!SetOppVersionInfo(*(model_root.get()))) { GELOGW("SetPackageVersionInfo of ops failed!"); } + if (!SetOmystemInfo(*(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); @@ -768,6 +831,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 e1e967be72f819d18f53b9c9f3e7759c8bf237a7 Mon Sep 17 00:00:00 2001 From: "wangwenhua1@huawei.com" Date: Thu, 17 Dec 2020 21:51:17 +0800 Subject: [PATCH 2/8] display model info --- ge/generator/ge_generator.cc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ge/generator/ge_generator.cc b/ge/generator/ge_generator.cc index 7a656db1..8fe3a3d5 100644 --- a/ge/generator/ge_generator.cc +++ b/ge/generator/ge_generator.cc @@ -493,14 +493,14 @@ bool GeGenerator::Impl::SetOppVersionInfo(AttrHolder &obj) { bool GeGenerator::Impl::SetOmSystemInfo(AttrHolder &obj) { std::string soc_version; - Status ret = ge::GetContext().GetOption(ge::SOC_VERSION, soc_version); - GELOGI("SetOmSystemInfo soc_version: %s", soc_version.c_str());S + (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; - Status ret = ge::GetContext().GetOption(ge::FRAMEWORK_TYPE, 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."); From b723f2fff120587d40e0ec5b016b3d5648ab13c7 Mon Sep 17 00:00:00 2001 From: "wangwenhua1@huawei.com" Date: Thu, 17 Dec 2020 22:13:50 +0800 Subject: [PATCH 3/8] display model info --- ge/generator/ge_generator.cc | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/ge/generator/ge_generator.cc b/ge/generator/ge_generator.cc index 8fe3a3d5..e7f11893 100644 --- a/ge/generator/ge_generator.cc +++ b/ge/generator/ge_generator.cc @@ -511,13 +511,13 @@ bool GeGenerator::Impl::SetOmSystemInfo(AttrHolder &obj) { void GeGenerator::Impl::DisplayModelInfo(AttrHolder &obj) { // - size_t memory_size; + int64_t memory_size; (void)ge::AttrUtils::GetInt(obj, ATTR_MODEL_MEMORY_SIZE, memory_size); - size_t weight_size; + int64_t weight_size; (void)ge::AttrUtils::GetInt(obj, ATTR_MODEL_WEIGHT_SIZE, weight_size); - size_t stream_num; + int64_t stream_num; (void)ge::AttrUtils::GetInt(obj, ATTR_MODEL_STREAM_NUM, stream_num); - size_t event_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 << "]." << @@ -525,24 +525,24 @@ void GeGenerator::Impl::DisplayModelInfo(AttrHolder &obj) { // std::string atc_version; - (void)ge::AttrUtils::GetStr(obj, ATTR_MODEL_ATC_VERSION, 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) + (void)ge::AttrUtils::GetStr(obj, "soc_version", soc_version); std::string framework_type; - (void)ge::AttrUtils::GetStr(obj, "framework_type", 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; // - size_t modeldef_size; + int64_t modeldef_size; (void)ge::AttrUtils::GetInt(obj, "modeldef_size", modeldef_size); - size_t weight_data_size; + int64_t weight_data_size; (void)ge::AttrUtils::GetInt(obj, "weight_data_size", weight_data_size); - size_t tbe_kernels_size; + int64_t tbe_kernels_size; (void)ge::AttrUtils::GetInt(obj, "tbe_kernels_size", tbe_kernels_size); - size_t cust_aicpu_kernel_store_size; + int64_t cust_aicpu_kernel_store_size; (void)ge::AttrUtils::GetInt(obj, "cust_aicpu_kernel_store_size", cust_aicpu_kernel_store_size); - size_t task_info_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" << "[" << @@ -821,7 +821,7 @@ Status GeGenerator::Impl::SaveRootModel(const string &file_name_prefix, GeRootMo if (!SetOppVersionInfo(*(model_root.get()))) { GELOGW("SetPackageVersionInfo of ops failed!"); } - if (!SetOmystemInfo(*(model_root.get()))) { + if (!SetOmSystemInfo(*(model_root.get()))) { GELOGW("SetOmsystemInfo failed!"); } ModelHelper model_helper; From 5dd03212ebc07ef20a397df31899d65888761224 Mon Sep 17 00:00:00 2001 From: "wangwenhua1@huawei.com" Date: Fri, 18 Dec 2020 16:06:39 +0800 Subject: [PATCH 4/8] display model info --- ge/generator/ge_generator.cc | 16 ++-- ge/offline/main.cc | 36 ++++++++- ge/session/omg.cc | 110 ++++++++++++++++++++++++++++ inc/external/ge/ge_api_types.h | 3 + inc/framework/omg/omg.h | 7 ++ inc/framework/omg/omg_inner_types.h | 9 ++- 6 files changed, 171 insertions(+), 10 deletions(-) diff --git a/ge/generator/ge_generator.cc b/ge/generator/ge_generator.cc index e7f11893..ab22d2c7 100644 --- a/ge/generator/ge_generator.cc +++ b/ge/generator/ge_generator.cc @@ -510,6 +510,12 @@ bool GeGenerator::Impl::SetOmSystemInfo(AttrHolder &obj) { } 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); @@ -520,8 +526,8 @@ void GeGenerator::Impl::DisplayModelInfo(AttrHolder &obj) { 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; + "], " << ATTR_MODEL_STREAM_NUM << "[" << stream_num << "], " << ATTR_MODEL_EVENT_NUM << "[" << event_num << "]." + << std::endl; // std::string atc_version; @@ -531,7 +537,7 @@ void GeGenerator::Impl::DisplayModelInfo(AttrHolder &obj) { 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; + "], " << "framework_type" << "[" << framework_type << "]." << std::endl; // int64_t modeldef_size; @@ -545,8 +551,8 @@ void GeGenerator::Impl::DisplayModelInfo(AttrHolder &obj) { 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; + "], " << "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, diff --git a/ge/offline/main.cc b/ge/offline/main.cc index b7188a85..c94e666a 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 @@ -889,6 +892,16 @@ static Status ConvertModelToJson(int fwk_type, const string &model_file, const s return ret; } +static Status DisplayModelInfo(int fwk_type, const string &model_file) { + Status ret = ge::SUCCESS; + if (fwk_type == -1) { + ret = ge::DisplayModelInfo(model_file.c_str()); + return ret; + } + + return ret; +} + domi::Status GenerateModel(std::map &options, std::string output) { ge::GeGenerator ge_generator; ge::Status geRet = ge::SUCCESS; @@ -1162,6 +1175,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 +1202,22 @@ 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()); + + return DisplayModelInfo(FLAGS_framework, FLAGS_om); +} + bool CheckRet(domi::Status ret) { if (ret != domi::SUCCESS) { if (FLAGS_mode == ONLY_PRE_CHECK) { @@ -1330,6 +1361,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..d9d5dbf8 100755 --- a/ge/session/omg.cc +++ b/ge/session/omg.cc @@ -869,6 +869,116 @@ void GetGroupName(ge::proto::ModelDef &model_def) { }); } +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 DisplayModelInfo(const char *model_file) { + ge::proto::ModelDef model_def; + ge::ModelData model; + Status ret = GetModeldefFormFile(model_file, model, &model_def); + if (ret == SUCCESS) { + PrintModelInfo(&model_def); + } + if (model.model_data != nullptr) { + delete[] reinterpret_cast(model.model_data); + model.model_data = nullptr; + } + return ret; +} + +FMK_FUNC_HOST_VISIBILITY Status GetModeldefFormFile(const char *model_file, ge::ModelData& model, + ge::proto::ModelDef *model_def) { + GE_CHECK_NOTNULL(model_file); + + // Mode 2 does not need to verify the priority, and a default value of 0 is passed + int32_t priority = 0; + + // Load model from file + Status ret = ModelParserBase::LoadFromFile(model_file, "", priority, model); + if (ret != SUCCESS) { + GELOGE(ret, "LoadFromFile failed."); + return ret; + } + + uint8_t *model_data = nullptr; + uint32_t model_len = 0; + try { + // Parse the contents of the file to get the modeldef object + ret = ModelParserBase::ParseModelContent(model, model_data, model_len); + if (ret == SUCCESS) { + OmFileLoadHelper omFileLoadHelper; + ge::graphStatus status = omFileLoadHelper.Init(model_data, model_len); + if (status != ge::GRAPH_SUCCESS) { + GELOGE(ge::FAILED, "Om file init failed."); + if (model.model_data != nullptr) { + delete[] reinterpret_cast(model.model_data); + model.model_data = nullptr; + } + return status; + } + + ModelPartition ir_part; + status = omFileLoadHelper.GetModelPartition(MODEL_DEF, ir_part); + if (status != ge::GRAPH_SUCCESS) { + GELOGE(ge::FAILED, "Get model part failed."); + if (model.model_data != nullptr) { + delete[] reinterpret_cast(model.model_data); + model.model_data = nullptr; + } + return status; + } + + // De serialization + if (ReadProtoFromArray(ir_part.data, ir_part.size, model_def)) { + return SUCCESS; + } + return FAILED; + } else { + GELOGE(PARAM_INVALID, "ParseModelContent failed because of invalid om file. Please check --om param."); + return FAILED; + } + } catch (const std::exception &e) { + GELOGE(FAILED, "get from file failed, exception message : %s.", e.what()); + return FAILED; + } +} + FMK_FUNC_HOST_VISIBILITY Status ConvertOmModelToJson(const char *model_file, const char *json_file) { GE_CHECK_NOTNULL(model_file); GE_CHECK_NOTNULL(json_file); diff --git a/inc/external/ge/ge_api_types.h b/inc/external/ge/ge_api_types.h index cce17f93..f47b0de6 100644 --- a/inc/external/ge/ge_api_types.h +++ b/inc/external/ge/ge_api_types.h @@ -294,6 +294,9 @@ const std::string MDL_BANK_PATH_FLAG = "ge.mdl_bank_path"; // Configure op bank path const std::string OP_BANK_PATH_FLAG = "ge.op_bank_path"; +// Configure display_model_info flag +const std::string DISPLAY_MODEL_INFO = "ge.display_model_info"; + // Graph run mode enum GraphRunMode { PREDICTION = 0, TRAIN }; diff --git a/inc/framework/omg/omg.h b/inc/framework/omg/omg.h index e7ca05f7..d5238b77 100644 --- a/inc/framework/omg/omg.h +++ b/inc/framework/omg/omg.h @@ -22,6 +22,7 @@ #include #include #include "framework/omg/omg_inner_types.h" +#include "framework/common/ge_types.h" #include "framework/omg/parser/parser_inner_ctx.h" #include "proto/ge_ir.pb.h" #include "proto/om.pb.h" @@ -103,6 +104,12 @@ void GetOutputNodesNameAndIndex(std::vector> &ou void UpdateOmgCtxWithParserCtx(); void UpdateParserCtxWithOmgCtx(); + +Status GetModeldefFormFile(const char *model_file, ge::ModelData& model, ge::proto::ModelDef *model_def); + +Status DisplayModelInfo(const char *model_file); + +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..3e39fb56 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 366556bd1f86f82f67d5205dc6bc3042addb8b28 Mon Sep 17 00:00:00 2001 From: "wangwenhua1@huawei.com" Date: Fri, 18 Dec 2020 16:37:54 +0800 Subject: [PATCH 5/8] display model info --- inc/framework/omg/omg.h | 2 +- inc/framework/omg/omg_inner_types.h | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/inc/framework/omg/omg.h b/inc/framework/omg/omg.h index d5238b77..494afe6a 100644 --- a/inc/framework/omg/omg.h +++ b/inc/framework/omg/omg.h @@ -21,8 +21,8 @@ #include #include #include -#include "framework/omg/omg_inner_types.h" #include "framework/common/ge_types.h" +#include "framework/omg/omg_inner_types.h" #include "framework/omg/parser/parser_inner_ctx.h" #include "proto/ge_ir.pb.h" #include "proto/om.pb.h" diff --git a/inc/framework/omg/omg_inner_types.h b/inc/framework/omg/omg_inner_types.h index 3e39fb56..abae1fbb 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 e571393a85616d38057d430dfce4a10e75514450 Mon Sep 17 00:00:00 2001 From: "wangwenhua1@huawei.com" Date: Fri, 18 Dec 2020 16:50:05 +0800 Subject: [PATCH 6/8] display model info --- ge/session/omg.cc | 2 +- inc/framework/omg/omg.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ge/session/omg.cc b/ge/session/omg.cc index d9d5dbf8..8d5f7503 100755 --- a/ge/session/omg.cc +++ b/ge/session/omg.cc @@ -922,7 +922,7 @@ FMK_FUNC_HOST_VISIBILITY Status DisplayModelInfo(const char *model_file) { return ret; } -FMK_FUNC_HOST_VISIBILITY Status GetModeldefFormFile(const char *model_file, ge::ModelData& model, +FMK_FUNC_HOST_VISIBILITY Status GetModeldefFormFile(const char *model_file, ge::ModelData &model, ge::proto::ModelDef *model_def) { GE_CHECK_NOTNULL(model_file); diff --git a/inc/framework/omg/omg.h b/inc/framework/omg/omg.h index 494afe6a..23aac06a 100644 --- a/inc/framework/omg/omg.h +++ b/inc/framework/omg/omg.h @@ -105,7 +105,7 @@ void UpdateOmgCtxWithParserCtx(); void UpdateParserCtxWithOmgCtx(); -Status GetModeldefFormFile(const char *model_file, ge::ModelData& model, ge::proto::ModelDef *model_def); +Status GetModeldefFormFile(const char *model_file, ge::ModelData &model, ge::proto::ModelDef *model_def); Status DisplayModelInfo(const char *model_file); From f5473911e1b0360b22491f6d5886bbe22a758aa5 Mon Sep 17 00:00:00 2001 From: "wangwenhua1@huawei.com" Date: Mon, 21 Dec 2020 15:43:36 +0800 Subject: [PATCH 7/8] dump add origin shape --- ge/common/dump/dump_op.cc | 15 ++++++++++++++- ge/common/proto/op_mapping_info.proto | 2 ++ ge/executor/proto/op_mapping_info.proto | 2 ++ ge/graph/load/new_model_manager/data_dumper.cc | 6 ++++++ ge/proto/op_mapping_info.proto | 2 ++ 5 files changed, 26 insertions(+), 1 deletion(-) diff --git a/ge/common/dump/dump_op.cc b/ge/common/dump/dump_op.cc index e92ada05..4b451dd6 100755 --- a/ge/common/dump/dump_op.cc +++ b/ge/common/dump/dump_op.cc @@ -94,6 +94,9 @@ Status DumpOp::DumpOutput(aicpu::dump::Task &task) { for (auto dim : output_descs.at(i).GetShape().GetDims()) { output.mutable_shape()->add_dim(dim); } + for (auto dim : output_descs.at(i).GetOriginShape().GetDims()) { + output.mutable_origin_shape()->add_dim(dim); + } int64_t output_size = 0; if (TensorUtils::GetTensorSizeInBytes(output_descs.at(i), output_size) != SUCCESS) { GELOGE(PARAM_INVALID, "Get output size filed"); @@ -118,6 +121,9 @@ Status DumpOp::DumpInput(aicpu::dump::Task &task) { for (auto dim : input_descs.at(i).GetShape().GetDims()) { input.mutable_shape()->add_dim(dim); } + for (auto dim : input_descs.at(i).GetOriginShape().GetDims()) { + input.mutable_origin_shape()->add_dim(dim); + } int64_t input_size = 0; if (TensorUtils::GetTensorSizeInBytes(input_descs.at(i), input_size) != SUCCESS) { GELOGE(PARAM_INVALID, "Get output size filed"); @@ -214,8 +220,15 @@ Status DumpOp::LaunchDumpOp() { SetOpMappingLoopAddr(global_step_, loop_per_iter_, loop_cond_, op_mapping_info); GELOGI("Dump step is %s ,dump path is %s ,in Launch dump op", dump_properties_.GetDumpStep().c_str(), dump_path.c_str()); - + uint32_t task_id = 0; + uint32_t stream_id = 0; + rt_ret = rtGetTaskIdAndStreamID(&task_id, &stream_id); + if (rt_ret != RT_ERROR_NONE) { + GELOGE(RT_FAILED, "call rtGetTaskIdAndStreamID failed, ret = 0x%X", rt_ret); + } aicpu::dump::Task task; + task.set_task_id(task_id); + task.set_stream_id(stream_id); task.mutable_op()->set_op_name(op_desc_->GetName()); task.mutable_op()->set_op_type(op_desc_->GetType()); if (dump_properties_.GetDumpMode() == kDumpOutput) { diff --git a/ge/common/proto/op_mapping_info.proto b/ge/common/proto/op_mapping_info.proto index e23b7ebe..7fb6f84b 100644 --- a/ge/common/proto/op_mapping_info.proto +++ b/ge/common/proto/op_mapping_info.proto @@ -15,6 +15,7 @@ message Output { int32 original_output_data_type = 7; int32 original_output_format = 8; uint64 size = 9; + Shape origin_shape = 10; } message Input { @@ -23,6 +24,7 @@ message Input { Shape shape = 3; uint64 address = 4; uint64 size = 5; + Shape origin_shape = 6; } enum BufferType { diff --git a/ge/executor/proto/op_mapping_info.proto b/ge/executor/proto/op_mapping_info.proto index e23b7ebe..7fb6f84b 100644 --- a/ge/executor/proto/op_mapping_info.proto +++ b/ge/executor/proto/op_mapping_info.proto @@ -15,6 +15,7 @@ message Output { int32 original_output_data_type = 7; int32 original_output_format = 8; uint64 size = 9; + Shape origin_shape = 10; } message Input { @@ -23,6 +24,7 @@ message Input { Shape shape = 3; uint64 address = 4; uint64 size = 5; + Shape origin_shape = 6; } enum BufferType { diff --git a/ge/graph/load/new_model_manager/data_dumper.cc b/ge/graph/load/new_model_manager/data_dumper.cc index b331d780..6f65e907 100644 --- a/ge/graph/load/new_model_manager/data_dumper.cc +++ b/ge/graph/load/new_model_manager/data_dumper.cc @@ -319,6 +319,9 @@ Status DataDumper::GenerateOutput(aicpu::dump::Output &output, const OpDesc::Vis for (auto dim : tensor_descs.at(index).GetShape().GetDims()) { output.mutable_shape()->add_dim(dim); } + for (auto dim : tensor_descs.at(index).GetOriginShape().GetDims()) { + output.mutable_origin_shape()->add_dim(dim); + } int64_t output_size = 0; if (TensorUtils::GetTensorSizeInBytes(tensor_descs.at(index), output_size) != SUCCESS) { GELOGE(PARAM_INVALID, "Get output size filed"); @@ -476,6 +479,9 @@ Status DataDumper::GenerateInput(aicpu::dump::Input &input, const OpDesc::Vistor for (auto dim : tensor_descs.at(index).GetShape().GetDims()) { input.mutable_shape()->add_dim(dim); } + for (auto dim : tensor_descs.at(index).GetOriginShape().GetDims()) { + input.mutable_origin_shape()->add_dim(dim); + } int64_t input_size = 0; if (AttrUtils::GetInt(tensor_descs.at(index), ATTR_NAME_INPUT_ORIGIN_SIZE, input_size)) { GELOGI("Get aipp input size according to attr is %ld", input_size); diff --git a/ge/proto/op_mapping_info.proto b/ge/proto/op_mapping_info.proto index e23b7ebe..7fb6f84b 100644 --- a/ge/proto/op_mapping_info.proto +++ b/ge/proto/op_mapping_info.proto @@ -15,6 +15,7 @@ message Output { int32 original_output_data_type = 7; int32 original_output_format = 8; uint64 size = 9; + Shape origin_shape = 10; } message Input { @@ -23,6 +24,7 @@ message Input { Shape shape = 3; uint64 address = 4; uint64 size = 5; + Shape origin_shape = 6; } enum BufferType { From d77e74d52a01c26f75d2c1589afcfee18b313fc2 Mon Sep 17 00:00:00 2001 From: "wangwenhua1@huawei.com" Date: Mon, 21 Dec 2020 15:55:35 +0800 Subject: [PATCH 8/8] dump add origin shape --- ge/common/helper/model_helper.cc | 17 +---- ge/generator/ge_generator.cc | 70 ------------------ ge/offline/main.cc | 36 +-------- ge/session/omg.cc | 110 ---------------------------- inc/external/ge/ge_api_types.h | 3 - inc/framework/omg/omg.h | 7 -- inc/framework/omg/omg_inner_types.h | 9 +-- 7 files changed, 6 insertions(+), 246 deletions(-) diff --git a/ge/common/helper/model_helper.cc b/ge/common/helper/model_helper.cc index 5b23d6b4..aacef88c 100644 --- a/ge/common/helper/model_helper.cc +++ b/ge/common/helper/model_helper.cc @@ -87,9 +87,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); + (void)model_tmp->Save(model_buffer); GELOGD("MODEL_DEF size is %zu", model_buffer.GetSize()); @@ -107,9 +105,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 +119,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 +135,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, @@ -178,10 +167,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"); diff --git a/ge/generator/ge_generator.cc b/ge/generator/ge_generator.cc index ab22d2c7..e50feae2 100644 --- a/ge/generator/ge_generator.cc +++ b/ge/generator/ge_generator.cc @@ -279,8 +279,6 @@ 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) { @@ -491,70 +489,6 @@ 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; @@ -827,9 +761,6 @@ 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); @@ -837,7 +768,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; } diff --git a/ge/offline/main.cc b/ge/offline/main.cc index c94e666a..b7188a85 100755 --- a/ge/offline/main.cc +++ b/ge/offline/main.cc @@ -202,8 +202,6 @@ 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: /** @@ -309,8 +307,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)" - " --display_model_info enable for display model inf; 0(default): close display, 1: open display"); + "Options are disable(default), enable and force(force to refresh the cache)"); gflags::ParseCommandLineNonHelpFlags(&argc, &argv, true); // Using gflags to analyze input parameters @@ -892,16 +889,6 @@ static Status ConvertModelToJson(int fwk_type, const string &model_file, const s return ret; } -static Status DisplayModelInfo(int fwk_type, const string &model_file) { - Status ret = ge::SUCCESS; - if (fwk_type == -1) { - ret = ge::DisplayModelInfo(model_file.c_str()); - return ret; - } - - return ret; -} - domi::Status GenerateModel(std::map &options, std::string output) { ge::GeGenerator ge_generator; ge::Status geRet = ge::SUCCESS; @@ -1175,8 +1162,6 @@ 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 @@ -1202,22 +1187,6 @@ 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()); - - return DisplayModelInfo(FLAGS_framework, FLAGS_om); -} - bool CheckRet(domi::Status ret) { if (ret != domi::SUCCESS) { if (FLAGS_mode == ONLY_PRE_CHECK) { @@ -1361,9 +1330,6 @@ 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 8d5f7503..7ff52e82 100755 --- a/ge/session/omg.cc +++ b/ge/session/omg.cc @@ -869,116 +869,6 @@ void GetGroupName(ge::proto::ModelDef &model_def) { }); } -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 DisplayModelInfo(const char *model_file) { - ge::proto::ModelDef model_def; - ge::ModelData model; - Status ret = GetModeldefFormFile(model_file, model, &model_def); - if (ret == SUCCESS) { - PrintModelInfo(&model_def); - } - if (model.model_data != nullptr) { - delete[] reinterpret_cast(model.model_data); - model.model_data = nullptr; - } - return ret; -} - -FMK_FUNC_HOST_VISIBILITY Status GetModeldefFormFile(const char *model_file, ge::ModelData &model, - ge::proto::ModelDef *model_def) { - GE_CHECK_NOTNULL(model_file); - - // Mode 2 does not need to verify the priority, and a default value of 0 is passed - int32_t priority = 0; - - // Load model from file - Status ret = ModelParserBase::LoadFromFile(model_file, "", priority, model); - if (ret != SUCCESS) { - GELOGE(ret, "LoadFromFile failed."); - return ret; - } - - uint8_t *model_data = nullptr; - uint32_t model_len = 0; - try { - // Parse the contents of the file to get the modeldef object - ret = ModelParserBase::ParseModelContent(model, model_data, model_len); - if (ret == SUCCESS) { - OmFileLoadHelper omFileLoadHelper; - ge::graphStatus status = omFileLoadHelper.Init(model_data, model_len); - if (status != ge::GRAPH_SUCCESS) { - GELOGE(ge::FAILED, "Om file init failed."); - if (model.model_data != nullptr) { - delete[] reinterpret_cast(model.model_data); - model.model_data = nullptr; - } - return status; - } - - ModelPartition ir_part; - status = omFileLoadHelper.GetModelPartition(MODEL_DEF, ir_part); - if (status != ge::GRAPH_SUCCESS) { - GELOGE(ge::FAILED, "Get model part failed."); - if (model.model_data != nullptr) { - delete[] reinterpret_cast(model.model_data); - model.model_data = nullptr; - } - return status; - } - - // De serialization - if (ReadProtoFromArray(ir_part.data, ir_part.size, model_def)) { - return SUCCESS; - } - return FAILED; - } else { - GELOGE(PARAM_INVALID, "ParseModelContent failed because of invalid om file. Please check --om param."); - return FAILED; - } - } catch (const std::exception &e) { - GELOGE(FAILED, "get from file failed, exception message : %s.", e.what()); - return FAILED; - } -} - FMK_FUNC_HOST_VISIBILITY Status ConvertOmModelToJson(const char *model_file, const char *json_file) { GE_CHECK_NOTNULL(model_file); GE_CHECK_NOTNULL(json_file); diff --git a/inc/external/ge/ge_api_types.h b/inc/external/ge/ge_api_types.h index f47b0de6..cce17f93 100644 --- a/inc/external/ge/ge_api_types.h +++ b/inc/external/ge/ge_api_types.h @@ -294,9 +294,6 @@ const std::string MDL_BANK_PATH_FLAG = "ge.mdl_bank_path"; // Configure op bank path const std::string OP_BANK_PATH_FLAG = "ge.op_bank_path"; -// Configure display_model_info flag -const std::string DISPLAY_MODEL_INFO = "ge.display_model_info"; - // Graph run mode enum GraphRunMode { PREDICTION = 0, TRAIN }; diff --git a/inc/framework/omg/omg.h b/inc/framework/omg/omg.h index 23aac06a..e7ca05f7 100644 --- a/inc/framework/omg/omg.h +++ b/inc/framework/omg/omg.h @@ -21,7 +21,6 @@ #include #include #include -#include "framework/common/ge_types.h" #include "framework/omg/omg_inner_types.h" #include "framework/omg/parser/parser_inner_ctx.h" #include "proto/ge_ir.pb.h" @@ -104,12 +103,6 @@ void GetOutputNodesNameAndIndex(std::vector> &ou void UpdateOmgCtxWithParserCtx(); void UpdateParserCtxWithOmgCtx(); - -Status GetModeldefFormFile(const char *model_file, ge::ModelData &model, ge::proto::ModelDef *model_def); - -Status DisplayModelInfo(const char *model_file); - -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 abae1fbb..454890aa 100644 --- a/inc/framework/omg/omg_inner_types.h +++ b/inc/framework/omg/omg_inner_types.h @@ -43,11 +43,10 @@ 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 }; ///