| @@ -104,7 +104,7 @@ Status TbeTaskBuilder::DoRegisterBinary(const OpKernelBin &kernel_bin, void **bi | |||||
| binary.version = 0; | binary.version = 0; | ||||
| binary.data = kernel_bin.GetBinData(); | binary.data = kernel_bin.GetBinData(); | ||||
| binary.length = kernel_bin.GetBinDataSize(); | binary.length = kernel_bin.GetBinDataSize(); | ||||
| binary.magic = param.core_type == 0 ? RT_DEV_BINARY_MAGIC_ELF : RT_DEV_BINARY_MAGIC_ELF_AIVEC; | |||||
| GE_CHK_STATUS_RET_NOLOG(GetMagic(binary.magic)); | |||||
| Status ret = 0; | Status ret = 0; | ||||
| if (task_def_.type() == RT_MODEL_TASK_ALL_KERNEL) { | if (task_def_.type() == RT_MODEL_TASK_ALL_KERNEL) { | ||||
| ret = rtRegisterAllKernel(&binary, bin_handle); | ret = rtRegisterAllKernel(&binary, bin_handle); | ||||
| @@ -416,4 +416,27 @@ Status TbeTaskBuilder::InitTilingInfo(TbeOpTask &task) { | |||||
| task.EnableDynamicSupport(node_, tiling_buffer, static_cast<uint32_t>(max_size)); | task.EnableDynamicSupport(node_, tiling_buffer, static_cast<uint32_t>(max_size)); | ||||
| return SUCCESS; | return SUCCESS; | ||||
| } | } | ||||
| Status TbeTaskBuilder::GetMagic(uint32_t &magic) const { | |||||
| std::string json_string; | |||||
| GE_IF_BOOL_EXEC(AttrUtils::GetStr(op_desc_, TVM_ATTR_NAME_MAGIC, json_string), | |||||
| GELOGD("Get original type of session_graph_id.")); | |||||
| if (json_string == "RT_DEV_BINARY_MAGIC_ELF") { | |||||
| magic = RT_DEV_BINARY_MAGIC_ELF; | |||||
| } else if (json_string == "RT_DEV_BINARY_MAGIC_ELF_AIVEC") { | |||||
| magic = RT_DEV_BINARY_MAGIC_ELF_AIVEC; | |||||
| } else if (json_string == "RT_DEV_BINARY_MAGIC_ELF_AICUBE") { | |||||
| magic = RT_DEV_BINARY_MAGIC_ELF_AICUBE; | |||||
| } else { | |||||
| REPORT_INNER_ERROR("E19999", "Attr:%s in op:%s(%s), value:%s check invalid", | |||||
| TVM_ATTR_NAME_MAGIC.c_str(), op_desc_->GetName().c_str(), | |||||
| op_desc_->GetType().c_str(), json_string.c_str()); | |||||
| GELOGE(PARAM_INVALID, "[Check][Param] Attr:%s in op:%s(%s), value:%s check invalid", | |||||
| TVM_ATTR_NAME_MAGIC.c_str(), op_desc_->GetName().c_str(), | |||||
| op_desc_->GetType().c_str(), json_string.c_str()); | |||||
| return PARAM_INVALID; | |||||
| } | |||||
| return SUCCESS; | |||||
| } | |||||
| } // namespace ge | } // namespace ge | ||||
| @@ -105,6 +105,7 @@ class TbeTaskBuilder { | |||||
| const SingleOpModelParam ¶m); | const SingleOpModelParam ¶m); | ||||
| Status DoRegisterBinary(const OpKernelBin &kernel_bin, void **bin_handle, const SingleOpModelParam ¶m) const; | Status DoRegisterBinary(const OpKernelBin &kernel_bin, void **bin_handle, const SingleOpModelParam ¶m) const; | ||||
| Status DoRegisterMeta(void *bin_handle); | Status DoRegisterMeta(void *bin_handle); | ||||
| Status GetMagic(uint32_t &magic) const; | |||||
| static Status DoRegisterFunction(void *bin_handle, const char *stub_name, const char *kernel_name); | static Status DoRegisterFunction(void *bin_handle, const char *stub_name, const char *kernel_name); | ||||
| @@ -153,6 +153,7 @@ TEST_F(UtestGeHybrid, task_update_tiling_info) { | |||||
| ge::AttrUtils::SetStr(op_desc, "compile_info_json", "json"); | ge::AttrUtils::SetStr(op_desc, "compile_info_json", "json"); | ||||
| ge::AttrUtils::SetBool(op_desc, "support_dynamicshape", true); | ge::AttrUtils::SetBool(op_desc, "support_dynamicshape", true); | ||||
| ge::AttrUtils::SetInt(op_desc, "op_para_size", 1); | ge::AttrUtils::SetInt(op_desc, "op_para_size", 1); | ||||
| ge::AttrUtils::SetStr(op_desc, TVM_ATTR_NAME_MAGIC, "RT_DEV_BINARY_MAGIC_ELF"); | |||||
| auto node = graph->AddNode(op_desc); | auto node = graph->AddNode(op_desc); | ||||
| std::unique_ptr<NodeItem> node_item; | std::unique_ptr<NodeItem> node_item; | ||||
| @@ -338,6 +338,7 @@ TEST_F(UtestSingleOpModel, build_dynamic_task) { | |||||
| DynamicSingleOp single_op(0, &stream_mu, stream); | DynamicSingleOp single_op(0, &stream_mu, stream); | ||||
| model.model_helper_.model_ = ge_model; | model.model_helper_.model_ = ge_model; | ||||
| auto op_desc = std::make_shared<ge::OpDesc>("add", "Add"); | auto op_desc = std::make_shared<ge::OpDesc>("add", "Add"); | ||||
| AttrUtils::SetStr(op_desc, TVM_ATTR_NAME_MAGIC, "RT_DEV_BINARY_MAGIC_ELF"); | |||||
| std::vector<char> kernelBin; | std::vector<char> kernelBin; | ||||
| TBEKernelPtr tbe_kernel = std::make_shared<ge::OpKernelBin>("name/Add", std::move(kernelBin)); | TBEKernelPtr tbe_kernel = std::make_shared<ge::OpKernelBin>("name/Add", std::move(kernelBin)); | ||||
| op_desc->SetExtAttr(ge::OP_EXTATTR_NAME_TBE_KERNEL, tbe_kernel); | op_desc->SetExtAttr(ge::OP_EXTATTR_NAME_TBE_KERNEL, tbe_kernel); | ||||
| @@ -54,6 +54,7 @@ TEST_F(UtestSingleOpTask, test_build_kernel_task) { | |||||
| auto graph = make_shared<ComputeGraph>("graph"); | auto graph = make_shared<ComputeGraph>("graph"); | ||||
| auto op_desc = make_shared<OpDesc>("Add", "Add"); | auto op_desc = make_shared<OpDesc>("Add", "Add"); | ||||
| AttrUtils::SetStr(op_desc, TVM_ATTR_NAME_MAGIC, "RT_DEV_BINARY_MAGIC_ELF"); | |||||
| std::vector<char> kernelBin; | std::vector<char> kernelBin; | ||||
| TBEKernelPtr tbe_kernel = std::make_shared<ge::OpKernelBin>("name/Add", std::move(kernelBin)); | TBEKernelPtr tbe_kernel = std::make_shared<ge::OpKernelBin>("name/Add", std::move(kernelBin)); | ||||
| op_desc->SetExtAttr(ge::OP_EXTATTR_NAME_TBE_KERNEL, tbe_kernel); | op_desc->SetExtAttr(ge::OP_EXTATTR_NAME_TBE_KERNEL, tbe_kernel); | ||||