|
@@ -41,6 +41,7 @@ using std::vector; |
|
|
namespace ge { |
|
|
namespace ge { |
|
|
namespace { |
|
|
namespace { |
|
|
const size_t kDataOutputNum = 1; |
|
|
const size_t kDataOutputNum = 1; |
|
|
|
|
|
const uint32_t kDefaultBlockDim = 1; |
|
|
} // namespace |
|
|
} // namespace |
|
|
SingleOpModel::SingleOpModel(const std::string &model_name, const void *model_data, uint32_t model_size) |
|
|
SingleOpModel::SingleOpModel(const std::string &model_name, const void *model_data, uint32_t model_size) |
|
|
: model_name_(model_name), ori_model_data_(model_data), ori_model_size_(model_size) {} |
|
|
: model_name_(model_name), ori_model_data_(model_data), ori_model_size_(model_size) {} |
|
@@ -253,6 +254,7 @@ Status SingleOpModel::BuildTaskList(SingleOp &single_op) { |
|
|
ParseArgTable(tbe_task, single_op); |
|
|
ParseArgTable(tbe_task, single_op); |
|
|
single_op.tasks_.emplace_back(tbe_task); |
|
|
single_op.tasks_.emplace_back(tbe_task); |
|
|
single_op.op_name_.emplace_back(tbe_op_name); |
|
|
single_op.op_name_.emplace_back(tbe_op_name); |
|
|
|
|
|
single_op.block_dim_.emplace_back(kernel_def.block_dim()); |
|
|
} else if (kernel_type == cce::ccKernelType::AI_CPU || kernel_type == cce::ccKernelType::CUST_AI_CPU) { |
|
|
} else if (kernel_type == cce::ccKernelType::AI_CPU || kernel_type == cce::ccKernelType::CUST_AI_CPU) { |
|
|
GELOGD("Building AICPU_CC task"); |
|
|
GELOGD("Building AICPU_CC task"); |
|
|
OpTask *task = nullptr; |
|
|
OpTask *task = nullptr; |
|
@@ -265,6 +267,7 @@ Status SingleOpModel::BuildTaskList(SingleOp &single_op) { |
|
|
string aicpu_op_name = op_list_[context.op_index()]->GetName(); |
|
|
string aicpu_op_name = op_list_[context.op_index()]->GetName(); |
|
|
single_op.tasks_.emplace_back(task); |
|
|
single_op.tasks_.emplace_back(task); |
|
|
single_op.op_name_.emplace_back(aicpu_op_name); |
|
|
single_op.op_name_.emplace_back(aicpu_op_name); |
|
|
|
|
|
single_op.block_dim_.emplace_back(kernel_def.block_dim()); |
|
|
} else { |
|
|
} else { |
|
|
GELOGE(ACL_ERROR_GE_OP_KERNEL_TYPE_INVALID, "Only TBE, AI_CPU, CUST_AI_CPU kernel are supported, but got %u", context.kernel_type()); |
|
|
GELOGE(ACL_ERROR_GE_OP_KERNEL_TYPE_INVALID, "Only TBE, AI_CPU, CUST_AI_CPU kernel are supported, but got %u", context.kernel_type()); |
|
|
return ACL_ERROR_GE_OP_KERNEL_TYPE_INVALID; |
|
|
return ACL_ERROR_GE_OP_KERNEL_TYPE_INVALID; |
|
@@ -282,6 +285,7 @@ Status SingleOpModel::BuildTaskList(SingleOp &single_op) { |
|
|
string op_name = op_list_[task_def.kernel_ex().op_index()]->GetName(); |
|
|
string op_name = op_list_[task_def.kernel_ex().op_index()]->GetName(); |
|
|
single_op.tasks_.emplace_back(aicpu_task); |
|
|
single_op.tasks_.emplace_back(aicpu_task); |
|
|
single_op.op_name_.emplace_back(op_name); |
|
|
single_op.op_name_.emplace_back(op_name); |
|
|
|
|
|
single_op.block_dim_.emplace_back(kDefaultBlockDim); |
|
|
} else { |
|
|
} else { |
|
|
// skip |
|
|
// skip |
|
|
GELOGD("Skip task type: %d", static_cast<int>(task_type)); |
|
|
GELOGD("Skip task type: %d", static_cast<int>(task_type)); |
|
@@ -403,6 +407,7 @@ Status SingleOpModel::BuildModelTaskKernel(const TaskDef &task_def, DynamicSingl |
|
|
GE_CHK_STATUS_RET_NOLOG(BuildKernelTask(task_def.kernel(), &tbe_task)); |
|
|
GE_CHK_STATUS_RET_NOLOG(BuildKernelTask(task_def.kernel(), &tbe_task)); |
|
|
string te_op_name = op_list_[context.op_index()]->GetName(); |
|
|
string te_op_name = op_list_[context.op_index()]->GetName(); |
|
|
single_op.op_name_ = te_op_name; |
|
|
single_op.op_name_ = te_op_name; |
|
|
|
|
|
single_op.block_dim_ = kernel_def.block_dim(); |
|
|
single_op.op_task_.reset(tbe_task); |
|
|
single_op.op_task_.reset(tbe_task); |
|
|
} else if (kernel_type == cce::ccKernelType::AI_CPU || kernel_type == cce::ccKernelType::CUST_AI_CPU) { |
|
|
} else if (kernel_type == cce::ccKernelType::AI_CPU || kernel_type == cce::ccKernelType::CUST_AI_CPU) { |
|
|
GELOGD("Building AICPU_CC task"); |
|
|
GELOGD("Building AICPU_CC task"); |
|
@@ -412,6 +417,7 @@ Status SingleOpModel::BuildModelTaskKernel(const TaskDef &task_def, DynamicSingl |
|
|
GE_CHK_STATUS_RET_NOLOG(BuildCpuKernelTask(task_def.kernel(), &task, dynamic_singleop_kernel_id)); |
|
|
GE_CHK_STATUS_RET_NOLOG(BuildCpuKernelTask(task_def.kernel(), &task, dynamic_singleop_kernel_id)); |
|
|
string aicpu_op_name = op_list_[context.op_index()]->GetName(); |
|
|
string aicpu_op_name = op_list_[context.op_index()]->GetName(); |
|
|
single_op.op_name_ = aicpu_op_name; |
|
|
single_op.op_name_ = aicpu_op_name; |
|
|
|
|
|
single_op.block_dim_ = kernel_def.block_dim(); |
|
|
single_op.op_task_.reset(task); |
|
|
single_op.op_task_.reset(task); |
|
|
} else { |
|
|
} else { |
|
|
GELOGE(ACL_ERROR_GE_OP_KERNEL_TYPE_INVALID, |
|
|
GELOGE(ACL_ERROR_GE_OP_KERNEL_TYPE_INVALID, |
|
@@ -460,6 +466,7 @@ Status SingleOpModel::BuildTaskListForDynamicOp(DynamicSingleOp &single_op) { |
|
|
} |
|
|
} |
|
|
string op_name = op_list_[task_def.kernel_ex().op_index()]->GetName(); |
|
|
string op_name = op_list_[task_def.kernel_ex().op_index()]->GetName(); |
|
|
single_op.op_name_ = op_name; |
|
|
single_op.op_name_ = op_name; |
|
|
|
|
|
single_op.block_dim_ = kDefaultBlockDim; |
|
|
single_op.op_task_.reset(aicpu_task); |
|
|
single_op.op_task_.reset(aicpu_task); |
|
|
} else { |
|
|
} else { |
|
|
// skip |
|
|
// skip |
|
|