|
|
@@ -17,12 +17,13 @@ |
|
|
|
#include "single_op/task/aicpu_kernel_task_builder.h" |
|
|
|
#include "framework/common/taskdown_common.h" |
|
|
|
#include "graph/load/new_model_manager/model_manager.h" |
|
|
|
#include "build_task_utils.h" |
|
|
|
|
|
|
|
namespace ge { |
|
|
|
AiCpuCCTaskBuilder::AiCpuCCTaskBuilder(const OpDescPtr &op_desc, const domi::KernelDef &kernel_def) |
|
|
|
: op_desc_(op_desc), kernel_def_(kernel_def) {} |
|
|
|
|
|
|
|
Status AiCpuCCTaskBuilder::SetKernelArgs(AiCpuCCTask &task) { |
|
|
|
Status AiCpuCCTaskBuilder::SetKernelArgs(AiCpuCCTask &task, const SingleOpModelParam ¶m) { |
|
|
|
size_t aicpu_arg_size = kernel_def_.args_size(); |
|
|
|
if (aicpu_arg_size <= sizeof(aicpu::AicpuParamHead)) { |
|
|
|
GELOGE(ACL_ERROR_GE_PARAM_INVALID, "aicpu_arg_size is invalid, value = %zu", aicpu_arg_size); |
|
|
@@ -47,11 +48,17 @@ Status AiCpuCCTaskBuilder::SetKernelArgs(AiCpuCCTask &task) { |
|
|
|
|
|
|
|
task.SetIoAddr(reinterpret_cast<uintptr_t *>(aicpu_args.get() + sizeof(aicpu::AicpuParamHead))); |
|
|
|
task.SetKernelArgs(std::move(aicpu_args), aicpu_arg_size); |
|
|
|
|
|
|
|
auto addresses = BuildTaskUtils::GetKernelArgs(op_desc_, param); |
|
|
|
GE_CHECK_GE(addresses.size(), task.io_addr_num_); |
|
|
|
for (size_t i = 0; i < task.io_addr_num_; ++i) { |
|
|
|
task.io_addr_[i] = reinterpret_cast<uintptr_t>(addresses[i]); |
|
|
|
} |
|
|
|
return SUCCESS; |
|
|
|
} |
|
|
|
|
|
|
|
Status AiCpuCCTaskBuilder::BuildTask(AiCpuCCTask &task, uint64_t kernel_id) { |
|
|
|
auto ret = SetKernelArgs(task); |
|
|
|
Status AiCpuCCTaskBuilder::BuildTask(AiCpuCCTask &task, uint64_t kernel_id, const SingleOpModelParam ¶m) { |
|
|
|
auto ret = SetKernelArgs(task, param); |
|
|
|
if (ret != SUCCESS) { |
|
|
|
return ret; |
|
|
|
} |
|
|
|