|
|
|
@ -22,7 +22,7 @@ namespace ge {
|
|
|
|
|
constexpr uint8_t kGotoBranchMax = 1;
|
|
|
|
|
|
|
|
|
|
LabelGotoExTaskInfo::~LabelGotoExTaskInfo() {
|
|
|
|
|
GE_FREE_RT_LOG(args_);
|
|
|
|
|
args_ = nullptr;
|
|
|
|
|
GE_FREE_RT_LOG(index_value_);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -49,30 +49,12 @@ Status LabelGotoExTaskInfo::Init(const domi::TaskDef &task_def, DavinciModel *da
|
|
|
|
|
return INTERNAL_ERROR;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const vector<rtLabel_t> &label_list = davinci_model->GetLabelList();
|
|
|
|
|
if (label_index >= label_list.size()) {
|
|
|
|
|
GELOGE(PARAM_INVALID, "LabelGotoExTaskInfo: Invalid label id:%u, label size:%zu", label_index, label_list.size());
|
|
|
|
|
return INTERNAL_ERROR;
|
|
|
|
|
}
|
|
|
|
|
GE_CHECK_NOTNULL(label_list[label_index]);
|
|
|
|
|
vector<rtLabel_t> label_used = { label_list[label_index] };
|
|
|
|
|
|
|
|
|
|
rtMemType_t memory_type = op_desc->HasAttr(ATTR_NAME_MEMORY_TYPE_RANGE) ? RT_MEMORY_TS_4G : RT_MEMORY_HBM;
|
|
|
|
|
GELOGI("memory_type: %u", memory_type);
|
|
|
|
|
args_size_ = kGotoBranchMax * sizeof(rtLabelDevInfo);
|
|
|
|
|
rtError_t rt_ret = rtMalloc(&args_, args_size_, memory_type);
|
|
|
|
|
if (rt_ret != RT_ERROR_NONE) {
|
|
|
|
|
GELOGE(RT_FAILED, "Call rtMalloc failed, error: %#x", rt_ret);
|
|
|
|
|
return RT_ERROR_TO_GE_STATUS(rt_ret);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
rt_ret = rtLabelListCpy(label_used.data(), label_used.size(), args_, args_size_);
|
|
|
|
|
if (rt_ret != RT_ERROR_NONE) {
|
|
|
|
|
GELOGE(RT_FAILED, "Call rtLabelListCpy failed, error: %#x", rt_ret);
|
|
|
|
|
return RT_ERROR_TO_GE_STATUS(rt_ret);
|
|
|
|
|
}
|
|
|
|
|
GE_CHK_STATUS_RET_NOLOG(davinci_model->GetLabelGotoAddr(label_index, memory_type, args_, args_size_));
|
|
|
|
|
|
|
|
|
|
rt_ret = rtMalloc(&index_value_, sizeof(uint64_t), memory_type);
|
|
|
|
|
rtError_t rt_ret = rtMalloc(&index_value_, sizeof(uint64_t), memory_type);
|
|
|
|
|
if (rt_ret != RT_ERROR_NONE) {
|
|
|
|
|
GELOGE(RT_FAILED, "Call rtMalloc failed, error: %#x", rt_ret);
|
|
|
|
|
return RT_ERROR_TO_GE_STATUS(rt_ret);
|
|
|
|
@ -85,7 +67,7 @@ Status LabelGotoExTaskInfo::Init(const domi::TaskDef &task_def, DavinciModel *da
|
|
|
|
|
return RT_ERROR_TO_GE_STATUS(rt_ret);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
GELOGI("LabelGotoExTaskInfo Init Success, label id:%u, label:%p.", label_index, label_list[label_index]);
|
|
|
|
|
GELOGI("LabelGotoExTaskInfo Init Success, label id:%u", label_index);
|
|
|
|
|
return SUCCESS;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|