From: @HW_KK Reviewed-by: @ji_chen,@wqtshg Signed-off-by: @ji_chentags/v1.3.0
| @@ -341,11 +341,7 @@ Status ModelManager::LoadModelOnline(uint32_t &model_id, const shared_ptr<ge::Ge | |||||
| mmTimespec timespec = mmGetTickCount(); | mmTimespec timespec = mmGetTickCount(); | ||||
| std::shared_ptr<DavinciModel> davinci_model = MakeShared<DavinciModel>(0, listener); | std::shared_ptr<DavinciModel> davinci_model = MakeShared<DavinciModel>(0, listener); | ||||
| if (davinci_model == nullptr) { | |||||
| REPORT_CALL_ERROR("E19999", "New DavinciModel fail, model_id:%u", model_id); | |||||
| GELOGE(FAILED, "davinci_model is nullptr"); | |||||
| return FAILED; | |||||
| } | |||||
| GE_CHECK_NOTNULL(davinci_model); | |||||
| davinci_model->SetProfileTime(MODEL_LOAD_START, (timespec.tv_sec * kTimeSpecNano + | davinci_model->SetProfileTime(MODEL_LOAD_START, (timespec.tv_sec * kTimeSpecNano + | ||||
| timespec.tv_nsec)); // 1000 ^ 3 converts second to nanosecond | timespec.tv_nsec)); // 1000 ^ 3 converts second to nanosecond | ||||
| davinci_model->SetId(model_id); | davinci_model->SetId(model_id); | ||||
| @@ -125,6 +125,7 @@ const uint32_t kInitGraphCount = 1; | |||||
| const uint32_t kNotAdded = 0; | const uint32_t kNotAdded = 0; | ||||
| const uint32_t kStartAdd = 1; | const uint32_t kStartAdd = 1; | ||||
| const uint32_t kDoneAdded = 2; | const uint32_t kDoneAdded = 2; | ||||
| const uint32_t kNeverLoaded = 0; | |||||
| bool IsTailingOptimization() { | bool IsTailingOptimization() { | ||||
| string is_tailing_optimization_option; | string is_tailing_optimization_option; | ||||
| @@ -2748,6 +2749,15 @@ void GraphManager::ReleaseMemory(const GeModelPtr &ge_model, GraphNodePtr &graph | |||||
| GELOGI("CheckAndReleaseMemory UnloadGraph[%u], model[%u] success.", graph_id, model_id); | GELOGI("CheckAndReleaseMemory UnloadGraph[%u], model[%u] success.", graph_id, model_id); | ||||
| } | } | ||||
| graph_node->SetLoadFlag(false); | graph_node->SetLoadFlag(false); | ||||
| // Allow model to be loaded agagin without adding graph again | |||||
| graph_node->SetLoadCount(graph_node->GetLoadRecord()); | |||||
| graph_node->SetLoadRecord(kNeverLoaded); | |||||
| GeRootModelPtr ge_root_model = graph_node->GetGeRootModel(); | |||||
| if (ge_root_model == nullptr) { | |||||
| GELOGW("ge_root_model is null, graph_id:%u", graph_id); | |||||
| return; | |||||
| } | |||||
| ge_root_model->ClearAllModelId(); | |||||
| rt_ret = rtDeviceReset(GetContext().DeviceId()); | rt_ret = rtDeviceReset(GetContext().DeviceId()); | ||||
| if (rt_ret != RT_ERROR_NONE) { | if (rt_ret != RT_ERROR_NONE) { | ||||
| REPORT_CALL_ERROR("E19999", "Call rtDeviceReset failed, device_id:%u, when GraphManager %s", | REPORT_CALL_ERROR("E19999", "Call rtDeviceReset failed, device_id:%u, when GraphManager %s", | ||||
| @@ -178,9 +178,12 @@ class GraphNode { | |||||
| void SetSemSize(uint32_t size) { sem_.SetMaxSize(size); } | void SetSemSize(uint32_t size) { sem_.SetMaxSize(size); } | ||||
| uint32_t GetLoadCount() const { return load_count_; } | uint32_t GetLoadCount() const { return load_count_; } | ||||
| void SetLoadCount(uint32_t count) { load_count_ = count; } | |||||
| uint32_t GetLoadRecord() const { return load_record_; } | |||||
| void SetLoadRecord(uint32_t record) { load_record_ = record; } | |||||
| void IncreaseLoadRecord() { ++load_record_; } | |||||
| void IncreaseLoadCount(); | void IncreaseLoadCount(); | ||||
| void DecreaseLoadCount() { --load_count_; } | void DecreaseLoadCount() { --load_count_; } | ||||
| void IncreaseLoadRecord() { ++load_record_; } | |||||
| // run graph asynchronous listener | // run graph asynchronous listener | ||||
| std::shared_ptr<RunAsyncListener> graph_run_async_listener_; | std::shared_ptr<RunAsyncListener> graph_run_async_listener_; | ||||
| @@ -150,10 +150,8 @@ Status HybridModelAsyncExecutor::RunInternal() { | |||||
| Status ret = data_inputer_->Pop(data_wrapper); | Status ret = data_inputer_->Pop(data_wrapper); | ||||
| // Model indeedly start running | // Model indeedly start running | ||||
| SetRunningFlag(true); | SetRunningFlag(true); | ||||
| if (data_wrapper == nullptr || ret != SUCCESS) { | |||||
| GELOGI("data_wrapper is null!, ret = %u", ret); | |||||
| continue; | |||||
| } | |||||
| GE_IF_BOOL_EXEC(data_wrapper == nullptr || ret != SUCCESS, GELOGI("data_wrapper is null!, ret = %u", ret); | |||||
| continue); | |||||
| GELOGI("Getting the input data, model_id:%u", model_id_); | GELOGI("Getting the input data, model_id:%u", model_id_); | ||||
| GE_IF_BOOL_EXEC(!run_flag_, break); | GE_IF_BOOL_EXEC(!run_flag_, break); | ||||
| @@ -40,12 +40,14 @@ class GeRootModel { | |||||
| } | } | ||||
| uint32_t GetModelId() const { return model_id_; } | uint32_t GetModelId() const { return model_id_; } | ||||
| std::vector<uint32_t> GetAllModelId() const { return model_ids_; } | |||||
| void SetModelName(const std::string &model_name) { model_name_ = model_name; } | void SetModelName(const std::string &model_name) { model_name_ = model_name; } | ||||
| const std::string &GetModelName() const { return model_name_; } | const std::string &GetModelName() const { return model_name_; } | ||||
| std::vector<uint32_t> GetAllModelId() const { return model_ids_; } | |||||
| void ClearAllModelId() { model_ids_.clear(); } | |||||
| Status CheckIsUnknownShape(bool &is_dynamic_shape); | Status CheckIsUnknownShape(bool &is_dynamic_shape); | ||||
| void SetRootGraph(ComputeGraphPtr graph) { root_graph_ = graph; } | void SetRootGraph(ComputeGraphPtr graph) { root_graph_ = graph; } | ||||