From: @lianghuikang Reviewed-by: Signed-off-by:tags/v1.3.0
| @@ -34,6 +34,7 @@ | |||||
| #include "common/ge/tbe_plugin_manager.h" | #include "common/ge/tbe_plugin_manager.h" | ||||
| #include "common/util/error_manager/error_manager.h" | #include "common/util/error_manager/error_manager.h" | ||||
| #include "toolchain/plog.h" | #include "toolchain/plog.h" | ||||
| #include "ir_build/option_utils.h" | |||||
| using domi::OpRegistry; | using domi::OpRegistry; | ||||
| using std::map; | using std::map; | ||||
| @@ -79,6 +80,11 @@ Status CheckOptionsValid(const std::map<string, string> &options) { | |||||
| } | } | ||||
| } | } | ||||
| // check modify_mixlist is valid | |||||
| if (ge::CheckModifyMixlistParamValid(options) != ge::SUCCESS) { | |||||
| return FAILED; | |||||
| } | |||||
| return SUCCESS; | return SUCCESS; | ||||
| } | } | ||||
| @@ -133,6 +133,15 @@ static graphStatus CheckGlobalOptions(std::map<std::string, std::string> &global | |||||
| ? "force_fp16" | ? "force_fp16" | ||||
| : global_options[ge::ir_option::PRECISION_MODE]; | : global_options[ge::ir_option::PRECISION_MODE]; | ||||
| global_options[ge::ir_option::PRECISION_MODE] = precision_mode; | global_options[ge::ir_option::PRECISION_MODE] = precision_mode; | ||||
| // check modify_mixlist | |||||
| std::string modify_mixlist = global_options.find(ge::ir_option::MODIFY_MIXLIST) == | |||||
| global_options.end() | |||||
| ? "" | |||||
| : global_options[ge::ir_option::MODIFY_MIXLIST]; | |||||
| if (ge::CheckModifyMixlistParamValid(precision_mode, modify_mixlist) != ge::SUCCESS) { | |||||
| return ge::GRAPH_PARAM_INVALID; | |||||
| } | |||||
| global_options[ge::ir_option::MODIFY_MIXLIST] = modify_mixlist; | |||||
| return GRAPH_SUCCESS; | return GRAPH_SUCCESS; | ||||
| } | } | ||||
| @@ -254,6 +263,8 @@ class Impl { | |||||
| omg_context_.user_attr_index_valid = false; | omg_context_.user_attr_index_valid = false; | ||||
| }; | }; | ||||
| ~Impl() { (void)generator_.Finalize(); }; | ~Impl() { (void)generator_.Finalize(); }; | ||||
| graphStatus GetSupportedOptions(const std::map<std::string, std::string> &in, | |||||
| std::map<std::string, std::string> &out); | |||||
| graphStatus CheckOptions(const std::map<std::string, std::string> &options); | graphStatus CheckOptions(const std::map<std::string, std::string> &options); | ||||
| graphStatus CreateInputsForIRBuild(const ge::Graph &graph, vector<ge::GeTensor> &inputs); | graphStatus CreateInputsForIRBuild(const ge::Graph &graph, vector<ge::GeTensor> &inputs); | ||||
| graphStatus UpdateDataOpAttr(const Graph &graph); | graphStatus UpdateDataOpAttr(const Graph &graph); | ||||
| @@ -440,19 +451,29 @@ graphStatus Impl::UpdateDataOpAttr(const Graph &graph) { | |||||
| return GRAPH_SUCCESS; | return GRAPH_SUCCESS; | ||||
| } | } | ||||
| graphStatus Impl::CheckOptions(const std::map<std::string, std::string> &options) { | |||||
| for (auto &ele : options) { | |||||
| graphStatus Impl::GetSupportedOptions(const std::map<std::string, std::string> &in, | |||||
| std::map<std::string, std::string> &out) { | |||||
| for (auto &ele : in) { | |||||
| auto it = ge::ir_option::ir_builder_suppported_options.find(ele.first); | auto it = ge::ir_option::ir_builder_suppported_options.find(ele.first); | ||||
| if (it == ge::ir_option::ir_builder_suppported_options.end()) { | if (it == ge::ir_option::ir_builder_suppported_options.end()) { | ||||
| auto it_lx_fusion = ir_builder_supported_options_for_lx_fusion.find(ele.first); | auto it_lx_fusion = ir_builder_supported_options_for_lx_fusion.find(ele.first); | ||||
| if (it_lx_fusion == ir_builder_supported_options_for_lx_fusion.end()) { | if (it_lx_fusion == ir_builder_supported_options_for_lx_fusion.end()) { | ||||
| GELOGE(GRAPH_PARAM_INVALID, "[Check][Options] unsupported option(%s), Please check!", | GELOGE(GRAPH_PARAM_INVALID, "[Check][Options] unsupported option(%s), Please check!", | ||||
| ele.first.c_str()); | |||||
| ele.first.c_str()); | |||||
| return GRAPH_PARAM_INVALID; | return GRAPH_PARAM_INVALID; | ||||
| } | } | ||||
| } | } | ||||
| options_.insert(ele); | |||||
| out.insert(ele); | |||||
| } | } | ||||
| return GRAPH_SUCCESS; | |||||
| } | |||||
| graphStatus Impl::CheckOptions(const std::map<std::string, std::string> &options) { | |||||
| auto ret = GetSupportedOptions(options, options_); | |||||
| if (ret != GRAPH_SUCCESS) { | |||||
| return ret; | |||||
| } | |||||
| // Check options build_mode and build_step. | // Check options build_mode and build_step. | ||||
| std::string build_mode; | std::string build_mode; | ||||
| auto it = options_.find(BUILD_MODE); | auto it = options_.find(BUILD_MODE); | ||||
| @@ -480,6 +501,10 @@ graphStatus Impl::CheckOptions(const std::map<std::string, std::string> &options | |||||
| if (it != options_.end() && (CheckDisableReuseMemoryParamValid(it->second) != GRAPH_SUCCESS)) { | if (it != options_.end() && (CheckDisableReuseMemoryParamValid(it->second) != GRAPH_SUCCESS)) { | ||||
| return GRAPH_PARAM_INVALID; | return GRAPH_PARAM_INVALID; | ||||
| } | } | ||||
| // Check option modify_mixlist | |||||
| if (ge::CheckModifyMixlistParamValid(options_) != GRAPH_SUCCESS) { | |||||
| return GRAPH_PARAM_INVALID; | |||||
| } | |||||
| // Check Input Format | // Check Input Format | ||||
| if (options_.find(kInputFormat) != options_.end()) { | if (options_.find(kInputFormat) != options_.end()) { | ||||
| return CheckInputFormat(options_[kInputFormat]); | return CheckInputFormat(options_[kInputFormat]); | ||||
| @@ -787,6 +787,31 @@ Status CheckImplmodeParamValid(const std::string &optypelist_for_implmode, std:: | |||||
| return ge::SUCCESS; | return ge::SUCCESS; | ||||
| } | } | ||||
| Status CheckModifyMixlistParamValid(const std::map<std::string, std::string> &options) { | |||||
| std::string precision_mode; | |||||
| auto it = options.find(ge::PRECISION_MODE); | |||||
| if (it != options.end()) { | |||||
| precision_mode = it->second; | |||||
| } | |||||
| it = options.find(ge::MODIFY_MIXLIST); | |||||
| if (it != options.end() && CheckModifyMixlistParamValid(precision_mode, it->second) != ge::SUCCESS) { | |||||
| return ge::PARAM_INVALID; | |||||
| } | |||||
| return ge::SUCCESS; | |||||
| } | |||||
| Status CheckModifyMixlistParamValid(const std::string &precision_mode, const std::string &modify_mixlist) { | |||||
| if (!modify_mixlist.empty() && precision_mode != "allow_mix_precision") { | |||||
| REPORT_INPUT_ERROR("E10001", std::vector<std::string>({"parameter", "value", "reason"}), | |||||
| std::vector<std::string>({ge::MODIFY_MIXLIST, modify_mixlist, kModifyMixlistError})); | |||||
| GELOGE(ge::PARAM_INVALID, "[Check][ModifyMixlist] Failed, %s", kModifyMixlistError); | |||||
| return ge::PARAM_INVALID; | |||||
| } | |||||
| GELOGI("Option set successfully, option_key=%s, option_value=%s", ge::MODIFY_MIXLIST.c_str(), modify_mixlist.c_str()); | |||||
| return ge::SUCCESS; | |||||
| } | |||||
| void PrintOptionMap(std::map<std::string, std::string> &options, std::string tips) { | void PrintOptionMap(std::map<std::string, std::string> &options, std::string tips) { | ||||
| for (auto iter = options.begin(); iter != options.end(); iter++) { | for (auto iter = options.begin(); iter != options.end(); iter++) { | ||||
| std::string key = iter->first; | std::string key = iter->first; | ||||
| @@ -29,6 +29,8 @@ | |||||
| #include "graph/preprocess/multi_batch_options.h" | #include "graph/preprocess/multi_batch_options.h" | ||||
| namespace ge { | namespace ge { | ||||
| const char *const kModifyMixlistError = "modify_mixlist is assigned, please ensure that " | |||||
| "precision_mode is assigned to 'allow_mix_precision'"; | |||||
| static std::set<std::string> caffe_support_input_format = {"NCHW", "ND"}; | static std::set<std::string> caffe_support_input_format = {"NCHW", "ND"}; | ||||
| static std::set<std::string> tf_support_input_format = {"NCHW", "NHWC", "ND", "NCDHW", "NDHWC"}; | static std::set<std::string> tf_support_input_format = {"NCHW", "NHWC", "ND", "NCDHW", "NDHWC"}; | ||||
| static std::set<std::string> onnx_support_input_format = {"NCHW", "ND", "NCDHW"}; | static std::set<std::string> onnx_support_input_format = {"NCHW", "ND", "NCDHW"}; | ||||
| @@ -77,6 +79,8 @@ Status CheckInsertOpConfParamValid(const std::string insert_op_conf); | |||||
| Status CheckDisableReuseMemoryParamValid(const std::string disable_reuse_memory); | Status CheckDisableReuseMemoryParamValid(const std::string disable_reuse_memory); | ||||
| Status CheckEnableSingleStreamParamValid(const std::string enable_single_stream); | Status CheckEnableSingleStreamParamValid(const std::string enable_single_stream); | ||||
| Status CheckImplmodeParamValid(const std::string &optypelist_for_implmode, std::string &op_select_implmode); | Status CheckImplmodeParamValid(const std::string &optypelist_for_implmode, std::string &op_select_implmode); | ||||
| Status CheckModifyMixlistParamValid(const std::map<std::string, std::string> &options); | |||||
| Status CheckModifyMixlistParamValid(const std::string &precision_mode, const std::string &modify_mixlist); | |||||
| Status CheckInputFormat(const string &input_format); | Status CheckInputFormat(const string &input_format); | ||||
| Status CheckKeepTypeParamValid(const std::string &keep_dtype); | Status CheckKeepTypeParamValid(const std::string &keep_dtype); | ||||
| void PrintOptionMap(std::map<std::string, std::string> &options, std::string tips); | void PrintOptionMap(std::map<std::string, std::string> &options, std::string tips); | ||||
| @@ -116,7 +116,7 @@ DEFINE_string(out_nodes, "", | |||||
| DEFINE_string(precision_mode, "force_fp16", | DEFINE_string(precision_mode, "force_fp16", | ||||
| "Optional; precision mode." | "Optional; precision mode." | ||||
| "Support force_fp16, allow_mix_precision, allow_fp32_to_fp16, must_keep_origin_dtype."); | |||||
| "Support force_fp16, force_fp32, allow_mix_precision, allow_fp32_to_fp16, must_keep_origin_dtype."); | |||||
| DEFINE_string(keep_dtype, "", | DEFINE_string(keep_dtype, "", | ||||
| "Optional; config file to specify the precision used by the operator during compilation."); | "Optional; config file to specify the precision used by the operator during compilation."); | ||||
| @@ -218,6 +218,8 @@ DEFINE_string(display_model_info, "0", "Optional; display model info"); | |||||
| DEFINE_string(device_id, "0", "Optional; user device id"); | DEFINE_string(device_id, "0", "Optional; user device id"); | ||||
| DEFINE_string(modify_mixlist, "", "Optional; operator mixed precision configuration file path"); | |||||
| class GFlagUtils { | class GFlagUtils { | ||||
| public: | public: | ||||
| /** | /** | ||||
| @@ -304,7 +306,7 @@ class GFlagUtils { | |||||
| "\"l1_optimize\", \"off_optimize\"\n" | "\"l1_optimize\", \"off_optimize\"\n" | ||||
| " --mdl_bank_path Set the path of the custom repository generated after model tuning.\n" | " --mdl_bank_path Set the path of the custom repository generated after model tuning.\n" | ||||
| "\n[Operator Tuning]\n" | "\n[Operator Tuning]\n" | ||||
| " --precision_mode precision mode, support force_fp16(default), allow_mix_precision, " | |||||
| " --precision_mode precision mode, support force_fp16(default), force_fp32, allow_mix_precision, " | |||||
| "allow_fp32_to_fp16, must_keep_origin_dtype.\n" | "allow_fp32_to_fp16, must_keep_origin_dtype.\n" | ||||
| " --keep_dtype Retains the precision of certain operators in inference " | " --keep_dtype Retains the precision of certain operators in inference " | ||||
| "scenarios by using a configuration file.\n" | "scenarios by using a configuration file.\n" | ||||
| @@ -321,6 +323,7 @@ class GFlagUtils { | |||||
| " 2: Enable TBE pipe_all, generate the operator CCE file and Python-CCE mapping file " | " 2: Enable TBE pipe_all, generate the operator CCE file and Python-CCE mapping file " | ||||
| "(.json), and enable the CCE compiler -O0-g.\n" | "(.json), and enable the CCE compiler -O0-g.\n" | ||||
| " 3: Disable debug, and keep generating kernel file (.o and .json)\n" | " 3: Disable debug, and keep generating kernel file (.o and .json)\n" | ||||
| " --modify_mixlist Set the path of operator mixed precision configuration file.\n" | |||||
| "\n[Debug]\n" | "\n[Debug]\n" | ||||
| " --save_original_model Control whether to output original model. E.g.: true: output original model\n" | " --save_original_model Control whether to output original model. E.g.: true: output original model\n" | ||||
| " --log Generate log with level. Support debug, info, warning, error, null\n" | " --log Generate log with level. Support debug, info, warning, error, null\n" | ||||
| @@ -369,6 +372,14 @@ class GFlagUtils { | |||||
| ge::CheckImplmodeParamValid(FLAGS_optypelist_for_implmode, | ge::CheckImplmodeParamValid(FLAGS_optypelist_for_implmode, | ||||
| FLAGS_op_select_implmode) != ge::SUCCESS, | FLAGS_op_select_implmode) != ge::SUCCESS, | ||||
| ret = ge::FAILED, "[Check][ImplMode]check optypelist_for_implmode and op_select_implmode failed!"); | ret = ge::FAILED, "[Check][ImplMode]check optypelist_for_implmode and op_select_implmode failed!"); | ||||
| if (ge::CheckModifyMixlistParamValid(FLAGS_precision_mode, FLAGS_modify_mixlist) != ge::SUCCESS) { | |||||
| ErrorManager::GetInstance().ATCReportErrMessage("E10001", {"parameter", "value", "reason"}, | |||||
| {"modify_mixlist", FLAGS_modify_mixlist.c_str(), | |||||
| ge::kModifyMixlistError}); | |||||
| ret = ge::FAILED; | |||||
| } | |||||
| // No output file information passed in | // No output file information passed in | ||||
| GE_CHK_BOOL_TRUE_EXEC_WITH_LOG( | GE_CHK_BOOL_TRUE_EXEC_WITH_LOG( | ||||
| FLAGS_mode == GEN_OM_MODEL && FLAGS_output == "", | FLAGS_mode == GEN_OM_MODEL && FLAGS_output == "", | ||||
| @@ -1081,6 +1092,7 @@ static void SetEnvForSingleOp(std::map<string, string> &options) { | |||||
| options.emplace(ge::MDL_BANK_PATH_FLAG, FLAGS_mdl_bank_path); | options.emplace(ge::MDL_BANK_PATH_FLAG, FLAGS_mdl_bank_path); | ||||
| options.emplace(ge::OP_BANK_PATH_FLAG, FLAGS_op_bank_path); | options.emplace(ge::OP_BANK_PATH_FLAG, FLAGS_op_bank_path); | ||||
| options.emplace(ge::TUNE_DEVICE_IDS, FLAGS_device_id); | options.emplace(ge::TUNE_DEVICE_IDS, FLAGS_device_id); | ||||
| options.emplace(ge::MODIFY_MIXLIST, FLAGS_modify_mixlist); | |||||
| } | } | ||||
| domi::Status GenerateSingleOp(const std::string& json_file_path) { | domi::Status GenerateSingleOp(const std::string& json_file_path) { | ||||
| @@ -1093,9 +1105,18 @@ domi::Status GenerateSingleOp(const std::string& json_file_path) { | |||||
| ge::CheckImplmodeParamValid(FLAGS_optypelist_for_implmode, FLAGS_op_select_implmode) != ge::SUCCESS, | ge::CheckImplmodeParamValid(FLAGS_optypelist_for_implmode, FLAGS_op_select_implmode) != ge::SUCCESS, | ||||
| return ge::FAILED, "[Check][ImplmodeParam] fail for input optypelist_for_implmode and op_select_implmode."); | return ge::FAILED, "[Check][ImplmodeParam] fail for input optypelist_for_implmode and op_select_implmode."); | ||||
| if (ge::CheckModifyMixlistParamValid(FLAGS_precision_mode, FLAGS_modify_mixlist) != ge::SUCCESS) { | |||||
| ErrorManager::GetInstance().ATCReportErrMessage("E10001", {"parameter", "value", "reason"}, | |||||
| {"modify_mixlist", FLAGS_modify_mixlist.c_str(), | |||||
| ge::kModifyMixlistError}); | |||||
| return ge::FAILED; | |||||
| } | |||||
| std::map<string, string> options; | std::map<string, string> options; | ||||
| // need to be changed when ge.ini plan is done | // need to be changed when ge.ini plan is done | ||||
| SetEnvForSingleOp(options); | SetEnvForSingleOp(options); | ||||
| // print single op option map | |||||
| ge::PrintOptionMap(options, "single op option"); | |||||
| auto ret = ge::GELib::Initialize(options); | auto ret = ge::GELib::Initialize(options); | ||||
| if (ret != ge::SUCCESS) { | if (ret != ge::SUCCESS) { | ||||
| @@ -1234,6 +1255,8 @@ domi::Status GenerateOmModel() { | |||||
| options.insert(std::pair<string, string>(string(ge::DISPLAY_MODEL_INFO), FLAGS_display_model_info)); | options.insert(std::pair<string, string>(string(ge::DISPLAY_MODEL_INFO), FLAGS_display_model_info)); | ||||
| options.insert(std::pair<string, string>(string(ge::MODIFY_MIXLIST), FLAGS_modify_mixlist)); | |||||
| // set enable scope fusion passes | // set enable scope fusion passes | ||||
| SetEnableScopeFusionPasses(FLAGS_enable_scope_fusion_passes); | SetEnableScopeFusionPasses(FLAGS_enable_scope_fusion_passes); | ||||
| // print atc option map | // print atc option map | ||||
| @@ -35,6 +35,7 @@ | |||||
| #include "graph/manager/graph_mem_manager.h" | #include "graph/manager/graph_mem_manager.h" | ||||
| #include "graph/utils/tensor_adapter.h" | #include "graph/utils/tensor_adapter.h" | ||||
| #include "runtime/mem.h" | #include "runtime/mem.h" | ||||
| #include "ir_build/option_utils.h" | |||||
| namespace ge { | namespace ge { | ||||
| namespace { | namespace { | ||||
| @@ -81,6 +82,11 @@ Status InnerSession::Initialize() { | |||||
| return ret; | return ret; | ||||
| } | } | ||||
| // Check option modify_mixlist | |||||
| if (ge::CheckModifyMixlistParamValid(all_options) != ge::SUCCESS) { | |||||
| return FAILED; | |||||
| } | |||||
| UpdateThreadContext(std::map<std::string, std::string>{}); | UpdateThreadContext(std::map<std::string, std::string>{}); | ||||
| // session device id set here | // session device id set here | ||||
| @@ -112,6 +112,7 @@ const char *const ORIGINAL_MODEL_FILE = "ge.originalModelFile"; | |||||
| const char *const INPUT_FP16_NODES = "ge.INPUT_NODES_SET_FP16"; | const char *const INPUT_FP16_NODES = "ge.INPUT_NODES_SET_FP16"; | ||||
| const char *const OP_DEBUG_LEVEL = "ge.opDebugLevel"; | const char *const OP_DEBUG_LEVEL = "ge.opDebugLevel"; | ||||
| const char *const PERFORMANCE_MODE = "ge.performance_mode"; | const char *const PERFORMANCE_MODE = "ge.performance_mode"; | ||||
| const char *const MODIFY_MIXLIST = "ge.exec.modify_mixlist"; | |||||
| } // namespace configure_option | } // namespace configure_option | ||||
| // Configure stream num by Session constructor options param, | // Configure stream num by Session constructor options param, | ||||
| // its value should be int32_t type, default value is "1" | // its value should be int32_t type, default value is "1" | ||||
| @@ -323,6 +324,8 @@ const char *const INPUT_SHAPE_RANGE = "input_shape_range"; | |||||
| // high: need to recompile, high execute performance mode | // high: need to recompile, high execute performance mode | ||||
| const std::string PERFORMANCE_MODE = "ge.performance_mode"; | const std::string PERFORMANCE_MODE = "ge.performance_mode"; | ||||
| const std::string MODIFY_MIXLIST = "ge.exec.modify_mixlist"; | |||||
| // Graph run mode | // Graph run mode | ||||
| enum GraphRunMode { PREDICTION = 0, TRAIN }; | enum GraphRunMode { PREDICTION = 0, TRAIN }; | ||||
| @@ -401,6 +404,7 @@ static const char *const OP_BANK_PATH = ge::OP_BANK_PATH_FLAG.c_str(); | |||||
| static const char *const OP_BANK_UPDATE = ge::OP_BANK_UPDATE_FLAG.c_str(); | static const char *const OP_BANK_UPDATE = ge::OP_BANK_UPDATE_FLAG.c_str(); | ||||
| static const char *const OP_DEBUG_LEVEL = ge::OP_DEBUG_LEVEL.c_str(); | static const char *const OP_DEBUG_LEVEL = ge::OP_DEBUG_LEVEL.c_str(); | ||||
| static const char *const PERFORMANCE_MODE = ge::PERFORMANCE_MODE.c_str(); | static const char *const PERFORMANCE_MODE = ge::PERFORMANCE_MODE.c_str(); | ||||
| static const char *const MODIFY_MIXLIST = ge::MODIFY_MIXLIST.c_str(); | |||||
| // for interface: aclgrphBuildModel | // for interface: aclgrphBuildModel | ||||
| #ifdef __GNUC__ | #ifdef __GNUC__ | ||||
| @@ -427,7 +431,8 @@ const std::set<std::string> ir_builder_suppported_options = {INPUT_FORMAT, | |||||
| MDL_BANK_PATH, | MDL_BANK_PATH, | ||||
| OP_BANK_PATH, | OP_BANK_PATH, | ||||
| OP_BANK_UPDATE, | OP_BANK_UPDATE, | ||||
| PERFORMANCE_MODE}; | |||||
| PERFORMANCE_MODE, | |||||
| MODIFY_MIXLIST}; | |||||
| // for interface: aclgrphParse | // for interface: aclgrphParse | ||||
| const std::set<std::string> ir_parser_suppported_options = { | const std::set<std::string> ir_parser_suppported_options = { | ||||
| @@ -453,7 +458,8 @@ const std::set<std::string> global_options = {CORE_TYPE, | |||||
| OP_DEBUG_LEVEL, | OP_DEBUG_LEVEL, | ||||
| DEBUG_DIR, | DEBUG_DIR, | ||||
| OP_COMPILER_CACHE_DIR, | OP_COMPILER_CACHE_DIR, | ||||
| OP_COMPILER_CACHE_MODE}; | |||||
| OP_COMPILER_CACHE_MODE, | |||||
| MODIFY_MIXLIST}; | |||||
| #endif | #endif | ||||
| } // namespace ir_option | } // namespace ir_option | ||||
| } // namespace ge | } // namespace ge | ||||
| @@ -250,6 +250,17 @@ TEST(UtestIrCommon, check_dynamic_input_param_failed) { | |||||
| EXPECT_EQ(ret, ge::PARAM_INVALID); | EXPECT_EQ(ret, ge::PARAM_INVALID); | ||||
| } | } | ||||
| TEST(UtestIrCommon, check_modify_mixlist_param) { | |||||
| std::string precision_mode = "allow_mix_precision"; | |||||
| std::string modify_mixlist = "/mixlist.json"; | |||||
| Status ret = CheckModifyMixlistParamValid(precision_mode, modify_mixlist); | |||||
| EXPECT_EQ(ret, ge::SUCCESS); | |||||
| precision_mode = ""; | |||||
| ret = CheckModifyMixlistParamValid(precision_mode, modify_mixlist); | |||||
| EXPECT_EQ(ret, ge::PARAM_INVALID); | |||||
| } | |||||
| TEST(UtestIrCommon, check_compress_weight) { | TEST(UtestIrCommon, check_compress_weight) { | ||||
| std::string enable_compress_weight = "true"; | std::string enable_compress_weight = "true"; | ||||
| std::string compress_weight_conf="./"; | std::string compress_weight_conf="./"; | ||||
| @@ -349,4 +360,15 @@ TEST(UtestIrBuild, check_data_attr_index_succ_no_input_range) { | |||||
| ModelBufferData model; | ModelBufferData model; | ||||
| graphStatus ret = aclgrphBuildModel(graph, build_options, model); | graphStatus ret = aclgrphBuildModel(graph, build_options, model); | ||||
| EXPECT_EQ(ret, GE_GENERATOR_GRAPH_MANAGER_BUILD_GRAPH_FAILED); | EXPECT_EQ(ret, GE_GENERATOR_GRAPH_MANAGER_BUILD_GRAPH_FAILED); | ||||
| } | |||||
| TEST(UtestIrBuild, check_modify_mixlist_param) { | |||||
| Graph graph = BuildIrGraph1(); | |||||
| const std::map<std::string, std::string> build_options = { | |||||
| {"ge.exec.modify_mixlist", "/modify.json"} | |||||
| }; | |||||
| ModelBufferData model; | |||||
| auto ret = aclgrphBuildModel(graph, build_options, model); | |||||
| EXPECT_EQ(ret, GRAPH_PARAM_INVALID); | |||||
| } | } | ||||
| @@ -63,4 +63,12 @@ TEST_F(UtestGeApi, build_graph_success) { | |||||
| auto ret = session.BuildGraph(1, inputs); | auto ret = session.BuildGraph(1, inputs); | ||||
| ASSERT_NE(ret, SUCCESS); | ASSERT_NE(ret, SUCCESS); | ||||
| } | } | ||||
| TEST_F(UtestGeApi, ge_initialize) { | |||||
| std::map<std::string, std::string> options = { | |||||
| {ge::MODIFY_MIXLIST, "/mixlist.json"} | |||||
| }; | |||||
| auto ret = GEInitialize(options); | |||||
| ASSERT_NE(ret, SUCCESS); | |||||
| } | |||||
| } // namespace ge | } // namespace ge | ||||
| @@ -44,4 +44,13 @@ TEST_F(Utest_Inner_session, build_graph_success) { | |||||
| EXPECT_NE(ret, ge::SUCCESS); | EXPECT_NE(ret, ge::SUCCESS); | ||||
| } | } | ||||
| TEST_F(Utest_Inner_session, initialize) { | |||||
| std::map<std::string, std::string> options = { | |||||
| {ge::MODIFY_MIXLIST, "/modify.json"} | |||||
| }; | |||||
| uint64_t session_id = 1; | |||||
| InnerSession inner_session(session_id, options); | |||||
| auto ret = inner_session.Initialize(); | |||||
| EXPECT_NE(ret, ge::SUCCESS); | |||||
| } | |||||
| } // namespace ge | } // namespace ge | ||||