* Copyright (c) 2025 Huawei Technologies Co., Ltd.
* This program is free software, you can redistribute it and/or modify it under the terms and conditions of
* CANN Open Software License Agreement Version 2.0 (the "License").
* Please refer to the License for details. You may not use this file except in compliance with the License.
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED,
* INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
* See LICENSE in the root of the software repository for the full text of the License.
*/
#ifndef __MAKE_OP_EXECUTOR_H__
#define __MAKE_OP_EXECUTOR_H__
#include <set>
#include "opdev/platform.h"
#include "opdev/op_arg_def.h"
#include "opdev/op_executor.h"
using namespace std;
#define CREATE_EXECUTOR() UniqueExecutor(__func__)
#define INFER_SHAPE(KERNEL_NAME, op_args...) \
({ aclnnStatus inferShapeRet; \
do {\
op::OpArgContext *opArgCtx = GetOpArgContext(op_args); \
if (opArgCtx == nullptr) { \
inferShapeRet = ACLNN_ERR_PARAM_NULLPTR; \
} else { \
inferShapeRet = InferShape(KERNEL_NAME##OpTypeId(), \
*opArgCtx->GetOpArg(op::OP_INPUT_ARG),\
*opArgCtx->GetOpArg(op::OP_OUTPUT_ARG),\
*opArgCtx->GetOpArg(op::OP_ATTR_ARG)); \
op::DestroyOpArgContext(opArgCtx); \
} \
} while(0); inferShapeRet; \
})
#define ADD_TO_LAUNCHER_LIST_AICORE(KERNEL_NAME, op_args...) ACLNN_SUCCESS
// aclnnStatus addToLaunchRet = ACLNN_SUCCESS; \
// do { \
// std::cout << "ADD_TO_LAUNCHER_LIST_AICORE mock" << std::endl \
//// std::string ut_skip_precision = "false"; \
//// const char *ut_p = std::getenv("UT_SKIP_PRECISION"); \
//// if (ut_p != nullptr) { \
//// ut_skip_precision.assign(ut_p); \
//// } \
//// if (ut_skip_precision.compare("true") == 0 || ut_skip_precision.compare("1") == 0) { \
//// addToLaunchRet = 0; \
//// } else { \
//// op::OpArgContext *opArgCtx = GetOpArgContext(op_args); \
//// addToLaunchRet = CreatAiCoreKernelLauncher(#KERNEL_NAME, KERNEL_NAME##OpTypeId(),\
//// executor, opArgCtx); \
//// }
// })
#define ADD_TO_LAUNCHER_LIST_DSA(KERNEL_NAME, op_args...) \
do { \
op::OpArgContext *opArgCtx = GetOpArgContext(op_args); \
CreatDSAKernelLauncher(#KERNEL_NAME, KERNEL_NAME##OpTypeId(), KERNEL_NAME##TaskType,\
executor, opArgCtx); \
} while(0)
#endif