From 9cda3adfb4f74df2c7732bfd112f1dcb1414d364 Mon Sep 17 00:00:00 2001 From: zhou_lili Date: Fri, 26 Mar 2021 17:19:41 +0800 Subject: [PATCH] add declare used by acl --- ge/generator/ge_generator.cc | 9 +++++++++ inc/external/ge/ge_api_types.h | 10 +++++++++- inc/framework/common/ge_types.h | 5 +++-- inc/framework/generator/ge_generator.h | 3 +++ tests/ut/ge/generator/ge_generator_unittest.cc | 18 ++++++++++++++++++ 5 files changed, 42 insertions(+), 3 deletions(-) diff --git a/ge/generator/ge_generator.cc b/ge/generator/ge_generator.cc index 156739b6..313e010a 100644 --- a/ge/generator/ge_generator.cc +++ b/ge/generator/ge_generator.cc @@ -844,9 +844,12 @@ Status GeGenerator::BuildSingleOpModel(OpDescPtr &op_desc, const vector &inputs: Operator input data description information. * @param [in] vector &outputs: Operator output data description information. * @param [in] engine_type: specific engine. + * @param [in] compile_flag: op build flag, compile flag by acl * @param [out] ModelBufferData &Model_buff: Model_buff: model buffer of the op. * @return SUCCESS handle successfully / others handle failed */ + +// old process will be deleted Status GeGenerator::BuildSingleOpModel(OpDescPtr &op_desc, const vector &inputs, const vector &outputs, OpEngineType engine_type, ModelBufferData &model_buff) { @@ -857,6 +860,12 @@ Status GeGenerator::BuildSingleOpModel(OpDescPtr &op_desc, const vector &inputs, + const vector &outputs, OpEngineType engine_type, int32_t compile_flag, + ModelBufferData &model_buff) { + return SUCCESS; +} + Status GeGenerator::BuildSingleOpGraph(OpDescPtr &op_desc, const vector &inputs, const vector &outputs, std::string graph_name, Graph &graph) { ge::ComputeGraphPtr compute_graph = MakeShared(graph_name); diff --git a/inc/external/ge/ge_api_types.h b/inc/external/ge/ge_api_types.h index e9166588..5ae5f036 100644 --- a/inc/external/ge/ge_api_types.h +++ b/inc/external/ge/ge_api_types.h @@ -110,6 +110,7 @@ const char *const SAVE_ORIGINAL_MODEL = "ge.saveOriginalModel"; const char *const ORIGINAL_MODEL_FILE = "ge.originalModelFile"; const char *const INPUT_FP16_NODES = "ge.INPUT_NODES_SET_FP16"; const char *const OP_DEBUG_LEVEL = "ge.opDebugLevel"; +const char *const PERFORMANCE_MODE = "ge.performance_mode"; } // namespace configure_option // Configure stream num by Session constructor options param, // its value should be int32_t type, default value is "1" @@ -314,6 +315,11 @@ const std::string HCOM_MULTI_MODE = "ge.hcomMultiMode"; // atc and ir option const char *const INPUT_SHAPE_RANGE = "input_shape_range"; +// Configure express high compile performance or high execute performance +// normal: no need to compile, used saved .o files directly +// high: need to recompile, high execute performance mode +const std::string PERFORMANCE_MODE = "ge.performance_mode"; + // Graph run mode enum GraphRunMode { PREDICTION = 0, TRAIN }; @@ -388,6 +394,7 @@ static const char *const MDL_BANK_PATH = ge::MDL_BANK_PATH_FLAG.c_str(); 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_DEBUG_LEVEL = ge::OP_DEBUG_LEVEL.c_str(); +static const char *const PERFORMANCE_MODE = ge::PERFORMANCE_MODE.c_str(); // for interface: aclgrphBuildModel #ifdef __GNUC__ @@ -412,7 +419,8 @@ const std::set ir_builder_suppported_options = {INPUT_FORMAT, OP_COMPILER_CACHE_MODE, MDL_BANK_PATH, OP_BANK_PATH, - OP_BANK_UPDATE}; + OP_BANK_UPDATE, + PERFORMANCE_MODE}; // for interface: aclgrphParse const std::set ir_parser_suppported_options = { diff --git a/inc/framework/common/ge_types.h b/inc/framework/common/ge_types.h index 0d996a67..b37574f7 100644 --- a/inc/framework/common/ge_types.h +++ b/inc/framework/common/ge_types.h @@ -67,8 +67,9 @@ struct DataBuffer { void *data; // Data address uint64_t length; // Data length bool isDataSupportMemShare = false; - DataBuffer(void *dataIn, uint64_t len, bool isSupportMemShare) - : data(dataIn), length(len), isDataSupportMemShare(isSupportMemShare) {} + uint32_t placement = 0; + DataBuffer(void *dataIn, uint64_t len, bool isSupportMemShare, uint32_t placement = 0) + : data(dataIn), length(len), isDataSupportMemShare(isSupportMemShare), placement(placement) {} DataBuffer() : data(nullptr), length(0), isDataSupportMemShare(false) {} }; diff --git a/inc/framework/generator/ge_generator.h b/inc/framework/generator/ge_generator.h index 505c7146..db3b2039 100644 --- a/inc/framework/generator/ge_generator.h +++ b/inc/framework/generator/ge_generator.h @@ -76,10 +76,13 @@ class GE_FUNC_VISIBILITY GeGenerator { /// @param [in] inputs: input tensors. /// @param [in] outputs: output tensors. /// @param [in] engine_type: engine type. + /// @param [in] compile_flag: op build flag, accurate build is 0, fuzz build is 1 /// @param [out] model_buff: model buff of op. /// @return SUCCESS or FAILED Status BuildSingleOpModel(OpDescPtr &op_desc, const vector &inputs, const vector &outputs, OpEngineType engine_type, ModelBufferData &model_buff); + Status BuildSingleOpModel(OpDescPtr &op_desc, const vector &inputs, const vector &outputs, + OpEngineType engine_type, int32_t compile_flag, ModelBufferData &model_buff); /// /// @ingroup ge /// @brief: Build single Op into model buff. diff --git a/tests/ut/ge/generator/ge_generator_unittest.cc b/tests/ut/ge/generator/ge_generator_unittest.cc index 7b087e94..3107248d 100644 --- a/tests/ut/ge/generator/ge_generator_unittest.cc +++ b/tests/ut/ge/generator/ge_generator_unittest.cc @@ -88,6 +88,24 @@ TEST_F(UtestGeGenerator, test_build_single_op_online) { EXPECT_EQ(generator.BuildSingleOpModel(op_desc, inputs, outputs, ENGINE_AIVECTOR, model_buffer), FAILED); } +TEST_F(UtestGeGenerator, test_singleop_fuzz_build) { + GeTensorDesc tensor_desc; + shared_ptr op_desc = make_shared("Add", "add"); + op_desc->AddInputDesc(tensor_desc); + op_desc->AddInputDesc(tensor_desc); + op_desc->AddOutputDesc(tensor_desc); + + GeTensor tensor(tensor_desc); + const vector inputs = { tensor, tensor }; + const vector outputs = { tensor }; + + GeGenerator generator; + generator.Initialize({}); + ModelBufferData model_buffer; + bool compile_flag = true; + EXPECT_EQ(generator.BuildSingleOpModel(op_desc, inputs, outputs, ENGINE_AIVECTOR, compile_flag, model_buffer), SUCCESS); +} + TEST_F(UtestGeGenerator, test_check_aicore) { GeGenerator generator; generator.Initialize({});