Feature: handle model_exit bug

pull/340/head
l00444296 4 years ago
parent c9330df073
commit 957b435f16

@ -2804,9 +2804,14 @@ void *DavinciModel::Run(DavinciModel *model) {
GELOGI("rtStreamSynchronize start."); GELOGI("rtStreamSynchronize start.");
rt_ret = rtStreamSynchronize(model->rt_model_stream_); rt_ret = rtStreamSynchronize(model->rt_model_stream_);
if (rt_ret == RT_ERROR_MODEL_ABORT_NORMAL) {
GELOGW("rtStreamSynchronize get result : RT_ERROR_MODEL_ABORT_NORMAL, abort model normal");
} else {
GE_IF_BOOL_EXEC(rt_ret != RT_ERROR_NONE, rslt_flg = false; GE_IF_BOOL_EXEC(rt_ret != RT_ERROR_NONE, rslt_flg = false;
(void)model->ReturnResult(current_data.index, false, seq_end_flag, data_wrapper->GetOutput()); (void)model->ReturnResult(current_data.index, false, seq_end_flag, data_wrapper->GetOutput());
continue); // [No need to check value] continue); // [No need to check value]
}
GELOGI("rtStreamSynchronize end."); GELOGI("rtStreamSynchronize end.");
(void)ProfilingManager::Instance().StopProfiling(); // just profiling, no need to check value (void)ProfilingManager::Instance().StopProfiling(); // just profiling, no need to check value
} }
@ -2827,12 +2832,17 @@ void *DavinciModel::Run(DavinciModel *model) {
if (rt_ret == kEndOfSequence || rt_ret == kEndOfSequenceNew) { if (rt_ret == kEndOfSequence || rt_ret == kEndOfSequenceNew) {
seq_end_flag = true; seq_end_flag = true;
} }
if (rt_ret == RT_ERROR_MODEL_ABORT_NORMAL) {
GELOGW("rtStreamSynchronize get result : RT_ERROR_MODEL_ABORT_NORMAL, abort model normal");
} else {
GE_IF_BOOL_EXEC( GE_IF_BOOL_EXEC(
rt_ret != RT_ERROR_NONE, rslt_flg = false; GELOGI("seq_end_flg: %d", seq_end_flag); rt_ret != RT_ERROR_NONE, rslt_flg = false; GELOGI("seq_end_flg: %d", seq_end_flag);
(void)model->ReturnResult(current_data.index, false, seq_end_flag, (void)model->ReturnResult(current_data.index, false, seq_end_flag,
data_wrapper->GetOutput()); // [No need to check value] data_wrapper->GetOutput()); // [No need to check value]
CsaInteract::GetInstance().StoreInternalErrorCode(rt_ret, ERROR_MODULE_RUNTIME, JOBSUBSTATE_GRAPH_EXEC); CsaInteract::GetInstance().StoreInternalErrorCode(rt_ret, ERROR_MODULE_RUNTIME, JOBSUBSTATE_GRAPH_EXEC);
continue); continue);
}
GELOGI("rtStreamSynchronize end."); GELOGI("rtStreamSynchronize end.");
GE_IF_BOOL_EXEC(model->is_first_execute_, GE_IF_BOOL_EXEC(model->is_first_execute_,
GE_TIMESTAMP_EVENT_END(rtStreamSynchronize, "GraphExcute::Wait for rtStreamSynchronize")); GE_TIMESTAMP_EVENT_END(rtStreamSynchronize, "GraphExcute::Wait for rtStreamSynchronize"));

@ -357,8 +357,8 @@ Status FlowCtrlPass::CreateIterCtrlFalseBranch(ComputeGraphPtr &compute_graph, c
return FAILED; return FAILED;
} }
GE_CHK_STATUS_RET(SetStreamLabel(active_node, switch_node->GetName()), "set stream label failed"); GE_CHK_STATUS_RET(SetStreamLabel(active_node, switch_node->GetName()), "set stream label failed");
GE_IF_BOOL_EXEC(!AttrUtils::SetBool(active_node->GetOpDesc(), ATTR_NAME_IS_LOOP_ACTIVE, true), GE_CHK_STATUS_RET(SetSwitchBranchNodeLabel(active_node, switch_node->GetName()),
DOMI_LOGE("set ATTR_NAME_IS_LOOP_ACTIVE failed"); return FAILED); "set switch branch node label failed");
string model_exit_name = switch_node->GetName() + "_ModelExit"; string model_exit_name = switch_node->GetName() + "_ModelExit";
GE_CHK_STATUS_RET(SetActiveLabelList(active_node, { model_exit_name }), "set active label list failed"); GE_CHK_STATUS_RET(SetActiveLabelList(active_node, { model_exit_name }), "set active label list failed");

@ -103,6 +103,7 @@ typedef enum tagRtError {
RT_ERROR_MODEL_EXIT, RT_ERROR_MODEL_EXIT,
RT_ERROR_MODEL_EXIT_STREAM_UNBIND, RT_ERROR_MODEL_EXIT_STREAM_UNBIND,
RT_ERROR_MODEL_EXIT_ID, RT_ERROR_MODEL_EXIT_ID,
RT_ERROR_MODEL_ABORT_NORMAL,
RT_ERROR_EVENT_BASE = 0x07050000, RT_ERROR_EVENT_BASE = 0x07050000,
RT_ERROR_EVENT_NULL, RT_ERROR_EVENT_NULL,

Loading…
Cancel
Save