| @@ -385,7 +385,7 @@ Status DataDumper::DumpRefOutput(const DataDumper::InnerDumpInfo &inner_dump_inf | |||
| Status DataDumper::DumpOutputWithTask(const InnerDumpInfo &inner_dump_info, aicpu::dump::Task &task) { | |||
| const auto &output_descs = inner_dump_info.op->GetAllOutputsDesc(); | |||
| const std::vector<void *> output_addrs = ModelUtils::GetOutputDataAddrs(runtime_param_, inner_dump_info.op); | |||
| const std::vector<void *> output_addrs = ModelUtils::GetOutputDataAddrs(*runtime_param_, inner_dump_info.op); | |||
| if (output_descs.size() != output_addrs.size()) { | |||
| GELOGE(PARAM_INVALID, "Invalid output desc addrs size %zu, op %s has %zu output desc.", output_addrs.size(), | |||
| inner_dump_info.op->GetName().c_str(), output_descs.size()); | |||
| @@ -436,7 +436,7 @@ Status DataDumper::DumpOutput(const InnerDumpInfo &inner_dump_info, aicpu::dump: | |||
| // else data, const or variable op | |||
| aicpu::dump::Output output; | |||
| auto output_tensor = inner_dump_info.op->GetOutputDescPtr(inner_dump_info.output_anchor_index); | |||
| const std::vector<void *> output_addrs = ModelUtils::GetOutputDataAddrs(runtime_param_, inner_dump_info.op); | |||
| const std::vector<void *> output_addrs = ModelUtils::GetOutputDataAddrs(*runtime_param_, inner_dump_info.op); | |||
| if (output_tensor == nullptr) { | |||
| GELOGE(PARAM_INVALID, "output_tensor is null, index: %d, size: %zu.", inner_dump_info.output_anchor_index, | |||
| inner_dump_info.op->GetOutputsSize()); | |||
| @@ -540,7 +540,7 @@ Status DataDumper::DumpRefInput(const DataDumper::InnerDumpInfo &inner_dump_info | |||
| Status DataDumper::DumpInput(const InnerDumpInfo &inner_dump_info, aicpu::dump::Task &task) { | |||
| GELOGI("Start dump input"); | |||
| const auto &input_descs = inner_dump_info.op->GetAllInputsDesc(); | |||
| const std::vector<void *> input_addrs = ModelUtils::GetInputDataAddrs(runtime_param_, inner_dump_info.op); | |||
| const std::vector<void *> input_addrs = ModelUtils::GetInputDataAddrs(*runtime_param_, inner_dump_info.op); | |||
| if (input_descs.size() != input_addrs.size()) { | |||
| GELOGE(PARAM_INVALID, "Invalid input desc addrs size %zu, op %s has %zu input desc.", input_addrs.size(), | |||
| inner_dump_info.op->GetName().c_str(), input_descs.size()); | |||
| @@ -36,9 +36,21 @@ | |||
| namespace ge { | |||
| class DataDumper { | |||
| public: | |||
| DataDumper() : runtime_param_{} {} | |||
| explicit DataDumper(const RuntimeParam &rsh) : runtime_param_(rsh) {} | |||
| explicit DataDumper(RuntimeParam *rsh) | |||
| : model_name_(), | |||
| model_id_(0), | |||
| runtime_param_(rsh), | |||
| dev_mem_load_(nullptr), | |||
| dev_mem_unload_(nullptr), | |||
| op_list_(), | |||
| input_map_(), | |||
| load_flag_(false), | |||
| device_id_(0), | |||
| global_step_(0), | |||
| loop_per_iter_(0), | |||
| loop_cond_(0), | |||
| compute_graph_(nullptr), | |||
| ref_info_() {} | |||
| ~DataDumper(); | |||
| @@ -93,10 +105,10 @@ class DataDumper { | |||
| // for inference data dump | |||
| std::string om_name_; | |||
| uint32_t model_id_ = 0; | |||
| const RuntimeParam &runtime_param_; | |||
| void *dev_mem_load_ = nullptr; | |||
| void *dev_mem_unload_ = nullptr; | |||
| uint32_t model_id_; | |||
| RuntimeParam *runtime_param_; | |||
| void *dev_mem_load_; | |||
| void *dev_mem_unload_; | |||
| struct InnerDumpInfo; | |||
| struct InnerInputMapping; | |||
| @@ -107,12 +119,12 @@ class DataDumper { | |||
| uint32_t end_graph_stream_id_ = 0; | |||
| bool is_end_graph_ = false; | |||
| std::multimap<std::string, InnerInputMapping> input_map_; // release after DavinciModel::Init | |||
| bool load_flag_ = false; | |||
| uint32_t device_id_ = 0; | |||
| uintptr_t global_step_ = 0; | |||
| uintptr_t loop_per_iter_ = 0; | |||
| uintptr_t loop_cond_ = 0; | |||
| ComputeGraphPtr compute_graph_ = nullptr; // release after DavinciModel::Init | |||
| bool load_flag_; | |||
| uint32_t device_id_; | |||
| uintptr_t global_step_; | |||
| uintptr_t loop_per_iter_; | |||
| uintptr_t loop_cond_; | |||
| ComputeGraphPtr compute_graph_; // release after DavinciModel::Init | |||
| std::map<OpDescPtr, void *> ref_info_; // release after DavinciModel::Init | |||
| void *l1_fusion_addr_ = nullptr; | |||
| @@ -184,7 +184,7 @@ DavinciModel::DavinciModel(int32_t priority, const std::shared_ptr<ModelListener | |||
| last_execute_mode_(INITIALIZATION), | |||
| session_id_(0), | |||
| device_id_(0), | |||
| maxDumpOpNum_(0), data_dumper_(runtime_param_), | |||
| maxDumpOpNum_(0), data_dumper_(&runtime_param_), | |||
| iterator_count_(0), | |||
| is_l1_fusion_enable_(false), | |||
| is_first_execute_(true) { | |||
| @@ -654,12 +654,12 @@ Status DavinciModel::Init(void *dev_ptr, size_t mem_size, void *weight_ptr, size | |||
| runtime_param_.graph_id = compute_graph->GetGraphID(); | |||
| // op debug register | |||
| GE_CHK_STATUS_RET(OpDebugRegister(), "OpDebugRegister failed."); | |||
| GE_CHK_STATUS_RET(OpDebugRegister(), "OpDebugRegister failed"); | |||
| GE_TIMESTAMP_START(TransAllVarData); | |||
| GE_CHK_STATUS_RET(TransAllVarData(compute_graph, runtime_param_.graph_id), "TransAllVarData failed."); | |||
| GE_CHK_STATUS_RET(TransAllVarData(compute_graph, runtime_param_.graph_id), "TransAllVarData failed"); | |||
| GE_TIMESTAMP_END(TransAllVarData, "GraphLoader::TransAllVarData"); | |||
| GE_CHK_STATUS_RET(TransVarDataUtils::CopyVarData(compute_graph, session_id_, device_id_), "copy var data failed."); | |||
| GE_CHK_STATUS_RET(TransVarDataUtils::CopyVarData(compute_graph, session_id_, device_id_), "copy var data failed"); | |||
| GE_TIMESTAMP_START(InitModelMem); | |||
| GELOGD("Known node is %d.", known_node_); | |||
| @@ -667,7 +667,7 @@ Status DavinciModel::Init(void *dev_ptr, size_t mem_size, void *weight_ptr, size | |||
| if (!known_node_) { | |||
| GE_CHK_STATUS_RET_NOLOG(InitFeatureMapAndP2PMem(dev_ptr, mem_size)); | |||
| data_inputer_ = new (std::nothrow) DataInputer(); | |||
| GE_CHK_BOOL_RET_STATUS(data_inputer_ != nullptr, MEMALLOC_FAILED, "data_inputer_ is nullptr."); | |||
| GE_CHK_BOOL_RET_STATUS(data_inputer_ != nullptr, MEMALLOC_FAILED, "data_inputer_ is nullptr"); | |||
| } | |||
| fixed_mem_base_ = reinterpret_cast<uintptr_t>(mem_base_); | |||
| GE_TIMESTAMP_END(InitModelMem, "GraphLoader::InitModelMem"); | |||
| @@ -29,7 +29,7 @@ const size_t kMinimumPiplineStages = 2; | |||
| const int kDefaultLoopCount = 10; | |||
| } | |||
| HybridModelAsyncExecutor::HybridModelAsyncExecutor(HybridModel *model) | |||
| : model_(model), run_flag_(false) { | |||
| : model_(model), run_flag_(false), data_dumper_(nullptr) { | |||
| } | |||
| HybridModelAsyncExecutor::~HybridModelAsyncExecutor() { | |||
| @@ -31,7 +31,7 @@ TEST_F(UTEST_opdebug_register, register_debug_for_model_success) { | |||
| OpdebugRegister opdebug_register; | |||
| rtModel_t model_handle = (void*)0x111; | |||
| uint32_t op_debug_mode = 1; | |||
| DataDumper data_dumper; | |||
| DataDumper data_dumper({}); | |||
| auto ret = opdebug_register.RegisterDebugForModel(model_handle, op_debug_mode, data_dumper); | |||
| opdebug_register.UnregisterDebugForModel(model_handle); | |||
| EXPECT_EQ(ret, ge::SUCCESS); | |||
| @@ -41,7 +41,7 @@ TEST_F(UTEST_opdebug_register, register_debug_for_stream_success) { | |||
| OpdebugRegister opdebug_register; | |||
| rtStream_t stream = (void*)0x111; | |||
| uint32_t op_debug_mode = 1; | |||
| DataDumper data_dumper; | |||
| DataDumper data_dumper({}); | |||
| auto ret = opdebug_register.RegisterDebugForStream(stream, op_debug_mode, data_dumper); | |||
| opdebug_register.UnregisterDebugForStream(stream); | |||
| EXPECT_EQ(ret, ge::SUCCESS); | |||
| @@ -56,7 +56,7 @@ TEST_F(UtestDataDumper, LoadDumpInfo_no_output_addrs_fail) { | |||
| TEST_F(UtestDataDumper, UnloadDumpInfo_success) { | |||
| RuntimeParam rts_param; | |||
| DataDumper data_dumper(rts_param); | |||
| DataDumper data_dumper(&rts_param); | |||
| data_dumper.SetModelName("test"); | |||
| data_dumper.SetModelId(2333); | |||