@@ -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); | ||||