|
|
|
@ -37,7 +37,9 @@ AiCoreTaskBuilder::AiCoreTaskBuilder(const OpDescPtr &op_desc, const std::vector
|
|
|
|
|
: op_desc_(op_desc), task_defs_(task_defs) {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Status AiCoreTaskBuilder::BuildTask(std::unique_ptr<NodeTask> &node_task, bool ignore_failure_on_atomic) {
|
|
|
|
|
Status AiCoreTaskBuilder::BuildTask(std::unique_ptr<NodeTask> &node_task,
|
|
|
|
|
bool ignore_failure_on_atomic,
|
|
|
|
|
bool is_single_op) {
|
|
|
|
|
GE_CHECK_NOTNULL(op_desc_);
|
|
|
|
|
if (task_defs_.size() > kNumTaskWithAtomicAddrCleanTask) {
|
|
|
|
|
GELOGE(INTERNAL_ERROR,
|
|
|
|
@ -68,6 +70,7 @@ Status AiCoreTaskBuilder::BuildTask(std::unique_ptr<NodeTask> &node_task, bool i
|
|
|
|
|
auto atomic_task =
|
|
|
|
|
std::unique_ptr<AtomicAddrCleanOpTask>(new(std::nothrow)AtomicAddrCleanOpTask());
|
|
|
|
|
GE_CHECK_NOTNULL(atomic_task);
|
|
|
|
|
atomic_task->SetSingleOp(is_single_op);
|
|
|
|
|
GE_CHK_STATUS_RET(atomic_task->Init(*op_desc_, task_defs_.front()),
|
|
|
|
|
"[%s] Failed to init task for AtomicAddrClean",
|
|
|
|
|
op_desc_->GetName().c_str());
|
|
|
|
@ -77,6 +80,7 @@ Status AiCoreTaskBuilder::BuildTask(std::unique_ptr<NodeTask> &node_task, bool i
|
|
|
|
|
// build aicore task
|
|
|
|
|
auto aicore_task = std::unique_ptr<AiCoreOpTask>(new(std::nothrow)AiCoreOpTask());
|
|
|
|
|
GE_CHECK_NOTNULL(aicore_task);
|
|
|
|
|
aicore_task->SetSingleOp(is_single_op);
|
|
|
|
|
GE_CHK_STATUS_RET(aicore_task->Init(*op_desc_, task_defs_.back()),
|
|
|
|
|
"[%s] Failed to init task for AtomicAddrClean",
|
|
|
|
|
op_desc_->GetName().c_str());
|
|
|
|
|