Browse Source

upgrade Ascend software package 10 Aug 22

pull/2131/head
yanghaoran 2 years ago
parent
commit
65ae90a5b4
61 changed files with 3534 additions and 2271 deletions
  1. +11
    -0
      inc/external/acl/acl_rt.h
  2. +1
    -0
      inc/external/acl/error_codes/rt_error_codes.h
  3. +2
    -0
      inc/external/ge/ge_api.h
  4. +19
    -1
      inc/external/ge/ge_api_types.h
  5. +31
    -10
      inc/external/hccl/hccl.h
  6. +4
    -0
      inc/external/hccl/hccl_types.h
  7. +1
    -0
      inc/external/runtime/rt_error_codes.h
  8. +4
    -3
      inc/framework/common/debug/ge_log.h
  9. +2
    -10
      inc/framework/common/fmk_error_codes.h
  10. +10
    -0
      inc/framework/common/ge_types.h
  11. +28
    -0
      inc/framework/common/ge_visibility.h
  12. +1
    -1
      inc/framework/common/helper/model_helper.h
  13. +1
    -1
      inc/framework/common/op/ge_op_utils.h
  14. +2
    -3
      inc/framework/common/types.h
  15. +0
    -72
      inc/framework/common/util.h
  16. +5
    -4
      inc/framework/executor/ge_executor.h
  17. +1
    -1
      inc/framework/generator/ge_generator.h
  18. +9
    -0
      inc/framework/memory/memory_api.h
  19. +0
    -2
      inc/framework/omg/parser/model_parser.h
  20. +0
    -1
      inc/framework/omg/parser/op_parser.h
  21. +407
    -405
      inc/framework/omg/parser/parser_types.h
  22. +15
    -0
      inc/framework/pne/pne_model.h
  23. +18
    -0
      inc/framework/pne/process_node_engine.h
  24. +56
    -0
      inc/framework/runtime/exe_graph_executor.h
  25. +69
    -0
      inc/framework/runtime/exe_graph_resource_guard.h
  26. +5
    -1
      inc/framework/runtime/gert_api.h
  27. +95
    -93
      inc/framework/runtime/model_desc.h
  28. +15
    -77
      inc/framework/runtime/model_v2_executor.h
  29. +71
    -0
      inc/framework/runtime/subscriber/built_in_subscriber_definitions.h
  30. +33
    -0
      inc/framework/runtime/subscriber/executor_subscriber_c.h
  31. +76
    -0
      inc/framework/runtime/subscriber/executor_subscriber_guarder.h
  32. +149
    -0
      inc/framework/runtime/subscriber/executor_subscribers_scheduler.h
  33. +138
    -0
      inc/framework/runtime/subscriber/global_profiling.h
  34. +1
    -1
      metadef
  35. +2
    -2
      third_party/fwkacllib/inc/common/type_def.h
  36. +1
    -0
      third_party/fwkacllib/inc/external/runtime/rt_error_codes.h
  37. +6
    -6
      third_party/fwkacllib/inc/ops/cluster.h
  38. +27
    -0
      third_party/fwkacllib/inc/ops/data_flow_ops.h
  39. +164
    -164
      third_party/fwkacllib/inc/ops/elewise_calculation_ops.h
  40. +158
    -0
      third_party/fwkacllib/inc/ops/experiment_ops.h
  41. +53
    -0
      third_party/fwkacllib/inc/ops/functional_ops.h
  42. +21
    -11
      third_party/fwkacllib/inc/ops/hcom_ops.h
  43. +73
    -0
      third_party/fwkacllib/inc/ops/image_ops.h
  44. +98
    -2
      third_party/fwkacllib/inc/ops/math_ops.h
  45. +617
    -534
      third_party/fwkacllib/inc/ops/matrix_calculation_ops.h
  46. +10
    -11
      third_party/fwkacllib/inc/ops/nn_calculation_ops.h
  47. +187
    -180
      third_party/fwkacllib/inc/ops/nn_pooling_ops.h
  48. +33
    -33
      third_party/fwkacllib/inc/ops/nonlinear_fuc_ops.h
  49. +34
    -10
      third_party/fwkacllib/inc/ops/random_ops.h
  50. +552
    -483
      third_party/fwkacllib/inc/ops/selection_ops.h
  51. +1
    -1
      third_party/fwkacllib/inc/ops/sparse_ops.h
  52. +36
    -0
      third_party/fwkacllib/inc/ops/spectral_ops.h
  53. +5
    -1
      third_party/fwkacllib/inc/runtime/config.h
  54. +30
    -0
      third_party/fwkacllib/inc/runtime/kernel.h
  55. +1
    -0
      third_party/fwkacllib/inc/runtime/mem.h
  56. +1
    -0
      third_party/fwkacllib/inc/runtime/rt_model.h
  57. +13
    -9
      third_party/fwkacllib/inc/toolchain/prof_callback.h
  58. +31
    -26
      third_party/fwkacllib/inc/toolchain/prof_common.h
  59. +92
    -97
      third_party/fwkacllib/inc/toolchain/prof_engine.h
  60. +6
    -15
      third_party/fwkacllib/inc/toolchain/prof_reporter.h
  61. +2
    -0
      third_party/fwkacllib/inc/toolchain/slog.h

+ 11
- 0
inc/external/acl/acl_rt.h View File

@@ -161,6 +161,17 @@ ACL_FUNC_VISIBILITY uint32_t aclrtGetThreadIdFromExceptionInfo(const aclrtExcept
*/ */
ACL_FUNC_VISIBILITY uint32_t aclrtGetDeviceIdFromExceptionInfo(const aclrtExceptionInfo *info); ACL_FUNC_VISIBILITY uint32_t aclrtGetDeviceIdFromExceptionInfo(const aclrtExceptionInfo *info);


/**
* @ingroup AscendCL
* @brief Get error code from exception information
*
* @param info [IN] pointer of exception information
*
* @retval The error code from exception information
* @retval 0xFFFFFFFF if info is null
*/
ACL_FUNC_VISIBILITY uint32_t aclrtGetErrorCodeFromExceptionInfo(const aclrtExceptionInfo *info);

/** /**
* @ingroup AscendCL * @ingroup AscendCL
* @brief The thread that handles the callback function on the Stream * @brief The thread that handles the callback function on the Stream


+ 1
- 0
inc/external/acl/error_codes/rt_error_codes.h View File

@@ -65,6 +65,7 @@ static const int32_t ACL_ERROR_RT_QUEUE_FULL = 207014; // queue is ful
static const int32_t ACL_ERROR_RT_REPEATED_INIT = 207015; // repeated init static const int32_t ACL_ERROR_RT_REPEATED_INIT = 207015; // repeated init
static const int32_t ACL_ERROR_RT_AIVEC_OVER_FLOW = 207016; // aivec over flow static const int32_t ACL_ERROR_RT_AIVEC_OVER_FLOW = 207016; // aivec over flow
static const int32_t ACL_ERROR_RT_OVER_FLOW = 207017; // common over flow static const int32_t ACL_ERROR_RT_OVER_FLOW = 207017; // common over flow
static const int32_t ACL_ERROR_RT_DEVIDE_OOM = 207018; // device oom


static const int32_t ACL_ERROR_RT_INTERNAL_ERROR = 507000; // runtime internal error static const int32_t ACL_ERROR_RT_INTERNAL_ERROR = 507000; // runtime internal error
static const int32_t ACL_ERROR_RT_TS_ERROR = 507001; // ts internel error static const int32_t ACL_ERROR_RT_TS_ERROR = 507001; // ts internel error


+ 2
- 0
inc/external/ge/ge_api.h View File

@@ -191,6 +191,8 @@ class GE_FUNC_VISIBILITY Session {


bool IsGraphNeedRebuild(uint32_t graph_id); bool IsGraphNeedRebuild(uint32_t graph_id);


uint64_t GetSessionId() const;

private: private:
uint64_t sessionId_; uint64_t sessionId_;
}; };


+ 19
- 1
inc/external/ge/ge_api_types.h View File

@@ -326,6 +326,10 @@ const char_t *const OP_COMPILER_CACHE_DIR = "ge.op_compiler_cache_dir";
// Its value should be "disable", "enable" or "force", default value is "disable" // Its value should be "disable", "enable" or "force", default value is "disable"
const char_t *const OP_COMPILER_CACHE_MODE = "ge.op_compiler_cache_mode"; const char_t *const OP_COMPILER_CACHE_MODE = "ge.op_compiler_cache_mode";


// Configure build model type. FE need this option to judge inner model or not
// Its value should be "true" or "false"
const char_t *const BUILD_INNER_MODEL = "ge.build_inner_model";

// Configure whether to use single stream. // Configure whether to use single stream.
// Its value should be "true" or "false", default value is "false" // Its value should be "true" or "false", default value is "false"
const char_t *const ENABLE_SINGLE_STREAM = "ge.enableSingleStream"; const char_t *const ENABLE_SINGLE_STREAM = "ge.enableSingleStream";
@@ -375,6 +379,17 @@ const std::string OP_EXECUTE_TIMEOUT = "ge.exec.opExecuteTimeout";


const char_t *const FILE_CONSTANT_PATH = "ge.exec.value_bins"; const char_t *const FILE_CONSTANT_PATH = "ge.exec.value_bins";


const char_t *const ENABLE_GRAPH_PARALLEL = "ge.enableGraphParallel";

const char_t *const RESOURCE_CONFIG_PATH = "ge.resourceConfigPath";

const std::string RECOMPUTE = "ge.recompute";

const char_t *const GRAPH_PARALLEL_OPTION_PATH = "ge.graphParallelOptionPath";

// 1: Complete graph resource evaluation(Inclusion graph fusion optimization)
// 2: Simplified graph resource evaluation(No graph fusion optimization)
const char_t *const EVALUATE_GRAPH_RESOURCE_MODE = "ge.evaluateGraphResourceMode";
// Graph run mode // Graph run mode
enum GraphRunMode { PREDICTION = 0, TRAIN }; enum GraphRunMode { PREDICTION = 0, TRAIN };


@@ -450,6 +465,7 @@ static const char_t *const OPTYPELIST_FOR_IMPLMODE = ge::OPTYPELIST_FOR_IMPLMODE
static const char_t *const DEBUG_DIR = ge::DEBUG_DIR; static const char_t *const DEBUG_DIR = ge::DEBUG_DIR;
static const char_t *const OP_COMPILER_CACHE_DIR = ge::OP_COMPILER_CACHE_DIR; static const char_t *const OP_COMPILER_CACHE_DIR = ge::OP_COMPILER_CACHE_DIR;
static const char_t *const OP_COMPILER_CACHE_MODE = ge::OP_COMPILER_CACHE_MODE; static const char_t *const OP_COMPILER_CACHE_MODE = ge::OP_COMPILER_CACHE_MODE;
static const char_t *const BUILD_INNER_MODEL = ge::BUILD_INNER_MODEL;
static const char_t *const MDL_BANK_PATH = ge::MDL_BANK_PATH_FLAG.c_str(); static const char_t *const MDL_BANK_PATH = ge::MDL_BANK_PATH_FLAG.c_str();
static const char_t *const OP_BANK_PATH = ge::OP_BANK_PATH_FLAG.c_str(); static const char_t *const OP_BANK_PATH = ge::OP_BANK_PATH_FLAG.c_str();
static const char_t *const OP_BANK_UPDATE = ge::OP_BANK_UPDATE_FLAG.c_str(); static const char_t *const OP_BANK_UPDATE = ge::OP_BANK_UPDATE_FLAG.c_str();
@@ -490,7 +506,9 @@ const std::set<std::string> ir_builder_suppported_options = {INPUT_FORMAT,
PERFORMANCE_MODE, PERFORMANCE_MODE,
SHAPE_GENERALIZED_BUILD_MODE, SHAPE_GENERALIZED_BUILD_MODE,
MODIFY_MIXLIST, MODIFY_MIXLIST,
CUSTOMIZE_DTYPES};
CUSTOMIZE_DTYPES,
BUILD_INNER_MODEL,
EVALUATE_GRAPH_RESOURCE_MODE};


// for interface: aclgrphParse // for interface: aclgrphParse
const std::set<std::string> ir_parser_suppported_options = { const std::set<std::string> ir_parser_suppported_options = {


+ 31
- 10
inc/external/hccl/hccl.h View File

@@ -81,7 +81,8 @@ extern HcclResult HcclAllReduce(void *sendBuf, void *recvBuf, uint64_t count, Hc
* *
* @param buf A pointer identifying the data address of the operator. * @param buf A pointer identifying the data address of the operator.
* @param count An integer(u64) identifying the number of the data. * @param count An integer(u64) identifying the number of the data.
* @param dataType The data type of the operator, must be one of the following types: int8, int32, float16, float32.
* @param dataType The data type of the operator, must be one of the following types: int8, int16, int32, int64,
uint8, uint16, uint32, uint64, float16, float32, float64.
* @param root An integer(u32) identifying the the root rank in the operator. * @param root An integer(u32) identifying the the root rank in the operator.
* @param comm A pointer identifying the communication resource based on * @param comm A pointer identifying the communication resource based on
* @param stream A pointer identifying the stream information. * @param stream A pointer identifying the stream information.
@@ -111,7 +112,8 @@ extern HcclResult HcclReduceScatter(void *sendBuf, void *recvBuf, uint64_t recvC
* @param sendBuf A pointer identifying the input data address of the operator. * @param sendBuf A pointer identifying the input data address of the operator.
* @param recvBuf A pointer identifying the output data address of the operator. * @param recvBuf A pointer identifying the output data address of the operator.
* @param sendCount An integer(u64) identifying the number of the input data. * @param sendCount An integer(u64) identifying the number of the input data.
* @param dataType The data type of the operator, must be one of the following types: int8, int32, float16, float32.
* @param dataType The data type of the operator, must be one of the following types: int8, int16, int32, int64,
uint8, uint16, uint32, uint64, float16, float32, float64.
* @param comm A pointer identifying the communication resource based on. * @param comm A pointer identifying the communication resource based on.
* @param stream A pointer identifying the stream information. * @param stream A pointer identifying the stream information.
* @return HcclResult * @return HcclResult
@@ -149,7 +151,8 @@ extern HcclResult HcclBarrier(HcclComm comm, aclrtStream stream);
* *
* @param sendBuff A pointer identifying the input data address of the operator. * @param sendBuff A pointer identifying the input data address of the operator.
* @param count An integer(u64) identifying the number of the send data. * @param count An integer(u64) identifying the number of the send data.
* @param dataType The data type of the operator, must be one of the following types: int8, int32, float16, float32.
* @param dataType The data type of the operator, must be one of the following types: int8, int16, int32, int64,
uint8, uint16, uint32, uint64, float16, float32, float64.
* @param destRank An integer identifying the destination rank. * @param destRank An integer identifying the destination rank.
* @param comm A pointer identifying the communication resource based on. * @param comm A pointer identifying the communication resource based on.
* @param stream A pointer identifying the stream information. * @param stream A pointer identifying the stream information.
@@ -162,7 +165,8 @@ extern HcclResult HcclSend(void *sendBuf, uint64_t count, HcclDataType dataType,
* *
* @param recvBuff A pointer identifying the output data address of the operator. * @param recvBuff A pointer identifying the output data address of the operator.
* @param count An integer(u64) identifying the number of the receive data. * @param count An integer(u64) identifying the number of the receive data.
* @param dataType The data type of the operator, must be one of the following types: int8, int32, float16, float32.
* @param dataType The data type of the operator, must be one of the following types: int8, int16, int32, int64,
uint8, uint16, uint32, uint64, float16, float32, float64.
* @param srcRank An integer identifying the source rank. * @param srcRank An integer identifying the source rank.
* @param comm A pointer identifying the communication resource based on. * @param comm A pointer identifying the communication resource based on.
* @param stream A pointer identifying the stream information. * @param stream A pointer identifying the stream information.
@@ -177,15 +181,15 @@ extern HcclResult HcclRecv(void *recvBuf, uint64_t count, HcclDataType dataType,
* @param sendBuff A pointer identifying the input data address of the operator. * @param sendBuff A pointer identifying the input data address of the operator.
* @param sendCounts Integer array, where entry i specifies the number of elements to send to rank i. * @param sendCounts Integer array, where entry i specifies the number of elements to send to rank i.
* @param sdispls Integer array, where entry i specifies the displacement (offset from sendbuf, in units of sendtype) * @param sdispls Integer array, where entry i specifies the displacement (offset from sendbuf, in units of sendtype)
* from which to send data to rank i.
* @param sendType Datatype of send buffer elements, must be one of the following types: int8, int32, int64, uint64,
* float16, float32.
from which to send data to rank i.
* @param sendType Datatype of send buffer elements, must be one of the following types: int8, int16, int32, int64,
uint8, uint16, uint32, uint64, float16, float32, float64.
* @param recvBuf A pointer identifying the output data address of the operator. * @param recvBuf A pointer identifying the output data address of the operator.
* @param recvCounts Integer array, where entry j specifies the number of elements to receive from rank j. * @param recvCounts Integer array, where entry j specifies the number of elements to receive from rank j.
* @param rdispls Integer array, where entry j specifies the displacement (offset from recvbuf, in units of recvtype) to * @param rdispls Integer array, where entry j specifies the displacement (offset from recvbuf, in units of recvtype) to
* which data from rank j should be written.
* @param recvType Datatype of receive buffer elements, must be one of the following types: int8, int32, int64, uint64,
* float16, float32.
which data from rank j should be written.
* @param recvType Datatype of receive buffer elements, must be one of the following types: int8, int16, int32, int64,
uint8, uint16, uint32, uint64, float16, float32, float64.
* @param comm A pointer identifying the communication resource based on. * @param comm A pointer identifying the communication resource based on.
* @param stream A pointer identifying the stream information. * @param stream A pointer identifying the stream information.
* @return HcclResult * @return HcclResult
@@ -195,6 +199,23 @@ extern HcclResult HcclAlltoAllV(const void *sendBuf, const void *sendCounts, con
const void *recvBuf, const void *recvCounts, const void *rdispls, HcclDataType recvType, const void *recvBuf, const void *recvCounts, const void *rdispls, HcclDataType recvType,
HcclComm comm, aclrtStream stream); HcclComm comm, aclrtStream stream);


/**
* @brief Reduce operator.
*
* @param sendBuf A pointer identifying the input data address of the operator.
* @param recvBuf A pointer identifying the output data address of the operator.
* @param count An integer(u64) identifying the number of the output data.
* @param dataType The data type of the operator, must be one of the following types: int8, int16, int32, float16,
* float32.
* @param op The reduction type of the operator, must be one of the following types: sum, min, max, prod.
* @param root An integer(u32) identifying the the root rank in the operator.
* @param comm A pointer identifying the communication resource based on.
* @param stream A pointer identifying the stream information.
* @return HcclResult
*/
extern HcclResult HcclReduce(void *sendBuf, void *recvBuf, uint64_t count, HcclDataType dataType, HcclReduceOp op,
uint32_t root, HcclComm comm, aclrtStream stream);

/** /**
* @brief Destroy HCCL comm * @brief Destroy HCCL comm
* *


+ 4
- 0
inc/external/hccl/hccl_types.h View File

@@ -84,6 +84,10 @@ typedef enum {
HCCL_DATA_TYPE_FP32 = 4, /**< fp32 */ HCCL_DATA_TYPE_FP32 = 4, /**< fp32 */
HCCL_DATA_TYPE_INT64 = 5, /**< int64 */ HCCL_DATA_TYPE_INT64 = 5, /**< int64 */
HCCL_DATA_TYPE_UINT64 = 6, /**< uint64 */ HCCL_DATA_TYPE_UINT64 = 6, /**< uint64 */
HCCL_DATA_TYPE_UINT8 = 7, /**< uint8 */
HCCL_DATA_TYPE_UINT16 = 8, /**< uint16 */
HCCL_DATA_TYPE_UINT32 = 9, /**< uint32 */
HCCL_DATA_TYPE_FP64 = 10, /**< fp64 */
HCCL_DATA_TYPE_RESERVED /**< reserved */ HCCL_DATA_TYPE_RESERVED /**< reserved */
} HcclDataType; } HcclDataType;




+ 1
- 0
inc/external/runtime/rt_error_codes.h View File

@@ -65,6 +65,7 @@ static const int32_t ACL_ERROR_RT_QUEUE_FULL = 207014; // queue is ful
static const int32_t ACL_ERROR_RT_REPEATED_INIT = 207015; // repeated init static const int32_t ACL_ERROR_RT_REPEATED_INIT = 207015; // repeated init
static const int32_t ACL_ERROR_RT_AIVEC_OVER_FLOW = 207016; // aivec over flow static const int32_t ACL_ERROR_RT_AIVEC_OVER_FLOW = 207016; // aivec over flow
static const int32_t ACL_ERROR_RT_OVER_FLOW = 207017; // common over flow static const int32_t ACL_ERROR_RT_OVER_FLOW = 207017; // common over flow
static const int32_t ACL_ERROR_RT_DEVIDE_OOM = 207018; // device oom


static const int32_t ACL_ERROR_RT_INTERNAL_ERROR = 507000; // runtime internal error static const int32_t ACL_ERROR_RT_INTERNAL_ERROR = 507000; // runtime internal error
static const int32_t ACL_ERROR_RT_TS_ERROR = 507001; // ts internel error static const int32_t ACL_ERROR_RT_TS_ERROR = 507001; // ts internel error


+ 4
- 3
inc/framework/common/debug/ge_log.h View File

@@ -85,9 +85,10 @@ inline bool IsLogEnable(const int32_t module_name, const int32_t log_level) {
} \ } \
} while (false) } while (false)


#define GEEVENT(fmt, ...) \
do { \
dlog_event(GE_MODULE_NAME, "%" PRIu64 " %s:" fmt, GeLog::GetTid(), &__FUNCTION__[0], ##__VA_ARGS__); \
#define GEEVENT(fmt, ...) \
do { \
dlog_event((RUN_LOG_MASK | GE_MODULE_NAME), "%" PRIu64 " %s:" fmt, GeLog::GetTid(), &__FUNCTION__[0], \
##__VA_ARGS__); \
} while (false) } while (false)


#define GELOGT(VALUE, fmt, ...) \ #define GELOGT(VALUE, fmt, ...) \


+ 2
- 10
inc/framework/common/fmk_error_codes.h View File

@@ -46,7 +46,7 @@
#define DECLARE_ERRORNO_OME(name, value) DECLARE_ERRORNO(SYSID_FWK, MODID_OME, name, value) #define DECLARE_ERRORNO_OME(name, value) DECLARE_ERRORNO(SYSID_FWK, MODID_OME, name, value)
#define DECLARE_ERRORNO_CALIBRATION(name, value) DECLARE_ERRORNO(SYSID_FWK, MODID_CALIBRATION, name, value) #define DECLARE_ERRORNO_CALIBRATION(name, value) DECLARE_ERRORNO(SYSID_FWK, MODID_CALIBRATION, name, value)


#define DEF_ERRORNO(name, desc) const ErrorNoRegisterar g_##name##_errorno((name), (desc));
#define DEF_ERRORNO(name, desc) const bool g_##name##_errorno = StatusFactory::Instance()->RegisterErrorNo(name, desc)


// Interface for Obtaining Error Code Description // Interface for Obtaining Error Code Description
#define GET_ERRORNO_STR(value) domi::StatusFactory::Instance()->GetErrDesc(value) #define GET_ERRORNO_STR(value) domi::StatusFactory::Instance()->GetErrDesc(value)
@@ -60,7 +60,7 @@ class GE_FUNC_VISIBILITY StatusFactory {
public: public:
static StatusFactory *Instance(); static StatusFactory *Instance();


void RegisterErrorNo(const uint32_t err, const std::string &desc);
bool RegisterErrorNo(const uint32_t err, const std::string &desc);


std::string GetErrDesc(const uint32_t err); std::string GetErrDesc(const uint32_t err);


@@ -72,14 +72,6 @@ class GE_FUNC_VISIBILITY StatusFactory {
std::map<uint32_t, std::string> err_desc_; std::map<uint32_t, std::string> err_desc_;
}; };


class GE_FUNC_VISIBILITY ErrorNoRegisterar {
public:
ErrorNoRegisterar(const uint32_t err, const std::string &desc) {
StatusFactory::Instance()->RegisterErrorNo(err, desc);
}
~ErrorNoRegisterar() {}
};

// Common errocode // Common errocode
DECLARE_ERRORNO_COMMON(MEMALLOC_FAILED, 0); // 50331648 DECLARE_ERRORNO_COMMON(MEMALLOC_FAILED, 0); // 50331648
DECLARE_ERRORNO_COMMON(CCE_FAILED, 2); // 50331650 DECLARE_ERRORNO_COMMON(CCE_FAILED, 2); // 50331650


+ 10
- 0
inc/framework/common/ge_types.h View File

@@ -83,6 +83,7 @@ const std::string kAtomicOpType = "DynamicAtomicAddrClean";


const std::string kShapeTypeStatic = "static"; const std::string kShapeTypeStatic = "static";
const std::string kShapeTypeDynamic = "dynamic"; const std::string kShapeTypeDynamic = "dynamic";
const std::string kAtomicPrefix = "_atomic";


constexpr uint64_t kInferSessionId = 0U; constexpr uint64_t kInferSessionId = 0U;
constexpr uint64_t kReleaseFlag = 1U; constexpr uint64_t kReleaseFlag = 1U;
@@ -369,7 +370,16 @@ struct DumpConfig {
std::string dump_status; std::string dump_status;
std::string dump_op_switch; std::string dump_op_switch;
std::string dump_debug; std::string dump_debug;
std::string dump_step;
std::vector<ModelDumpConfig> dump_list; std::vector<ModelDumpConfig> dump_list;
}; };

struct ModelQueueParam {
uint32_t group_total_count{1};
uint32_t group_index{0U};
uint32_t group_policy{0U};
std::vector<uint32_t> input_queues;
std::vector<uint32_t> output_queues;
};
} // namespace ge } // namespace ge
#endif // INC_FRAMEWORK_COMMON_GE_TYPES_H_ #endif // INC_FRAMEWORK_COMMON_GE_TYPES_H_

+ 28
- 0
inc/framework/common/ge_visibility.h View File

@@ -0,0 +1,28 @@
/**
* Copyright (c) Huawei Technologies Co., Ltd. 2022. All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

#ifndef AIR_CXX_INC_FRAMEWORK_COMMON_GE_VISIBILITY_H_
#define AIR_CXX_INC_FRAMEWORK_COMMON_GE_VISIBILITY_H_

#if defined(_MSC_VER)
#define VISIBILITY_EXPORT _declspec(dllexport)
#define VISIBILITY_HIDDEN _declspec(dllimport)
#else
#define VISIBILITY_EXPORT __attribute__((visibility("default")))
#define VISIBILITY_HIDDEN __attribute__((visibility("hidden")))
#endif

#endif // AIR_CXX_INC_FRAMEWORK_COMMON_GE_VISIBILITY_H_

+ 1
- 1
inc/framework/common/helper/model_helper.h View File

@@ -68,7 +68,7 @@ class GE_FUNC_VISIBILITY ModelHelper {
bool IsPartitionedGraph(const GeModelPtr &cur_model) const; bool IsPartitionedGraph(const GeModelPtr &cur_model) const;


Status GenerateGeModel(const OmFileLoadHelper &om_load_helper, GeModelPtr &cur_model, const size_t mode_index, Status GenerateGeModel(const OmFileLoadHelper &om_load_helper, GeModelPtr &cur_model, const size_t mode_index,
const bool is_dyn_root);
const bool is_dyn_root) const;
Status GenerateGeRootModel(const OmFileLoadHelper &om_load_helper); Status GenerateGeRootModel(const OmFileLoadHelper &om_load_helper);


Status LoadModelData(const OmFileLoadHelper &om_load_helper, const GeModelPtr &cur_model, Status LoadModelData(const OmFileLoadHelper &om_load_helper, const GeModelPtr &cur_model,


+ 1
- 1
inc/framework/common/op/ge_op_utils.h View File

@@ -20,7 +20,7 @@
#include <memory> #include <memory>
#include <vector> #include <vector>


#include "framework/common/op/attr_value_util.h"
#include "graph/debug/ge_attr_define.h"
#include "framework/common/util.h" #include "framework/common/util.h"
#include "graph/attr_value.h" #include "graph/attr_value.h"
#include "graph/ge_tensor.h" #include "graph/ge_tensor.h"


+ 2
- 3
inc/framework/common/types.h View File

@@ -87,6 +87,8 @@ REGISTER_OPTYPE_DECLARE(DROPOUTDOMASK, "DropOutDoMask");
REGISTER_OPTYPE_DECLARE(DROPOUTDOMASKV3, "DropOutDoMaskV3"); REGISTER_OPTYPE_DECLARE(DROPOUTDOMASKV3, "DropOutDoMaskV3");
REGISTER_OPTYPE_DECLARE(DROPOUTDOMASKV3D, "DropOutDoMaskV3D"); REGISTER_OPTYPE_DECLARE(DROPOUTDOMASKV3D, "DropOutDoMaskV3D");
REGISTER_OPTYPE_DECLARE(SOFTMAXV2WITHDROPOUTDOMASKV3D, "SoftmaxV2WithDropOutDoMaskV3D"); REGISTER_OPTYPE_DECLARE(SOFTMAXV2WITHDROPOUTDOMASKV3D, "SoftmaxV2WithDropOutDoMaskV3D");
REGISTER_OPTYPE_DECLARE(ATTENTIONSCORE, "AttentionScore");
REGISTER_OPTYPE_DECLARE(ATTENTIONSCOREGRAD, "AttentionScoreGrad");
REGISTER_OPTYPE_DECLARE(DROPOUTGENMASK, "DropOutGenMask"); REGISTER_OPTYPE_DECLARE(DROPOUTGENMASK, "DropOutGenMask");
REGISTER_OPTYPE_DECLARE(AXPYWITHSOFTMAXANDDROPOUTDOMASK, "AxpyWithSoftmaxAndDropOutDoMask"); REGISTER_OPTYPE_DECLARE(AXPYWITHSOFTMAXANDDROPOUTDOMASK, "AxpyWithSoftmaxAndDropOutDoMask");
REGISTER_OPTYPE_DECLARE(CONCAT, "Concat"); REGISTER_OPTYPE_DECLARE(CONCAT, "Concat");
@@ -587,9 +589,6 @@ FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const std::string OP_CON
// dim default size value // dim default size value
constexpr int32_t DIM_DEFAULT_SIZE = 4; constexpr int32_t DIM_DEFAULT_SIZE = 4;


// dim extension default value
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const int32_t DIM_DEFAULT_VALUE;

// default NCHW index // default NCHW index
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const uint32_t NCHW_DIM_N; FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const uint32_t NCHW_DIM_N;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const uint32_t NCHW_DIM_C; FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const uint32_t NCHW_DIM_C;


+ 0
- 72
inc/framework/common/util.h View File

@@ -21,13 +21,11 @@
#include <sstream> #include <sstream>
#include <string> #include <string>


#include <google/protobuf/text_format.h>
#include "external/graph/types.h" #include "external/graph/types.h"
#include "external/register/register.h" #include "external/register/register.h"
#include "framework/common/debug/log.h" #include "framework/common/debug/log.h"
#include "framework/common/scope_guard.h" #include "framework/common/scope_guard.h"
#include "framework/common/ge_inner_error_codes.h" #include "framework/common/ge_inner_error_codes.h"
#include "graph/detail/attributes_holder.h"


#define GE_CHECK_POSITIVE_SIZE_RANGE(size) \ #define GE_CHECK_POSITIVE_SIZE_RANGE(size) \
do { \ do { \
@@ -247,67 +245,6 @@ GE_FUNC_VISIBILITY std::string ToString(const std::vector<T> &v) {
return ss.str(); return ss.str();
} }


///
/// @ingroup domi_common
/// @brief Converts RepeatedField to String.
/// @param [in] rpd_field RepeatedField
/// @return string
///
template <typename T>
GE_FUNC_VISIBILITY std::string ToString(const google::protobuf::RepeatedField<T> &rpd_field) {
std::stringstream ss;
ss << "[";
for (const T x : rpd_field) {
ss << x;
ss << ", ";
}
// Delete the two extra characters at the end of the line.
std::string str = ss.str().substr(0U, ss.str().length() - 2U);
str += "]";
return str;
}

///
/// @ingroup ge_ir_utils
/// @brief RepeatedPtrField->String
/// @param [in] const rpd_field RepeatedPtrField
/// @return String
///
template <typename T>
GE_FUNC_VISIBILITY std::string ToString(const google::protobuf::RepeatedPtrField<T> &rpd_ptr_field) {
std::stringstream ss;
ss << "[";
for (const T &x : rpd_ptr_field) {
ss << x;
ss << ", ";
}
std::string str_ret = ss.str().substr(0U, ss.str().length() - 2U);
str_ret += "]";
return str_ret;
}

///
/// @ingroup domi_common
/// @brief Reads the proto structure from an array.
/// @param [in] data proto data to be read
/// @param [in] size proto data size
/// @param [out] proto Memory for storing the proto file
/// @return true success
/// @return false fail
///
GE_FUNC_VISIBILITY bool ReadProtoFromArray(const void *const data, const int32_t size,
google::protobuf::Message *const proto);

///
/// @ingroup domi_proto
/// @brief Reads the proto file in the text format.
/// @param [in] file path of proto file
/// @param [out] message Memory for storing the proto file
/// @return true success
/// @return false fail
///
GE_FUNC_VISIBILITY bool ReadProtoFromText(const char_t *const file, google::protobuf::Message *const message);

/// ///
/// @ingroup: domi_common /// @ingroup: domi_common
/// @brief: get length of file /// @brief: get length of file
@@ -359,15 +296,6 @@ GE_FUNC_VISIBILITY uint64_t GetCurrentTimestamp();
/// ///
GE_FUNC_VISIBILITY uint32_t GetCurrentSecondTimestap(); GE_FUNC_VISIBILITY uint32_t GetCurrentSecondTimestap();


///
/// @ingroup domi_common
/// @brief Check whether the product of two int64 numbers exceeds the int64 range.
/// @param [in] a
/// @param [in] b
/// @return false: true: The result is within the normal int64 range.
///
GE_FUNC_VISIBILITY bool CheckInt64MulOverflow(const int64_t a, const int64_t b);

/// ///
/// @ingroup domi_common /// @ingroup domi_common
/// @brief Absolute path for obtaining files. /// @brief Absolute path for obtaining files.


+ 5
- 4
inc/framework/executor/ge_executor.h View File

@@ -229,15 +229,14 @@ class GE_FUNC_VISIBILITY GeExecutor {


/// ///
/// @ingroup ge /// @ingroup ge
/// @brief Load task list from ModelData with queue.
/// @brief Load task list from GeRootModel with queue and param.
/// @param [out] model_id: model id allocate from manager. /// @param [out] model_id: model id allocate from manager.
/// @param [in] root_model: Instance of GeRootModel. /// @param [in] root_model: Instance of GeRootModel.
/// @param [in] input_queue_ids: input queue ids create from user.
/// @param [in] output_queue_ids: input queue ids create from user.
/// @param [in] model_queue_param: params and queue ids and create from user.
/// @return: 0 for success / others for fail /// @return: 0 for success / others for fail
/// ///
Status LoadModelWithQ(uint32_t &model_id, const std::shared_ptr<GeRootModel> &root_model, Status LoadModelWithQ(uint32_t &model_id, const std::shared_ptr<GeRootModel> &root_model,
const std::vector<uint32_t> &input_queue_ids, const std::vector<uint32_t> &output_queue_ids);
const ModelQueueParam &model_queue_param);


/// ///
/// @ingroup ge /// @ingroup ge
@@ -324,6 +323,8 @@ class GE_FUNC_VISIBILITY GeExecutor {


static Status ReleaseSingleOpResource(void *const stream); static Status ReleaseSingleOpResource(void *const stream);


static Status ClearCustomAicpuSo();

static Status GetDeviceIdByModelId(const uint32_t model_id, uint32_t &device_id); static Status GetDeviceIdByModelId(const uint32_t model_id, uint32_t &device_id);


Status GetBatchInfoSize(const uint32_t model_id, size_t &shape_count); Status GetBatchInfoSize(const uint32_t model_id, size_t &shape_count);


+ 1
- 1
inc/framework/generator/ge_generator.h View File

@@ -27,8 +27,8 @@
#include "graph/ge_tensor.h" #include "graph/ge_tensor.h"
#include "graph/graph.h" #include "graph/graph.h"
#include "graph/op_desc.h" #include "graph/op_desc.h"
#include "graph/detail/attributes_holder.h"
#include "framework/omg/omg_inner_types.h" #include "framework/omg/omg_inner_types.h"
#include "graph/detail/attributes_holder.h"


namespace ge { namespace ge {
const std::string kAttrSupportDynamicShape = "support_dynamicshape"; const std::string kAttrSupportDynamicShape = "support_dynamicshape";


+ 9
- 0
inc/framework/memory/memory_api.h View File

@@ -64,5 +64,14 @@ GE_FUNC_VISIBILITY Status MallocSharedMemory(const TensorInfo &tensor_info, uint
/// \param var_size [out] var_size memory_size of host variable. /// \param var_size [out] var_size memory_size of host variable.
/// \return Status result of function /// \return Status result of function
GE_FUNC_VISIBILITY Status GetVarBaseAddrAndSize(const std::string &var_name, uint64_t &base_addr, uint64_t &var_size); GE_FUNC_VISIBILITY Status GetVarBaseAddrAndSize(const std::string &var_name, uint64_t &base_addr, uint64_t &var_size);

/*
* @brief
* @param [in] session_id
* @param [out] var_size:session variables mem size
* @param [out] graphs_mem_info: graphs mem info, include key:graph_id; value: {feature_map_size, const_size}
*/
GE_FUNC_VISIBILITY Status GetSessionMemInfo(const uint64_t session_id, uint64_t &var_size,
std::map<uint32_t, std::vector<uint64_t>> &graphs_mem_info);
} // namespace ge } // namespace ge
#endif // INC_FRAMEWORK_MEMORY_MEMORY_API_H_ #endif // INC_FRAMEWORK_MEMORY_MEMORY_API_H_

+ 0
- 2
inc/framework/omg/parser/model_parser.h View File

@@ -30,8 +30,6 @@
#include "graph/utils/op_desc_utils.h" #include "graph/utils/op_desc_utils.h"
#include "graph/utils/tensor_utils.h" #include "graph/utils/tensor_utils.h"


using Status = domi::Status;

namespace domi { namespace domi {
using GetGraphCallback = std::function<std::unique_ptr<google::protobuf::Message>( using GetGraphCallback = std::function<std::unique_ptr<google::protobuf::Message>(
const google::protobuf::Message *root_proto, const std::string &graph)>; const google::protobuf::Message *root_proto, const std::string &graph)>;


+ 0
- 1
inc/framework/omg/parser/op_parser.h View File

@@ -24,7 +24,6 @@
#include "graph/utils/op_desc_utils.h" #include "graph/utils/op_desc_utils.h"


using google::protobuf::Message; using google::protobuf::Message;
using Status = domi::Status;


namespace ge { namespace ge {
/** /**


+ 407
- 405
inc/framework/omg/parser/parser_types.h View File

@@ -21,6 +21,7 @@
#include <string> #include <string>


#include "register/register_types.h" #include "register/register_types.h"
#include "graph/types.h"


#if !defined(__ANDROID__) && !defined(ANDROID) #if !defined(__ANDROID__) && !defined(ANDROID)
#ifndef DOMI_DYNAMIC_CAST #ifndef DOMI_DYNAMIC_CAST
@@ -40,427 +41,428 @@


namespace ge { namespace ge {
namespace parser { namespace parser {
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *DATA;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *AIPPDATA;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *CONVOLUTION;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *CORRELATION;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *CORRELATIONV2;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *DECONVOLUTION;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *POOLING;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *ELTWISE;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *RELU;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *RELU6;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *SIGMOID;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *ABSVAL;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *TANH;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *PRELU;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *BATCHNORM;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *FUSIONBATCHNORM;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *SCALE;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *FULL_CONNECTION;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *SOFTMAX;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *PLUS;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *ACTIVATION;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *FLATTEN;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *ADD;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *SUB;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *MUL;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *MATMUL;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *RSQRT;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *BIASADD;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *RESHAPE;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *REFORMAT;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *DEPCONVOLUTION;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *DROPOUT;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *DROPOUTGENMASK;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *DROPOUTDOMASK;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *CONCAT;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *ROIPOOLING;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *PROPOSAL;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *FSRDETECTIONOUTPUT;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *DETECTIONPOSTPROCESS;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *LRN;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *TRANSDATA;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *PERMUTE;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *SSDNORMALIZE;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *SSDPRIORBOX;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *NETOUTPUT;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *SSDDETECTIONOUTPUT;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *REFINEDETDETECTIONOUTPUT;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *CHANNELAXPY;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *PSROIPOOLING;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *POWER;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *POW;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *ROIALIGN;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *PYTHON;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *FREESPACEEXTRACT;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *SPATIALTF;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *SHAPE;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *SHAPEN;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *ARGMAX;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *GATHERND;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *GATHER;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *REALDIV;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *PACK;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *SLICE;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *SLICED;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *FLOORDIV;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *SQUEEZE;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *UNSQUEEZE;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *STRIDEDSLICE;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *RANGE;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *RPNPROPOSALS;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *DECODEBBOX;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *PAD;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *PADV2;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *MIRRORPAD;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *TILE;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *SIZE;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *CLIPBOXES;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *FASTRCNNPREDICTIONS;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *SPLIT;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *SPLITV;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *EXPANDDIMS;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *EMPTY;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *MEAN;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *GREATER;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *SWITCH;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *SWITCHN;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *MERGE;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *SYMBOLICGRADIENT;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *REMOTECALL;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *_IF;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *STATELESSIF;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *IF;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *CASE;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *STATELESSCASE;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *_WHILE;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *WHILE;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *STATELESSWHILE;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *FOR;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *PARTITIONEDCALL;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *STATEFULPARTITIONEDCALL;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *FAKEPARAM;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *TRANSPOSE;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *TRANSPOSED;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *CAST;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *REGION;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *YOLO;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *YOLODETECTIONOUTPUT;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *FILL;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *REVERSE;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *UNPACK;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *YOLO2REORG;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *REDUCESUM;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *SUM;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *CONSTANT;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *RESIZEBILINEAR;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *RESIZEBILINEARGRAD;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *MAXIMUM;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *FRAMEWORKOP;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *ARG;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *FUSEDBATCHNORMGRAD;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *LSTM;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *HIGHWAY;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *RNN;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *ATTENTIONDECODER;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *LOGICAL_NOT;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *LOGICAL_AND;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *LOGICAL_OR;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *EQUAL;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *NOTEQUAL;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *INTERP;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *SHUFFLECHANNEL;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *AIPP;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *MULTISHAPE;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *RECIPROCAL;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *SELU;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *ELU;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *ACOSH;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *ASINH;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *MINIMUM;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *CLIP;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *L2NORMALIZE;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *CROPANDRESIZE;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *UNUSEDCONST;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *SPARSETODENSE;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *NONMAXSUPPRESSION;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *TOPKV2;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *INVERTPERMUTATION;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *MULTINOMIAL;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *REVERSESEQUENCE;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *REDUCEPROD;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *REDUCEMAX;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *REDUCEMIN;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *EXTRACTIMAGEPATCHES;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *SQRT;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *REDUCEALL;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *RESIZENEARESTNEIGHBOR;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *SPACETOBATCHND;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *BATCHTOSPACEND;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *ASSERT;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *GREATEREQUAL;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *FLOOR;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *RANDOMUNIFORM;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *BATCHMATMUL;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *SPACETODEPTH;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *DEPTHTOSPACE;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *RINT;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *ATAN;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *ATAN2;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *ATANH;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *ACOS;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *ASIN;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *NEG;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *LOG;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *TAN;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *ROUND;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *UPSAMPLE;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *FLOORMOD;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *LESS;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *LESSEQUAL;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *ONEHOT;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *REFSWITCH;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *REFMERGE;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *ENTER;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *REFENTER;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *LOOPCOND;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *NEXTITERATION;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *REFNEXTITERATION;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *EXIT;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *REFEXIT;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *CONTROLTRIGGER;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *ZEROSLIKE;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *EXP;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *WHERE;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *FAKEQUANTWITHMINMAXVARS;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *SOFTPLUS;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *SOFTSIGN;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *COSH;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *SINH;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *SQUAREDDIFFERENCE;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *DATA;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *AIPPDATA;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *CONVOLUTION;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *CORRELATION;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *CORRELATIONV2;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *DECONVOLUTION;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *POOLING;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *ELTWISE;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *RELU;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *RELU6;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *SIGMOID;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *ABSVAL;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *TANH;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *PRELU;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *BATCHNORM;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *FUSIONBATCHNORM;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *SCALE;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *FULL_CONNECTION;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *SOFTMAX;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *PLUS;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *ACTIVATION;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *FLATTEN;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *ADD;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *SUB;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *MUL;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *MATMUL;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *RSQRT;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *BIASADD;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *RESHAPE;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *REFORMAT;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *DEPCONVOLUTION;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *DROPOUT;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *DROPOUTGENMASK;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *DROPOUTDOMASK;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *CONCAT;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *ROIPOOLING;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *PROPOSAL;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *FSRDETECTIONOUTPUT;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *DETECTIONPOSTPROCESS;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *LRN;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *TRANSDATA;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *PERMUTE;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *SSDNORMALIZE;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *SSDPRIORBOX;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *NETOUTPUT;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *SSDDETECTIONOUTPUT;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *REFINEDETDETECTIONOUTPUT;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *CHANNELAXPY;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *PSROIPOOLING;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *POWER;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *POW;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *ROIALIGN;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *PYTHON;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *FREESPACEEXTRACT;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *SPATIALTF;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *SHAPE;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *SHAPEN;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *ARGMAX;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *GATHERND;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *GATHER;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *REALDIV;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *PACK;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *SLICE;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *SLICED;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *FLOORDIV;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *SQUEEZE;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *UNSQUEEZE;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *STRIDEDSLICE;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *RANGE;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *RPNPROPOSALS;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *DECODEBBOX;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *PAD;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *PADV2;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *MIRRORPAD;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *TILE;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *SIZE;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *CLIPBOXES;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *FASTRCNNPREDICTIONS;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *SPLIT;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *SPLITV;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *EXPANDDIMS;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *EMPTY;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *MEAN;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *GREATER;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *SWITCH;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *SWITCHN;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *MERGE;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *SYMBOLICGRADIENT;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *REMOTECALL;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *_IF;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *STATELESSIF;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *IF;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *CASE;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *STATELESSCASE;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *_WHILE;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *WHILE;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *STATELESSWHILE;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *FOR;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *PARTITIONEDCALL;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *STATEFULPARTITIONEDCALL;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *FAKEPARAM;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *TRANSPOSE;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *TRANSPOSED;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *CAST;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *REGION;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *YOLO;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *YOLODETECTIONOUTPUT;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *FILL;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *REVERSE;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *UNPACK;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *YOLO2REORG;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *REDUCESUM;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *SUM;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *CONSTANT;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *FILECONSTANT;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *RESIZEBILINEAR;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *RESIZEBILINEARGRAD;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *MAXIMUM;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *FRAMEWORKOP;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *ARG;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *FUSEDBATCHNORMGRAD;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *LSTM;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *HIGHWAY;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *RNN;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *ATTENTIONDECODER;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *LOGICAL_NOT;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *LOGICAL_AND;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *LOGICAL_OR;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *EQUAL;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *NOTEQUAL;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *INTERP;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *SHUFFLECHANNEL;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *AIPP;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *MULTISHAPE;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *RECIPROCAL;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *SELU;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *ELU;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *ACOSH;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *ASINH;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *MINIMUM;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *CLIP;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *L2NORMALIZE;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *CROPANDRESIZE;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *UNUSEDCONST;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *SPARSETODENSE;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *NONMAXSUPPRESSION;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *TOPKV2;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *INVERTPERMUTATION;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *MULTINOMIAL;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *REVERSESEQUENCE;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *REDUCEPROD;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *REDUCEMAX;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *REDUCEMIN;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *EXTRACTIMAGEPATCHES;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *SQRT;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *REDUCEALL;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *RESIZENEARESTNEIGHBOR;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *SPACETOBATCHND;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *BATCHTOSPACEND;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *ASSERT;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *GREATEREQUAL;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *FLOOR;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *RANDOMUNIFORM;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *BATCHMATMUL;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *SPACETODEPTH;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *DEPTHTOSPACE;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *RINT;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *ATAN;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *ATAN2;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *ATANH;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *ACOS;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *ASIN;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *NEG;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *LOG;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *TAN;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *ROUND;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *UPSAMPLE;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *FLOORMOD;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *LESS;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *LESSEQUAL;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *ONEHOT;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *REFSWITCH;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *REFMERGE;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *ENTER;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *REFENTER;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *LOOPCOND;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *NEXTITERATION;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *REFNEXTITERATION;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *EXIT;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *REFEXIT;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *CONTROLTRIGGER;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *ZEROSLIKE;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *EXP;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *WHERE;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *FAKEQUANTWITHMINMAXVARS;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *SOFTPLUS;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *SOFTSIGN;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *COSH;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *SINH;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *SQUAREDDIFFERENCE;
// for retinanet scope fusion // for retinanet scope fusion
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *REQUIREDSPACETOBATCHPADDINGS;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *SSDPOSTPROCESSOR;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *RETINANETBOXES;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *RETINAMULTIANCHORS;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *RETINANETCLIPPEDBOXES;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *RETINANETFILTEREDDETECTIONS;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *RETINANETPOSTPROCESSOR;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *RETINANETANCHORS;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *FASTERRCNNMAP;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *FASTERRCNNMAP1;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *FASTERRCNNSECONDSTAGEPOSTPROCESSOR;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *FASTERRCNNROIINTERPOOLING;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *FASTERRCNNFIRSTSTAGEPOSTPROCESSOR;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *FASTERRCNNGRIDANCHORGENERATOR;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *ROIINTERPOOLING;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *FASTERRCNNCLIPTOWINDOW;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *EMBEDLOOKUP;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *HASHLOOKUP;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *LSH_PROJ;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *SVDF;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *SSDANCHORGENERATOR;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *IDENTITY;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *IDENTITYN;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *PLACEHOLDERWITHDEFAULT;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *SELECT;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *GETSPAN;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *STOPGRADIENT;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *PREVENTGRADIENT;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *GUARANTEECONST;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *BROADCASTGRADIENTARGS;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *BROADCASTARGS;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *CONFUSIONMATRIX;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *RANK;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *PLACEHOLDER;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *END;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *BASICLSTMCELL;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *GETNEXT;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *INITDATA;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *REFIDENTITY;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *BITCAST;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *REQUIREDSPACETOBATCHPADDINGS;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *SSDPOSTPROCESSOR;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *RETINANETBOXES;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *RETINAMULTIANCHORS;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *RETINANETCLIPPEDBOXES;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *RETINANETFILTEREDDETECTIONS;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *RETINANETPOSTPROCESSOR;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *RETINANETANCHORS;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *FASTERRCNNMAP;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *FASTERRCNNMAP1;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *FASTERRCNNSECONDSTAGEPOSTPROCESSOR;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *FASTERRCNNROIINTERPOOLING;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *FASTERRCNNFIRSTSTAGEPOSTPROCESSOR;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *FASTERRCNNGRIDANCHORGENERATOR;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *ROIINTERPOOLING;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *FASTERRCNNCLIPTOWINDOW;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *EMBEDLOOKUP;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *HASHLOOKUP;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *LSH_PROJ;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *SVDF;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *SSDANCHORGENERATOR;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *IDENTITY;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *IDENTITYN;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *PLACEHOLDERWITHDEFAULT;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *SELECT;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *GETSPAN;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *STOPGRADIENT;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *PREVENTGRADIENT;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *GUARANTEECONST;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *BROADCASTGRADIENTARGS;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *BROADCASTARGS;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *CONFUSIONMATRIX;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *RANK;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *PLACEHOLDER;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *END;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *BASICLSTMCELL;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *GETNEXT;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *INITDATA;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *REFIDENTITY;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *BITCAST;


/***************Ann special operator*************************/ /***************Ann special operator*************************/
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *ANN_MEAN;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *ANN_CONVOLUTION;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *ANN_DEPCONVOLUTION;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *ANN_FULLCONNECTION;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *ANN_NETOUTPUT;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *ANN_DATA;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *ANN_RESHAPE;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *ANN_ADD;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *ANN_MUL;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *ANN_SUB;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *ANN_DIV;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *ANN_DEQUANTIZE;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *ANN_QUANTIZE;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *ANN_PAD;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *ANN_RESIZE_BILINEAR;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *ANN_MEAN;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *ANN_CONVOLUTION;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *ANN_DEPCONVOLUTION;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *ANN_FULLCONNECTION;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *ANN_NETOUTPUT;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *ANN_DATA;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *ANN_RESHAPE;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *ANN_ADD;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *ANN_MUL;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *ANN_SUB;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *ANN_DIV;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *ANN_DEQUANTIZE;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *ANN_QUANTIZE;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *ANN_PAD;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *ANN_RESIZE_BILINEAR;


/***************************************************/ /***************************************************/
/******************Training operator*************************/ /******************Training operator*************************/
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *GATHERV2;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *CONVGRADFILTER;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *CONV2D;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *CONV2DBACKPROPINPUT;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *FUSEDBATCHNORM;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *BIASADDGRAD;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *ACTIVATIONGRAD;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *MAXPOOLWITHARGMAX;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *MAXPOOLGRADWITHARGMAX;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *SPARSESOFTMAXCROSSENTROPYWITHLOGITS;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *SNAPSHOT;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *VAR;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *MEANGRAD;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *TRANSLATE;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *ADDN;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *L2LOSS;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *MULTIPLY;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *HUBERLOSSGRAD;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *HUBERLOSS;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *NEGATIVE;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *SSDCAST;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *SPARSESOFTMAXCROSSENTROPY;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *SPARSESOFTMAXCROSSENTROPYGRAD;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *SSDSQUEEZEFUSION;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *CONCATFOUR2FIVE;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *CONCATFIVE2FOUR;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *SSDREALDIVTILEMUL;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *SSDSUMMULREALDIVMEAN;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *VARIABLEV2;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *VARHANDLEOP;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *TEMPORARYVARIABLE;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *DESTROYTEMPORARYVARIABLE;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *VARIABLE;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *ASSIGN;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *ASSIGNVARIABLEOP;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *ASSIGNADD;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *ASSIGNADDVARIABLEOP;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *ASSIGNSUB;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *ASSIGNSUBVARIABLEOP;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *APPLYMOMENTUM;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *RESOURCEAPPLYMOMENTUM;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *SGD;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *NOOP;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *READVARIABLEOP;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *PARALLELCONCATSTART;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *CONSTANTOP;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *DEPTHWISECONV2DBACKPROPFILTER;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *DEPTHWISECONV2DBACKPORPINPUT;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *DEPTHWISECONV2DFORWARDNATIVE;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *DROPOUTGRAD;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *APPLYRMSPROPMIXEDPRECISION;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *APPLYRMSPROP;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *RELU6GRAD;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *AVGPOOLGRAD;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *CONCATV2;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *CONCATOFFSET;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *LAYERNORMGRAD;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *LAYERNORM;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *LARS;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *DYNAMICSTITCH;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *GATHERV2;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *CONVGRADFILTER;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *CONV2D;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *CONV2DBACKPROPINPUT;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *FUSEDBATCHNORM;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *BIASADDGRAD;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *ACTIVATIONGRAD;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *MAXPOOLWITHARGMAX;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *MAXPOOLGRADWITHARGMAX;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *SPARSESOFTMAXCROSSENTROPYWITHLOGITS;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *SNAPSHOT;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *VAR;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *MEANGRAD;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *TRANSLATE;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *ADDN;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *L2LOSS;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *MULTIPLY;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *HUBERLOSSGRAD;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *HUBERLOSS;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *NEGATIVE;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *SSDCAST;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *SPARSESOFTMAXCROSSENTROPY;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *SPARSESOFTMAXCROSSENTROPYGRAD;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *SSDSQUEEZEFUSION;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *CONCATFOUR2FIVE;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *CONCATFIVE2FOUR;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *SSDREALDIVTILEMUL;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *SSDSUMMULREALDIVMEAN;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *VARIABLEV2;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *VARHANDLEOP;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *TEMPORARYVARIABLE;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *DESTROYTEMPORARYVARIABLE;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *VARIABLE;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *ASSIGN;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *ASSIGNVARIABLEOP;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *ASSIGNADD;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *ASSIGNADDVARIABLEOP;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *ASSIGNSUB;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *ASSIGNSUBVARIABLEOP;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *APPLYMOMENTUM;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *RESOURCEAPPLYMOMENTUM;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *SGD;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *NOOP;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *READVARIABLEOP;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *PARALLELCONCATSTART;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *CONSTANTOP;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *DEPTHWISECONV2DBACKPROPFILTER;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *DEPTHWISECONV2DBACKPORPINPUT;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *DEPTHWISECONV2DFORWARDNATIVE;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *DROPOUTGRAD;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *APPLYRMSPROPMIXEDPRECISION;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *APPLYRMSPROP;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *RELU6GRAD;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *AVGPOOLGRAD;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *CONCATV2;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *CONCATOFFSET;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *LAYERNORMGRAD;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *LAYERNORM;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *LARS;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *DYNAMICSTITCH;


/***************************************************/ /***************************************************/
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *SQUARE;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *HCOMBROADCAST;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *HCOMALLGATHER;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *HCOMALLREDUCE;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *HCOMREDUCESCATTER;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *HCOMSEND;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *HCOMRECEIVE;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *HCOMREMOTEREAD;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *HCOMREMOTEREFREAD;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *HCOMREMOTEWRITE;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *HCOMREMOTESCATTERWRITE;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *VARASSIGN;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *VARISINITIALIZEDOP;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *LogTimeStamp;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *ISVARIABLEINITIALIZED;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *STREAMSWITCH;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *STREAMSWITCHN;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *STREAMACTIVE;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *MEMCPYASYNC;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *MEMCPYADDRASYNC;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *STREAMMERGE;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *ENDGRAPH;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *SEND;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *RECV;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *ENDOFSEQUENCE;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *LABELSET;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *LABELGOTO;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *LABELGOTOEX;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *LABELSWITCH;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *LABELSWITCHBYINDEX;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *ATOMICADDRCLEAN;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *ABS_GRAD;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *ACCUMULATE_N_V2;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *ACOS_GRAD;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *ACOSH_GRAD;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *ANY;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *APPROXIMATE_EQUAL;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *ASIN_GRAD;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *ASINH_GRAD;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *ATAN_GRAD;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *BROADCAST_TO;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *ELU_GRAD;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *ADD_V2;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *DATAFORMATDIMMAP;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *DATAFORMATVECPERMUTE;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *BESSELI0E;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *BESSELI1E;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *APPLYADADELTA;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *APPLYADAGRAD;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *APPLYADAGRADDA;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *APPLYADAM;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *APPLYADAMAX;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *APPLYADDSIGN;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *APPLYCENTEREDRMSPROP;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *APPLYFTRL;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *APPLYFTRLV2;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *APPLYGRADIENTDESCENT;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *APPLYPOWERSIGN;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *APPLYPROXIMALADAGRAD;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *APPLYPROXIMALGRADIENTDESCENT;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *DEQUANTIZE;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *FOCAL_LOSS;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *FOCAL_LOSS_GRAD;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *SMOOTHL1_LOSS;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *SMOOTHL1_LOSS_grad;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *REDUCEMEAN;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *CONCAT_V2;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *ONEHOT_V2;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *SLICE_V2;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *TILE_V2;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *SUM_V2;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *SQUARE;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *HCOMBROADCAST;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *HCOMALLGATHER;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *HCOMALLREDUCE;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *HCOMREDUCESCATTER;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *HCOMSEND;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *HCOMRECEIVE;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *HCOMREMOTEREAD;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *HCOMREMOTEREFREAD;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *HCOMREMOTEWRITE;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *HCOMREMOTESCATTERWRITE;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *VARASSIGN;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *VARISINITIALIZEDOP;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *LogTimeStamp;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *ISVARIABLEINITIALIZED;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *STREAMSWITCH;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *STREAMSWITCHN;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *STREAMACTIVE;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *MEMCPYASYNC;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *MEMCPYADDRASYNC;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *STREAMMERGE;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *ENDGRAPH;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *SEND;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *RECV;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *ENDOFSEQUENCE;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *LABELSET;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *LABELGOTO;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *LABELGOTOEX;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *LABELSWITCH;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *LABELSWITCHBYINDEX;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *ATOMICADDRCLEAN;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *ABS_GRAD;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *ACCUMULATE_N_V2;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *ACOS_GRAD;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *ACOSH_GRAD;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *ANY;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *APPROXIMATE_EQUAL;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *ASIN_GRAD;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *ASINH_GRAD;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *ATAN_GRAD;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *BROADCAST_TO;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *ELU_GRAD;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *ADD_V2;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *DATAFORMATDIMMAP;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *DATAFORMATVECPERMUTE;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *BESSELI0E;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *BESSELI1E;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *APPLYADADELTA;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *APPLYADAGRAD;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *APPLYADAGRADDA;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *APPLYADAM;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *APPLYADAMAX;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *APPLYADDSIGN;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *APPLYCENTEREDRMSPROP;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *APPLYFTRL;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *APPLYFTRLV2;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *APPLYGRADIENTDESCENT;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *APPLYPOWERSIGN;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *APPLYPROXIMALADAGRAD;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *APPLYPROXIMALGRADIENTDESCENT;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *DEQUANTIZE;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *FOCAL_LOSS;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *FOCAL_LOSS_GRAD;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *SMOOTHL1_LOSS;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *SMOOTHL1_LOSS_grad;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *REDUCEMEAN;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *CONCAT_V2;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *ONEHOT_V2;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *SLICE_V2;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *TILE_V2;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *SUM_V2;
// Common type when the operator has the same name // Common type when the operator has the same name
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *DETECTIONOUTPUT;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *DETECTIONOUTPUT;
// Custom operator // Custom operator
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *CUSTOMOP;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *CUSTOMOP_NCHW;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *CUSTOMOP_NHWC;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *CUSTOMOP_NC1HWC0;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *CUSTOMOP;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *CUSTOMOP_NCHW;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *CUSTOMOP_NHWC;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *CUSTOMOP_NC1HWC0;


// Depthwise 4d_2_6d,6d_2_4d // Depthwise 4d_2_6d,6d_2_4d
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *DEPTHWISEWEIGHT4D26D;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *DEPTHWISEWEIGHT6D24D;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *DEPTHWISEWEIGHT4D26D;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *DEPTHWISEWEIGHT6D24D;


FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *SQRTGRAD;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *SIGMOIDGRAD;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *SQRTGRAD;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *SIGMOIDGRAD;


FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *TRANSSHAPE;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *TRANSSHAPE;


// Horovod operator // Horovod operator
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *HVDCALLBACKALLREDUCE;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *HVDCALLBACKALLGATHER;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *HVDCALLBACKBROADCAST;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const char *HVDWAIT;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *HVDCALLBACKALLREDUCE;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *HVDCALLBACKALLGATHER;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *HVDCALLBACKBROADCAST;
FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY extern const ge::char_t *HVDWAIT;


/// ///
/// @brief Magic number of model file /// @brief Magic number of model file


+ 15
- 0
inc/framework/pne/pne_model.h View File

@@ -31,8 +31,10 @@
namespace ge { namespace ge {
const std::string PNE_ID_NPU = "NPU"; const std::string PNE_ID_NPU = "NPU";
const std::string PNE_ID_CPU = "HOST_CPU"; const std::string PNE_ID_CPU = "HOST_CPU";
const std::string PNE_ID_UDF = "UDF";


struct ModelRelation; struct ModelRelation;
struct ModelDeployResource;
class PneModel { class PneModel {
public: public:
PneModel() = default; PneModel() = default;
@@ -100,6 +102,14 @@ class PneModel {
return model_relation_; return model_relation_;
} }


inline void SetDeployResource(std::shared_ptr<ModelDeployResource> deploy_resource) {
deploy_resource_ = std::move(deploy_resource);
}

inline const std::shared_ptr<ModelDeployResource> GetDeployResource() const {
return deploy_resource_;
}

public: public:
virtual Status SerializeModel(ModelBufferData &model_buff) = 0; virtual Status SerializeModel(ModelBufferData &model_buff) = 0;


@@ -113,9 +123,14 @@ class PneModel {
return model_id_; return model_id_;
} }


virtual std::string GetLogicDeviceId() const {
return "";
}

private: private:
std::map<std::string, std::shared_ptr<PneModel>> submodels_; std::map<std::string, std::shared_ptr<PneModel>> submodels_;
std::shared_ptr<ModelRelation> model_relation_; std::shared_ptr<ModelRelation> model_relation_;
std::shared_ptr<ModelDeployResource> deploy_resource_;
ComputeGraphPtr root_graph_ = nullptr; ComputeGraphPtr root_graph_ = nullptr;
std::string model_name_; std::string model_name_;
std::string model_type_; std::string model_type_;


+ 18
- 0
inc/framework/pne/process_node_engine.h View File

@@ -29,6 +29,8 @@
namespace ge { namespace ge {
class ProcessNodeEngineImpl { class ProcessNodeEngineImpl {
public: public:
virtual ~ProcessNodeEngineImpl() = default;

virtual Status OptimizeGraph(const std::vector<GeTensor> &inputs, ComputeGraphPtr &compute_graph) = 0; virtual Status OptimizeGraph(const std::vector<GeTensor> &inputs, ComputeGraphPtr &compute_graph) = 0;


virtual Status BuildGraph(ComputeGraphPtr &compute_graph, PneModelPtr &model) = 0; virtual Status BuildGraph(ComputeGraphPtr &compute_graph, PneModelPtr &model) = 0;
@@ -56,6 +58,22 @@ class ProcessNodeEngine {


virtual void SetImpl(ProcessNodeEngineImplPtr impl) = 0; virtual void SetImpl(ProcessNodeEngineImplPtr impl) = 0;


virtual Status AddGraph(const ComputeGraphPtr &compute_graph, const std::map<std::string, std::string> &options) {
(void)compute_graph;
(void)options;
return SUCCESS;
}

virtual Status RemoveGraph(const uint32_t graph_id) {
(void)graph_id;
return SUCCESS;
}

virtual Status ParallelPartition(const ComputeGraphPtr &compute_graph) {
(void)compute_graph;
return NOT_CHANGED;
}

protected: protected:
std::string engine_id_; std::string engine_id_;
ProcessNodeEngineImplPtr impl_ = nullptr; ProcessNodeEngineImplPtr impl_ = nullptr;


+ 56
- 0
inc/framework/runtime/exe_graph_executor.h View File

@@ -0,0 +1,56 @@
/**
* Copyright (c) Huawei Technologies Co., Ltd. 2022. All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

#ifndef AIR_CXX_INC_FRAMEWORK_RUNTIME_EXE_GRAPH_EXECUTOR_H_
#define AIR_CXX_INC_FRAMEWORK_RUNTIME_EXE_GRAPH_EXECUTOR_H_
#include "graph/ge_error_codes.h"

#include "common/ge_visibility.h"
#include "exe_graph_resource_guard.h"
#include "subscriber/executor_subscriber_c.h"
namespace gert {
class VISIBILITY_EXPORT ExeGraphExecutor {
public:
ge::graphStatus Load() const {
return ge::GRAPH_SUCCESS;
}
ge::graphStatus UnLoad() const {
return ge::GRAPH_SUCCESS;
}

/**
* 设置图执行的输入/输出,需要注意的是,使用者需要自己保证inputs/outputs刷新完全!!!
*/
ge::graphStatus SpecifyInputs(void **inputs, size_t start, size_t num);
ge::graphStatus SpecifyOutputs(void **outputs, size_t num);
ge::graphStatus Execute();
ge::graphStatus Execute(ExecutorSubscriber *callback);

const void *GetExecutionData() const {
return execution_data_;
}

ResourceGuard &GetResourceGuard();
void *SetExecutionData(std::unique_ptr<uint8_t[]> execution_data);

private:
friend class ModelV2ExecutorTestHelper;

void *execution_data_{nullptr};
ResourceGuard resource_guard_;
};
} // namespace gert
#endif // AIR_CXX_INC_FRAMEWORK_RUNTIME_EXE_GRAPH_EXECUTOR_H_

+ 69
- 0
inc/framework/runtime/exe_graph_resource_guard.h View File

@@ -0,0 +1,69 @@
/**
* Copyright (c) Huawei Technologies Co., Ltd. 2022. All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

#ifndef AIR_CXX_INC_FRAMEWORK_RUNTIME_EXE_GRAPH_RESOURCE_GUARD_H_
#define AIR_CXX_INC_FRAMEWORK_RUNTIME_EXE_GRAPH_RESOURCE_GUARD_H_
#include <memory>
#include <vector>
#include <cstdint>
#include "common/ge_visibility.h"

namespace gert {
class VISIBILITY_EXPORT ResourceGuard {
public:
void *ResetExecutionData(std::unique_ptr<uint8_t[]> execution_data);
void ResetAnyValue(std::unique_ptr<uint8_t[]> any_values, size_t count);
void PushNode(void *node);
void PushWatcher(void *watcher);
void *ResetNodesArray(std::unique_ptr<uint8_t[]> nodes_array);
void *ResetStartNodesArray(std::unique_ptr<uint8_t[]> start_nodes_array);
void *ResetNodesIndgreeArray(std::unique_ptr<uint8_t[]> nodes_indgree_array);
void *ResetNodesWaitIndgreeArray(std::unique_ptr<uint8_t[]> nodes_indgree_array);
void *ResetInputsArray(std::unique_ptr<uint8_t[]> inputs_array);
void *ResetOutputsArray(std::unique_ptr<uint8_t[]> outputs_array);
void *ResetWatchersArray(std::unique_ptr<uint8_t[]> watchers_array);
void *ResetReadyQueue(void *ready_queue);
void *ResetBuffer(std::unique_ptr<uint8_t[]> buffer);
void *ResetComputeNodeInfo(std::unique_ptr<uint8_t[]> compute_node_info);
void *ResetKernelExtendInfo(std::unique_ptr<uint8_t[]> kernel_extend_info);
void *ResetModelDesc(std::unique_ptr<uint8_t[]> model_desc);

~ResourceGuard();

private:
std::unique_ptr<uint8_t[]> execution_data_holder_;
size_t any_values_num_;
std::unique_ptr<uint8_t[]> any_values_guard_;

std::vector<std::unique_ptr<void, decltype(&free)>> nodes_guarder_;
std::vector<std::unique_ptr<void, decltype(&free)>> watchers_guarder_;
std::unique_ptr<uint8_t[]> continuous_buffer_guarder_;
std::unique_ptr<uint8_t[]> buffer_guarder_;
std::unique_ptr<uint8_t[]> compute_node_info_guarder_;
std::unique_ptr<uint8_t[]> kernel_extend_info_guarder_;
std::unique_ptr<uint8_t[]> model_desc_guarder_;

std::unique_ptr<uint8_t[]> nodes_array_guarder_;
std::unique_ptr<uint8_t[]> start_nodes_array_guarder_;
std::unique_ptr<uint8_t[]> nodes_indgree_array_guarder_;
std::unique_ptr<uint8_t[]> nodes_wait_indgree_array_guarder_;
std::unique_ptr<uint8_t[]> inputs_array_guarder_;
std::unique_ptr<uint8_t[]> outputs_array_guarder_;
std::unique_ptr<uint8_t[]> watchers_array_guarder_;
std::unique_ptr<void, decltype(&free)> ready_queue_guarder_{nullptr, nullptr};
};
} // namespace gert
#endif // AIR_CXX_INC_FRAMEWORK_RUNTIME_EXE_GRAPH_RESOURCE_GUARD_H_

+ 5
- 1
inc/framework/runtime/gert_api.h View File

@@ -18,9 +18,13 @@
#define AIR_CXX_INC_FRAMEWORK_RUNTIME_GERT_API_H_ #define AIR_CXX_INC_FRAMEWORK_RUNTIME_GERT_API_H_
#include "model_v2_executor.h" #include "model_v2_executor.h"
#include "common/ge_types.h" #include "common/ge_types.h"
#include "common/ge_visibility.h"


namespace gert { namespace gert {
std::unique_ptr<ModelV2Executor> LoadExecutorFromFile(const char *file_path, ge::graphStatus &error_code);
VISIBILITY_EXPORT
std::unique_ptr<ModelV2Executor> LoadExecutorFromFile(const char *model_path, ge::graphStatus &error_code);

VISIBILITY_EXPORT
std::unique_ptr<ModelV2Executor> LoadExecutorFromModelData(const ge::ModelData &model_data, std::unique_ptr<ModelV2Executor> LoadExecutorFromModelData(const ge::ModelData &model_data,
ge::graphStatus &error_code); ge::graphStatus &error_code);
} // namespace gert } // namespace gert


+ 95
- 93
inc/framework/runtime/model_desc.h View File

@@ -1,94 +1,96 @@
/**
* Copyright (c) Huawei Technologies Co., Ltd. 2022. All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef AIR_CXX_INC_FRAMEWORK_RUNTIME_MODEL_DESC_H_
#define AIR_CXX_INC_FRAMEWORK_RUNTIME_MODEL_DESC_H_
#include "common/ge_types.h"
#include "exe_graph/runtime/shape.h"
#include "exe_graph/runtime/continuous_vector.h"
#include "exe_graph/runtime/storage_format.h"
#include "exe_graph/runtime/storage_shape.h"
namespace gert {
class ShapeRange {
public:
const Shape &GetMin() const;
const Shape &GetMax() const;
Shape &MutableMin();
Shape &MutableMax();
private:
Shape min_;
Shape max_;
};
class ModelIoDesc {
public:
const char *GetName() const;
int32_t GetDataType() const;
ge::Format GetStorageFormat() const;
ge::Format GetOriginFormat() const;
int64_t GetSize() const;
const Shape &GetStorageShape() const;
const Shape &GetOriginShape() const;
const ShapeRange &GetOriginShapeRange() const;
const ShapeRange &GetStorageShapeRange() const;
void SetName(const char *name);
void SetDataType(int32_t data_type);
void SetStorageFormat(ge::Format format);
void SetOriginFormat(ge::Format format);
Shape &MutableStorageShape();
Shape &MutableOriginShape();
ShapeRange &MutableOriginShapeRange();
ShapeRange &MutableStorageShapeRange();
private:
const char *name_;
int32_t data_type_;
StorageFormat format_;
StorageShape shape_;
ShapeRange storage_shape_range_;
ShapeRange origin_shape_range_;
};
class ModelDesc {
public:
static size_t CalcSize(size_t input_num, size_t output_num);
const ModelIoDesc *GetInputDesc(size_t index) const;
const ModelIoDesc *GetAllInputsDesc(size_t &input_num) const;
const ModelIoDesc *GetOutputDesc(size_t index) const;
const ModelIoDesc *GetAllOutputsDesc(size_t &output_num) const;
ModelIoDesc *MutableInputDesc(size_t index);
ModelIoDesc *MutableOutputDesc(size_t index);
ModelIoDesc *AllMutableIoDesc(size_t &input_num, size_t &output_num);
void SetInputNum(size_t input_num);
void SetOutputNum(size_t output_num);
ge::graphStatus GetDynamicBatchInfo(std::vector<std::vector<int64_t>> &batch_info, int32_t &dynamic_type) const;
ge::graphStatus GetUserDesignateShapeOrder(std::vector<std::string> &user_designate_shape_order) const;
ge::graphStatus GetModelAttrs(std::vector<std::string> &attrs) const;
private:
size_t input_num_;
size_t output_num_;
ContinuousVector model_io_descs_;
};
} // namespace gert
/**
* Copyright (c) Huawei Technologies Co., Ltd. 2022. All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

#ifndef AIR_CXX_INC_FRAMEWORK_RUNTIME_MODEL_DESC_H_
#define AIR_CXX_INC_FRAMEWORK_RUNTIME_MODEL_DESC_H_
#include "common/ge_types.h"
#include "common/ge_visibility.h"

#include "exe_graph/runtime/shape.h"
#include "exe_graph/runtime/continuous_vector.h"
#include "exe_graph/runtime/storage_format.h"
#include "exe_graph/runtime/storage_shape.h"

namespace gert {
class VISIBILITY_EXPORT ShapeRange {
public:
const Shape &GetMin() const;
const Shape &GetMax() const;
Shape &MutableMin();
Shape &MutableMax();

private:
Shape min_;
Shape max_;
};

class VISIBILITY_EXPORT ModelIoDesc {
public:
const char *GetName() const;
int32_t GetDataType() const;
ge::Format GetStorageFormat() const;
ge::Format GetOriginFormat() const;
int64_t GetSize() const;
const Shape &GetStorageShape() const;
const Shape &GetOriginShape() const;
const ShapeRange &GetOriginShapeRange() const;
const ShapeRange &GetStorageShapeRange() const;

void SetName(const char *name);
void SetDataType(int32_t data_type);
void SetStorageFormat(ge::Format format);
void SetOriginFormat(ge::Format format);
Shape &MutableStorageShape();
Shape &MutableOriginShape();
ShapeRange &MutableOriginShapeRange();
ShapeRange &MutableStorageShapeRange();

private:
const char *name_;
int32_t data_type_;
StorageFormat format_;
StorageShape shape_;
ShapeRange storage_shape_range_;
ShapeRange origin_shape_range_;
};

class VISIBILITY_EXPORT ModelDesc {
public:
static size_t CalcSize(size_t input_num, size_t output_num);
const ModelIoDesc *GetInputDesc(size_t index) const;
const ModelIoDesc *GetAllInputsDesc(size_t &input_num) const;

const ModelIoDesc *GetOutputDesc(size_t index) const;
const ModelIoDesc *GetAllOutputsDesc(size_t &output_num) const;

ModelIoDesc *MutableInputDesc(size_t index);
ModelIoDesc *MutableOutputDesc(size_t index);
ModelIoDesc *AllMutableIoDesc(size_t &input_num, size_t &output_num);
void SetInputNum(size_t input_num);
void SetOutputNum(size_t output_num);

ge::graphStatus GetDynamicBatchInfo(std::vector<std::vector<int64_t>> &batch_info, int32_t &dynamic_type) const;
ge::graphStatus GetUserDesignateShapeOrder(std::vector<std::string> &user_designate_shape_order) const;
ge::graphStatus GetModelAttrs(std::vector<std::string> &attrs) const;

private:
size_t input_num_;
size_t output_num_;
ContinuousVector model_io_descs_;
};
} // namespace gert

#endif // AIR_CXX_INC_FRAMEWORK_RUNTIME_MODEL_DESC_H_ #endif // AIR_CXX_INC_FRAMEWORK_RUNTIME_MODEL_DESC_H_

+ 15
- 77
inc/framework/runtime/model_v2_executor.h View File

@@ -22,94 +22,25 @@
#include "model_desc.h" #include "model_desc.h"
#include "runtime/stream.h" #include "runtime/stream.h"
#include "exe_graph/runtime/tensor.h" #include "exe_graph/runtime/tensor.h"
#include "common/ge_visibility.h"
#include "exe_graph_resource_guard.h"
#include "exe_graph_executor.h"
#include "subscriber/executor_subscribers_scheduler.h"


namespace gert { namespace gert {
enum SubExeGraphType { kInitExeGraph, kMainExeGraph, kDeInitExeGraph, kSubExeGraphTypeEnd }; enum SubExeGraphType { kInitExeGraph, kMainExeGraph, kDeInitExeGraph, kSubExeGraphTypeEnd };
static constexpr char *kSubExeGraphTypeStrs[kSubExeGraphTypeEnd] = {(char *)"Init", (char *)"Main", (char *)"DeInit"};
static constexpr char *kSubExeGraphTypeStrs[kSubExeGraphTypeEnd] = {
const_cast<char *>("Init"), const_cast<char *>("Main"), const_cast<char *>("DeInit")};
inline const char *GetSubExeGraphTypeStr(SubExeGraphType type) { inline const char *GetSubExeGraphTypeStr(SubExeGraphType type) {
return kSubExeGraphTypeStrs[type]; return kSubExeGraphTypeStrs[type];
} }


class ResourceGuard {
public:
void *ResetExecutionData(std::unique_ptr<uint8_t[]> execution_data);
void ResetAnyValue(std::unique_ptr<uint8_t[]> any_values, size_t count);
void PushNode(void *node);
void PushWatcher(void *watcher);
void *ResetNodesArray(std::unique_ptr<uint8_t[]> nodes_array);
void *ResetStartNodesArray(std::unique_ptr<uint8_t[]> start_nodes_array);
void *ResetNodesIndgreeArray(std::unique_ptr<uint8_t[]> nodes_indgree_array);
void *ResetNodesWaitIndgreeArray(std::unique_ptr<uint8_t[]> nodes_indgree_array);
void *ResetInputsArray(std::unique_ptr<uint8_t[]> inputs_array);
void *ResetOutputsArray(std::unique_ptr<uint8_t[]> outputs_array);
void *ResetWatchersArray(std::unique_ptr<uint8_t[]> watchers_array);
void *ResetReadyQueue(void *ready_queue);
void *ResetBuffer(std::unique_ptr<uint8_t[]> buffer);
void *ResetComputeNodeInfo(std::unique_ptr<uint8_t[]> compute_node_info);
void *ResetKernelExtendInfo(std::unique_ptr<uint8_t[]> kernel_extend_info);
void *ResetModelDesc(std::unique_ptr<uint8_t[]> model_desc);

~ResourceGuard();

private:
std::unique_ptr<uint8_t[]> execution_data_holder_;
size_t any_values_num_;
std::unique_ptr<uint8_t[]> any_values_guard_;

std::vector<std::unique_ptr<void, decltype(&free)>> nodes_guarder_;
std::vector<std::unique_ptr<void, decltype(&free)>> watchers_guarder_;
std::unique_ptr<uint8_t[]> continuous_buffer_guarder_;
std::unique_ptr<uint8_t[]> buffer_guarder_;
std::unique_ptr<uint8_t[]> compute_node_info_guarder_;
std::unique_ptr<uint8_t[]> kernel_extend_info_guarder_;
std::unique_ptr<uint8_t[]> model_desc_guarder_;

std::unique_ptr<uint8_t[]> nodes_array_guarder_;
std::unique_ptr<uint8_t[]> start_nodes_array_guarder_;
std::unique_ptr<uint8_t[]> nodes_indgree_array_guarder_;
std::unique_ptr<uint8_t[]> nodes_wait_indgree_array_guarder_;
std::unique_ptr<uint8_t[]> inputs_array_guarder_;
std::unique_ptr<uint8_t[]> outputs_array_guarder_;
std::unique_ptr<uint8_t[]> watchers_array_guarder_;
std::unique_ptr<void, decltype(&free)> ready_queue_guarder_{nullptr, nullptr};
};

struct ModelExecuteArg { struct ModelExecuteArg {
rtStream_t stream; rtStream_t stream;
}; };
static_assert(std::is_standard_layout<ModelExecuteArg>::value, "The class ModelExecuteArg must be a POD"); static_assert(std::is_standard_layout<ModelExecuteArg>::value, "The class ModelExecuteArg must be a POD");


class ExeGraphExecutor {
public:
// todo unload时释放anyvalue资源
ge::graphStatus Load() {
return ge::GRAPH_SUCCESS;
}
ge::graphStatus UnLoad() {
return ge::GRAPH_SUCCESS;
}

/**
* 设置图执行的输入/输出,需要注意的是,使用者需要自己保证inputs/outputs刷新完全!!!
*/
ge::graphStatus SpecifyInputs(void **inputs, size_t start, size_t num);
ge::graphStatus SpecifyOutputs(void **outputs, size_t num);
ge::graphStatus Execute();

const void *GetExecutionData() const {
return execution_data_;
}

ResourceGuard &GetResourceGuard();
void *SetExecutionData(std::unique_ptr<uint8_t[]> execution_data);

private:
friend class ModelV2ExecutorTestHelper;

void *execution_data_;
ResourceGuard resource_guard_;
};
class ModelV2Executor {
class VISIBILITY_EXPORT ModelV2Executor {
public: public:
static std::unique_ptr<ModelV2Executor> Create(const ge::ComputeGraphPtr &root_graph); static std::unique_ptr<ModelV2Executor> Create(const ge::ComputeGraphPtr &root_graph);


@@ -121,6 +52,12 @@ class ModelV2Executor {


const ModelDesc &GetModelDesc() const; const ModelDesc &GetModelDesc() const;
void SetModelDesc(ModelDesc *model_desc); void SetModelDesc(ModelDesc *model_desc);
ExeGraphExecutor &GetMainExeGraphExecutor() {
return graphs_[kMainExeGraph];
}
ExecutorSubscribersScheduler &GetSubscribers();
const ExecutorSubscribersScheduler &GetSubscribers() const;

ModelV2Executor(const ModelV2Executor &) = delete; ModelV2Executor(const ModelV2Executor &) = delete;
ModelV2Executor(ModelV2Executor &&) = delete; ModelV2Executor(ModelV2Executor &&) = delete;
ModelV2Executor &operator=(const ModelV2Executor &) = delete; ModelV2Executor &operator=(const ModelV2Executor &) = delete;
@@ -129,13 +66,14 @@ class ModelV2Executor {
private: private:
friend class ModelV2ExecutorBuilder; friend class ModelV2ExecutorBuilder;
friend class ModelV2ExecutorTestHelper; friend class ModelV2ExecutorTestHelper;
ModelV2Executor() = default;
ModelV2Executor();


private: private:
std::array<ExeGraphExecutor, kSubExeGraphTypeEnd> graphs_; std::array<ExeGraphExecutor, kSubExeGraphTypeEnd> graphs_;
ResourceGuard resource_guard_; ResourceGuard resource_guard_;
ModelDesc *model_desc_ = nullptr; ModelDesc *model_desc_ = nullptr;
rtStream_t default_stream_ = nullptr; rtStream_t default_stream_ = nullptr;
ExecutorSubscribersScheduler subscribers_;
}; };
} // namespace gert } // namespace gert




+ 71
- 0
inc/framework/runtime/subscriber/built_in_subscriber_definitions.h View File

@@ -0,0 +1,71 @@
/**
* Copyright (c) Huawei Technologies Co., Ltd. 2022. All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

#ifndef AIR_CXX_INC_FRAMEWORK_RUNTIME_SUBSCRIBER_BUILT_IN_SUBSCRIBER_DEFINITIONS_H_
#define AIR_CXX_INC_FRAMEWORK_RUNTIME_SUBSCRIBER_BUILT_IN_SUBSCRIBER_DEFINITIONS_H_
#include <type_traits>
#include <vector>
#include "framework/common/ge_visibility.h"
namespace gert {
constexpr size_t kProfilingDataCap = 10UL * 1024UL * 1024UL;
constexpr size_t kInitSize = 10UL * 1024UL;
constexpr size_t kModelStrIdx = 0UL;
constexpr size_t kExecuteStrIdx = 1UL;
constexpr size_t kRegStartIdx = 2UL;
constexpr size_t kDouble = 2UL;

enum class BuiltInSubscriberType { kProfiling, kDumper, kNum };

enum class ProfilingType {
kHost, // 打开Host侧调度的profiling
kDevice,
kGeHost, // 打开GE Host侧调度的profiling
kSingleOpReg, // 单算子需要打开此开关开始register node name和kernel type
kNum,
kAll = kNum
};
static_assert(static_cast<size_t>(ProfilingType::kNum) < sizeof(uint64_t) * 8,
"The max num of profiling type must less than the width of uint64");

enum class DumpType { kDataDump, kExceptionDump, kExceptionSave, kNum, kAll = kNum };
static_assert(static_cast<size_t>(DumpType::kNum) < sizeof(uint64_t) * 8,
"The max num of dumper type must less than the width of uint64");

class VISIBILITY_EXPORT BuiltInSubscriberUtil {
public:
template <typename T,
typename std::enable_if<(std::is_same<T, ProfilingType>::value) || (std::is_same<T, DumpType>::value),
int>::type = 0>
constexpr static uint64_t EnableBit(T et) {
return 1UL << static_cast<size_t>(et);
}

template <typename T,
typename std::enable_if<(std::is_same<T, ProfilingType>::value) || (std::is_same<T, DumpType>::value),
int>::type = 0>
static uint64_t BuildEnableFlags(const std::vector<T> &enable_types) {
uint64_t flag = 0UL;
for (auto et : enable_types) {
if (et == T::kAll) {
return EnableBit(T::kNum) - 1UL;
}
flag |= EnableBit(et);
}
return flag;
}
};
} // namespace gert
#endif // AIR_CXX_INC_FRAMEWORK_RUNTIME_SUBSCRIBER_BUILT_IN_SUBSCRIBER_DEFINITIONS_H_

+ 33
- 0
inc/framework/runtime/subscriber/executor_subscriber_c.h View File

@@ -0,0 +1,33 @@
/**
* Copyright (c) Huawei Technologies Co., Ltd. 2022. All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

#ifndef AIR_CXX_INC_FRAMEWORK_RUNTIME_EXECUTOR_SUBSCRIBER_C_H_
#define AIR_CXX_INC_FRAMEWORK_RUNTIME_EXECUTOR_SUBSCRIBER_C_H_
#include "exe_graph/runtime/base_type.h"
#ifdef __cplusplus
extern "C" {
#endif
typedef enum { kExecuteStart, kExecuteEnd, kModelStart, kModelEnd, kExecuteEventEnd } ExecutorEvent;

typedef void (*SubscriberFunc)(void *arg, ExecutorEvent event, const void *node, KernelStatus result);
typedef struct {
SubscriberFunc callback;
void *arg;
} ExecutorSubscriber;
#ifdef __cplusplus
}
#endif
#endif // AIR_CXX_INC_FRAMEWORK_RUNTIME_EXECUTOR_SUBSCRIBER_C_H_

+ 76
- 0
inc/framework/runtime/subscriber/executor_subscriber_guarder.h View File

@@ -0,0 +1,76 @@
/**
* Copyright (c) Huawei Technologies Co., Ltd. 2022. All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

#ifndef AIR_CXX_INC_FRAMEWORK_RUNTIME_EXECUTOR_SUBSCRIBER_GUARDER_H_
#define AIR_CXX_INC_FRAMEWORK_RUNTIME_EXECUTOR_SUBSCRIBER_GUARDER_H_
#include "framework/common/ge_visibility.h"
#include "common/checker.h"
#include "executor_subscriber_c.h"
namespace gert {
template <typename T>
void ObjectDeleter(void *obj) {
delete static_cast<T *>(obj);
}

class VISIBILITY_EXPORT ExecutorSubscriberGuarder {
public:
using ArgDeleter = void (*)(void *);

ExecutorSubscriberGuarder(::SubscriberFunc func, void *arg, ArgDeleter deleter)
: subscriber_({func, arg}), arg_deleter_(deleter) {}
ExecutorSubscriberGuarder(ExecutorSubscriberGuarder &&other) noexcept {
MoveAssignment(other);
}
ExecutorSubscriberGuarder &operator=(ExecutorSubscriberGuarder &&other) noexcept {
DeleteArg();
MoveAssignment(other);
return *this;
}

ExecutorSubscriber &GetSubscriber() {
return subscriber_;
}

const ExecutorSubscriber &GetSubscriber() const {
return subscriber_;
}

~ExecutorSubscriberGuarder() {
DeleteArg();
}

ExecutorSubscriberGuarder(const ExecutorSubscriberGuarder &) = delete;
ExecutorSubscriberGuarder &operator=(const ExecutorSubscriberGuarder &) = delete;

private:
void DeleteArg() {
if (arg_deleter_ != nullptr) {
arg_deleter_(subscriber_.arg);
}
}
void MoveAssignment(ExecutorSubscriberGuarder &other) {
subscriber_ = other.subscriber_;
arg_deleter_ = other.arg_deleter_;
other.subscriber_ = {nullptr, nullptr};
other.arg_deleter_ = nullptr;
}

private:
ExecutorSubscriber subscriber_{nullptr, nullptr};
ArgDeleter arg_deleter_{nullptr};
};
} // namespace gert
#endif // AIR_CXX_INC_FRAMEWORK_RUNTIME_EXECUTOR_SUBSCRIBER_GUARDER_H_

+ 149
- 0
inc/framework/runtime/subscriber/executor_subscribers_scheduler.h View File

@@ -0,0 +1,149 @@
/**
* Copyright (c) Huawei Technologies Co., Ltd. 2022. All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

#ifndef AIR_CXX_INC_FRAMEWORK_RUNTIME_EXECUTOR_SUBSCRIBERS_SCHEDULER_H_
#define AIR_CXX_INC_FRAMEWORK_RUNTIME_EXECUTOR_SUBSCRIBERS_SCHEDULER_H_
#include <vector>
#include <array>
#include "executor_subscriber_guarder.h"
#include "built_in_subscriber_definitions.h"
#include "global_profiling.h"
#include "framework/common/ge_visibility.h"
namespace gert {
namespace {
constexpr size_t kInitSubscriberSize = 1UL;
}
class ModelV2Executor;
class VISIBILITY_EXPORT ExecutorSubscribersScheduler {
public:
static void OnExecuteEvent(ExecutorSubscribersScheduler *ins, ExecutorEvent event, const void *node,
KernelStatus result);

ExecutorSubscribersScheduler()
: executor_(nullptr),
enabled_(false),
built_in_subscribers_ptr_(),
subscribers_(),
subscriber_wrapper_({reinterpret_cast<::SubscriberFunc>(ExecutorSubscribersScheduler::OnExecuteEvent), this}) {}
#ifdef ONLY_COMPILE_OPEN_SRC
~ExecutorSubscribersScheduler();
#endif
void Init(ModelV2Executor *executor);
ExecutorSubscribersScheduler(const ExecutorSubscribersScheduler &) = delete;
ExecutorSubscribersScheduler &operator=(const ExecutorSubscribersScheduler &) = delete;
ExecutorSubscriber &GetSubscriber() {
if (subscribers_.size() == 1UL) {
return subscribers_[0].GetSubscriber();
} else {
return subscriber_wrapper_;
}
}

ModelV2Executor *GetModelV2Executor() {
return executor_;
}
const ModelV2Executor *GetModelV2Executor() const {
return executor_;
}

/**
* 设置订阅者,订阅者需要实现一个static方法,原型为:
* ```c++
* static void OnExecuteEvent(T *void_arg, ExecutorEvent event, const void *node, KernelStatus result);
* ```
*
* 默认情况下,subscribers处于disable状态,在添加首个subscriber时,自动将状态切换到enable状态。
*
* @tparam T 订阅者类型
* @tparam Args 订阅者初始化参数类型
* @param args 订阅者初始化参数
* @return 添加的subscriber指针,注意subscriber所有权归`ExecutorSubscribersScheduler`所有,外部使用者不可以释放此指针
*/
template <typename T, typename... Args>
T *AddSubscriber(Args... args) {
auto ins = new (std::nothrow) T(args...);
if (ins == nullptr) {
return nullptr;
}

// profiler exists when ess init
if (subscribers_.size() == kInitSubscriberSize) {
enabled_ = true;
}
subscribers_.emplace_back(reinterpret_cast<::SubscriberFunc>(T::OnExecuteEvent), ins, ObjectDeleter<T>);
return ins;
}

/**
* 添加一个内置的subscriber
* 内置subscriber较少,当前没有使用注册机制,后续如果需要扩展,那么可以考虑通过注册机制自动注册。
* 为了易用性,在本类提供了获取内置subscriber的指针的接口。而自注册的subscriber将丢失此能力。
* @param subscriber_type
*/
void AddBuiltIn(BuiltInSubscriberType subscriber_type, uint64_t enable_flag);
void RemoveSubscriber(void *subscriber_ptr) {
for (auto iter = subscribers_.begin(); iter != subscribers_.end(); ++iter) {
if (iter->GetSubscriber().arg == subscriber_ptr) {
subscribers_.erase(iter);
break;
}
}
for (auto &built_in_subscriber : built_in_subscribers_ptr_) {
if (built_in_subscriber == subscriber_ptr) {
built_in_subscriber = nullptr;
}
}
if (subscribers_.empty()) {
enabled_ = false;
}
}

template <typename T>
inline T *MutableBuiltInSubscriber(const BuiltInSubscriberType type) {
return static_cast<T *>(built_in_subscribers_ptr_[static_cast<size_t>(type)]);
}

template <typename T>
inline const T *GetBuiltInSubscriber(const BuiltInSubscriberType type) {
return static_cast<T *>(built_in_subscribers_ptr_[static_cast<size_t>(type)]);
}

bool IsEnable() const {
return enabled_ || GlobalProfilingWrapper::GetInstance()->GetEnableFlags();
}
void SetEnable(bool enable_flag) {
enabled_ = enable_flag;
}
void Clear() {
subscribers_.clear();
for (auto &built_in_subscriber : built_in_subscribers_ptr_) {
built_in_subscriber = nullptr;
}
enabled_ = false;
}
size_t GetSize() const {
return subscribers_.size();
}

private:
ModelV2Executor *executor_{nullptr};
bool enabled_{false};
std::array<void *, static_cast<size_t>(BuiltInSubscriberType::kNum)> built_in_subscribers_ptr_;
std::vector<ExecutorSubscriberGuarder> subscribers_;
ExecutorSubscriber subscriber_wrapper_;
};
} // namespace gert
#endif // AIR_CXX_INC_FRAMEWORK_RUNTIME_EXECUTOR_SUBSCRIBERS_SCHEDULER_H_

+ 138
- 0
inc/framework/runtime/subscriber/global_profiling.h View File

@@ -0,0 +1,138 @@
/**
* Copyright (c) Huawei Technologies Co., Ltd. 2022. All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef AIR_CXX_INC_FRAMEWORK_RUNTIME_SUBSCRIBER_GLOBAL_PROFILING_H_
#define AIR_CXX_INC_FRAMEWORK_RUNTIME_SUBSCRIBER_GLOBAL_PROFILING_H_
#include <algorithm>
#include <memory>
#include <unordered_map>
#include "built_in_subscriber_definitions.h"
#include "common/debug/ge_log.h"
#include "framework/common/ge_visibility.h"
#include "runtime/subscriber/executor_subscriber_c.h"
namespace gert {
struct ProfilingData {
uint64_t name_idx;
uint64_t type_idx;
ExecutorEvent event;
std::chrono::time_point<std::chrono::system_clock> timestamp;
};
class GlobalProfiler {
public:
GlobalProfiler() = default;
void Record(uint64_t name_idx, uint64_t type_idx, ExecutorEvent event,
std::chrono::time_point<std::chrono::system_clock> timestamp) {
auto index = count_++;
if (index >= kProfilingDataCap) {
return;
}
records_[index] = {name_idx, type_idx, event, timestamp};
}
void Dump(std::ostream &out_stream, std::vector<std::string> &idx_to_str) const;
size_t GetCount() const {
return count_;
}
private:
std::atomic<size_t> count_{0UL};
ProfilingData records_[kProfilingDataCap];
};
class VISIBILITY_EXPORT GlobalProfilingWrapper {
public:
static GlobalProfilingWrapper *GetInstance() {
static GlobalProfilingWrapper global_prof_wrapper;
return &global_prof_wrapper;
}
static void OnGlobalProfilingSwitch(void *ins, uint64_t enable_flags);
void Init(uint64_t enable_flags);
void Free() {
global_profiler_.reset(nullptr);
SetEnableFlags(0UL);
}
GlobalProfiler *GetGlobalProfiler() const {
return global_profiler_.get();
}
void SetEnableFlags(uint64_t enable_flags) {
enable_flags_ = enable_flags;
}
uint64_t GetRecordCount() {
if (global_profiler_ == nullptr) {
return 0UL;
}
return global_profiler_->GetCount();
}
uint64_t GetEnableFlags() const {
return enable_flags_;
}
bool IsEnable(ProfilingType profiling_type) const {
return enable_flags_ & BuiltInSubscriberUtil::EnableBit<ProfilingType>(profiling_type);
}
void DumpAndFree(std::ostream &out_stream) {
Dump(out_stream);
Free();
}
void Dump(std::ostream &out_stream) {
if (global_profiler_ != nullptr) {
global_profiler_->Dump(out_stream, idx_to_str_);
}
}
void Record(uint64_t name_idx, uint64_t type_idx, ExecutorEvent event,
std::chrono::time_point<std::chrono::system_clock> timestamp) {
if (global_profiler_ != nullptr) {
global_profiler_->Record(name_idx, type_idx, event, timestamp);
}
}
uint64_t RegisterString(const char *name) {
const std::lock_guard<std::mutex> lk(register_mutex_);
std::string str_name = name;
const auto iter = std::find(idx_to_str_.begin(), idx_to_str_.end(), str_name);
if (iter == idx_to_str_.end()) {
idx_to_str_[str_idx_] = str_name;
++str_idx_;
if (str_idx_ >= idx_to_str_.size()) {
idx_to_str_.resize(idx_to_str_.size() * kDouble);
}
return str_idx_ - 1UL;
} else {
return iter - idx_to_str_.begin();
}
}
private:
GlobalProfilingWrapper();
private:
std::unique_ptr<GlobalProfiler> global_profiler_{nullptr};
uint64_t enable_flags_{0UL};
uint64_t str_idx_{0UL};
std::vector<std::string> idx_to_str_;
std::mutex register_mutex_;
};
} // namespace gert
#endif

+ 1
- 1
metadef

@@ -1 +1 @@
Subproject commit e4d1efc47349f13af1bcdb53ba408118779fc27e
Subproject commit 17536092c004f6f9e08116939f4f49e1e11a99d3

+ 2
- 2
third_party/fwkacllib/inc/common/type_def.h View File

@@ -27,12 +27,12 @@ typedef double float64_t;


inline uint64_t PtrToValue(const void *ptr) inline uint64_t PtrToValue(const void *ptr)
{ {
return static_cast<const uint64_t>(reinterpret_cast<const uintptr_t>(ptr));
return static_cast<uint64_t>(reinterpret_cast<uintptr_t>(ptr));
} }


inline void *ValueToPtr(const uint64_t value) inline void *ValueToPtr(const uint64_t value)
{ {
return reinterpret_cast<void *>(static_cast<const uintptr_t>(value));
return reinterpret_cast<void *>(static_cast<uintptr_t>(value));
} }


template<typename TI, typename TO> template<typename TI, typename TO>


+ 1
- 0
third_party/fwkacllib/inc/external/runtime/rt_error_codes.h View File

@@ -59,6 +59,7 @@ static const int32_t ACL_ERROR_RT_QUEUE_FULL = 207014; // queue
static const int32_t ACL_ERROR_RT_REPEATED_INIT = 207015; // repeated init static const int32_t ACL_ERROR_RT_REPEATED_INIT = 207015; // repeated init
static const int32_t ACL_ERROR_RT_AIVEC_OVER_FLOW = 207016; // aivec over flow static const int32_t ACL_ERROR_RT_AIVEC_OVER_FLOW = 207016; // aivec over flow
static const int32_t ACL_ERROR_RT_OVER_FLOW = 207017; // common over flow static const int32_t ACL_ERROR_RT_OVER_FLOW = 207017; // common over flow
static const int32_t ACL_ERROR_RT_DEVIDE_OOM = 207018; // device oom
static const int32_t ACL_ERROR_RT_INTERNAL_ERROR = 507000; // runtime internal error static const int32_t ACL_ERROR_RT_INTERNAL_ERROR = 507000; // runtime internal error
static const int32_t ACL_ERROR_RT_TS_ERROR = 507001; // ts internel error static const int32_t ACL_ERROR_RT_TS_ERROR = 507001; // ts internel error


+ 6
- 6
third_party/fwkacllib/inc/ops/cluster.h View File

@@ -30,18 +30,18 @@ namespace ge {


* @par Inputs: * @par Inputs:
* Three required inputs and one optional inputs, including: * Three required inputs and one optional inputs, including:
* @li x: A 2D tensor of data type float32.
* @li y: A 2D tensor of data type float32.
* @li sum_square_x: An optional 2D tensor of data type float32.
* @li x: A 2D tensor of data type float32.
* @li y: A 2D tensor of data type float32.
* @li sum_square_x: An optional 2D tensor of data type float32.
* @li sum_square_y: A 2D tensor of data type float32. \n * @li sum_square_y: A 2D tensor of data type float32. \n


* @par Attributes: * @par Attributes:
* use_actual_distance: Indicates whether to calculate the complete distance. \n * use_actual_distance: Indicates whether to calculate the complete distance. \n


* @par Outputs: * @par Outputs:
* @li segment_sum: A tensor of data type float32.
* @li segment_count: A tensor of data type float32.
* @li k_mean_total_sum: A tensor of data type float32.
* @li segment_sum: A tensor of data type float32.
* @li segment_count: A tensor of data type float32.
* @li k_mean_total_sum: A tensor of data type float32.
*/ */
REG_OP(KMeansCentroids) REG_OP(KMeansCentroids)
.INPUT(x, TensorType({DT_FLOAT})) .INPUT(x, TensorType({DT_FLOAT}))


+ 27
- 0
third_party/fwkacllib/inc/ops/data_flow_ops.h View File

@@ -2549,5 +2549,32 @@ REG_OP(OptionalGetValue)
.REQUIRED_ATTR(output_types, ListType) .REQUIRED_ATTR(output_types, ListType)
.REQUIRED_ATTR(output_shapes, ListListInt) .REQUIRED_ATTR(output_shapes, ListListInt)
.OP_END_FACTORY_REG(OptionalGetValue) .OP_END_FACTORY_REG(OptionalGetValue)

/**
* @brief User define function process. \n

* @par Inputs:
* @li x: A list of input tensor objects. It's a dynamic input. \n

* @par Outputs:
* @li y: A list of output tensor objects. It's a dynamic output. \n

* @par Attributes:
* @li bin_path: User's binary path.
* @li func_name: User defined function name.
* @li output_types: Types of outputs data.
* @li output_shapes: Shapes of outputs data.
* @li _flow_attr_process_node_engine_id: Default process node engine of FlowFunc.
*/
REG_OP(FlowFunc)
.DYNAMIC_INPUT(x, TensorType({DT_FLOAT, DT_FLOAT16, DT_INT8, \
DT_INT16, DT_UINT16, DT_UINT8, DT_INT32, DT_INT64, DT_UINT32, DT_UINT64, DT_BOOL, DT_DOUBLE}))
.DYNAMIC_OUTPUT(y, TensorType({DT_FLOAT, DT_FLOAT16, DT_INT8, \
DT_INT16, DT_UINT16, DT_UINT8, DT_INT32, DT_INT64, DT_UINT32, DT_UINT64, DT_BOOL, DT_DOUBLE}))
.REQUIRED_ATTR(bin_path, String)
.REQUIRED_ATTR(func_name, String)
.ATTR(output_shapes, ListListInt, {})
.REQUIRED_ATTR(output_types, ListType)
.OP_END_FACTORY_REG(FlowFunc)
} // namespace ge } // namespace ge
#endif // OPS_BUILT_IN_OP_PROTO_INC_DATA_FLOW_OPS_H_ #endif // OPS_BUILT_IN_OP_PROTO_INC_DATA_FLOW_OPS_H_

+ 164
- 164
third_party/fwkacllib/inc/ops/elewise_calculation_ops.h View File

@@ -48,29 +48,29 @@ REG_OP(AddN)
.OP_END_FACTORY_REG(AddN) .OP_END_FACTORY_REG(AddN)


/** /**
*@brief Calculates the reversed outputs of the function "maximum".
* @brief Calculates the reversed outputs of the function "maximum".


*@par Inputs:
* @par Inputs:
* Three inputs, including: * Three inputs, including:
*@li grads: A mutable Tensor. Must be one of the following types:
* @li grads: A mutable Tensor. Must be one of the following types:
* float16, float32, int32. * float16, float32, int32.
*@li x1: A mutable Tensor of the same type as "grads".
*@li x2: A mutable Tensor of the same type as "grads". \n
* @li x1: A mutable Tensor of the same type as "grads".
* @li x2: A mutable Tensor of the same type as "grads". \n


*@par Attributes:
*@li grad_x: An optional bool. Defaults to "True".
* @par Attributes:
* @li grad_x: An optional bool. Defaults to "True".
* If "True", "y1" will be output. * If "True", "y1" will be output.
* If "False", "y1" will not be output. \n * If "False", "y1" will not be output. \n


*@li grad_y: An optional bool. Defaults to "True".
* @li grad_y: An optional bool. Defaults to "True".
* If "True", "y2" will be output. * If "True", "y2" will be output.
* If "False", "y2" will not be output. \n * If "False", "y2" will not be output. \n


*@par Outputs:
*@li y1: A mutable Tensor. Has the same type as "grads".
*@li y2: A mutable Tensor. Has the same type as "grads". \n
* @par Outputs:
* @li y1: A mutable Tensor. Has the same type as "grads".
* @li y2: A mutable Tensor. Has the same type as "grads". \n


*@par Third-party framework compatibility:
* @par Third-party framework compatibility:
* Compatible with the TensorFlow operator MaximumGrad. * Compatible with the TensorFlow operator MaximumGrad.
*/ */
REG_OP(MaximumGrad) REG_OP(MaximumGrad)
@@ -84,29 +84,29 @@ REG_OP(MaximumGrad)
.OP_END_FACTORY_REG(MaximumGrad) .OP_END_FACTORY_REG(MaximumGrad)


/** /**
*@brief Calculates the reversed outputs of the function "minimum".
* @brief Calculates the reversed outputs of the function "minimum".


*@par Inputs:
* @par Inputs:
* Three inputs, including: * Three inputs, including:
*@li grads: A mutable Tensor. Must be one of the following types:
* @li grads: A mutable Tensor. Must be one of the following types:
* float16, float32, int32. * float16, float32, int32.
*@li x1: A mutable Tensor of the same type as "grads".
*@li x2: A mutable Tensor of the same type as "grads". \n
* @li x1: A mutable Tensor of the same type as "grads".
* @li x2: A mutable Tensor of the same type as "grads". \n


*@par Attributes:
*@li grad_x: An optional bool. Defaults to "True".
* @par Attributes:
* @li grad_x: An optional bool. Defaults to "True".
* If "True", "y1" will be output. * If "True", "y1" will be output.
* If "False", "y1" will not be output. \n * If "False", "y1" will not be output. \n


*@li grad_y: An optional bool. Defaults to "True".
* @li grad_y: An optional bool. Defaults to "True".
* If "True", "y2" will be output. * If "True", "y2" will be output.
* If "False", "y2" will not be output. \n * If "False", "y2" will not be output. \n


*@par Outputs:
*@li y1: A mutable Tensor. Has the same type as "grads".
*@li y2: A mutable Tensor. Has the same type as "grads". \n
* @par Outputs:
* @li y1: A mutable Tensor. Has the same type as "grads".
* @li y2: A mutable Tensor. Has the same type as "grads". \n


*@par Third-party framework compatibility:
* @par Third-party framework compatibility:
* Compatible with the TensorFlow operator MinimumGrad. * Compatible with the TensorFlow operator MinimumGrad.
*/ */
REG_OP(MinimumGrad) REG_OP(MinimumGrad)
@@ -552,16 +552,16 @@ REG_OP(Expint)
.OP_END_FACTORY_REG(Expint) .OP_END_FACTORY_REG(Expint)


/** /**
*@brief: Computes the reciprocal of "x".
* @brief: Computes the reciprocal of "x".


*@par Inputs:
*x: A Tensor. Must be one of the following types: float16, float32,
* @par Inputs:
* x: A Tensor. Must be one of the following types: float16, float32,
* int32, int64, double, complex64, complex128. \n * int32, int64, double, complex64, complex128. \n


*@par Outputs:
*y: A Tensor. Must be one of the following type: float16, float32, int32. \n
* @par Outputs:
* y: A Tensor. Must be one of the following type: float16, float32, int32. \n


*@par Third-party framework compatibility:
* @par Third-party framework compatibility:
* Compatible with the TensorFlow operator Inv. * Compatible with the TensorFlow operator Inv.
*/ */
REG_OP(Inv) REG_OP(Inv)
@@ -570,19 +570,19 @@ REG_OP(Inv)
.OP_END_FACTORY_REG(Inv) .OP_END_FACTORY_REG(Inv)


/** /**
*@brief: Computes "x" reciprocal grad, dx = -1*dy*y*y, where, "y = 1/x",
* @brief: Computes "x" reciprocal grad, dx = -1*dy*y*y, where, "y = 1/x",
* and "dy" is the corresponding input gradient. * and "dy" is the corresponding input gradient.


*@par Inputs:
* @par Inputs:
* Two inputs, including: * Two inputs, including:
*@li x: A Tensor. Must be one of the following types: float16, float32,
* @li x: A Tensor. Must be one of the following types: float16, float32,
* int32, int8. * int32, int8.
*@li grad: A Tensor. Has the same type as "x". \n
* @li grad: A Tensor. Has the same type as "x". \n


*@par Outputs:
*y: A Tensor, Has the same type as "x". \n
* @par Outputs:
* y: A Tensor, Has the same type as "x". \n


*@par Third-party framework compatibility:
* @par Third-party framework compatibility:
* Compatible with the TensorFlow operator InvGrad. * Compatible with the TensorFlow operator InvGrad.
*/ */
REG_OP(InvGrad) REG_OP(InvGrad)
@@ -634,27 +634,27 @@ REG_OP(Log1p)
.OP_END_FACTORY_REG(Log1p) .OP_END_FACTORY_REG(Log1p)


/** /**
*@brief Returns element-wise remainder of division.
* @brief Returns element-wise remainder of division.


*@par Inputs:
* @par Inputs:
* Two inputs, including: * Two inputs, including:
*@li x1: A Tensor. Must be one of the following types: float16, float32,
* @li x1: A Tensor. Must be one of the following types: float16, float32,
* int32, int64, int8, uint8, double. * int32, int64, int8, uint8, double.
*@li x2: A Tensor of the same type as "x1". \n
* @li x2: A Tensor of the same type as "x1". \n


*@par Outputs:
*y: A Tensor. Has the same type as "x1". \n
* @par Outputs:
* y: A Tensor. Has the same type as "x1". \n


*@attention Constraints:
*@li x2: The input data does not support 0.
*@li When NUM exceeds 2048 , the accuracy of operator cannot guarantee the
* @attention Constraints:
* @li x2: The input data does not support 0.
* @li When NUM exceeds 2048 , the accuracy of operator cannot guarantee the
* requirement of double thousandths in the mini form. * requirement of double thousandths in the mini form.
*@li Due to different architectures, the calculation results of this operator
* @li Due to different architectures, the calculation results of this operator
* on NPU and CPU may be inconsistent. * on NPU and CPU may be inconsistent.
*@li If shape is expressed as (D1,D2... ,Dn),
* @li If shape is expressed as (D1,D2... ,Dn),
* then D1*D2... *DN<=1000000,n<=8. \n * then D1*D2... *DN<=1000000,n<=8. \n


*@par Third-party framework compatibility:
* @par Third-party framework compatibility:
* Compatible with the TensorFlow operator Mod. * Compatible with the TensorFlow operator Mod.
*/ */
REG_OP(Mod) REG_OP(Mod)
@@ -667,18 +667,18 @@ REG_OP(Mod)
.OP_END_FACTORY_REG(Mod) .OP_END_FACTORY_REG(Mod)


/** /**
*@brief Returns the truth value of (x != y) element-wise.
* @brief Returns the truth value of (x != y) element-wise.


*@par Inputs:
* @par Inputs:
* Two inputs, including: * Two inputs, including:
*@li x1: A Tensor. Must be one of the following types: float16, float32, int32,
* @li x1: A Tensor. Must be one of the following types: float16, float32, int32,
* int8, uint8, double, int16, int64, uint16, half, uint32, uint64. * int8, uint8, double, int16, int64, uint16, half, uint32, uint64.
*@li x2: A Tensor of the same type as "x1". \n
* @li x2: A Tensor of the same type as "x1". \n


*@par Outputs:
*y: A Tensor of type bool. \n
* @par Outputs:
* y: A Tensor of type bool. \n


*@par Third-party framework compatibility:
* @par Third-party framework compatibility:
* Compatible with the TensorFlow operator NotEqual. * Compatible with the TensorFlow operator NotEqual.
*/ */
REG_OP(NotEqual) REG_OP(NotEqual)
@@ -688,17 +688,17 @@ REG_OP(NotEqual)
.OP_END_FACTORY_REG(NotEqual) .OP_END_FACTORY_REG(NotEqual)


/** /**
*@brief Computes ndtri element-wise (y = sqrt(2) * erfinv(2 * x - 1)).
* @brief Computes ndtri element-wise (y = sqrt(2) * erfinv(2 * x - 1)).


*@par Inputs:
* @par Inputs:
* One input, including: \n * One input, including: \n
*x: A Tensor. Must be one of the following types: bfloat16, float16,
* x: A Tensor. Must be one of the following types: bfloat16, float16,
* float32, double. \n * float32, double. \n


*@par Outputs:
*y: A Tensor. Has the same type and format as input "x". \n
* @par Outputs:
* y: A Tensor. Has the same type and format as input "x". \n


*@par Third-party framework compatibility:
* @par Third-party framework compatibility:
* Compatible with the TensorFlow operator Ndtri. * Compatible with the TensorFlow operator Ndtri.
*/ */
REG_OP(Ndtri) REG_OP(Ndtri)
@@ -726,21 +726,21 @@ REG_OP(Neg)
.OP_END_FACTORY_REG(Neg) .OP_END_FACTORY_REG(Neg)


/** /**
*@brief Returns x1/x2 element-wise for integer types.
* @brief Returns x1/x2 element-wise for integer types.


*@par Inputs:
*@li x1: A Tensor. Must be one of the following types:
* @par Inputs:
* @li x1: A Tensor. Must be one of the following types:
* float32, float16, int8, uint8, int32, int16, * float32, float16, int8, uint8, int32, int16,
* uint16, double, int64, complex64, complex128. * uint16, double, int64, complex64, complex128.
*@li x2: A Tensor of the same data type as "x1". \n
* @li x2: A Tensor of the same data type as "x1". \n


*@par Outputs:
*y: A Tensor. Has the same type as "x1".
* @par Outputs:
* y: A Tensor. Has the same type as "x1".


*@attention Constraints:
* @attention Constraints:
* Broadcasting is supported. \n * Broadcasting is supported. \n


*@par Third-party framework compatibility
* @par Third-party framework compatibility
* Compatible with the TensorFlow operator TruncateDiv. \n * Compatible with the TensorFlow operator TruncateDiv. \n


*/ */
@@ -1427,17 +1427,17 @@ REG_OP(RsqrtGrad)
.OP_END_FACTORY_REG(RsqrtGrad) .OP_END_FACTORY_REG(RsqrtGrad)


/** /**
*@brief Computes hyperbolic sine of "x" element-wise.
* @brief Computes hyperbolic sine of "x" element-wise.


*@par Inputs:
*x: An NCHW, NHWC,or ND Tensor of type float, double, complex64,
* complex128, half. \n
* @par Inputs:
* x: An NCHW, NHWC,or ND Tensor of type float, double, complex64,
* complex128, half. \n


*@par Outputs:
*y: A NCHW, NHWC,or ND Tensor of type float, double, complex64,
* complex128, half. \n
* @par Outputs:
* y: A NCHW, NHWC,or ND Tensor of type float, double, complex64,
* complex128, half. \n


*@par Third-party framework compatibility
* @par Third-party framework compatibility
* Compatible with the TensorFlow operator Sinh. \n * Compatible with the TensorFlow operator Sinh. \n


*/ */
@@ -1513,18 +1513,18 @@ REG_OP(DivNoNan)
.OP_END_FACTORY_REG(DivNoNan) .OP_END_FACTORY_REG(DivNoNan)


/** /**
*@brief Reverses specific dimensions of a tensor.
* @brief Reverses specific dimensions of a tensor.


*@par Inputs:
* @par Inputs:
* One input: \n * One input: \n
*x: A Tensor, Must be one of the following types:
* x: A Tensor, Must be one of the following types:
* int32, uint8, int16, int8, int64, int64, uint16, uint32, uint64, * int32, uint8, int16, int8, int64, int64, uint16, uint32, uint64,
* and format can be [NCHW,NHWC,ND]. \n * and format can be [NCHW,NHWC,ND]. \n


*@par Outputs:
*y: A Tensor. Has the same type and format as "x". \n
* @par Outputs:
* y: A Tensor. Has the same type and format as "x". \n


*@par Third-party framework compatibility:
* @par Third-party framework compatibility:
* Compatible with the TensorFlow operator Invert. * Compatible with the TensorFlow operator Invert.
*/ */
REG_OP(Invert) REG_OP(Invert)
@@ -1772,16 +1772,16 @@ REG_OP(Atan2)
.OP_END_FACTORY_REG(Atan2) .OP_END_FACTORY_REG(Atan2)


/** /**
*@brief Computes fresnel_cos of x element-wise.
* @brief Computes fresnel_cos of x element-wise.
* *
*@par Inputs:
*x: A tensor. Must be one of the following types: bfloat16, float16, float32,
* @par Inputs:
* x: A tensor. Must be one of the following types: bfloat16, float16, float32,
* double. \n * double. \n
* *
*@par Outputs:
*y: A tensor. Has the same type as "x". \n
* @par Outputs:
* y: A tensor. Has the same type as "x". \n
* *
*@par Third-party framework compatibility
* @par Third-party framework compatibility
* Compatible with the TensorFlow operator FresnelCos. * Compatible with the TensorFlow operator FresnelCos.
* *
*/ */
@@ -1791,17 +1791,17 @@ REG_OP(FresnelCos)
.OP_END_FACTORY_REG(FresnelCos) .OP_END_FACTORY_REG(FresnelCos)


/** /**
*@brief Computes fresnel_sin of x element-wise.
* @brief Computes fresnel_sin of x element-wise.
* *
*@par Inputs:
*x: A tensor. Must be one of the following types: bfloat16, float16, float32,
* @par Inputs:
* x: A tensor. Must be one of the following types: bfloat16, float16, float32,
* double. \n * double. \n
* *
*@par Outputs:
*y: A tensor. Has the same type as "x". \n
* @par Outputs:
* y: A tensor. Has the same type as "x". \n
* *
*@par Third-party framework compatibility:
* @par Third-party framework compatibility:
* Compatible with the TensorFlow operator FresnelSin. * Compatible with the TensorFlow operator FresnelSin.
* *
*/ */
@@ -2317,16 +2317,16 @@ REG_OP(Sin)
.OP_END_FACTORY_REG(Sin) .OP_END_FACTORY_REG(Sin)


/** /**
*@brief: Computes tan of "x" element-wise.
* @brief: Computes tan of "x" element-wise.


*@par Inputs:
*One input:
*x: A Tensor. Must be one of the following types: float16, float32, double, complex64, complex128, int32, int64
* @par Inputs:
* One input:
* x: A Tensor. Must be one of the following types: float16, float32, double, complex64, complex128, int32, int64


*@par Outputs:
*y: A Tensor. Has the same type as "x". \n
* @par Outputs:
* y: A Tensor. Has the same type as "x". \n


*@par Third-party framework compatibility
* @par Third-party framework compatibility
* Compatible with TensorFlow operator Tan. * Compatible with TensorFlow operator Tan.
*/ */
REG_OP(Tan) REG_OP(Tan)
@@ -2337,27 +2337,27 @@ REG_OP(Tan)
.OP_END_FACTORY_REG(Tan) .OP_END_FACTORY_REG(Tan)


/** /**
*@brief Returns element-wise remainder of division.
* @brief Returns element-wise remainder of division.


*@par Inputs:
*Two inputs, including:
* @par Inputs:
* Two inputs, including:
* @li x1: A Tensor. Must be one of the following types: float16, float32, * @li x1: A Tensor. Must be one of the following types: float16, float32,
* double, int32, int64. * double, int32, int64.
* @li x2: A Tensor of the same type as "x1". \n * @li x2: A Tensor of the same type as "x1". \n


*@par Outputs:
*y: A Tensor. Has the same type as "x1". \n
* @par Outputs:
* y: A Tensor. Has the same type as "x1". \n


*@attention Constraints:
*@li x2: The input data does not support 0
*@li When NUM exceeds 2048 , the accuracy of operator cannot guarantee the
*requirement of double thousandths in the mini form
*@li Due to different architectures, the calculation results of this operator
*on NPU and CPU may be inconsistent
*@li If shape is expressed as (D1,D2... ,Dn), then D1*D2... *DN<=1000000,n<=8
* @attention Constraints:
* @li x2: The input data does not support 0
* @li When NUM exceeds 2048 , the accuracy of operator cannot guarantee the
* requirement of double thousandths in the mini form
* @li Due to different architectures, the calculation results of this operator
* on NPU and CPU may be inconsistent
* @li If shape is expressed as (D1,D2... ,Dn), then D1*D2... *DN<=1000000,n<=8


*@par Third-party framework compatibility
*Compatible with the TensorFlow operator TruncateMod.
* @par Third-party framework compatibility
* Compatible with the TensorFlow operator TruncateMod.
*/ */
REG_OP(TruncateMod) REG_OP(TruncateMod)
.INPUT(x1, TensorType({DT_FLOAT16, DT_FLOAT, DT_DOUBLE, DT_INT64, .INPUT(x1, TensorType({DT_FLOAT16, DT_FLOAT, DT_DOUBLE, DT_INT64,
@@ -3138,21 +3138,21 @@ REG_OP(SquareSumV2)
.OP_END_FACTORY_REG(SquareSumV2) .OP_END_FACTORY_REG(SquareSumV2)


/** /**
*@brief Confuse reducesumd and square.
* @brief Confuse reducesumd and square.


*@par Inputs:
*x: A Tensor of type float16, float32. \n
* @par Inputs:
* x: A Tensor of type float16, float32. \n


*@par Attributes:
* @par Attributes:
* Two attributes, including: \n * Two attributes, including: \n
*@li axis: A optional listint, specifies the dimensions to reduce.
*@li keep_dims: A bool, specifying whether to keep dimensions for the output Tensor. Defaults to "false". \n
* @li axis: A optional listint, specifies the dimensions to reduce.
* @li keep_dims: A bool, specifying whether to keep dimensions for the output Tensor. Defaults to "false". \n


*@par Outputs:
y: A Tensor. Has the same type as "x".
* @par Outputs:
* y: A Tensor. Has the same type as "x".


*@par Restrictions:
*Warning: THIS FUNCTION IS EXPERIMENTAL. Please do not use.
* @par Restrictions:
* Warning: THIS FUNCTION IS EXPERIMENTAL. Please do not use.
*/ */
REG_OP(SquareSumV1) REG_OP(SquareSumV1)
.INPUT(x, TensorType({DT_FLOAT16,DT_FLOAT})) .INPUT(x, TensorType({DT_FLOAT16,DT_FLOAT}))
@@ -3183,19 +3183,19 @@ REG_OP(SquareSumAll)
.OP_END_FACTORY_REG(SquareSumAll) .OP_END_FACTORY_REG(SquareSumAll)


/** /**
*@brief Confuse broadcast, addn and mul.
* @brief Confuse broadcast, addn and mul.


*@par Inputs:
*Three inputs, including:
*@li x1: A Tensor. Must be one of the following types:int32, int16,
* @par Inputs:
* Three inputs, including:
* @li x1: A Tensor. Must be one of the following types:int32, int16,
* float16, float32. * float16, float32.
*@li x2: A Tensor of the same type as "x1".
*@li x3: A Tensor of the same type as "x1". \n
* @li x2: A Tensor of the same type as "x1".
* @li x3: A Tensor of the same type as "x1". \n


*@par Outputs:
*y: A Tensor. Has the same type as "x1". \n
* @par Outputs:
* y: A Tensor. Has the same type as "x1". \n


*@par Restrictions:
* @par Restrictions:
* Warning: THIS FUNCTION IS EXPERIMENTAL. Please do not use. * Warning: THIS FUNCTION IS EXPERIMENTAL. Please do not use.
*/ */
REG_OP(FusedMulAddN) REG_OP(FusedMulAddN)
@@ -3206,41 +3206,41 @@ REG_OP(FusedMulAddN)
.OP_END_FACTORY_REG(FusedMulAddN) .OP_END_FACTORY_REG(FusedMulAddN)


/** /**
*@brief Add 'bias' to 'x'.
* @brief Add 'bias' to 'x'.


*@par Inputs:
* @par Inputs:
* Two inputs, including: * Two inputs, including:
*@li x: An ND tensor of type float16 or float32.
*@li bias: An ND tensor of type float16 or float32. \n
* @li x: An ND tensor of type float16 or float32.
* @li bias: An ND tensor of type float16 or float32. \n


*@par Attributes:
*@li axis: An optional int32 used to compute the shape of bias input from the online bottoms. Defaults to "1".
*@li num_axes: An optional int32 used to compute the shape of
* @par Attributes:
* @li axis: An optional int32 used to compute the shape of bias input from the online bottoms. Defaults to "1".
* @li num_axes: An optional int32 used to compute the shape of
* bias input from a Caffe model trained offline. Defaults to "1". * bias input from a Caffe model trained offline. Defaults to "1".
*@li bias_from_blob: An optional bool. If "true", bias is input from a Caffe model trained offline.
* @li bias_from_blob: An optional bool. If "true", bias is input from a Caffe model trained offline.
* If "false", bias is input from online bottoms. Defaults to "true". \n * If "false", bias is input from online bottoms. Defaults to "true". \n


*@par Outputs:
*y: An ND tensor of type float16 or float32. \n
* @par Outputs:
* y: An ND tensor of type float16 or float32. \n


*@attention Constraints:
* @attention Constraints:
* Assume that the shape length of "x" is "n" and that of "bias" is "m". * Assume that the shape length of "x" is "n" and that of "bias" is "m".
*@li "axis" is within the range [-n, n-1]. num_axes >= -1.
*@li If "bias_from_blob = true", "num_axes = -1", and "axis >= 0",
* @li "axis" is within the range [-n, n-1]. num_axes >= -1.
* @li If "bias_from_blob = true", "num_axes = -1", and "axis >= 0",
* the ith axis of "bias" and the (i+"axis")th axis of "x" must have the same size (0 <= i < n-axis). * the ith axis of "bias" and the (i+"axis")th axis of "x" must have the same size (0 <= i < n-axis).
* If "axis < 0", the ith axis of "bias" and the (i+n+"axis")th axis of "x" must have the same size (0 <= i < -axis). * If "axis < 0", the ith axis of "bias" and the (i+n+"axis")th axis of "x" must have the same size (0 <= i < -axis).
*@li If "bias_from_blob = true" and "num_axes = 0", "bias" is a scalar with shape length 1 and dimension size 1.
*@li If "bias_from_blob = true", "num_axes > 0, and "axis >= 0",
* @li If "bias_from_blob = true" and "num_axes = 0", "bias" is a scalar with shape length 1 and dimension size 1.
* @li If "bias_from_blob = true", "num_axes > 0, and "axis >= 0",
* "axis + num_axes" must be less than or equal to "n" and the ith axis of "bias" and * "axis + num_axes" must be less than or equal to "n" and the ith axis of "bias" and
* the (i+"axis")th axis of "x" must have the same size (0 <= i < num_axes). * the (i+"axis")th axis of "x" must have the same size (0 <= i < num_axes).
* If "axis < 0", "n + axis + num_axes" must be less than or equal to "n" and * If "axis < 0", "n + axis + num_axes" must be less than or equal to "n" and
* the ith axis of "bias" and the (i+n+"axis")th axis of "x" must have the same size (0 <= i < num_axes). * the ith axis of "bias" and the (i+n+"axis")th axis of "x" must have the same size (0 <= i < num_axes).
*@li If "bias_from_blob = false", "bias" is not a scalar, and "axis >= 0",
* @li If "bias_from_blob = false", "bias" is not a scalar, and "axis >= 0",
* "axis + m" must be less than or equal to "n" and the ith axis of "bias" and * "axis + m" must be less than or equal to "n" and the ith axis of "bias" and
* the (i+"axis")th axis of "x" must have the same size (0 <= i < m). * the (i+"axis")th axis of "x" must have the same size (0 <= i < m).
* If "axis < 0", "n + axis + m" must be less than or equal to "n" and * If "axis < 0", "n + axis + m" must be less than or equal to "n" and
* the ith axis of "bias" and the (i+n+"axis")th axis of "x" must have the same size (0 <= i < m). \n * the ith axis of "bias" and the (i+n+"axis")th axis of "x" must have the same size (0 <= i < m). \n
*@par Third-party framework compatibility
* @par Third-party framework compatibility
* Compatible with the Caffe operator Bias. * Compatible with the Caffe operator Bias.
*/ */


@@ -3383,7 +3383,7 @@ REG_OP(Muls)


*@par Inputs: *@par Inputs:
*One input, including: *One input, including:
*x1: A Tensor. Must be one of the following types:int32,int16, float16, float32.
*x: A Tensor. Must be one of the following types:float32, float16, int64, int32, int16, bool.


*@par Outputs: *@par Outputs:
*y: A Tensor. Has the same type and shape as "x1". \n *y: A Tensor. Has the same type and shape as "x1". \n
@@ -3392,9 +3392,9 @@ REG_OP(Muls)
* Compatible with the Pytorch operator fills. * Compatible with the Pytorch operator fills.
*/ */
REG_OP(Fills) REG_OP(Fills)
.INPUT(x, TensorType({DT_FLOAT,DT_INT16,DT_INT32,DT_FLOAT16}))
.OUTPUT(y, TensorType({DT_FLOAT,DT_INT16,DT_INT32,DT_FLOAT16}))
.REQUIRED_ATTR(value,Float)
.INPUT(x, TensorType({DT_FLOAT, DT_FLOAT16, DT_INT64, DT_INT32, DT_INT16, DT_BOOL}))
.OUTPUT(y, TensorType({DT_FLOAT, DT_FLOAT16, DT_INT64, DT_INT32, DT_INT16, DT_BOOL}))
.REQUIRED_ATTR(value, Float)
.OP_END_FACTORY_REG(Fills) .OP_END_FACTORY_REG(Fills)


/** /**
@@ -3420,19 +3420,19 @@ REG_OP(Fills)
.OP_END_FACTORY_REG(Adds) .OP_END_FACTORY_REG(Adds)


/** /**
*@brief Computes the product of x and y and returns 0 if the y is zero,
* @brief Computes the product of x and y and returns 0 if the y is zero,
* even if x is NaN or infinite. * even if x is NaN or infinite.


*@par Inputs:
* @par Inputs:
* Two inputs, including: \n * Two inputs, including: \n
*@li x1: A Tensor. Must be one of the following types:float16, float32,
* @li x1: A Tensor. Must be one of the following types:float16, float32,
* double, complex64, complex128. * double, complex64, complex128.
*@li x2: A Tensor. Has the same type and shape as "x1". \n
* @li x2: A Tensor. Has the same type and shape as "x1". \n


*@par Outputs:
*y: A Tensor. Has the same type and shape as "x1". \n
* @par Outputs:
* y: A Tensor. Has the same type and shape as "x1". \n


*@par Third-party framework compatibility:
* @par Third-party framework compatibility:
* Compatible with the TensorFlow operator MulNoNan. * Compatible with the TensorFlow operator MulNoNan.
*/ */
REG_OP(MulNoNan) REG_OP(MulNoNan)


+ 158
- 0
third_party/fwkacllib/inc/ops/experiment_ops.h View File

@@ -0,0 +1,158 @@
/**
* Copyright (c) Huawei Technologies Co., Ltd. 2020-2021. All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

/*!
* \file experiment_ops.h
* \brief
*/
#ifndef OPS_BUILT_IN_OP_PROTO_INC_EXPERIMENT_OPS_H_
#define OPS_BUILT_IN_OP_PROTO_INC_EXPERIMENT_OPS_H_

#include "graph/operator_reg.h"
namespace ge {
/**
* @brief Updates "var" according to the AdamW algorithm.
*
* @attention Constraints:
* The input tensors must have the same shape.*
*
* @par Inputs:
* @li var: A mutable Tensor of the type TensorType::NumberType().
* Should be from a Variable().
* @li m: A mutable Tensor of the same type as "var".
* Should be from a Variable().
* @li v: A mutable Tensor of the same type as "var".
* Should be from a Variable().
* @li beta1_power: A scalar of the same type as "var".
* @li beta2_power: A scalar of the same type as "var".
* @li lr: learning_rate. A scalar of the same type as "var".
* @li weight_decay: learning_rate. A scalar of the same type as "var".
* @li beta1: A scalar of the same type as "var".
* @li beta2: A scalar of the same type as "var".
* @li epsilon: A scalar of the same type as "var".
* @li grad: A Tensor of the same type as "var", for the gradient.
* @li max_grad_norm: A mutable Tensor of the same type as "var", an optional input.
* Should be from a Variable().
*
* @par Attributes:
* @li amsgrad: An optional bool. Defaults to "False".
* If "True", max_grad_norm input and output must be entered.
* @li maximize: An optional bool. Defaults to "False".
*
* @par Outputs:
* @li var: A mutable tensor. Has the same type as input "var".
* @li m: A mutable tensor. Has the same type as input "m".
* @li v: A mutable tensor. Has the same type as input "v". \n
*/
REG_OP(ApplyAdamW)
.INPUT(var, TensorType::NumberType())
.INPUT(m, TensorType::NumberType())
.INPUT(v, TensorType::NumberType())
.INPUT(beta1_power, TensorType::NumberType())
.INPUT(beta2_power, TensorType::NumberType())
.INPUT(lr, TensorType::NumberType())
.INPUT(weight_decay, TensorType::NumberType())
.INPUT(beta1, TensorType::NumberType())
.INPUT(beta2, TensorType::NumberType())
.INPUT(epsilon, TensorType::NumberType())
.INPUT(grad, TensorType::NumberType())
.OPTIONAL_INPUT(max_grad_norm, TensorType::NumberType())
.OUTPUT(var, TensorType::NumberType())
.OUTPUT(m, TensorType::NumberType())
.OUTPUT(v, TensorType::NumberType())
.ATTR(amsgrad, Bool, false)
.ATTR(maximize, Bool, false)
.OP_END_FACTORY_REG(ApplyAdamW)

/**
* @brief Multiplies matrix "a" by matrix "b", producing "a * b". \n
* @par Inputs:
* Four inputs, including:
* @li x1: A matrix Tensor. Must be one of the following types: float32,
* float16, int32, int8, int4, bf16. 3D. Has format ND.
* @li x2: A matrix Tensor. Must be one of the following types: float32,
* float16, int32, int8, int4, bf16. 3D. Has format ND.
* @li bias: A optional Tensor. Must be one of the following types:
* float32, float16, int32, bf16. 1D. Has format ND.
* @li offset_w: A optional Tensor. Must be one of the following types:
* int8, int4. Has format ND. \n

* @par Attributes:
* Three attributes, including:
* @li perm_x1: A list int. "x1" is permuted to shape [B, M, K] before multiplication.
* @li perm_x2: A list int. "x2" is permuted to shape [B, K, N] before multiplication.
* @li perm_y: A list int. "y" is permuted after multiplication.
* @li offset_x: An optional integer for quantized TransposeBatchMatMul.
* The negative offset added to the input "x1" for int8, int4 type. Ensure offset_x
* within the effective range of input data type. Defaults to "0". \n

* @par Outputs:
* y: The result matrix Tensor. 3D. Must be one of the following
* types: float32, float16, int32, bf16. 3D. Has format ND. \n
*/
REG_OP(TransposeBatchMatMul)
.INPUT(x1, TensorType({DT_FLOAT, DT_FLOAT16, DT_INT32, DT_INT8, DT_INT4, DT_BF16}))
.INPUT(x2, TensorType({DT_FLOAT, DT_FLOAT16, DT_INT32, DT_INT8, DT_INT4, DT_BF16}))
.OPTIONAL_INPUT(bias, TensorType({DT_FLOAT, DT_FLOAT16, DT_INT32, DT_BF16}))
.OPTIONAL_INPUT(offset_w, TensorType({DT_INT8, DT_INT4}))
.OUTPUT(y, TensorType({DT_FLOAT, DT_FLOAT16, DT_INT32, DT_BF16}))
.ATTR(perm_x1, ListInt, {})
.ATTR(perm_x2, ListInt, {})
.ATTR(perm_y, ListInt, {})
.ATTR(offset_x, Int, 0)
.OP_END_FACTORY_REG(TransposeBatchMatMul)

/**
* @brief Performs non-maximum suppression (NMS) on the rotated boxes according
* to their intersection-over-union (IoU). Rotated NMS interatively removes lower
* scoring rotated boxes which have an IoU greater than iou_threshold with
* another (higher scoring) rotated box.

* @par Inputs:
* Three inputs, including:
* @li boxes: A 2D Tensor of float16 or float32 with shape (N, 5). Rotated boxes to
* perform NMS on. They are expected to be in (x1, y1, x2, y2, angle_degress) format.
* @li scores: A 1D Tensor of float16 or float32 with shape (N). Scores for each one of
* the rotated boxes.
* @li labels: A 1D Tensor of int32 or int64 with shape (N). Labels for each one of
* the rotated boxes.

* @par Attributes:
* iou_threshold: A required float attribute. Discards all overlapping rotated
* boxes with IoU < iou_threshold.

* @par Outputs:
* Two outputs, including:
* @li selected_detections: A 2D Tensor of float16 or float32 with shape (N, 5).
* The selected boxes that kept by Rotated NMS, sorted in decreasing order of scores.
* @li keep_indices: A 1D Tensor of int32 or int64 with shape (N). The indices of
* selected_detections.

* @attention Constraints:
* Currently, the tensor type of input (boxes, scores) only support float.
* The tensor type of keep_indices only support int32.
*/
REG_OP(RotatedNMS)
.INPUT(boxes, TensorType({DT_FLOAT16, DT_FLOAT}))
.INPUT(scores, TensorType({DT_FLOAT16, DT_FLOAT}))
.INPUT(labels, TensorType({DT_INT32, DT_INT64}))
.OUTPUT(selected_detections, TensorType({DT_FLOAT16, DT_FLOAT}))
.OUTPUT(keep_indices, TensorType({DT_INT32, DT_INT64}))
.REQUIRED_ATTR(iou_threshold, Float)
.OP_END_FACTORY_REG(RotatedNMS)
} // namespace ge

#endif // OPS_BUILT_IN_OP_PROTO_INC_EXPERIMENT_OPS_H_

+ 53
- 0
third_party/fwkacllib/inc/ops/functional_ops.h View File

@@ -362,6 +362,59 @@ REG_OP(ToBool)
.OUTPUT(output, DT_BOOL) .OUTPUT(output, DT_BOOL)
.OP_END_FACTORY_REG(ToBool) .OP_END_FACTORY_REG(ToBool)


/**
* @brief Abstract tiling function to an op definition
* The input will be data or shape \n

* @par Inputs:
* @li x: the data of input. all types are available,
* @li outputshape: the shape of previous op output shape . all types are available. \n

* @par Outputs:
* @li tiling_data: tiling data of tiling function. It should be a buffer
* @li tiling_key: tiling key of tiling function.
* @li block_dim: block dim of tiling function.
* @li tiling_cond: tiling condition of tiling function which will be used to determined real execute kernel. \n

* @par Attributes:
* @li tiling_node: A string. real tiling node such as matmul.
* @li op_type: A string. Op type of the original node. \n

* @par Third-party framework compatibility
*/
REG_OP(OpTiling)
.DYNAMIC_INPUT(x, TensorType::ALL())
.DYNAMIC_INPUT(output_shape, TensorType::ALL())
.OUTPUT(tiling_data, TensorType({DT_UINT8}))
.OUTPUT(tiling_key, TensorType({DT_UINT64}))
.OUTPUT(block_dim, TensorType({DT_INT32}))
.OUTPUT(tiling_cond, TensorType({DT_INT32}))
.REQUIRED_ATTR(tiling_node, String)
.REQUIRED_ATTR(op_type, String)
.OP_END_FACTORY_REG(OpTiling)

/**
* @brief Calculate condition value by input tensor which will be used for if input or case input. \n

* @par Inputs:
* @li x: the data or shape of input. all types are available,

* @par Outputs:
* @li cond: condition value calculated by cond fuction.
It will be cond input of if or branch_index input of case. \n

* @par Attributes:
* @li cond_func: A string. real condition function registered to calculate condition value.
* @li x_dependency: List of int. It should be the same number of inputs: 0(shape) 1(data). \n

* @par Third-party framework compatibility
*/
REG_OP(ConditionCalc)
.DYNAMIC_INPUT(x, TensorType::ALL())
.OUTPUT(cond, TensorType({DT_INT32}))
.REQUIRED_ATTR(cond_func, String)
.REQUIRED_ATTR(x_dependency, ListInt)
.OP_END_FACTORY_REG(ConditionCalc)
} // namespace ge } // namespace ge


#endif // OPS_BUILT_IN_OP_PROTO_INC_FUNCTIONAL_OPS_H_ #endif // OPS_BUILT_IN_OP_PROTO_INC_FUNCTIONAL_OPS_H_

+ 21
- 11
third_party/fwkacllib/inc/ops/hcom_ops.h View File

@@ -28,7 +28,7 @@ namespace ge {
* @brief Outputs a tensor gathering all input tensors. * @brief Outputs a tensor gathering all input tensors.
* @par Inputs: * @par Inputs:
* x: A tensor. Must be one of the following types: int8, int16, int32, float16, * x: A tensor. Must be one of the following types: int8, int16, int32, float16,
float32.
float32, uint8, uint16, uint32, float64.
* @par Attributes: * @par Attributes:
* @li rank_size: A required integer identifying the number of ranks * @li rank_size: A required integer identifying the number of ranks
participating in the op. participating in the op.
@@ -41,8 +41,10 @@ namespace ge {
as the name of a world group. as the name of a world group.
*/ */
REG_OP(HcomAllGather) REG_OP(HcomAllGather)
.INPUT(x, TensorType({DT_FLOAT, DT_INT32, DT_INT8, DT_INT16, DT_FLOAT16, DT_INT64, DT_UINT64}))
.OUTPUT(y, TensorType({DT_FLOAT, DT_INT32, DT_INT8, DT_INT16, DT_FLOAT16, DT_INT64, DT_UINT64}))
.INPUT(x, TensorType({DT_FLOAT, DT_INT32, DT_INT8, DT_INT16, DT_FLOAT16, DT_INT64, DT_UINT64,
DT_UINT8, DT_UINT16, DT_UINT32, DT_FLOAT64}))
.OUTPUT(y, TensorType({DT_FLOAT, DT_INT32, DT_INT8, DT_INT16, DT_FLOAT16, DT_INT64, DT_UINT64,
DT_UINT8, DT_UINT16, DT_UINT32, DT_FLOAT64}))
.REQUIRED_ATTR(rank_size, Int) .REQUIRED_ATTR(rank_size, Int)
.REQUIRED_ATTR(group, String) .REQUIRED_ATTR(group, String)
.OP_END_FACTORY_REG(HcomAllGather) .OP_END_FACTORY_REG(HcomAllGather)
@@ -99,8 +101,10 @@ REG_OP(HcomAllReduce)
as the name of a world group. as the name of a world group.
*/ */
REG_OP(HcomBroadcast) REG_OP(HcomBroadcast)
.DYNAMIC_INPUT(x, TensorType({DT_FLOAT, DT_INT32, DT_INT8, DT_INT16, DT_FLOAT16, DT_INT64, DT_UINT64}))
.DYNAMIC_OUTPUT(y, TensorType({DT_FLOAT, DT_INT32, DT_INT8, DT_INT16, DT_FLOAT16, DT_INT64, DT_UINT64}))
.DYNAMIC_INPUT(x, TensorType({DT_FLOAT, DT_INT32, DT_INT8, DT_INT16, DT_FLOAT16, DT_INT64, DT_UINT64,
DT_UINT8, DT_UINT16, DT_UINT32, DT_FLOAT64}))
.DYNAMIC_OUTPUT(y, TensorType({DT_FLOAT, DT_INT32, DT_INT8, DT_INT16, DT_FLOAT16, DT_INT64, DT_UINT64,
DT_UINT8, DT_UINT16, DT_UINT32, DT_FLOAT64}))
.REQUIRED_ATTR(root_rank, Int) .REQUIRED_ATTR(root_rank, Int)
.REQUIRED_ATTR(group, String) .REQUIRED_ATTR(group, String)
.ATTR(fusion, Int, 0) .ATTR(fusion, Int, 0)
@@ -186,7 +190,8 @@ REG_OP(HcomReduceScatter)
* @see HcomReceive * @see HcomReceive
*/ */
REG_OP(HcomSend) REG_OP(HcomSend)
.INPUT(x, TensorType({DT_FLOAT, DT_INT32, DT_INT8, DT_INT16, DT_FLOAT16, DT_INT64, DT_UINT64}))
.INPUT(x, TensorType({DT_FLOAT, DT_INT32, DT_INT8, DT_INT16, DT_FLOAT16, DT_INT64, DT_UINT64,
DT_UINT8, DT_UINT16, DT_UINT32, DT_FLOAT64}))
.REQUIRED_ATTR(group, String) .REQUIRED_ATTR(group, String)
.REQUIRED_ATTR(sr_tag, Int) .REQUIRED_ATTR(sr_tag, Int)
.REQUIRED_ATTR(dest_rank, Int) .REQUIRED_ATTR(dest_rank, Int)
@@ -217,7 +222,8 @@ REG_OP(HcomSend)
* @see HcomSend * @see HcomSend
*/ */
REG_OP(HcomReceive) REG_OP(HcomReceive)
.OUTPUT(y, TensorType({DT_FLOAT, DT_INT32, DT_INT8, DT_INT16, DT_FLOAT16, DT_INT64, DT_UINT64}))
.OUTPUT(y, TensorType({DT_FLOAT, DT_INT32, DT_INT8, DT_INT16, DT_FLOAT16, DT_INT64, DT_UINT64,
DT_UINT8, DT_UINT16, DT_UINT32, DT_FLOAT64}))
.REQUIRED_ATTR(group, String) .REQUIRED_ATTR(group, String)
.REQUIRED_ATTR(sr_tag, Int) .REQUIRED_ATTR(sr_tag, Int)
.REQUIRED_ATTR(src_rank, Int) .REQUIRED_ATTR(src_rank, Int)
@@ -303,12 +309,14 @@ REG_OP(HcomRemoteScatterWrite)
using the RDMA. using the RDMA.
*/ */
REG_OP(HcomAllToAllV) REG_OP(HcomAllToAllV)
.INPUT(send_data, TensorType({DT_FLOAT, DT_INT32, DT_INT8, DT_INT16, DT_FLOAT16, DT_INT64, DT_UINT64}))
.INPUT(send_data, TensorType({DT_FLOAT, DT_INT32, DT_INT8, DT_INT16, DT_FLOAT16, DT_INT64, DT_UINT64,
DT_UINT8, DT_UINT16, DT_UINT32, DT_FLOAT64}))
.INPUT(send_counts, TensorType({DT_INT64})) .INPUT(send_counts, TensorType({DT_INT64}))
.INPUT(send_displacements, TensorType({DT_INT64})) .INPUT(send_displacements, TensorType({DT_INT64}))
.INPUT(recv_counts, TensorType({DT_INT64})) .INPUT(recv_counts, TensorType({DT_INT64}))
.INPUT(recv_displacements, TensorType({DT_INT64})) .INPUT(recv_displacements, TensorType({DT_INT64}))
.OUTPUT(recv_data, TensorType({DT_FLOAT, DT_INT32, DT_INT8, DT_INT16, DT_FLOAT16, DT_INT64, DT_UINT64}))
.OUTPUT(recv_data, TensorType({DT_FLOAT, DT_INT32, DT_INT8, DT_INT16, DT_FLOAT16, DT_INT64, DT_UINT64,
DT_UINT8, DT_UINT16, DT_UINT32, DT_FLOAT64}))
.REQUIRED_ATTR(group, String) .REQUIRED_ATTR(group, String)
.OP_END_FACTORY_REG(HcomAllToAllV) .OP_END_FACTORY_REG(HcomAllToAllV)


@@ -345,8 +353,10 @@ REG_OP(HcomGatherAllToAllV)
.INPUT(addrinfo_count_per_rank, TensorType({DT_INT64})) .INPUT(addrinfo_count_per_rank, TensorType({DT_INT64}))
.INPUT(recv_counts, TensorType({DT_INT64})) .INPUT(recv_counts, TensorType({DT_INT64}))
.INPUT(recv_displacements, TensorType({DT_INT64})) .INPUT(recv_displacements, TensorType({DT_INT64}))
.OUTPUT(recv_data, TensorType({DT_FLOAT, DT_INT32, DT_INT8, DT_INT16, DT_FLOAT16, DT_INT64, DT_UINT64}))
.OUTPUT(gathered, TensorType({DT_FLOAT, DT_INT32, DT_INT8, DT_INT16, DT_FLOAT16, DT_INT64, DT_UINT64}))
.OUTPUT(recv_data, TensorType({DT_FLOAT, DT_INT32, DT_INT8, DT_INT16, DT_FLOAT16, DT_INT64, DT_UINT64,
DT_UINT8, DT_UINT16, DT_UINT32, DT_FLOAT64}))
.OUTPUT(gathered, TensorType({DT_FLOAT, DT_INT32, DT_INT8, DT_INT16, DT_FLOAT16, DT_INT64, DT_UINT64,
DT_UINT8, DT_UINT16, DT_UINT32, DT_FLOAT64}))
.REQUIRED_ATTR(group, String) .REQUIRED_ATTR(group, String)
.REQUIRED_ATTR(dtype, Type) .REQUIRED_ATTR(dtype, Type)
.REQUIRED_ATTR(addr_length, Int) .REQUIRED_ATTR(addr_length, Int)


+ 73
- 0
third_party/fwkacllib/inc/ops/image_ops.h View File

@@ -2371,5 +2371,78 @@ REG_OP(ImageProjectiveTransform)
.ATTR(fill_mode, String, "CONSTANT") .ATTR(fill_mode, String, "CONSTANT")
.OUTPUT(transformed_images, TensorType({DT_UINT8, DT_INT32, DT_INT64, DT_FLOAT16, DT_FLOAT, DT_DOUBLE})) .OUTPUT(transformed_images, TensorType({DT_UINT8, DT_INT32, DT_INT64, DT_FLOAT16, DT_FLOAT, DT_DOUBLE}))
.OP_END_FACTORY_REG(ImageProjectiveTransform) .OP_END_FACTORY_REG(ImageProjectiveTransform)

/**
* @brief image to transforms. \n

* @par Inputs:
* @li images: [batch, height, width, channels], 4-D tensor.
* @li transforms: [batch, 8] or [1, 8] matrix, 2-D tensor.
* @li outout_shape: [new_height, new_width], 1-D tensor.
* @li fill_value: [scalar], 1-D tensor.

* @par Attributes:
* @li interpolation: Interpolation method, "NEAREST" or "BILINEAR", 0-D tensor.
* @li fill_mode: Defaults to "CONSTANT". Fill mode, "REFLECT", "WRAP", or "CONSTANT", 0-D tensor.

* @par Outputs
* transformed_images: has the same type as iamges, 4-D tensor with shape[batch, new_height, new_width, channels]. \n

* @par Third-party framework compatibility.
* Compatible with tensorflow ImageProjectiveTransformv2 operator.
*/
REG_OP(ImageProjectiveTransformV2)
.INPUT(images, TensorType({DT_UINT8, DT_INT32, DT_INT64, DT_FLOAT16, DT_FLOAT, DT_DOUBLE}))
.INPUT(transforms, TensorType({DT_FLOAT}))
.INPUT(output_shape, TensorType({DT_INT32}))
.OPTIONAL_INPUT(fill_value, TensorType({DT_UINT8, DT_INT32, DT_INT64, DT_FLOAT16, DT_FLOAT, DT_DOUBLE}))
.REQUIRED_ATTR(interpolation, String)
.ATTR(fill_mode, String, "CONSTANT")
.OUTPUT(transformed_images, TensorType({DT_UINT8, DT_INT32, DT_INT64, DT_FLOAT16, DT_FLOAT, DT_DOUBLE}))
.OP_END_FACTORY_REG(ImageProjectiveTransformV2)

/**
* @brief Extracts a glimpse from the input tensor . \n

* @par Inputs:
* Input input must be a 4-D tensor. Inputs include:
* @li input: A 4-D float tensor of shape [batch_size, height, width, channels].
The format must be NHWC.
* @li size: A 1-D tensor of 2 elements containing the size of the glimpses to
extract. The glimpse height must be specified first, following by the glimpse
width.
* @li offsets: A 2-D integer tensor of shape [batch_size, 2] containing the y,
x locations of the center of each window . \n

* @par Attributes:
* @li centered: indicates if the offset coordinates are centered relative to
the image, in which case the (0, 0) offset is relative to the center of the
input images. If false, the (0,0) offset corresponds to the upper left corner
of the input images.
* @li normalized: indicates if the offset coordinates are normalized.
* @li uniform_noise: indicates if the noise should be generated using a
uniform distribution or a Gaussian distribution.
* @li noise: indicates if the noise should uniform, gaussian, or zero.
The default is uniform which means the the noise type will be decided by
uniform_noise . \n

* @par Outputs:
* glimpse:A tensor representing the glimpses [batch_size, glimpse_height,
glimpse_width, channels]. The format must be NHWC. \n

* @par Third-party framework compatibility
* Compatible with tensorflow ExtractGlimpseV2 operator.
*/

REG_OP(ExtractGlimpseV2)
.INPUT(input, TensorType({DT_FLOAT}))
.INPUT(size, TensorType({DT_INT32}))
.INPUT(offsets, TensorType({DT_FLOAT}))
.OUTPUT(glimpse, TensorType({DT_FLOAT}))
.ATTR(centered, Bool, true)
.ATTR(normalized, Bool, true)
.ATTR(uniform_noise, Bool, true)
.ATTR(noise, String, "uniform")
.OP_END_FACTORY_REG(ExtractGlimpseV2)
} // namespace ge } // namespace ge
#endif // OPS_BUILT_IN_OP_PROTO_INC_IMAGE_OPS_H_ #endif // OPS_BUILT_IN_OP_PROTO_INC_IMAGE_OPS_H_

+ 98
- 2
third_party/fwkacllib/inc/ops/math_ops.h View File

@@ -230,7 +230,7 @@ REG_OP(Bucketize)
*input_x: A tensor. Must be one of the following types: float16, float32, int8, uint8, int32. \n *input_x: A tensor. Must be one of the following types: float16, float32, int8, uint8, int32. \n


*@par Outputs: *@par Outputs:
*output_y: A tensor with the same type and shape of input_x \n
* output_y: A tensor with the same type and shape of input_x \n


*@par Third-party framework compatibility *@par Third-party framework compatibility
*Compatible with the Pytorch operator Trunc. \n *Compatible with the Pytorch operator Trunc. \n
@@ -1008,6 +1008,36 @@ REG_OP(Complex)
.ATTR(Tout, Type, DT_COMPLEX64) .ATTR(Tout, Type, DT_COMPLEX64)
.OP_END_FACTORY_REG(Complex) .OP_END_FACTORY_REG(Complex)


/**
* @brief Counts the number of occurrences of each value in an integer array . \n

* @par Inputs:
* Five inputs, including:
* indices: A 2D Tensor of type int64.
* values: A 1D Tensor of type int32 or int64.
* dense_shape: A 1D Tensor of type int64.
* size: A non-negative scalar Tensor.
* weights: A Tensor of type int32 or int64 or fp32 or fp64 or only 1 \n

* @par Attributes:
* dtype: An optional bool.Defaults to False. bool . \n

* @par Outputs:
* y: A Tensor . Has the same type as `input_weights` .\n

* @par Third-party framework compatibility
* Compatible with the TensorFlow operator SparseBincount.
*/
REG_OP(SparseBincount)
.INPUT(indices, TensorType({DT_INT64}))
.INPUT(values, TensorType({DT_INT32, DT_INT64}))
.INPUT(dense_shape, TensorType({DT_INT64}))
.INPUT(size, TensorType({DT_INT32, DT_INT64}))
.INPUT(weights, TensorType({DT_INT32, DT_INT64, DT_FLOAT, DT_DOUBLE}))
.ATTR(binary_output, Bool, false)
.OUTPUT(output, TensorType({DT_INT32, DT_INT64, DT_FLOAT, DT_DOUBLE}))
.OP_END_FACTORY_REG(SparseBincount)

/** /**
* @brief deal complex. * @brief deal complex.


@@ -1098,7 +1128,7 @@ REG_OP(Cross)
.OP_END_FACTORY_REG(Cross) .OP_END_FACTORY_REG(Cross)


/** /**
*@brief Computes batched the p-norm distance between each pair of
* @brief Computes batched the p-norm distance between each pair of
*the two collections of row vectors. \n *the two collections of row vectors. \n


*@par Inputs: *@par Inputs:
@@ -1445,6 +1475,72 @@ REG_OP(SparseCountSparseOutput)
.ATTR(maxlength, Int, -1) .ATTR(maxlength, Int, -1)
.REQUIRED_ATTR(binary_output, Bool) .REQUIRED_ATTR(binary_output, Bool)
.OP_END_FACTORY_REG(SparseCountSparseOutput) .OP_END_FACTORY_REG(SparseCountSparseOutput)

/**
* @brief Counts the number of occurrences of each value in an integer array. \n

* @par Inputs:
* @li splits: A Tensor of type int64. 1D int64 Tensor.
* @li values: A Tensor. Must be one of the following types: int32, int64. 2D int Tensor.
* @li size: A Tensor. Must have the same type as values. non-negative int scalar Tensor.
* @li weights: A Tensor. Must be one of the following types: float32.
is a float32 Tensor with the same shape as input,
or a length-0 Tensor, in which case it acts as all weights equal to 1. \n

* @par Outputs:
* @li output: A Tensor with length "size" for each stride and has the same dtype as weights. \n

* @par Attributes:
* binary_output: An optional bool. Defaults to False. bool;
Whether the kernel should count the appearance or number of occurrences. \n

* @attention Constraints:
* The operator will use the interface set_atomic_add(), therefore weights and output should be float32 only. \n

* @par Third-party framework compatibility
* Compatible with tensorflow RaggedBinCount operator.
*/

REG_OP(RaggedBinCount)
.INPUT(splits, TensorType(DT_INT64))
.INPUT(values, TensorType({DT_INT32, DT_INT64}))
.INPUT(size, TensorType({DT_INT32, DT_INT64}))
.INPUT(weights, TensorType(DT_INT32, DT_INT64, DT_FLOAT, DT_DOUBLE))
.OUTPUT(output, TensorType(DT_INT32, DT_INT64, DT_FLOAT, DT_DOUBLE))
.ATTR(binary_output, Bool, false)
.OP_END_FACTORY_REG(RaggedBinCount)

/**
* @brief Counts the number of occurrences of each value in an integer array. \n

* @par Inputs:
* @li input: A Tensor of type int32, int64. 1D or 2D int Tensor.
* @li size: A Tensor. Must have the same type as input. non-negative int scalar Tensor.
* @li weights: A Tensor. Must be one of the following types: int32, int64, float32, float64.
with the same shape as input,
or a length-0 Tensor, in which case it acts as all weights equal to 1. \n

* @par Outputs:
* @li output: A Tensor with length "size" for each stride and has the same dtype as weights. \n

* @par Attributes:
* binary_output: An optional bool. Defaults to False. bool;
Whether the kernel should count the appearance or number of occurrences. \n

* @attention Constraints:
* The operator will use the interface set_atomic_add(), therefore weights and output should be float32 only. \n

* @par Third-party framework compatibility
* Compatible with tensorflow DenseBincount operator.
*/

REG_OP(DenseBincount)
.INPUT(input, TensorType({DT_INT32, DT_INT64}))
.INPUT(size, TensorType({DT_INT32, DT_INT64}))
.INPUT(weights, TensorType(DT_INT32, DT_INT64, DT_FLOAT, DT_DOUBLE))
.OUTPUT(output, TensorType(DT_INT32, DT_INT64, DT_FLOAT, DT_DOUBLE))
.ATTR(binary_output, Bool, false)
.OP_END_FACTORY_REG(DenseBincount)
} // namespace ge } // namespace ge


#endif // OPS_BUILT_IN_OP_PROTO_INC_MATH_OPS_H_ #endif // OPS_BUILT_IN_OP_PROTO_INC_MATH_OPS_H_

+ 617
- 534
third_party/fwkacllib/inc/ops/matrix_calculation_ops.h
File diff suppressed because it is too large
View File


+ 10
- 11
third_party/fwkacllib/inc/ops/nn_calculation_ops.h View File

@@ -28,7 +28,7 @@ namespace ge {
* @brief Computes the gradients of depthwise convolution with respect to * @brief Computes the gradients of depthwise convolution with respect to
* the filter. \n * the filter. \n
* @par Inputs: * @par Inputs:
* Three inputs include:
* Three inputs include:
* @li input: 4D origin shape of input tensor [N, C, H, W] or [N, H, W, C], * @li input: 4D origin shape of input tensor [N, C, H, W] or [N, H, W, C],
* support float16. * support float16.
* @li filter_size: A 4D tensor of type int32, int64, with shape [H, W, C, K] * @li filter_size: A 4D tensor of type int32, int64, with shape [H, W, C, K]
@@ -52,8 +52,7 @@ namespace ge {


* @par Outputs: * @par Outputs:
* filter_grad: Gradient of the deep convolution relative to the filter with * filter_grad: Gradient of the deep convolution relative to the filter with
* shape [H, W, C, K]. Must be one of the following types: float16, float32,
* double . \n
* shape [H, W, C, K]. Must be one of the following types: float16. \n


* @attention Constraints:\n * @attention Constraints:\n
* The feature map is 4D with shape [N, C, Hi, Wi] or [N, Hi, Wi, C], but * The feature map is 4D with shape [N, C, Hi, Wi] or [N, Hi, Wi, C], but
@@ -350,7 +349,7 @@ REG_OP(BiasAddGrad)


/** /**
*@brief Computes the gradients of convolution with respect to the input. *@brief Computes the gradients of convolution with respect to the input.
*@par Inputs:
* @par Inputs:
* Three inputs: * Three inputs:
* @li input_size: A const Tensor of type int32. Currently does not support * @li input_size: A const Tensor of type int32. Currently does not support
* data tensor. An integer vector representing the shape of input, where * data tensor. An integer vector representing the shape of input, where
@@ -454,7 +453,7 @@ REG_OP(Conv2DBackpropInput)


/** /**
*@brief Computes the gradients of convolution with respect to the input. *@brief Computes the gradients of convolution with respect to the input.
*@par Inputs:
* @par Inputs:
* Two inputs: * Two inputs:
* @li filter: A Tensor. Types is float16. * @li filter: A Tensor. Types is float16.
* 4-D with shape [filter_height, filter_width, in_channels, out_channels] * 4-D with shape [filter_height, filter_width, in_channels, out_channels]
@@ -501,7 +500,7 @@ REG_OP(Conv2DBackpropInputD)


/** /**
*@brief Computes the Deconvolution with respect to the input. *@brief Computes the Deconvolution with respect to the input.
*@par Inputs:
* @par Inputs:
* Two required inputs: * Two required inputs:
* @li x: A Tensor of type float16 or int8. 4D with shape * @li x: A Tensor of type float16 or int8. 4D with shape
* [batch, out_channels, out_height, out_width]. Gradients with respect * [batch, out_channels, out_height, out_width]. Gradients with respect
@@ -1518,7 +1517,7 @@ REG_OP(Conv2DTranspose)


/** /**
*@brief Computes the transpose of convolution 2d with respect to the input. *@brief Computes the transpose of convolution 2d with respect to the input.
*@par Inputs:
* @par Inputs:
* Four inputs: * Four inputs:
* @li x: A Tensor of type float16, int8. * @li x: A Tensor of type float16, int8.
* @li filter: A Tensor of type float16, int8. Must have the same type as "x". * @li filter: A Tensor of type float16, int8. Must have the same type as "x".
@@ -1566,7 +1565,7 @@ REG_OP(Conv2DTransposeD)


/** /**
*@brief Computes the deformed convolution output with the expected input *@brief Computes the deformed convolution output with the expected input
*@par Inputs:
* @par Inputs:
* Two inputs: * Two inputs:
* @li x: A Tensor of type float16,float32 * @li x: A Tensor of type float16,float32
* @li offsets: A Tensor of type float16,float32.Deformation offset parameter. * @li offsets: A Tensor of type float16,float32.Deformation offset parameter.
@@ -1599,7 +1598,7 @@ REG_OP(DeformableOffsets)


/** /**
*@brief Computes the gradients of DeformableOffsets with respect to input and offsets *@brief Computes the gradients of DeformableOffsets with respect to input and offsets
*@par Inputs:
* @par Inputs:
* Three inputs: * Three inputs:
* @li grad: A Tensor of type float16,float32. gradients with respect to DeformableOffsets output * @li grad: A Tensor of type float16,float32. gradients with respect to DeformableOffsets output
* @li x: A Tensor of type float16,float32. * @li x: A Tensor of type float16,float32.
@@ -1636,7 +1635,7 @@ REG_OP(DeformableOffsetsGrad)


/** /**
*@brief Computes the deformed dilation output with the expected input *@brief Computes the deformed dilation output with the expected input
*@par Inputs:
* @par Inputs:
* One inputs: * One inputs:
* x: A Tensor of type int8, float16, float32 * x: A Tensor of type int8, float16, float32
*@par Attributes: *@par Attributes:
@@ -1656,7 +1655,7 @@ REG_OP(Dilation)


/** /**
*@brief Computes the post-cube processing output with the expected input *@brief Computes the post-cube processing output with the expected input
*@par Inputs:
* @par Inputs:
* Ten inputs: * Ten inputs:
* x1: A Tensor of type float16, bfloat16, float32, int32 * x1: A Tensor of type float16, bfloat16, float32, int32
* x2: A Tensor of type float16, int8, int4 * x2: A Tensor of type float16, int8, int4


+ 187
- 180
third_party/fwkacllib/inc/ops/nn_pooling_ops.h View File

@@ -75,37 +75,37 @@ REG_OP(Pooling)
.OP_END_FACTORY_REG(Pooling) .OP_END_FACTORY_REG(Pooling)


/** /**
*@brief Performs average pooling on the input. \n
*@par Inputs:
*x: A tensor of type float16, float32, double. \n
* @brief Performs average pooling on the input. \n
* @par Inputs:
* x: A tensor of type float16, float32, double. \n


*@par Attributes:
*@li ksize: A required list of 4 ints, specifying the size (N, C, H, and W)
* @par Attributes:
* @li ksize: A required list of 4 ints, specifying the size (N, C, H, and W)
* of the sliding window, where N = C = 1, and H and W are positive integers * of the sliding window, where N = C = 1, and H and W are positive integers
* within the range [1, 255]. * within the range [1, 255].
* @li strides: A required list of 4 ints, specifying the stride of the * @li strides: A required list of 4 ints, specifying the stride of the
* sliding window. The strides of the N and C dimensions are 1. The strides of * sliding window. The strides of the N and C dimensions are 1. The strides of
* the H and W dimensions are positive integers within the range [1, 63]. * the H and W dimensions are positive integers within the range [1, 63].
*@li padding: A required string, specifying the padding algorithm,
* @li padding: A required string, specifying the padding algorithm,
* either "VALID" or "SAME". With "SAME" means that the outputs will have the * either "VALID" or "SAME". With "SAME" means that the outputs will have the
* same spatial dimensions as its inputs. With "VALID" means no padding. * same spatial dimensions as its inputs. With "VALID" means no padding.
*@li data_format: An optional string, specifying the data format of "ksize"
* @li data_format: An optional string, specifying the data format of "ksize"
* and "strides", either "NCHW", or "NHWC" (default). \n * and "strides", either "NCHW", or "NHWC" (default). \n


*@par Outputs:
* @par Outputs:
* y: The average pooled output tensor. Has the same type and format * y: The average pooled output tensor. Has the same type and format
* as input "x". \n * as input "x". \n


* @attention Constraints: * @attention Constraints:
* @li This operator applies only to a TensorFlow network. * @li This operator applies only to a TensorFlow network.
* @li Only single input and single output are supported. * @li Only single input and single output are supported.
*@li Global pooling is supported.
* @li Global pooling is supported.
* @li "ksize_H" and "ksize_W" are positive integers within the range [1, 255]. * @li "ksize_H" and "ksize_W" are positive integers within the range [1, 255].
* ksize_H * ksize_W < 256 * ksize_H * ksize_W < 256
*@li Due to instruction restrictions,
* @li Due to instruction restrictions,
* the values of "strides_h" and "strides_w" are positive integers within * the values of "strides_h" and "strides_w" are positive integers within
* the range [1, 63]. * the range [1, 63].
*@par Third-party framework compatibility
* @par Third-party framework compatibility
* Compatible with the TensorFlow operator AvgPool. * Compatible with the TensorFlow operator AvgPool.
*/ */
REG_OP(AvgPool) REG_OP(AvgPool)
@@ -118,37 +118,44 @@ REG_OP(AvgPool)
.OP_END_FACTORY_REG(AvgPool) .OP_END_FACTORY_REG(AvgPool)


/** /**
*@brief Performs average pooling on the input.
*@par Inputs:
*x: A tensor of type float16, float32, double.
* @brief Performs average pooling on the input.
* @par Inputs:
* x: A tensor of type float16, float32, double.


*@par Attributes:
*@li ksize: A required list of 4 ints, specifying the size (N, C, H, and W) of the sliding window,
* where N = C = 1, and H and W are positive integers within the range [1, 255].
*@li strides: A required list of 4 ints, specifying the stride of the sliding window.
* The strides of the N and C dimensions are 1.
* The strides of the H and W dimensions are positive integers within the range [1, 63].
*@li padding_mode: A required string, specifying the padding algorithm,
* @par Attributes:
* @li ksize: A required list of 4 ints, specifying the size (N, C, H, and W)
* of the sliding window, where N = C = 1,
* and H and W are positive integers within the range [1, 255].
* @li strides: A required list of 4 ints, specifying the stride of the
* sliding window. The strides of the N and C dimensions are 1.
* The strides of the H and W dimensions are positive integers within
* the range [1, 63].
* @li padding_mode: A required string, specifying the padding algorithm,
* either "VALID", "SAME" and "CALCULATED". * either "VALID", "SAME" and "CALCULATED".
* With "SAME" means that the outputs will have the same spatial dimensions as its inputs.
* With "VALID" means no padding.
* With "SAME" means that the outputs will have the same spatial dimensions
* as its inputs. With "VALID" means no padding.
* @li pads: Pad value when padding_mode is "CALCULATED". * @li pads: Pad value when padding_mode is "CALCULATED".
* @li data_format: An optional string, specifying the data format of "ksize" and "strides",
* either "NCHW", or "NHWC" (default).
* @li global_pooling: Global or not. If true, pads will change to {0,0,0,0} and ksize will change to [input_h, input_w]
* @li ceil_mode: Use ceil or floor to calculate the output size when padding_mode is "CALCULATED".
* @li data_format: An optional string, specifying the data format of "ksize"
* and "strides", either "NCHW", or "NHWC" (default).
* @li global_pooling: Global or not. If true, pads will change to {0,0,0,0}
* and ksize will change to [input_h, input_w].
* @li ceil_mode: Use ceil or floor to calculate the output size when
* padding_mode is "CALCULATED".
* @li exclusive: Ignore padding area or not when calculating average. * @li exclusive: Ignore padding area or not when calculating average.


* @par Outputs: * @par Outputs:
* y: The average pooled output tensor. Has the same type and format as input "x".
* y: The average pooled output tensor. Has the same type and format as
* input "x".


*@attention Constraints:
*@li Only single input and single output are supported.
* @attention Constraints:
* @li Only single input and single output are supported.
* @li Global pooling is supported. * @li Global pooling is supported.
*@li "ksize_H" and "ksize_W" are positive integers within the range [1, 255]. ksize_H * ksize_W < 256
*@li Due to instruction restrictions,
* the values of "strides_h" and "strides_w" are positive integers within the range [1, 63].
*@par Third-party framework compatibility
* @li "ksize_H" and "ksize_W" are positive integers within the range [1, 255].
* ksize_H * ksize_W < 256
* @li Due to instruction restrictions,
* the values of "strides_h" and "strides_w" are positive integers within
* the range [1, 63].
* @par Third-party framework compatibility
* Compatible with the TensorFlow operator AvgPoolV2. * Compatible with the TensorFlow operator AvgPoolV2.
*/ */
REG_OP(AvgPoolV2) REG_OP(AvgPoolV2)
@@ -173,7 +180,7 @@ REG_OP(AvgPoolV2)
* @par Attributes: * @par Attributes:
* @li ksize: List of ints that has length 1, 3 or 5. The size of the window * @li ksize: List of ints that has length 1, 3 or 5. The size of the window
* for each dimension of the input tensor. * for each dimension of the input tensor.
*@li strides:List of ints that has length 1, 3 or 5. The stride of the sliding
* @li strides:List of ints that has length 1, 3 or 5. The stride of the sliding
* window for each dimension of the input tensor. * window for each dimension of the input tensor.
* @li pads: List of ints, implicit zero paddings on both sides of the input. * @li pads: List of ints, implicit zero paddings on both sides of the input.
* @li ceil_mode: When true, will use ceil instead of floor in the formula to * @li ceil_mode: When true, will use ceil instead of floor in the formula to
@@ -184,13 +191,13 @@ REG_OP(AvgPoolV2)
* size of the pooling region will be used. * size of the pooling region will be used.
* @li data_format: A string, format of input data. \n * @li data_format: A string, format of input data. \n


*@par Outputs:
*y: The average pooled output tensor. \n
* @par Outputs:
* y: The average pooled output tensor. \n


*@attention Constraints:
* @attention Constraints:
* @li "ksize" is in the range [1, 255]. "strides" is in the range [1, 63]. * @li "ksize" is in the range [1, 255]. "strides" is in the range [1, 63].


*@par Third-party framework compatibility
* @par Third-party framework compatibility
* Compatible with the TensorFlow operator AvgPool3D. * Compatible with the TensorFlow operator AvgPool3D.
*/ */
REG_OP(AvgPool3D) REG_OP(AvgPool3D)
@@ -211,24 +218,24 @@ REG_OP(AvgPool3D)
* @par Inputs: * @par Inputs:
* @li x: A 5-D Tensor of shape [batch, depth, height, width, channels] and type float16, float32, double. * @li x: A 5-D Tensor of shape [batch, depth, height, width, channels] and type float16, float32, double.
* @li filter: An optional tensor of type float16, float32, double, fractal_z_3d layout. * @li filter: An optional tensor of type float16, float32, double, fractal_z_3d layout.
*@li multiplier: An optional tensor of float16, float32, double.
* @li multiplier: An optional tensor of float16, float32, double.


* @par Attributes: * @par Attributes:
*@li ksize: List of ints that has length 1, 3 or 5. The size of the window for each dimension of the input tensor.
* @li ksize: List of ints that has length 1, 3 or 5. The size of the window for each dimension of the input tensor.
* @li strides:List of ints that has length 1, 3 or 5. The stride of the sliding window for each dimension of the input tensor. * @li strides:List of ints that has length 1, 3 or 5. The stride of the sliding window for each dimension of the input tensor.
*@li pads: List of ints, implicit zero paddings on both sides of the input.
*@li ceil_mode: When true, will use ceil instead of floor in the formula to compute the output shape.
* @li pads: List of ints, implicit zero paddings on both sides of the input.
* @li ceil_mode: When true, will use ceil instead of floor in the formula to compute the output shape.
* @li count_include_pad: When true, will include the zero-padding in the averaging calculation. * @li count_include_pad: When true, will include the zero-padding in the averaging calculation.
*@li divisor_override: if specified, it will be used as divisor, otherwise size of the pooling region will be used.
*@li data_format: A string, format of input data . \n
* @li divisor_override: if specified, it will be used as divisor, otherwise size of the pooling region will be used.
* @li data_format: A string, format of input data . \n


*@par Outputs:
*y: The average pooled output tensor . \n
* @par Outputs:
* y: The average pooled output tensor . \n


*@attention Constraints:
*"ksize" is in the range [1, 255]. "strides" is in the range [1, 63]
* @attention Constraints:
* "ksize" is in the range [1, 255]. "strides" is in the range [1, 63]


*@par Third-party framework compatibility
* @par Third-party framework compatibility
* Compatible with the TensorFlow operator AvgPool3D. * Compatible with the TensorFlow operator AvgPool3D.
*/ */
REG_OP(AvgPool3DD) REG_OP(AvgPool3DD)
@@ -266,7 +273,7 @@ REG_OP(AvgPool3DD)
* @li data_format: A string, format of input data. \n * @li data_format: A string, format of input data. \n


* @par Outputs: * @par Outputs:
* @li output: A mutable tensor with the same shape and type as "grads".
* output: A mutable tensor with the same shape and type as "orig_input_shape".


* @attention Constraints: * @attention Constraints:
* @li "ksize" is in the range [1, 255]. "strides" is in the range [1, 63]. \n * @li "ksize" is in the range [1, 255]. "strides" is in the range [1, 63]. \n
@@ -336,31 +343,31 @@ REG_OP(AvgPool3DGradD)
.OP_END_FACTORY_REG(AvgPool3DGradD) .OP_END_FACTORY_REG(AvgPool3DGradD)


/** /**
*@brief Performs max_pool_ext2 on the input . \n
* @brief Performs max_pool_ext2 on the input . \n


*@par Inputs:
* @par Inputs:
* One input: * One input:
*x: A Tensor of type float16.
* x: A Tensor of type float16.




*@par Attributes:
*@li ksize: A required list of int8, int16, int32, or int64 values,
* specifying the size of the window for each dimension of the input tensor. No default value.
*@li strides: A required list of int8, int16, int32, or int64 values,
* specifying the stride of the sliding window for each dimension of the input tensor. No default value.
*@li padding: A required string. No default value.
*@li data_format: An optional string . \n
* @par Attributes:
* @li ksize: A required list of int8, int16, int32, or int64 values,
* specifying the size of the window for each dimension of the input tensor. No default value.
* @li strides: A required list of int8, int16, int32, or int64 values,
* specifying the stride of the sliding window for each dimension of the input tensor. No default value.
* @li padding: A required string. No default value.
* @li data_format: An optional string . \n


*@par Outputs:
*y: A Tensor. Has the same type and format as input "x" . \n
* @par Outputs:
* y: A Tensor. Has the same type and format as input "x" . \n


*@attention Constraints:
*@li "ksize" is a list that has length 4: ksize[0] = 1 or ksize[3] = 1, ksize[1] * ksize[2] <= 255.
*@li "stride is a list that has length 4: strides[0] = 1 or strides[3] = 1,
* @attention Constraints:
* @li "ksize" is a list that has length 4: ksize[0] = 1 or ksize[3] = 1, ksize[1] * ksize[2] <= 255.
* @li "stride is a list that has length 4: strides[0] = 1 or strides[3] = 1,
* strides[1] <= 63, strides[0] >= 1, strides[2] <= 63, strides[2] >= 1. * strides[1] <= 63, strides[0] >= 1, strides[2] <= 63, strides[2] >= 1.
*@li "padding" is either "SAME" or "VALID" . \n
* @li "padding" is either "SAME" or "VALID" . \n


*@par Third-party framework compatibility
* @par Third-party framework compatibility
* Compatible with the TensorFlow operator MaxPoolV2. * Compatible with the TensorFlow operator MaxPoolV2.
*/ */
REG_OP(MaxPoolExt2) REG_OP(MaxPoolExt2)
@@ -377,35 +384,35 @@ REG_OP(MaxPoolExt2)
.OP_END_FACTORY_REG(MaxPoolExt2) .OP_END_FACTORY_REG(MaxPoolExt2)


/** /**
*@brief Performs max pooling on the input . \n
* @brief Performs max pooling on the input . \n


* @par Inputs: * @par Inputs:
* One input: * One input:
* x: A Tensor. Supported type:float16, float32, double, int8, int16, * x: A Tensor. Supported type:float16, float32, double, int8, int16,
* int32, int64, uint8, uint16, qint8 * int32, int64, uint8, uint16, qint8


*@par Attributes:
*@li ksize: A required list of int8, int16, int32, or int64 values,
* @par Attributes:
* @li ksize: A required list of int8, int16, int32, or int64 values,
* specifying the size of the window for each dimension of the input tensor. * specifying the size of the window for each dimension of the input tensor.
* No default value. * No default value.
*@li strides: A required list of int8, int16, int32, or int64 values,
* @li strides: A required list of int8, int16, int32, or int64 values,
* specifying the stride of the sliding window for each dimension of * specifying the stride of the sliding window for each dimension of
* the input tensor. No default value. * the input tensor. No default value.
*@li padding: A required string. No default value.
*@li data_format: An optional string. Defaults to "NHWC" . \n
* @li padding: A required string. No default value.
* @li data_format: An optional string. Defaults to "NHWC" . \n


*@par Outputs:
*y: A Tensor. Has the same type and format as input "x" . \n
* @par Outputs:
* y: A Tensor. Has the same type and format as input "x" . \n


*@attention Constraints:
*@li "ksize" is a list that has length 4: ksize[0] = 1 or ksize[3] = 1,
* @attention Constraints:
* @li "ksize" is a list that has length 4: ksize[0] = 1 or ksize[3] = 1,
* ksize[1] * ksize[2] <= 255. * ksize[1] * ksize[2] <= 255.
*@li "stride is a list that has length 4: strides[0] = 1 or strides[3] = 1,
* @li "stride is a list that has length 4: strides[0] = 1 or strides[3] = 1,
* strides[1] <= 63, strides[0] >= 1, strides[2] <= 63, strides[2] >= 1. * strides[1] <= 63, strides[0] >= 1, strides[2] <= 63, strides[2] >= 1.
*@li "padding" is either "SAME" or "VALID".
* @li "padding" is either "SAME" or "VALID".




*@par Third-party framework compatibility
* @par Third-party framework compatibility
* Compatible with the TensorFlow operator MaxPool. * Compatible with the TensorFlow operator MaxPool.
*/ */
REG_OP(MaxPool) REG_OP(MaxPool)
@@ -423,33 +430,33 @@ REG_OP(MaxPool)
/** /**
* @brief Performs max 3d pooling on the input . \n * @brief Performs max 3d pooling on the input . \n


*@par Inputs:
* @par Inputs:
* x: A Tensor. Supported type float16, float32, double . \n * x: A Tensor. Supported type float16, float32, double . \n


*@par Attributes:
*@li ksize: A required list of int8, int16, int32, or int64 values,
* @par Attributes:
* @li ksize: A required list of int8, int16, int32, or int64 values,
specifying the size of the window for each dimension of the input tensor. specifying the size of the window for each dimension of the input tensor.
No default value. No default value.
*@li strides: A required list of int8, int16, int32, or int64 values,
* @li strides: A required list of int8, int16, int32, or int64 values,
specifying the stride of the sliding window for each dimension of specifying the stride of the sliding window for each dimension of
the input tensor. No default value. the input tensor. No default value.
*@li padding: A required string type of float16.
*@li pads: A list type of int32. Default value {0,0,0,0,0,0}.
*@li dilation: A list type of int32. Default value {1,1,1,1,1,1}.
*@li ceil_mode: A ceil mode number of int32 . Default value 0.
*@li data_format: An optional string. Defaults to "NDHWC" . \n
* @li padding: A required string type of float16.
* @li pads: A list type of int32. Default value {0,0,0,0,0,0}.
* @li dilation: A list type of int32. Default value {1,1,1,1,1,1}.
* @li ceil_mode: A ceil mode number of int32 . Default value 0.
* @li data_format: An optional string. Defaults to "NDHWC" . \n


*@par Outputs:
*y: A Tensor. Has the same type and format as input "x" . \n
* @par Outputs:
* y: A Tensor. Has the same type and format as input "x" . \n


*@attention Constraints:
*@li "ksize" is a list that has length 4: ksize[0] = 1 or ksize[3] = 1,
* @attention Constraints:
* @li "ksize" is a list that has length 4: ksize[0] = 1 or ksize[3] = 1,
* ksize[1] * ksize[2] <= 255. * ksize[1] * ksize[2] <= 255.
*@li "stride is a list that has length 4: strides[0] = 1 or strides[3] = 1,
* @li "stride is a list that has length 4: strides[0] = 1 or strides[3] = 1,
* strides[1] <= 63, strides[0] >= 1, strides[2] <= 63, strides[2] >= 1. * strides[1] <= 63, strides[0] >= 1, strides[2] <= 63, strides[2] >= 1.
*@li "padding" is either "SAME" or "VALID" . \n
* @li "padding" is either "SAME" or "VALID" . \n


*@par Third-party framework compatibility
* @par Third-party framework compatibility
* Compatible with the TensorFlow operator MaxPool3D. * Compatible with the TensorFlow operator MaxPool3D.
*/ */
REG_OP(MaxPool3D) REG_OP(MaxPool3D)
@@ -466,7 +473,7 @@ REG_OP(MaxPool3D)


/** /**
* @brief Performs max pooling3d on both max values and indices. * @brief Performs max pooling3d on both max values and indices.
*
*
* @par Inputs: * @par Inputs:
* One input: * One input:
* x: An 6D tensor. Supported type: float16. Format as NDC1HWC0. * x: An 6D tensor. Supported type: float16. Format as NDC1HWC0.
@@ -484,7 +491,7 @@ REG_OP(MaxPool3D)
* @li data_format: the format of torch input, default value is "NCDHW". * @li data_format: the format of torch input, default value is "NCDHW".
* @li argmax_type: the function of this field is to determine the type of * @li argmax_type: the function of this field is to determine the type of
* output argmax, "bitmask" is the default value, the argmax will return * output argmax, "bitmask" is the default value, the argmax will return
* a img2col bitmask. "index_int32" and "index_int64" represent the torch
* a img2col bitmask. "index_int32" and "index_int64" represent the torch
* output indices. * output indices.
* @par Outputs: * @par Outputs:
* y: An 6D tensor. the maxpool3d output(max value), format as NDoC1HoWoC0. * y: An 6D tensor. the maxpool3d output(max value), format as NDoC1HoWoC0.
@@ -505,8 +512,8 @@ REG_OP(MaxPool3DWithArgmax)
.OP_END_FACTORY_REG(MaxPool3DWithArgmax) .OP_END_FACTORY_REG(MaxPool3DWithArgmax)


/** /**
*@brief Applies a 2D adaptive max pooling over an input signal conposed of several input planes. \n
* The output is of size H x W, for any input size.
* @brief Applies a 2D adaptive max pooling over an input signal conposed of several input planes. \n
* The output is of size H x W, for any input size.


* @par Inputs: * @par Inputs:
* One input, including: * One input, including:
@@ -698,31 +705,31 @@ REG_OP(MaxPoolV2)
* @brief Performs max pooling on the input and outputs both max values and * @brief Performs max pooling on the input and outputs both max values and
* indices . \n * indices . \n


*@par Inputs:
* @par Inputs:
* One input: * One input:
* x: An 4D Tensor. Supported type: float, double, int32, * x: An 4D Tensor. Supported type: float, double, int32,
* uint8, int16, int8, int64, uint16, half, uint32, uint64. * uint8, int16, int8, int64, uint16, half, uint32, uint64.
* Must set the format, supported format list ["NCHW, NHWC"]. \n * Must set the format, supported format list ["NCHW, NHWC"]. \n


*@par Attributes:
*@li ksize: A required list of int8, int16, int32, or int64 values,
* @par Attributes:
* @li ksize: A required list of int8, int16, int32, or int64 values,
* specifying the size of the window for each dimension of the input tensor. * specifying the size of the window for each dimension of the input tensor.
* No default value. * No default value.
*@li strides: A required list of int8, int16, int32, or int64 values,
* @li strides: A required list of int8, int16, int32, or int64 values,
* specifying the stride of the sliding window for each dimension of * specifying the stride of the sliding window for each dimension of
* the input tensor. No default value. * the input tensor. No default value.
*@li padding: A required string. No default value .
*@li Targmax:An optional int with default value 7 . \n
* @li padding: A required string. No default value .
* @li Targmax:An optional int with default value 7 . \n


*@par Outputs:
*@li y: A Tensor. Has the same type and format as input "x".
*@li argmax: A Tensor. Has the same type and format as input "x".
* @par Outputs:
* @li y: A Tensor. Has the same type and format as input "x".
* @li argmax: A Tensor. Has the same type and format as input "x".
* @attention Constraints: * @attention Constraints:
*@li "ksize" is a list that has length 4: ksize[0] = 1 or ksize[3] = 1,
* @li "ksize" is a list that has length 4: ksize[0] = 1 or ksize[3] = 1,
* ksize[1] * ksize[2] <= 255. * ksize[1] * ksize[2] <= 255.
*@li "stride is a list that has length 4: strides[0] = 1 or strides[3] = 1,
* @li "stride is a list that has length 4: strides[0] = 1 or strides[3] = 1,
* strides[1] <= 63, strides[0] >= 1, strides[2] <= 63, strides[2] >= 1. * strides[1] <= 63, strides[0] >= 1, strides[2] <= 63, strides[2] >= 1.
*@li "padding" is either "SAME" or "VALID" .
* @li "padding" is either "SAME" or "VALID" .


*@par Third-party framework compatibility *@par Third-party framework compatibility
* Compatible with the TensorFlow operator MaxPoolWithArgmax. * Compatible with the TensorFlow operator MaxPoolWithArgmax.
@@ -760,7 +767,7 @@ REG_OP(MaxPoolWithArgmax)
* @li padding: A required string. No default value . \n * @li padding: A required string. No default value . \n


* @par Outputs: * @par Outputs:
*y: A Tensor. Has the same type and format as input "x" . \n
* y: A Tensor. Has the same type and format as input "x" . \n


* @attention Constraints: * @attention Constraints:
* @li "ksize" is a list that has length 4: ksize[0] = 1 or ksize[3] = 1, * @li "ksize" is a list that has length 4: ksize[0] = 1 or ksize[3] = 1,
@@ -873,7 +880,7 @@ REG_OP(MaxPoolGradGradWithArgmax)
* @li data_format: An optional string. Defaults to "NHWC". \n * @li data_format: An optional string. Defaults to "NHWC". \n


* @par Outputs: * @par Outputs:
* out_grad: A mutable tensor with the same shape and type as "input_grad". \n
* out_grad: A mutable tensor with the same shape and type as "orig_input_shape". \n


* @par Third-party framework compatibility * @par Third-party framework compatibility
* @li Compatible with the TensorFlow operator AvgPoolGrad. * @li Compatible with the TensorFlow operator AvgPoolGrad.
@@ -965,7 +972,7 @@ REG_OP(AvgPoolV2Grad)
/** /**
* @brief Computes gradients of averagev2 pooling function. * @brief Computes gradients of averagev2 pooling function.
* @par Inputs: * @par Inputs:
*input_grad: An NHWC tensor of type float16, float32, or double.
* input_grad: An NHWC tensor of type float16, float32, or double.


* @par Attributes: * @par Attributes:
* @li orig_input_shape: A required tuple or list of type int32. * @li orig_input_shape: A required tuple or list of type int32.
@@ -983,10 +990,10 @@ REG_OP(AvgPoolV2Grad)
* @li data_format: An optional string. Defaults to "NHWC". * @li data_format: An optional string. Defaults to "NHWC".


* @par Outputs: * @par Outputs:
*out_grad: A mutable tensor with the same shape and type as "orig_input".
* out_grad: A mutable tensor with the same shape and type as "orig_input".


* @par Third-party framework compatibility * @par Third-party framework compatibility
*Compatible with the TensorFlow operator AvgPoolGrad.
* Compatible with the TensorFlow operator AvgPoolGrad.
*/ */
REG_OP(AvgPoolV2GradD) REG_OP(AvgPoolV2GradD)
.INPUT(input_grad, TensorType({DT_FLOAT16})) .INPUT(input_grad, TensorType({DT_FLOAT16}))
@@ -1005,16 +1012,16 @@ REG_OP(AvgPoolV2GradD)
.OP_END_FACTORY_REG(AvgPoolV2GradD) .OP_END_FACTORY_REG(AvgPoolV2GradD)


/** /**
*@brief upsample the layer, similar to the nearest-neighbor difference scaling algorithm.
* @brief upsample the layer, similar to the nearest-neighbor difference scaling algorithm.


*@par Inputs:
* @par Inputs:
* one input, including: * one input, including:
* x: A tensor of type float16 or float32. * x: A tensor of type float16 or float32.
*@par Attributes:
*@li scale: A optional float32, scale factor of x. Defaults to "1.0".
*@li stride_h: An optional int32, broadcast the axis of h. Defaults to "2".
*@li stride_w: An optional int32, broadcast the axis of w. Defaults to "2".
*@par Outputs:
* @par Attributes:
* @li scale: A optional float32, scale factor of x. Defaults to "1.0".
* @li stride_h: An optional int32, broadcast the axis of h. Defaults to "2".
* @li stride_w: An optional int32, broadcast the axis of w. Defaults to "2".
* @par Outputs:
*y: A tensor of type float16 or float32. *y: A tensor of type float16 or float32.
*/ */
REG_OP(Upsample) REG_OP(Upsample)
@@ -1026,10 +1033,10 @@ REG_OP(Upsample)
.OP_END_FACTORY_REG(Upsample) .OP_END_FACTORY_REG(Upsample)


/** /**
*@brief Computes gradient of the FractionalMaxPool function . \n
* @brief Computes gradient of the FractionalMaxPool function . \n


*@par Inputs:
*Inputs include:
* @par Inputs:
* Inputs include:
* @li orig_input: A Tensor. Must be one of the following types: float32, float64, int32, int64. * @li orig_input: A Tensor. Must be one of the following types: float32, float64, int32, int64.
* @li orig_output: A Tensor. Must have the same type as orig_input. * @li orig_output: A Tensor. Must have the same type as orig_input.
* @li out_backprop: A Tensor. Must have the same type as orig_input. * @li out_backprop: A Tensor. Must have the same type as orig_input.
@@ -1037,17 +1044,17 @@ REG_OP(Upsample)
* @li row_pooling_sequence: A Tensor of type int64. * @li row_pooling_sequence: A Tensor of type int64.
* @li col_pooling_sequence: A Tensor of type int64 . \n * @li col_pooling_sequence: A Tensor of type int64 . \n


*@par Attributes:
*overlapping: An optional bool. Defaults to False . \n
* @par Attributes:
* overlapping: An optional bool. Defaults to False . \n


*@par Outputs:
*y: A Tensor. Has the same type as orig_input . \n
* @par Outputs:
* y: A Tensor. Has the same type as orig_input . \n


*@attention Constraints:
*The implementation for FractionalMaxPoolGrad on Ascend uses AICPU, with bad performance.
* @attention Constraints:
* The implementation for FractionalMaxPoolGrad on Ascend uses AICPU, with bad performance.


*@par Third-party framework compatibility
*@li compatible with tensorflow FractionalMaxPoolGrad operator.
* @par Third-party framework compatibility
* @li compatible with tensorflow FractionalMaxPoolGrad operator.
*/ */
REG_OP(FractionalMaxPoolGrad) REG_OP(FractionalMaxPoolGrad)
.INPUT(orig_input, TensorType({DT_FLOAT, DT_DOUBLE, DT_INT32, DT_INT64})) .INPUT(orig_input, TensorType({DT_FLOAT, DT_DOUBLE, DT_INT32, DT_INT64}))
@@ -1330,7 +1337,7 @@ REG_OP(AvgPool1DD)


* @par Inputs: * @par Inputs:
* One input: * One input:
* x: An 5hd Tensor of type float16.
* x: An 5hd Tensor of type float16.
* Must set the format, supported format list ["NC1HWC0"]. * Must set the format, supported format list ["NC1HWC0"].
* @par Attributes: * @par Attributes:
* @li ksize: A required list of int8, int16, int32, or int64 values, * @li ksize: A required list of int8, int16, int32, or int64 values,
@@ -1376,19 +1383,19 @@ REG_OP(MaxPoolWithArgmaxV2)


* @par Inputs: * @par Inputs:
* Three inputs, including: * Three inputs, including:
* @li x: An 5hd tensor of type float16.
* @li x: An 5hd tensor of type float16.
* Must set the format, supported format list ["NC1HWC0"] * Must set the format, supported format list ["NC1HWC0"]
* @li grad: An 5hd tensor of type float16.
* @li grad: An 5hd tensor of type float16.
* Must set the format, supported format list ["NC1HWC0"] * Must set the format, supported format list ["NC1HWC0"]
* @li argmax: An 5hd tensor of type uint16 or int64.
* @li argmax: An 5hd tensor of type uint16 or int64.
* Must set the format, supported format list ["NC1HWC0"] \n * Must set the format, supported format list ["NC1HWC0"] \n


* @par Attributes: * @par Attributes:
* @li ksize: A required list of int8, int16, int32, or int64 values,
* @li ksize: A required list of int8, int16, int32, or int64 values,
* specifying the size of the window for each dimension of the input tensor. No default value. * specifying the size of the window for each dimension of the input tensor. No default value.
* @li strides: A required list of int8, int16, int32, or int64 values,
* @li strides: A required list of int8, int16, int32, or int64 values,
* specifying the stride of the sliding window for each dimension of the input tensor. No default value. * specifying the stride of the sliding window for each dimension of the input tensor. No default value.
* @li pads: A required list of int8, int16, int32, or int64 values,
* @li pads: A required list of int8, int16, int32, or int64 values,
* specifying the pad of the input feature map. No default value. \n * specifying the pad of the input feature map. No default value. \n
* @li dtype: A optional int. default value is 3. * @li dtype: A optional int. default value is 3.
* @li dilation: A optional list of int8, int16, int32, or int64 values. * @li dilation: A optional list of int8, int16, int32, or int64 values.
@@ -1398,11 +1405,11 @@ REG_OP(MaxPoolWithArgmaxV2)
* y: A Tensor. Has the same type and format as input "x". \n * y: A Tensor. Has the same type and format as input "x". \n


* @attention Constraints: * @attention Constraints:
* @li ksize: a list that has length 4:
* @li ksize: a list that has length 4:
* ksize[0] = 1, ksize[1] = 1, ksize[2] * ksize[3] <= (ub_size-8)*1024//7//2//16. * ksize[0] = 1, ksize[1] = 1, ksize[2] * ksize[3] <= (ub_size-8)*1024//7//2//16.
* @li strides: a list that has length 4:
* @li strides: a list that has length 4:
* strides[0] = 1, strides[1] = 1, 1 <= strides[2] <= 2048, 1 <= strides[3] <= 2048. * strides[0] = 1, strides[1] = 1, 1 <= strides[2] <= 2048, 1 <= strides[3] <= 2048.
* @li pads: a list that has length 4:
* @li pads: a list that has length 4:
* pads[0] = 1, pads[1] = 1, 1 <= pads[2] <= (ksize[2]//2), 1 <= pads[3] <= (ksize[3]//2). * pads[0] = 1, pads[1] = 1, 1 <= pads[2] <= (ksize[2]//2), 1 <= pads[3] <= (ksize[3]//2).
* @li dilation: a list that has length 4. * @li dilation: a list that has length 4.
* @li ceil_mode: is a bool, default is false. \n * @li ceil_mode: is a bool, default is false. \n
@@ -1532,7 +1539,7 @@ REG_OP(MaxPoolV3Grad)
*@brief Performs Dilation2D on the input . \n *@brief Performs Dilation2D on the input . \n


*@par Inputs: *@par Inputs:
*@li x: A tensor of shape is 4d, format is support NHWC.
* @li x: A tensor of shape is 4d, format is support NHWC.
*@li filter: A tensor of shape is 3d, the type is same with x, and the c dimension is same with x. \n *@li filter: A tensor of shape is 3d, the type is same with x, and the c dimension is same with x. \n


*@par Attributes: *@par Attributes:
@@ -1566,12 +1573,12 @@ REG_OP(Dilation2D)


*@par Inputs: *@par Inputs:
*@li x: A tensor of shape is 4d, format is support NHWC. *@li x: A tensor of shape is 4d, format is support NHWC.
*@li filter: A tensor of shape is 3d, the type is same with x, and the c dimension is same with x.
* @li filter: A tensor of shape is 3d, the type is same with x, and the c dimension is same with x.
*@li out_backprop: Has the same type and format as input x and the c dimension is same with x. \n *@li out_backprop: Has the same type and format as input x and the c dimension is same with x. \n


*@par Attributes *@par Attributes
*@li strides: A required list of 4 ints, specifying the stride of the sliding window. The strides of the N and C dimension are 1. *@li strides: A required list of 4 ints, specifying the stride of the sliding window. The strides of the N and C dimension are 1.
*@li rates: A required list of 4 ints, the rates of the N and C dimensions are 1.
* @li rates: A required list of 4 ints, the rates of the N and C dimensions are 1.
*@li padding_mode: A optional string. Defaults to "SAME", it support SAME and VALID. *@li padding_mode: A optional string. Defaults to "SAME", it support SAME and VALID.
*@li pads: A optional list of 4 ints. *@li pads: A optional list of 4 ints.
*@li ceil_mode: An optional bool. Defaults to "false". Use ceil or floor to calculate the output size when padding_mode is "CALCULATED". *@li ceil_mode: An optional bool. Defaults to "false". Use ceil or floor to calculate the output size when padding_mode is "CALCULATED".
@@ -1605,7 +1612,7 @@ REG_OP(Dilation2DBackpropFilter)


*@par Inputs: *@par Inputs:
*@li x: A tensor of shape is 4d, format is support NHWC. *@li x: A tensor of shape is 4d, format is support NHWC.
*@li filter: A tensor of shape is 3d, the type is same with x, and the c dimension is same with x.
* @li filter: A tensor of shape is 3d, the type is same with x, and the c dimension is same with x.
*@li out_backprop: Has the same type and format as input x and the c dimension is same with x. \n *@li out_backprop: Has the same type and format as input x and the c dimension is same with x. \n


*@par Attributes *@par Attributes
@@ -1640,7 +1647,7 @@ REG_OP(Dilation2DBackpropInput)
.OP_END_FACTORY_REG(Dilation2DBackpropInput) .OP_END_FACTORY_REG(Dilation2DBackpropInput)


/** /**
* @brief Applies a 2D adaptive average pooling over
* @brief Applies a 2D adaptive average pooling over
* an input signal composed of several input planes. \n * an input signal composed of several input planes. \n


* @par Inputs: * @par Inputs:
@@ -1696,11 +1703,11 @@ REG_OP(AdaptiveAvgPool2dGrad)
* @li argmax: A tensor of type uint16 or int64. \n * @li argmax: A tensor of type uint16 or int64. \n


* @par Attributes: * @par Attributes:
* @li ksize: A required list of int8, int16, int32, or int64 values,
* @li ksize: A required list of int8, int16, int32, or int64 values,
* specifying the size of the window for each dimension of the input tensor. No default value. * specifying the size of the window for each dimension of the input tensor. No default value.
* @li strides: A required list of int8, int16, int32, or int64 values,
* @li strides: A required list of int8, int16, int32, or int64 values,
* specifying the stride of the sliding window for each dimension of the input tensor. No default value. * specifying the stride of the sliding window for each dimension of the input tensor. No default value.
* @li pads: A required list of int8, int16, int32, or int64 values,
* @li pads: A required list of int8, int16, int32, or int64 values,
* specifying the pad of the input feature map. No default value. \n * specifying the pad of the input feature map. No default value. \n


* @par Outputs: * @par Outputs:
@@ -1708,11 +1715,11 @@ REG_OP(AdaptiveAvgPool2dGrad)


* @attention Constraints: * @attention Constraints:
* @li The MaxPoolGradWithArgmaxV2 operator has the same function, and it is recommended to use the V2 operator. * @li The MaxPoolGradWithArgmaxV2 operator has the same function, and it is recommended to use the V2 operator.
* @li ksize: a list that has length 4:
* @li ksize: a list that has length 4:
* ksize[0] = 1, ksize[3] = 1, ksize[1] * ksize[2] <= (ub_size-8)*1024//7//2//16. * ksize[0] = 1, ksize[3] = 1, ksize[1] * ksize[2] <= (ub_size-8)*1024//7//2//16.
* @li strides: a list that has length 4:
* @li strides: a list that has length 4:
* strides[0] = 1, strides[3] = 1, 1 <= strides[1] <= 2048, 1 <= strides[2] <= 2048. * strides[0] = 1, strides[3] = 1, 1 <= strides[1] <= 2048, 1 <= strides[2] <= 2048.
* @li pads: a list that has length 4:
* @li pads: a list that has length 4:
* pads[0] = 1, pads[3] = 1, 1 <= pads[2] <= (ksize[1]//2), 1 <= pads[2] <= (ksize[3]//2). * pads[0] = 1, pads[3] = 1, 1 <= pads[2] <= (ksize[1]//2), 1 <= pads[2] <= (ksize[3]//2).
* @li ceil_mode: defaults to False.\n * @li ceil_mode: defaults to False.\n


@@ -1778,7 +1785,7 @@ REG_OP(MaxPoolWithArgmaxV1)
.OP_END_FACTORY_REG(MaxPoolWithArgmaxV1) .OP_END_FACTORY_REG(MaxPoolWithArgmaxV1)


/** /**
*@brief Randomly sample a subset of positive and negative examples,and overwrite
* @brief Randomly sample a subset of positive and negative examples,and overwrite
the label vector to the ignore value (-1) for all elements that are not the label vector to the ignore value (-1) for all elements that are not
included in the sample.\n included in the sample.\n


@@ -1790,14 +1797,14 @@ included in the sample.\n
* @li batch_size_per_images: A require attribute of type int. * @li batch_size_per_images: A require attribute of type int.
* @li positive_fraction: A require attribute of type float. * @li positive_fraction: A require attribute of type float.


*@par Outputs:
*y: The result of subSample. \n
* @par Outputs:
* y: The result of subSample. \n


*@par Third-party framework compatibility
*Compatible with the Pytorch operator SubSample.
* @par Third-party framework compatibility
* Compatible with the Pytorch operator SubSample.


*@attention Constraints:
*Warning: This operator can be integrated only by MaskRcnn. Please do not use it directly.
* @attention Constraints:
* Warning: This operator can be integrated only by MaskRcnn. Please do not use it directly.
*/ */
REG_OP(SubSample) REG_OP(SubSample)
.INPUT(labels, TensorType({DT_INT32})) .INPUT(labels, TensorType({DT_INT32}))
@@ -1807,7 +1814,7 @@ REG_OP(SubSample)
.OP_END_FACTORY_REG(SubSample) .OP_END_FACTORY_REG(SubSample)


/** /**
*@brief Randomly sample a subset of positive and negative examples,and overwrite
* @brief Randomly sample a subset of positive and negative examples,and overwrite
the label vector to the ignore value (-1) for all elements that are not the label vector to the ignore value (-1) for all elements that are not
included in the sample.\n included in the sample.\n


@@ -1820,14 +1827,14 @@ included in the sample.\n
* @li batch_size_per_images: A require attribute of type int. * @li batch_size_per_images: A require attribute of type int.
* @li positive_fraction: A require attribute of type float. * @li positive_fraction: A require attribute of type float.


*@par Outputs:
*y: The result of subSample. \n
* @par Outputs:
* y: The result of subSample. \n


*@par Third-party framework compatibility
*Compatible with the Pytorch operator SubSampleLabels.
* @par Third-party framework compatibility
* Compatible with the Pytorch operator SubSampleLabels.


*@attention Constraints:
*Warning: This operator can be integrated only by MaskRcnn. Please do not use it directly.
* @attention Constraints:
* Warning: This operator can be integrated only by MaskRcnn. Please do not use it directly.
*/ */
REG_OP(SubSampleLabels) REG_OP(SubSampleLabels)
.INPUT(labels, TensorType({DT_INT32})) .INPUT(labels, TensorType({DT_INT32}))
@@ -1838,22 +1845,22 @@ REG_OP(SubSampleLabels)
.OP_END_FACTORY_REG(SubSampleLabels) .OP_END_FACTORY_REG(SubSampleLabels)


/** /**
*@brief Computes GlobalLpPool, GlobalLpPool consumes an input tensor X and applies lp pool pooling across the
* @brief Computes GlobalLpPool, GlobalLpPool consumes an input tensor X and applies lp pool pooling across the
values in the same channel. \n values in the same channel. \n


*@par Inputs:
* @par Inputs:
* x: A Tensor of type float16 or float32 . \n * x: A Tensor of type float16 or float32 . \n


*@par Attributes:
*@li p: Optional. Must be one of the following types: float32. Defaults to 2.0. \n
* @par Attributes:
* @li p: Optional. Must be one of the following types: float32. Defaults to 2.0. \n


*@par Outputs:
* @par Outputs:
* y: A Tensor. Has the same type as "x", when shape of x is [N,C,H,W], shape of y is [N,C,1,1]. * y: A Tensor. Has the same type as "x", when shape of x is [N,C,H,W], shape of y is [N,C,1,1].
*@par Third-party framework compatibility
* @par Third-party framework compatibility
* Compatible with the onnx operator GlobalLpPool. * Compatible with the onnx operator GlobalLpPool.
*@par Restrictions:
*Warning: THIS FUNCTION IS DEPRECATED.
*Warning: THIS FUNCTION IS EXPERIMENTAL. Please do not use.
* @par Restrictions:
* Warning: THIS FUNCTION IS DEPRECATED.
* Warning: THIS FUNCTION IS EXPERIMENTAL. Please do not use.
*/ */


REG_OP(GlobalLpPool) REG_OP(GlobalLpPool)


+ 33
- 33
third_party/fwkacllib/inc/ops/nonlinear_fuc_ops.h View File

@@ -25,17 +25,17 @@


namespace ge { namespace ge {
/** /**
*@brief The GELU activation function is x*Φ(x),
* @brief The GELU activation function is x*Φ(x),
* where Φ(x) the standard Gaussian cumulative distribution function. * where Φ(x) the standard Gaussian cumulative distribution function.


*@par Inputs:
*One input, including: \n
*x: A Tensor. Must be one of the following types: float16, float32. \n
* @par Inputs:
* One input, including: \n
* x: A Tensor. Must be one of the following types: float16, float32. \n


*@par Outputs:
*y: A Tensor. Has the same type as "x". \n
* @par Outputs:
* y: A Tensor. Has the same type as "x". \n


*@par Third-party framework compatibility:
* @par Third-party framework compatibility:
* Compatible with the TensorFlow operator Gelu. * Compatible with the TensorFlow operator Gelu.
*/ */
REG_OP(Gelu) REG_OP(Gelu)
@@ -125,17 +125,17 @@ REG_OP(SwishGrad)
.OP_END_FACTORY_REG(SwishGrad) .OP_END_FACTORY_REG(SwishGrad)


/** /**
*@brief Computes the gradient for the gelu of "x" .
* @brief Computes the gradient for the gelu of "x" .


*@par Inputs:
* @par Inputs:
* Three inputs, including: * Three inputs, including:
*@li dy: A Tensor. Must be one of the following types: float16, float32.
*@li x: A Tensor of the same type as "dy".
*@li y: A Tensor of the same type as "dy" . \n
* @li dy: A Tensor. Must be one of the following types: float16, float32.
* @li x: A Tensor of the same type as "dy".
* @li y: A Tensor of the same type as "dy" . \n


*@par Outputs:
*z: A Tensor. Has the same type as "dy".
*@par Third-party framework compatibility
* @par Outputs:
* z: A Tensor. Has the same type as "dy".
* @par Third-party framework compatibility
* Compatible with the TensorFlow operator GeluGrad. * Compatible with the TensorFlow operator GeluGrad.
*/ */
REG_OP(GeluGrad) REG_OP(GeluGrad)
@@ -799,20 +799,20 @@ REG_OP(LeakyReluGrad)
.OP_END_FACTORY_REG(LeakyReluGrad) .OP_END_FACTORY_REG(LeakyReluGrad)


/** /**
*@brief Thresholds grad each element of the input Tensor .
* @brief Thresholds grad each element of the input Tensor .


*@par Inputs:
* @par Inputs:
* @li gradients: A Tensor shape and dtype of input gradients. Support float16, int32. * @li gradients: A Tensor shape and dtype of input gradients. Support float16, int32.
* @li features: A Tensor shape and dtype of input features. Support float16, int32 . \n * @li features: A Tensor shape and dtype of input features. Support float16, int32 . \n


*@par Attributes:
*threshold: A float32 scale value to threshold at . \n
* @par Attributes:
* threshold: A float32 scale value to threshold at . \n


*@par Outputs:
*backprops: A Tensor of shape and dtype of output backprops, should be same shape and type as inputs . \n
* @par Outputs:
* backprops: A Tensor of shape and dtype of output backprops, should be same shape and type as inputs . \n


*@par Restrictions:
*Warning: THIS FUNCTION IS EXPERIMENTAL. Please do not use.
* @par Restrictions:
* Warning: THIS FUNCTION IS EXPERIMENTAL. Please do not use.
*/ */
REG_OP(ThresholdGradV2D) REG_OP(ThresholdGradV2D)
.INPUT(gradients, TensorType({DT_INT32, DT_FLOAT16})) .INPUT(gradients, TensorType({DT_INT32, DT_FLOAT16}))
@@ -822,20 +822,20 @@ REG_OP(ThresholdGradV2D)
.OP_END_FACTORY_REG(ThresholdGradV2D) .OP_END_FACTORY_REG(ThresholdGradV2D)


/** /**
*@brief Thresholds each element of the input Tensor y = (x > threshold) ? x : value .
* @brief Thresholds each element of the input Tensor y = (x > threshold) ? x : value .


*@par Inputs:
*x: A Tensor dtype of real number . \n
* @par Inputs:
* x: A Tensor dtype of real number . \n


*@par Attributes:
*@li threshold: A float32 scale value to threshold at.
*@li value: A float32 scale value to replace with . \n
* @par Attributes:
* @li threshold: A float32 scale value to threshold at.
* @li value: A float32 scale value to replace with . \n


*@par Outputs:
*y: A Tensor of shape and dtype of output, should be same shape and type as input . \n
* @par Outputs:
* y: A Tensor of shape and dtype of output, should be same shape and type as input . \n


*@par Restrictions:
*Warning: THIS FUNCTION IS EXPERIMENTAL. Please do not use.
* @par Restrictions:
* Warning: THIS FUNCTION IS EXPERIMENTAL. Please do not use.
*/ */
REG_OP(ThresholdV2D) REG_OP(ThresholdV2D)
.INPUT(x, TensorType::RealNumberType()) .INPUT(x, TensorType::RealNumberType())


+ 34
- 10
third_party/fwkacllib/inc/ops/random_ops.h View File

@@ -528,33 +528,57 @@ REG_OP(DropOutGenMaskV3)


/** /**
*@brief Generate stateless random bit mask for dropout . \n
* @brief Generate stateless random bit mask for dropout . \n


*@par Inputs:
* @par Inputs:
include: include:
*@li shape:The shape of the output tensor.
*@li prob:0-D. Number of bit 1 . \n
*@li seed:If either seed or seed2 are set to be non-zero, the random number
*generator is seeded by the given seed. Otherwise, it is seeded by a random seed.
*@li seed2:A second seed to avoid seed collision . \n
* @li shape:The shape of the output tensor.
* @li prob:0-D. Number of bit 1 . \n
* @li seed:Frist seed to avoid seed collision.
* @li seed1:Second seed to avoid seed collision . \n
* @li offset:Initial offset of random number . \n


*@par Outputs:
* @par Outputs:
*y:Output (1-D) random number using uint data format . \n *y:Output (1-D) random number using uint data format . \n


*@attention Constraints:
* @attention Constraints:
*The output is aligned with 128 bits *The output is aligned with 128 bits


*@see StatelessDropOutGenMask()
* @see StatelessDropOutGenMask()
*/ */
REG_OP(StatelessDropOutGenMask) REG_OP(StatelessDropOutGenMask)
.INPUT(shape, TensorType({ DT_INT32, DT_INT64 })) .INPUT(shape, TensorType({ DT_INT32, DT_INT64 }))
.INPUT(prob, TensorType({ DT_FLOAT16, DT_FLOAT })) .INPUT(prob, TensorType({ DT_FLOAT16, DT_FLOAT }))
.INPUT(seed, TensorType({ DT_INT32, DT_INT64 })) .INPUT(seed, TensorType({ DT_INT32, DT_INT64 }))
.INPUT(seed1, TensorType({ DT_INT32, DT_INT64 })) .INPUT(seed1, TensorType({ DT_INT32, DT_INT64 }))
.OPTIONAL_INPUT(offset, TensorType({ DT_INT64 }))
.OUTPUT(y, TensorType({ DT_UINT8 })) .OUTPUT(y, TensorType({ DT_UINT8 }))
.OP_END_FACTORY_REG(StatelessDropOutGenMask) .OP_END_FACTORY_REG(StatelessDropOutGenMask)


/** /**
* @brief Generate bernoulli distribution for tensor input . \n

* @par Inputs:
include:
* @li shape:The shape of the output tensor. A Tensor of type int32, int64.
* @li prob:0-D. Number of bit 1 . \n
* @li seed:If seed is set to be -1, and offset is set to be 0, the random number
* generator is seeded by arandom seed. Otherwise, it is seeded by the given seed.
* @li offset:To avoid seed collision . \n

* @par Outputs:
* y:A Tensor. A Tensor of type int8, uint8, int16, uint16,
* int32, uint32, int64, uint64, bool, float16, float, double, bf16. \n
*/
REG_OP(StatelessBernoulli)
.INPUT(shape, TensorType({ DT_INT32, DT_INT64}))
.INPUT(prob, TensorType({ DT_FLOAT16, DT_FLOAT, DT_DOUBLE }))
.INPUT(seed, TensorType({ DT_INT64 }))
.INPUT(offset, TensorType({ DT_INT64 }))
.OUTPUT(y, TensorType({ DT_INT8, DT_UINT8, DT_INT16, DT_UINT16, DT_INT32, DT_UINT32,
DT_INT64, DT_UINT64, DT_BOOL, DT_FLOAT16, DT_FLOAT, DT_DOUBLE, DT_BF16}))
.OP_END_FACTORY_REG(StatelessBernoulli)
/**
*@brief Generates values in an interval . \n *@brief Generates values in an interval . \n


*@par Inputs: *@par Inputs:


+ 552
- 483
third_party/fwkacllib/inc/ops/selection_ops.h
File diff suppressed because it is too large
View File


+ 1
- 1
third_party/fwkacllib/inc/ops/sparse_ops.h View File

@@ -1041,4 +1041,4 @@ REG_OP(DeserializeManySparse)
.OP_END_FACTORY_REG(DeserializeManySparse) .OP_END_FACTORY_REG(DeserializeManySparse)
} // namespace ge } // namespace ge


#endif // OPS_BUILT_IN_OP_PROTO_INC_SPARSE_OPS_H_
#endif // OPS_BUILT_IN_OP_PROTO_INC_SPARSE_OPS_H_

+ 36
- 0
third_party/fwkacllib/inc/ops/spectral_ops.h View File

@@ -143,6 +143,42 @@ REG_OP(IFFT2D)
.OUTPUT(y, TensorType({DT_COMPLEX64,DT_COMPLEX128})) .OUTPUT(y, TensorType({DT_COMPLEX64,DT_COMPLEX128}))
.OP_END_FACTORY_REG(IFFT2D) .OP_END_FACTORY_REG(IFFT2D)


/**
* @brief Computes the Fourier transform of short overlapping windows of the input. \n

* @par Inputs:
* @li x: A 1-D or 2-D tensor.
* @li window: An optional tensor. The optional window function. Default: None (treated as window of all 1 s) \n

* @par Attributes:
* @li n_fft: A required int. Size of Fourier transform
* @li hop_length: An optional int. The distance between neighboring sliding window frames.
* Default: None (treated as equal to floor(n_fft/4))
* @li win_length: An optional int. The size of window frame and STFT filter.
* Default: None (treated as equal to n_fft)
* @li normalized: An optional bool. Controls whether to return the normalized STFT results Default: False
* @li onesided: An optional bool. Controls whether to return half of results to avoid redundancy for real inputs.
* Default: True for real input and window, False otherwise.
* @li return_complex: An optional bool. Whether to return a complex tensor, or a real tensor
* with an extra last dimension for the real and imaginary components. \n

* @par Outputs:
* y: A tensor containing the STFT result with shape described above. \n

* @par Third-party framework compatibility
* Compatible with pytorch STFT operator.
*/
REG_OP(STFT)
.INPUT(x, TensorType({DT_FLOAT, DT_DOUBLE, DT_COMPLEX64, DT_COMPLEX128}))
.OPTIONAL_INPUT(window, TensorType({DT_FLOAT, DT_DOUBLE, DT_COMPLEX64, DT_COMPLEX128}))
.OUTPUT(y, TensorType({DT_FLOAT, DT_DOUBLE, DT_COMPLEX64, DT_COMPLEX128}))
.ATTR(hop_length, Int, 0)
.ATTR(win_length, Int, 0)
.ATTR(normalized, Bool, false)
.ATTR(onesided, Bool, true)
.ATTR(return_complex, Bool, true)
.REQUIRED_ATTR(n_fft, Int)
.OP_END_FACTORY_REG(STFT)
} // namespace ge } // namespace ge


#endif // OPS_BUILT_IN_OP_PROTO_INC_SPECTRAL_OPS_H_ #endif // OPS_BUILT_IN_OP_PROTO_INC_SPECTRAL_OPS_H_

+ 5
- 1
third_party/fwkacllib/inc/runtime/config.h View File

@@ -79,7 +79,11 @@ typedef enum tagRtPlatformType {
PLATFORM_LHISI_SD3403 = 7, PLATFORM_LHISI_SD3403 = 7,
PLATFORM_MINI_V3 = 8, PLATFORM_MINI_V3 = 8,
PLATFORM_MINI_5612 = 9, PLATFORM_MINI_5612 = 9,
PLATFORM_END = 10,
PLATFORM_CLOUD_V2_910B1 = 10,
PLATFORM_CLOUD_V2_910B2 = 11,
PLATFORM_CLOUD_V2_910B3 = 12,
PLATFORM_CLOUD_V2_910B4 = 13,
PLATFORM_END = 14,
} rtPlatformType_t; } rtPlatformType_t;


typedef enum tagRtCubeFracMKNFp16 { typedef enum tagRtCubeFracMKNFp16 {


+ 30
- 0
third_party/fwkacllib/inc/runtime/kernel.h View File

@@ -166,6 +166,19 @@ typedef enum tagRtDumpKind {
RT_DATA_DUMP_KIND_RESERVED = 1, RT_DATA_DUMP_KIND_RESERVED = 1,
} rtDumpKind_t; } rtDumpKind_t;


/**
* @ingroup rt_kernel
* @brief rt kernel type
*/
typedef enum rtKernelType {
KERNEL_TYPE_CCE = 0,
KERNEL_TYPE_FWK = 1,
KERNEL_TYPE_AICPU = 2,
KERNEL_TYPE_AICPU_CUSTOM = 4,
KERNEL_TYPE_HWTS = 10,
KERNEL_TYPE_RESERVED = 99,
} rtKernelType_t;

/** /**
* @ingroup rt_kernel * @ingroup rt_kernel
* @brief report callback * @brief report callback
@@ -523,6 +536,23 @@ RTS_API rtError_t rtAicpuKernelLaunchWithFlag(const rtKernelLaunchNames_t *launc
const rtArgsEx_t *argsInfo, rtSmDesc_t *smDesc, rtStream_t stm, const rtArgsEx_t *argsInfo, rtSmDesc_t *smDesc, rtStream_t stm,
uint32_t flags); uint32_t flags);


/**
* @ingroup rtAicpuKernelLaunchEx
* @brief launch cpu kernel to device with dump identifier and kernelType
* @param [in] kernelType aicpu kernel type
* @param [in] launchNames names address for kernel launch
* @param [in] blockDim block dimentions
* @param [in] argsInfo argments address for kernel function
* @param [in] smDesc shared memory description
* @param [in] stm associated stream
* @param [in] flags dump flag or others function flag
* @return RT_ERROR_NONE for ok
* @return RT_ERROR_INVALID_VALUE for error input
*/
RTS_API rtError_t rtAicpuKernelLaunchEx(uint32_t kernelType, const rtKernelLaunchNames_t *launchNames,
uint32_t blockDim, const rtArgsEx_t *argsInfo, rtSmDesc_t *smDesc,
rtStream_t stm, uint32_t flags);

/** /**
* @ingroup rt_kernel * @ingroup rt_kernel
* @brief L1 fusion dump addr transfered to device * @brief L1 fusion dump addr transfered to device


+ 1
- 0
third_party/fwkacllib/inc/runtime/mem.h View File

@@ -31,6 +31,7 @@ extern "C" {
#define RT_MEMORY_TS (0x40U) // Used for Ts memory #define RT_MEMORY_TS (0x40U) // Used for Ts memory
#define RT_MEMORY_TS_4G (0x40U) // Used for Ts memory(only 1951) #define RT_MEMORY_TS_4G (0x40U) // Used for Ts memory(only 1951)
#define RT_MEMORY_HOST (0x81U) // Memory on host #define RT_MEMORY_HOST (0x81U) // Memory on host
#define RT_MEMORY_SVM (0x90U) // Memory for SVM
#define RT_MEMORY_RESERVED (0x100U) #define RT_MEMORY_RESERVED (0x100U)


#define RT_MEMORY_L1 (0x1U << 16U) #define RT_MEMORY_L1 (0x1U << 16U)


+ 1
- 0
third_party/fwkacllib/inc/runtime/rt_model.h View File

@@ -49,6 +49,7 @@ typedef enum tagModelTaskType {
RT_MODEL_TASK_BARRIER, RT_MODEL_TASK_BARRIER,
RT_MODEL_TASK_NPU_GET_FLOAT_STATUS, RT_MODEL_TASK_NPU_GET_FLOAT_STATUS,
RT_MODEL_TASK_NPU_CLEAR_FLOAT_STATUS, RT_MODEL_TASK_NPU_CLEAR_FLOAT_STATUS,
RT_MODEL_TASK_DVPP,
} rtModelTaskType_t; } rtModelTaskType_t;


typedef enum tagModelStreamType { typedef enum tagModelStreamType {


+ 13
- 9
third_party/fwkacllib/inc/toolchain/prof_callback.h View File

@@ -1,13 +1,20 @@
/*
* Copyright (c) Huawei Technologies Co., Ltd. 2019-2021. All rights reserved.
* Description: handle perf data
* Author: xp
* Create: 2019-10-13
/**
* @file prof_callback.h
*
* Copyright (c) Huawei Technologies Co., Ltd. 2019-2022. All rights reserved.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*
*/ */


#ifndef MSPROFILER_PROF_CALLBACK_H_ #ifndef MSPROFILER_PROF_CALLBACK_H_
#define MSPROFILER_PROF_CALLBACK_H_ #define MSPROFILER_PROF_CALLBACK_H_


#include <stddef.h>
#include <stdint.h>

#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
#endif // __cplusplus #endif // __cplusplus
@@ -18,9 +25,6 @@ extern "C" {
#define MSVP_PROF_API __attribute__((visibility("default"))) #define MSVP_PROF_API __attribute__((visibility("default")))
#endif #endif


#include "stddef.h"
#include "stdint.h"

/** /**
* @name MsprofErrorCode * @name MsprofErrorCode
* @brief error code * @brief error code
@@ -170,7 +174,7 @@ MSVP_PROF_API int32_t MsprofInit(uint32_t moduleId, void *data, uint32_t dataLen
* @param moduleId [IN] module Id * @param moduleId [IN] module Id
* @param handle [IN] the pointer of callback * @param handle [IN] the pointer of callback
*/ */
MSVP_PROF_API int32_t MsprofRegisterCallback(uint32_t moduleId, ProfCommandHandle callback);
MSVP_PROF_API int32_t MsprofRegisterCallback(uint32_t moduleId, ProfCommandHandle handle);
/* /*
* @name profReportData * @name profReportData
* @brief start reporter/stop reporter/report date * @brief start reporter/stop reporter/report date


+ 31
- 26
third_party/fwkacllib/inc/toolchain/prof_common.h View File

@@ -1,23 +1,27 @@
/*
* Copyright (c) Huawei Technologies Co., Ltd. 2019-2021. All rights reserved.
* Description: handle perf data
* Author: Huawei Technologies Co., Ltd.
* Create: 2019-10-13
/**
* @file prof_common.h
*
* Copyright (c) Huawei Technologies Co., Ltd. 2019-2022. All rights reserved.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*
*/ */
#ifndef MSPROFILER_PROF_COMMON_H_ #ifndef MSPROFILER_PROF_COMMON_H_
#define MSPROFILER_PROF_COMMON_H_ #define MSPROFILER_PROF_COMMON_H_


#include <stdint.h>

#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
#endif // __cplusplus #endif // __cplusplus


#include <stdint.h>

#define MSPROF_DATA_HEAD_MAGIC_NUM 0x5a5a #define MSPROF_DATA_HEAD_MAGIC_NUM 0x5a5a


enum MsprofDataTag { enum MsprofDataTag {
MSPROF_ACL_DATA_TAG = 0, //acl data tag, range: 0~19
MSPROF_GE_DATA_TAG_MODEL_LOAD = 20, //ge data tag, range: 20~39
MSPROF_ACL_DATA_TAG = 0, // acl data tag, range: 0~19
MSPROF_GE_DATA_TAG_MODEL_LOAD = 20, // ge data tag, range: 20~39
MSPROF_GE_DATA_TAG_FUSION = 21, MSPROF_GE_DATA_TAG_FUSION = 21,
MSPROF_GE_DATA_TAG_INFER = 22, MSPROF_GE_DATA_TAG_INFER = 22,
MSPROF_GE_DATA_TAG_TASK = 23, MSPROF_GE_DATA_TAG_TASK = 23,
@@ -25,14 +29,14 @@ enum MsprofDataTag {
MSPROF_GE_DATA_TAG_STEP = 25, MSPROF_GE_DATA_TAG_STEP = 25,
MSPROF_GE_DATA_TAG_ID_MAP = 26, MSPROF_GE_DATA_TAG_ID_MAP = 26,
MSPROF_GE_DATA_TAG_HOST_SCH = 27, MSPROF_GE_DATA_TAG_HOST_SCH = 27,
MSPROF_RUNTIME_DATA_TAG_API = 40, //runtime data tag, range: 40~59
MSPROF_RUNTIME_DATA_TAG_API = 40, // runtime data tag, range: 40~59
MSPROF_RUNTIME_DATA_TAG_TRACK = 41, MSPROF_RUNTIME_DATA_TAG_TRACK = 41,
MSPROF_AICPU_DATA_TAG = 60, //aicpu data tag, range: 60~79
MSPROF_AICPU_DATA_TAG = 60, // aicpu data tag, range: 60~79
MSPROF_AICPU_MODEL_TAG = 61, MSPROF_AICPU_MODEL_TAG = 61,
MSPROF_HCCL_DATA_TAG = 80, //hccl data tag, range: 80~99
MSPROF_DP_DATA_TAG = 100, //dp data tag, range: 100~119
MSPROF_MSPROFTX_DATA_TAG = 120, //hccl data tag, range: 120~139
MSPROF_DATA_TAG_MAX = 65536, //data tag value type is uint16_t
MSPROF_HCCL_DATA_TAG = 80, // hccl data tag, range: 80~99
MSPROF_DP_DATA_TAG = 100, // dp data tag, range: 100~119
MSPROF_MSPROFTX_DATA_TAG = 120, // hccl data tag, range: 120~139
MSPROF_DATA_TAG_MAX = 65536, // data tag value type is uint16_t
}; };


/** /**
@@ -154,6 +158,8 @@ enum MsprofGeTaskType {
MSPROF_GE_TASK_TYPE_AI_CORE = 0, MSPROF_GE_TASK_TYPE_AI_CORE = 0,
MSPROF_GE_TASK_TYPE_AI_CPU, MSPROF_GE_TASK_TYPE_AI_CPU,
MSPROF_GE_TASK_TYPE_AIV, MSPROF_GE_TASK_TYPE_AIV,
MSPROF_GE_TASK_TYPE_WRITE_BACK,
MSPROF_GE_TASK_TYPE_INVALID
}; };
enum MsprofGeShapeType { enum MsprofGeShapeType {
MSPROF_GE_SHAPE_TYPE_STATIC = 0, MSPROF_GE_SHAPE_TYPE_STATIC = 0,
@@ -368,11 +374,11 @@ struct MsprofHcclProfReduce {
uint64_t src; uint64_t src;
uint64_t dst; uint64_t dst;
uint64_t size; uint64_t size;
uint32_t op; // {0: sum, 1: mul, 2: max, 3: min}
uint32_t dataType; // data type {0: INT8, 1: INT16, 2: INT32, 3: FP16, 4:FP32, 5:INT64, 6:UINT64}
uint32_t linkType; // link type {0: 'OnChip', 1: 'HCCS', 2: 'PCIe', 3: 'RoCE'}
uint32_t op; // {0: sum, 1: mul, 2: max, 3: min}
uint32_t dataType; // data type {0: INT8, 1: INT16, 2: INT32, 3: FP16, 4:FP32, 5:INT64, 6:UINT64}
uint32_t linkType; // link type {0: 'OnChip', 1: 'HCCS', 2: 'PCIe', 3: 'RoCE'}
uint32_t remoteRank; uint32_t remoteRank;
uint32_t transportType; // transport type {0: SDMA, 1: RDMA, 2:LOCAL}
uint32_t transportType; // transport type {0: SDMA, 1: RDMA, 2:LOCAL}
uint32_t role; // role {0: dst, 1:src} uint32_t role; // role {0: dst, 1:src}
double durationEstimated; double durationEstimated;
}; };
@@ -383,9 +389,9 @@ struct MsprofHcclProfRDMA {
uint64_t dst; uint64_t dst;
uint64_t size; uint64_t size;
uint64_t notifyID; uint64_t notifyID;
uint32_t linkType; // link type {0: 'OnChip', 1: 'HCCS', 2: 'PCIe', 3: 'RoCE'}
uint32_t linkType; // link type {0: 'OnChip', 1: 'HCCS', 2: 'PCIe', 3: 'RoCE'}
uint32_t remoteRank; uint32_t remoteRank;
uint32_t transportType; // transport type {0: RDMA, 1:SDMA, 2:LOCAL}
uint32_t transportType; // transport type {0: RDMA, 1:SDMA, 2:LOCAL}
uint32_t role; // role {0: dst, 1:src} uint32_t role; // role {0: dst, 1:src}
uint32_t type; // RDMA type {0: RDMASendNotify, 1:RDMASendPayload} uint32_t type; // RDMA type {0: RDMASendNotify, 1:RDMASendPayload}
double durationEstimated; double durationEstimated;
@@ -397,7 +403,7 @@ struct MsprofHcclProfMemcpy {
uint64_t dst; uint64_t dst;
uint64_t size; uint64_t size;
uint64_t notifyID; uint64_t notifyID;
uint32_t linkType; // link type {0: 'OnChip', 1: 'HCCS', 2: 'PCIe', 3: 'RoCE'}
uint32_t linkType; // link type {0: 'OnChip', 1: 'HCCS', 2: 'PCIe', 3: 'RoCE'}
uint32_t remoteRank; uint32_t remoteRank;
uint32_t transportType; // transport type {0: RDMA, 1:SDMA, 2:LOCAL} uint32_t transportType; // transport type {0: RDMA, 1:SDMA, 2:LOCAL}
uint32_t role; // role {0: dst, 1:src} uint32_t role; // role {0: dst, 1:src}
@@ -448,18 +454,17 @@ struct MsprofStampInfo {
uint16_t dataTag; uint16_t dataTag;
uint32_t processId; uint32_t processId;
uint32_t threadId; uint32_t threadId;
uint32_t category; //marker category
uint32_t category; // marker category
uint32_t eventType; uint32_t eventType;
int32_t payloadType; int32_t payloadType;
union PayloadValue //payload info for marker
{
union PayloadValue {
uint64_t ullValue; uint64_t ullValue;
int64_t llValue; int64_t llValue;
double dValue; double dValue;
uint32_t uiValue[2]; uint32_t uiValue[2];
int32_t iValue[2]; int32_t iValue[2];
float fValue[2]; float fValue[2];
} payload;
} payload; // payload info for marker
uint64_t startTime; uint64_t startTime;
uint64_t endTime; uint64_t endTime;
int32_t messageType; int32_t messageType;


+ 92
- 97
third_party/fwkacllib/inc/toolchain/prof_engine.h View File

@@ -1,17 +1,12 @@
/** /**
* Copyright 2019-2020 Huawei Technologies Co., Ltd
* @file prof_engine.h
* *
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* Copyright (c) Huawei Technologies Co., Ltd. 2019-2022. All rights reserved.
* *
* http://www.apache.org/licenses/LICENSE-2.0
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* *
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/ */


#ifndef MSPROF_ENGINE_PROF_ENGINE_H_ #ifndef MSPROF_ENGINE_PROF_ENGINE_H_
@@ -35,7 +30,7 @@ namespace Engine {
* record config info * record config info
*/ */
struct ModuleJobConfig { struct ModuleJobConfig {
std::map<std::string, std::string> switches; /**< key is the config name, value is the config value(on or off) */
std::map<std::string, std::string> switches; /**< key is the config name, value is the config value(on or off) */
}; };


/** /**
@@ -48,59 +43,59 @@ struct ModuleJobConfig {
* @brief class PluginIntf * @brief class PluginIntf
*/ */
class MSVP_PROF_API PluginIntf { class MSVP_PROF_API PluginIntf {
public:
virtual ~PluginIntf() {}
public:
/**
* @ingroup PluginIntf
* @name : Init
* @brief : API of user plugin, libmsporf call this API to send a Reporter to user plugin
* @par description :
* API of user plugin, libmsporf call this API to send a Reporter to user plugin.
* @param reporter [IN] const Reporter* the Reporter from libmsprof
* @retval PROFILING_SUCCESS 0 (success)
* @retval PROFILING_FAILED -1 (failed)
*
* @par depend:
* @li libmsprof
* @li prof_engine.h
* @since c60
* @see UnInit
*/
virtual int Init(const Reporter *reporter) = 0;
/**
* @ingroup PluginIntf
* @name : OnNewConfig
* @brief : API of user plugin, libmsprof call this API to send config info to user plugin \n
If the user plugin needn't config, no need to redefine this function
* @param config [IN] const ModuleJobConfig * the config from libmsprof
* @retval PROFILING_SUCCESS 0 (success)
* @retval PROFILING_FAILED -1 (failed)
*
* @par depend:
* @li libmsprof
* @li prof_engine.h
* @since c60
* @see Init | UnInit
*/
virtual int OnNewConfig(const ModuleJobConfig *config) { return 0; }
/**
* @ingroup PluginIntf
* @name : UnInit
* @brief : API of user plugin, libmsprof call this API to notify plugin stop to send data
* @retval PROFILING_SUCCESS 0 (success)
* @retval PROFILING_FAILED -1 (failed)
*
* @par depend:
* @li libmsprof
* @li prof_engine.h
* @since c60
* @see Init
*/
virtual int UnInit() = 0;
public:
virtual ~PluginIntf() {}
public:
/**
* @ingroup PluginIntf
* @name : Init
* @brief : API of user plugin, libmsporf call this API to send a Reporter to user plugin
* @par description :
* API of user plugin, libmsporf call this API to send a Reporter to user plugin.
* @param reporter [IN] const Reporter* the Reporter from libmsprof
* @retval PROFILING_SUCCESS 0 (success)
* @retval PROFILING_FAILED -1 (failed)
*
* @par depend:
* @li libmsprof
* @li prof_engine.h
* @since c60
* @see UnInit
*/
virtual int Init(const Reporter *reporter) = 0;
/**
* @ingroup PluginIntf
* @name : OnNewConfig
* @brief : API of user plugin, libmsprof call this API to send config info to user plugin \n
If the user plugin needn't config, no need to redefine this function
* @param config [IN] const ModuleJobConfig * the config from libmsprof
* @retval PROFILING_SUCCESS 0 (success)
* @retval PROFILING_FAILED -1 (failed)
*
* @par depend:
* @li libmsprof
* @li prof_engine.h
* @since c60
* @see Init | UnInit
*/
virtual int OnNewConfig(const ModuleJobConfig *config) = 0;
/**
* @ingroup PluginIntf
* @name : UnInit
* @brief : API of user plugin, libmsprof call this API to notify plugin stop to send data
* @retval PROFILING_SUCCESS 0 (success)
* @retval PROFILING_FAILED -1 (failed)
*
* @par depend:
* @li libmsprof
* @li prof_engine.h
* @since c60
* @see Init
*/
virtual int UnInit() = 0;
}; };


/** /**
@@ -113,39 +108,39 @@ class MSVP_PROF_API PluginIntf {
* @brief class EngineIntf * @brief class EngineIntf
*/ */
class MSVP_PROF_API EngineIntf { class MSVP_PROF_API EngineIntf {
public:
virtual ~EngineIntf() {}
public:
/**
* @ingroup EngineIntf
* @name : CreatePlugin
* @brief : API of user engine, libmsporf call this API to get a plugin
* @retval PluginIntf * The pointer of the new plugin
*
* @par depend:
* @li libmsprof
* @li prof_engine.h
* @since c60
* @see ReleasePlugin
*/
virtual PluginIntf *CreatePlugin() = 0;
/**
* @ingroup EngineIntf
* @name : ReleasePlugin
* @brief : API of user engine, libmsprof call this API to release a plugin
* @param plugin [IN] PluginIntf * the plugin to release
* @retval PROFILING_SUCCESS 0 (success)
* @retval PROFILING_FAILED -1 (failed)
*
* @par depend:
* @li libmsprof
* @li prof_engine.h
* @since c60
* @see CreatePlugin
*/
virtual int ReleasePlugin(PluginIntf *plugin) = 0;
public:
virtual ~EngineIntf() {}
public:
/**
* @ingroup EngineIntf
* @name : CreatePlugin
* @brief : API of user engine, libmsporf call this API to get a plugin
* @retval PluginIntf * The pointer of the new plugin
*
* @par depend:
* @li libmsprof
* @li prof_engine.h
* @since c60
* @see ReleasePlugin
*/
virtual PluginIntf *CreatePlugin() = 0;
/**
* @ingroup EngineIntf
* @name : ReleasePlugin
* @brief : API of user engine, libmsprof call this API to release a plugin
* @param plugin [IN] PluginIntf * the plugin to release
* @retval PROFILING_SUCCESS 0 (success)
* @retval PROFILING_FAILED -1 (failed)
*
* @par depend:
* @li libmsprof
* @li prof_engine.h
* @since c60
* @see CreatePlugin
*/
virtual int ReleasePlugin(PluginIntf *plugin) = 0;
}; };


/** /**


+ 6
- 15
third_party/fwkacllib/inc/toolchain/prof_reporter.h View File

@@ -1,17 +1,8 @@
/**
* Copyright 2019-2020 Huawei Technologies Co., Ltd
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
/*
* Copyright (c) Huawei Technologies Co., Ltd. 2019-2021. All rights reserved.
* Description: handle perf data
* Author: xp
* Create: 2019-10-13
*/ */


#ifndef MSPROF_ENGINE_PROF_REPORTER_H #ifndef MSPROF_ENGINE_PROF_REPORTER_H
@@ -81,4 +72,4 @@ public:
} // namespace Engine } // namespace Engine
} // namespace Msprof } // namespace Msprof


#endif // MSPROF_ENGINE_PROF_REPORTER_H_
#endif // MSPROF_ENGINE_PROF_REPORTER_H

+ 2
- 0
third_party/fwkacllib/inc/toolchain/slog.h View File

@@ -207,6 +207,8 @@ enum {
HSS, /**< helper */ HSS, /**< helper */
FFTS, FFTS,
OP, OP,
UDF,
HICAID,
INVLID_MOUDLE_ID INVLID_MOUDLE_ID
}; };




Loading…
Cancel
Save