|
- /**
- * 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.
- */
-
- #ifndef DNN_BASE_HPP__
- #define DNN_BASE_HPP__
-
- #include "cce/cce_def.hpp"
-
- namespace cce {
-
- /**
- * @ingroup dnn
- * @brief tiling para
- */
- typedef struct tagCcWeightCompressInfo {
- uint32_t blockRow; /**< block row */
- uint32_t blockCol; /**< block col */
- uint32_t fractalK; /**< fractal K */
- uint32_t fractalN; /**< fractal N */
- uint32_t lastFractalK; /**< K of last fractal */
- uint32_t lastFractalN; /**< N of last fractal */
- uint32_t cubeSize; /**< cube's length */
- uint32_t loadDir; /**< data load directtiono 0??col load 1:row load*/
- } ccWeightCompressInfo_t;
-
- /**
- * @ingroup dnn
- * @brief compress table info
- */
- typedef struct tagCcWeightCompressTab {
- uint16_t dataLen : 14; /**< 0: data length in 128 Byte */
- uint16_t storeFlag : 1; /**< 0: compressed addr = original addr, 1: compressed addr = original addr + 256 Byte */
- uint16_t dataType : 1; /**< 0: original data, 1: compressed data */
- } ccWeightCompressTab_t;
-
- /**
- * @conv quantize dnn vector mode/scalar mode
- */
- typedef enum {
- QUANT_ALGO_NON_OFFSET = 0,
- QUANT_ALGO_HALF_OFFSET = 1,
- QUANT_ALGO_ALL_OFFSET = 2,
- QUANT_ALGO_BUTT
- } ccQuantizeAlgo_t;
- typedef enum { SCALE_VEC = 0, SCALE_SCALAR = 1, SCALE_TYPE_BUTT } ccConvolutionScaleType_t, ccScaleType_t;
-
- /**
- * @conv quantize dnn sqrt mode/non sqrt mode
- */
- typedef enum {
- SCALE_NORMAL = 0,
- SCALE_SQRT = 1,
- SCALE_VALUE_MODE_BUTT
- } ccConvolutionScaleValueMode_t,
- ccScaleValueMode_t;
-
- typedef struct {
- float scaleW;
- float scaleD;
- float scaleDNext;
- uint8_t offsetW;
- uint8_t offsetD;
- uint8_t offsetDNext;
- } ccQuantAllOffsetPara_t;
-
- typedef struct tagCcVecQuantizePara {
- float scale;
- uint16_t offset;
- uint16_t rrv; // 32byte align
- } ccVecQuantizePara_t;
-
- /**
- * @ingroup dnn
- * @brief format of tensor
- */
- typedef enum tagCcTensorFormat {
- CC_TENSOR_NCHW = 0, /**< NCHW */
- CC_TENSOR_NHWC, /**< NHWC */
- CC_TENSOR_ND, /**< Nd Tensor */
- CC_TENSOR_NC1HWC0, /**< NC1HWC0 */
- CC_TENSOR_FRACTAL_Z, /**< FRACTAL_Z */
- CC_TENSOR_NC1C0HWPAD,
- CC_TENSOR_NHWC1C0,
- CC_TENSOR_FSR_NCHW,
- CC_TENSOR_FRACTAL_DECONV,
- CC_TENSOR_C1HWNC0,
- CC_TENSOR_FRACTAL_DECONV_TRANSPOSE,
- CC_TENSOR_FRACTAL_DECONV_SP_STRIDE_TRANS,
- CC_TENSOR_NC1HWC0_C04, /**< NC1HWC0, C0 =4*/
- CC_TENSOR_FRACTAL_Z_C04, /**< FRACZ?????C0 =4 */
- CC_TENSOR_CHWN,
- CC_TENSOR_FRACTAL_DECONV_SP_STRIDE8_TRANS,
- CC_TENSOR_HWCN,
- CC_TENSOR_NC1KHKWHWC0, /** < KH,KW kernel h& kernel w maxpooling max output format*/
- CC_TENSOR_HASHTABLE_LOOKUP_LOOKUPS = 20,
- CC_TENSOR_HASHTABLE_LOOKUP_KEYS,
- CC_TENSOR_HASHTABLE_LOOKUP_VALUE,
- CC_TENSOR_HASHTABLE_LOOKUP_OUTPUT,
- CC_TENSOR_HASHTABLE_LOOKUP_HITS = 24,
- CC_TENSOR_C1HWNCoC0, /**< C1,H,W,N,Co,C0 6D diagonal format*/
- CC_TENSOR_RESERVED
- } ccTensorFormat_t;
-
- /**
- * @ingroup dnn
- * @brief format of compare
- */
- typedef enum tagCcCompareType {
- CC_COMPARE_TYPE_LESS = 0,
- CC_COMPARE_TYPE_LESS_EQUAL,
- CC_COMPARE_TYPE_NOT_EQUAL,
- CC_COMPARE_TYPE_EQUAL,
- CC_COMPARE_TYPE_GREATER,
- CC_COMPARE_TYPE_GREATER_EQUAL,
- CC_COMPARE_TYPE_RESERVED
- } ccCompareType_t;
-
- /**
- * @ingroup dnn
- * @brief propagate Nan
- */
- typedef enum tagCcNanPropagation {
- CC_NAN_NOT_PROPAGATE = 0, /**< Nan numbers are not propagated */
- CC_NAN_PROPAGATE, /**< Nan numbers are propagated */
- CC_NAN_PROPAGATE_RESERVED
- } ccNanPropagation_t;
-
- /**
- * @ingroup dnn
- * @brief algorithm of convolution forward
- */
- typedef enum tagCcConvolutionFwdAlgo {
- CC_CONVOLUTION_FWD_ALGO_GEMM = 0, /**< matrix gemm algo */
- CC_CONVOLUTION_FWD_ALGO_WINOGRAD, /**< Winograd Transform algo */
- CC_CONVOLUTION_FWD_ALGO_GEMM_ACCU_FLOAT32,
- CC_CONVOLUTION_FWD_ALGO_RESERVED
- } ccConvolutionFwdAlgo_t;
-
- #define ccCorrelationFwdAlgo_t ccConvolutionFwdAlgo_t
-
- typedef enum tagCcConvolutionBwdAlgo {
- CC_CONVOLUTION_BWD_ALGO_GEMM = 0, /**< matrix gemm algo */
- CC_CONVOLUTION_BWD_ALGO_WINOGRAD, /**< Winograd Transform algo */
- CC_CONVOLUTION_BWD_ALGO_GEMM_CO2IMG,
- CC_CONVOLUTION_BWD_FILTER_GEM_ALGO,
- CC_CONVOLUTION_BWD_ALGO_RESERVED
- } ccConvolutionBwdAlgo_t;
-
- #define ccCorrelationBwdAlgo_t ccConvolutionBwdAlgo_t
-
- /**
- * @ingroup dnn
- * @brief algorithm of FullConnect forward
- */
- typedef enum tagCcFullConnectFwdAlgo {
- CC_FULLCONNECT_FWD_ALGO_HALF = 0,
- CC_FULLCONNECT_FWD_ALGO_FLOAT32
- } ccFullConnectFwdAlgo_t;
-
- /**
- * @ingroup dnn
- * @brief mode of convolution
- */
- typedef enum tagCcConvolutionMode {
- CC_CONV_CONVOLUTION = 0, /**< math convolution */
- CC_CONV_CROSS_CORRELATION, /**< cross-correlation convolution */
- CC_CONV_DECONVOLUTION, /**< deconvolution, also named transposed convolution*/
- CC_CONV_MODE_DEPTHWISE, /**< depthwise convolution*/
- CC_CONV_MODE_RESERVED
- } ccConvolutionMode_t;
-
- #define ccCorrelationMode_t ccConvolutionMode_t
-
- /**
- * @ingroup dnn
- * @brief mode of pooling
- */
- typedef enum tagCcPoolingMode {
- CC_POOLING_MAX = 0, /**< max pooling */
- CC_POOLING_AVG, /**< average pooling */
- CC_POOLING_L2, /**< L2 pooling */
- CC_POOLING_AVG_FP32, /**< average pooling for training */
- CC_POOLING_RESERVED
- } ccPoolingMode_t;
-
- /**
- * @ingroup dnn
- * @brief L0C accumulate algo of AvgPooling
- */
- typedef enum tagCcPooingFwdAlgo {
- CC_POOLING_FWD_ALGO_HALF = 0, // accumulate in L0c with FP16
- CC_POOLING_FWD_ALGO_FLOAT32 // accumulate in L0c with FP32
- } ccPooingFwdAlgo_t;
-
- /**
- * @ingroup dnn
- * @brief mode of momentum
- */
- typedef enum tagMomentumAlgo {
- CC_MOMENTUM_UPDATE_FP32 = 0, /**< FP32 out */
- CC_MOMENTUM_UPDATE_FP32_FP16, /**< FP32 and FP16 out */
- CC_MOMENTUM_UPDATE_FP32_NESTEROV,
- CC_MOMENTUM_UPDATE_FP32_FP16_NESTEROV,
- CC_MOMENTUM_RESERVED
- } ccMomentumAlgo_t;
-
- /**
- * @ingroup dnn
- * @brief mode of partitionStrategy
- *attention: if need to motify this struct,please must motify dPartitionStrategy_t
- */
- typedef enum tagCcPartitionStrategy {
- CC_PARTITION_STRATEGY_MOD = 0, /**< mod */
- CC_PARTITION_STRATEGY_DIV, /**< div */
- CC_PARTITION_STRATEGY_RESERVED
- } ccPartitionStrategy_t;
-
- /**
- * @ingroup dnn
- * @brief mode of assignOp
- */
- typedef enum tagCcAssignOpMode {
- CC_ASSIGN_ADD = 0, /**< assign add */
- CC_ASSIGN_SUB, /**< assign sub */
- CC_ASSIGN_RESERVED
- } ccAssignOpMode_t;
-
- /**
- * @ingroup dnn
- * @brief mode of arcSinCos
- */
- typedef enum tagCcArcSinCosMode {
- CC_ARCUS_SIN = 0, /**< asin */
- CC_ARCUS_COS, /**< acos */
- CC_ARCUS_RESERVED
- } ccArcSinCosMode_t;
-
- /**
- * @ingroup dnn
- * @brief mode of padding
- */
- typedef enum tagCcPaddingMode {
- CC_PADDING_CEIL = 0,
- CC_PADDING_DIRECTASSIGN,
- CC_PADDING_VALID,
- CC_PADDING_SAME, /**< Padding values of 0 are always used */
- CC_PADDING_CEIL_NEW, /*new ceil,use for backward compatibility*/
- CC_PADDING_VALID_NEW, /*new valid,use for backward compatibility*/
- CC_PADDING_SAME_NEW, /*new same,use for backward compatibility*/
- CC_PADDING_RESERVED
- } ccPaddingMode_t;
-
- /**
- * @ingroup dnn
- * @brief mode of activation
- */
- typedef enum tagCcActivationMode {
- CC_ACTIVATION_SIGMOID = 0, /**< sigmoid */
- CC_ACTIVATION_RELU, /**< ReLU */
- CC_ACTIVATION_TANH, /**< tanh */
- CC_ACTIVATION_CLIPPED_RELU, /**< clipped ReLU */
- CC_ACTIVATION_ELU, /**< ELU */
- CC_ACTIVATION_LEAKY_RELU,
- CC_ACTIVATION_ABS, /**< Abs */
- CC_ACTIVATION_RELU1, /**< relu1 */
- CC_ACTIVATION_SOFTSIGN, /**< softsign */
- CC_ACTIVATION_SOFTPLUS, /**< softplus */
- CC_ACTIVATION_HARDSIGMOID, /**< hardsigmoid*/
- CC_ACTIVATION_THRESHOLD_RELU, /**< threshold */
- CC_ACTIVATION_SELU, /**< selu */
- CC_ACTIVATION_LINEAR, /**< linear */
- CC_ACTIVATION_RELU6, /**< relu6 */
- CC_ACTIVATION_RESERVED
- } ccActivationMode_t;
-
- /**
- * @ingroup dnn
- * @brief mode of logical op mode
- */
- typedef enum tagCcLogicalOpMode {
- CC_LOGICAL_OP_NOT = 0, /**logical not**/
- CC_LOGICAL_OP_AND, /**logical and**/
- CC_LOGICAL_OP_OR, /**logical or**/
- CC_LOGICAL_OP_XOR, /**logical xor**/
- CC_LOGICAL_OP_RESERVED
- } ccLogicalOpMode_t;
-
- /**
- * @ingroup dnn
- * @brief mode of batchnorm
- */
- typedef enum tagCcBatchNormMode {
- CC_BATCHNORM_PER_ACTIVATION = 0, /**< bnScale, bnBias tensor dims are 1xCxHxW */
- CC_BATCHNORM_SPATIAL, /**< bnScale, bnBias tensor dims are 1xCx1x1 */
- CC_BATCHNORM_RESERVED
- } ccBatchNormMode_t;
-
- /**
- * @ingroup dnn
- * @brief mode of instancenorm
- */
- typedef enum tagCcInstanceNormMode {
- CC_INSTANCENORM_PER_ACTIVATION = 0, /**< inScale, inBias tensor dims are NxCxHxW */
- CC_INSTANCENORM_SPATIAL, /**< inScale, inBias tensor dims are NxCx1x1 */
- CC_INSTANCENORM_RESERVED
- } ccInstanceNormMode_t;
- /**
- * @ingroup dnn
- * @brief mode of layernorm
- */
- typedef enum tagCcLayerNormMode {
- CC_LAYERNORM_PER_ACTIVATION = 0, /**< lnScale, lnBias tensor dims are 1xCxHxW */
- CC_LAYERNORM_SPATIAL, /**< lnScale, lnBias tensor dims are Nx1x1x1 */
- CC_LAYERNORM_RESERVED
- } ccLayerNormMode_t;
-
- /**
- * @ingroup dnn
- * @brief softmax algorithm
- */
- typedef enum tagCcSoftmaxAlgo {
- CC_SOFTMAX_FAST = 0, /**< straightforward implementation */
- CC_SOFTMAX_ACCURATE, /**< subtract max from every point to avoid overflow */
- CC_SOFTMAX_LOG, /**< perform the Log softmax operation to avoid overflow */
- CC_SOFTMAX_ACCURATE_FP32, /**< accurate mode for fp32 */
- CC_SOFTMAX_RESERVED
- } ccSoftmaxAlgo_t;
-
- /**
- * @ingroup dnn
- * @brief softmax mode
- */
- typedef enum tagCcSoftmaxMode {
- CC_SOFTMAX_MODE_INSTANCE = 0, /**< compute the softmax over all C, H, W for each N */
- CC_SOFTMAX_MODE_CHANNEL, /**< compute the softmax over all C for each H, W, N */
- CC_SOFTMAX_MODE_HEIGHT, /**< compute the softmax over all H for each N, C, W */
- CC_SOFTMAX_MODE_WIDTH, /**< compute the softmax over all W for each N, C, H */
- CC_SOFTMAX_MODE_CLASS, /**< special mode: compute the softmax over all class for each N, H ,W */
- CC_SOFTMAX_MODE_RESERVED
- } ccSoftmaxMode_t;
-
- /**
- * @ingroup dnn
- * @brief cross entropy mode
- */
- typedef enum tagCcCrossEntropyMode {
- CC_CROSS_ENTROPY_SPARSE_WITHOUT_REDUCTION = 0, /**< compute the sparse cross entropy without fused reduce mean */
- CC_CROSS_ENTROPY_SPARSE_WITH_REDUCTION, /**< compute the sparse cross entropy with fused reduce mean*/
- CC_CROSS_ENTROPY_WITHOUT_REDUCTION, /**< compute the cross entropy without fused reduce mean */
- CC_CROSS_ENTROPY_WITH_REDUCTION, /**< compute the cross entropy with fused reduce mean */
- CC_CROSS_ENTROPY_RESERVED
- } ccCrossEntropyMode_t;
-
- /**
- * @ingroup dnn
- * @brief concat mode
- */
- typedef enum tagCcConcatMode {
- CC_CONCAT_BY_BATCH = 0, /**< concat by batch */
- CC_CONCAT_BY_FEATURE, /**< concat by feature */
- CC_CONCAT_BY_HEIGHT, /**< concat by height */
- CC_CONCAT_BY_WIDTH, /**< concat by width */
- CC_CONCAT_BY_FLATTEN,
- CC_CONCAT_RESERVED
- } ccConcatMode_t;
-
- /**
- * @ingroup dnn
- * @brief eltwise mode
- */
- typedef enum tagCcEltwiseMode {
- CC_ELTWISE_PROD = 0, /**< prod */
- CC_ELTWISE_SUM, /**< sum */
- CC_ELTWISE_MAX, /**< max */
- CC_ELTWISE_RESERVED
- } ccEltwiseMode_t;
-
- /**
- * @ingroup dnn
- * @brief depthwise filter type
- */
- typedef enum tagCcDepthwiseFilterType {
- CC_Depthwise_FILTER_DEPTHWISE = 0, /**< depthwise filter */
- CC_Depthwise_FILTER_POINTWISE, /**< pointwise filter */
- CC_Depthwise_FILTER_RESERVED
- } ccDepthwiseFilterType_t;
-
- /**
- * @ingroup dnn
- * @brief sampler type
- */
- typedef enum tagCcSamplerType {
- CC_SAMPLER_BILINEAR = 0, /**< bilinear sampler algo */
- CC_SAMPLER_RESERVED
- } ccSamplerType_t;
-
- /**
- * @ingroup dnn
- * @brief NMS type
- */
- typedef enum tagCcNmsType {
- CC_NMS_IOU = 0, /**< nms operation type, only IOU for now */
- CC_NMS_RESERVED
- } ccNmsType_t;
-
- /**
- * @ingroup dnn
- * @brief Box Code type
- */
- typedef enum tagCcBoxCodeType {
- CC_BOX_CORNER = 1, /**< Box CodeType in detection nets */
- CC_BOX_CENTER_SIZE,
- CC_BOX_CORNER_SIZE,
- CC_BOX_RESERVED
- } ccBoxCodeType_t;
-
- /**
- * @ingroup dnn
- * @brief split mode
- */
- typedef enum tagSplitMode {
- CC_SPLIT_MODE_SLICE = 0, /**< spilt data of one dim*/
- CC_SPLIT_MODE_DUPLICATE, /**< copy data of one dim*/
- CC_SPLIT_MODE_RESERVED
- } ccSplitMode_t;
-
- /**
- * @ingroup dnn
- * @brief mode of LRN
- */
- typedef enum tagCcLRNMode {
- CC_LRN_CROSS_CHANNELS = 0, /**< CROSS_CHANNELS */
- CC_LRN_WITHIN_CHANNELS, /**< WITHIN_CHANNELS */
- CC_LRN_RESERVED
- } ccLRNMode_t;
-
- /**
- * @ingroup dnn
- * @brief format of AIPP input
- */
- typedef enum tagCcAippInputFormat {
- CC_AIPP_INPUT_YUV420SP_U8 = 1,
- /**< YUV420SP */ // mini,lite,tiny
- CC_AIPP_INPUT_XRGB8888_U8,
- /**< XRGB8888 */ // mini,lite,tiny
- CC_AIPP_INPUT_NC1HWC0DI_FP16,
- /**< NC1HWC0DI_FP16 */ // mini
- CC_AIPP_INPUT_NC1HWC0DI_S8,
- /**< NC1HWC0DI_S8 */ // mini
- CC_AIPP_INPUT_RGB888_U8,
- /**< RGB888 */ // mini,tiny
- CC_AIPP_INPUT_ARGB8888_U8,
- /**< ARGB8888 */ // lite
- CC_AIPP_INPUT_YUYV_U8,
- /**< YUYV */ // lite
- CC_AIPP_INPUT_YUV422SP_U8,
- /**< YUV422SP */ // lite
- CC_AIPP_INPUT_AYUV444_U8,
- /**< AYUV444 */ // lite
- CC_AIPP_INPUT_YUV400_U8,
- /**< YUV400 */ // mini,lite,tiny
- CC_AIPP_INPUT_RESERVED
- } ccAippInputFormat_t;
-
- /**
- * @ingroup dnn
- * @brief mode of AIPP padding
- */
- typedef enum tagCcAippPaddingMode {
- CC_AIPP_PAD_DEFAULT_VALUE = 1, /**< CONFIG_VALUE */
- CC_AIPP_PAD_LINE_COPY, /**< ROW_COL_COPY */
- CC_AIPP_PAD_BLOCK_COPY, /**< BLOCK_COPY */
- CC_AIPP_PAD_MIRROR_COPY, /**< MIRROR_COPY */
- CC_AIPP_PAD_RESERVED
- } ccAippPaddingMode_t;
-
- /**
- * @ingroup dnn
- * @brief format of cmp type
- */
- typedef enum tagCcccCMPType {
- CC_CMP_EQ = 0,
- CC_CMP_NE,
- CC_CMP_LT,
- CC_CMP_GT,
- CC_CMP_GE,
- CC_CMP_LE,
- CC_CMP_TYPE_RESERVED
- } ccCMPType_t;
-
- /**
- * @ingroup dnn
- * @brief mode of logical op mode
- */
- typedef enum tagCcResultType {
- CC_Result_AND = 0, /**logical and**/
- CC_Result_OR, /**logical or**/
- CC_Result_RESERVED
- } ccResultType_t;
-
- /**
- * @ingroup dnn
- * @brief method of crop_and_resize operator
- */
- typedef enum tagCcResizeMethod {
- CC_RESIZE_METHOD_BILINEAR = 0, /** BILINEAR */
- CC_RESIZE_METHOD_NEAREST, /** NEAREST */
- CC_RESIZE_METHOD_RESERVED
- } ccResizeMethod_t;
-
- /**
- * @ingroup dnn
- * @brief mode of calculating new size of the images
- */
- typedef enum tagCcResizeOutputDimMode {
- RESIZE_OUTPUT_DIM_BY_ZOOM_FACTOR = 0, /**< Output dimension specified by zoom factor*/
- RESIZE_OUTPUT_DIM_BY_SHRINK_FACTOR, /**< specified by shrink factor */
- RESIZE_OUTPUT_DIM_EXPLICIT, /**< specified explicitly */
- RESIZE_OUTPUT_DIM_RESERVED
- } ccResizeOutputDimMode_t;
-
- typedef enum tagCcYoloVersion {
- CC_YOLO_V2 = 1, /**< YOLOv2 */
- CC_YOLO_V3, /**< YOLOv3 */
- CC_YOLO_RESERVED
- } ccYoloVersion_t;
-
- typedef enum tagCcAttentionAlgo {
- // bahdanau-attention, for detail:https://pravn.wordpress.com/2017/11/14/bahdanau-attention/
- CC_ATTENTION_ALGO_BAHDANAU = 0,
- CC_ATTENTION_ALGO_NORMAL_BAHDANAU = 1,
- CC_ATTENTION_ALGO_LUONG = 2,
- CC_ATTENTION_ALGO_SCALED_LUONG = 3,
- CC_ATTENTION_ALGO_RESERVED
- } AttentionAlgo_t;
- /**
- * @ingroup dnn
- * @brief desc of data layout
- */
- typedef enum ccEmAttnDecoderDataLayout {
- CC_ATTN_5D_TX1BX, //[max_time,Xt1,1,batch_size,Xt0]
- CC_ATTN_5D_BTX1X, //[batch_size*max_time,Xt1,1,1,Xt0]
- CC_ATTN_DL_RESERVED
- } ccEmAttnDecoderDataLayout_t;
-
- /**
- * @ingroup dnn
- * @brief operation of Reduce
- */
- typedef enum {
- CC_REDUCE_OP_SUM = 0, /**< sum */
- CC_REDUCE_OP_MEAN, /**< mean */
- CC_REDUCE_OP_PROD, /**< product */
- CC_REDUCE_OP_ALL, /**< logical and */
- CC_REDUCE_OP_ABS_SUM, /**< absolute sum */
- CC_REDUCE_OP_SQUARE_SUM, /**< square sum */
- CC_REDUCE_OP_MAX, /**< max */
- CC_REDUCE_OP_MIN, /**< min */
- CC_REDUCE_OP_LOGSUMEXP, /**< logsumexp */
- CC_REDUCE_OP_INVALID
- } ccReduceOpType_t;
-
- /**
- * @ingroup dnn
- * @brief desc of tpye layout
- */
- typedef enum {
- LSH_PROJECTION_TYPE_UNKNOWN = 0,
- LSH_PROJECTION_TYPE_SPARSE = 1,
- LSH_PROJECTION_TYPE_DENSE = 2
- } LSHProjectionType;
-
- /**
- * @ingroup dnn
- * @brief activation para
- */
- typedef struct tagCcActivationRelu {
- double reluCoef; /* reluCoef for clipped RELU */
- ccNanPropagation_t reluNanOpt;
- } ccActivationRelu_t;
- typedef union tagCcActivationPara {
- ccActivationRelu_t actionRelu; /* relu Coef and NanOpt for clipped RELU */
- double eluAlpha; /* eluAlpha for ELU */
- float leakyReluNegativeSlope;
- } ccActivationPara_u;
-
- /**
- * @ingroup dnn
- * @bref mode of square
- */
- typedef enum tagCcSquareMode {
- CC_SQUARE_2 = 0, /* square */
- } ccSquareMode_t;
-
- /**
- * @ingroup dnn
- * @brief append operation type
- */
- typedef enum tagCcOpType {
- CC_OP_TYPE_NO_RELU = 0,
- CC_OP_TYPE_RELU = 1,
- CC_OP_TYPE_RELU6 = 2,
- CC_OP_TYPE_INVALID
- } ccOpType_t;
-
- /**
- * @ingroup dnn
- * @brief struct define of fill operator type.
- */
- typedef enum tagCcFillOpType {
- CC_CONSTANT = 0,
- CC_RANGE,
- CC_LENGTH_RANGE,
- CC_GIVEN_TENSOR,
- CC_DIAGONAL,
- CC_UNIFORM,
- CC_UNIFORM_INT,
- CC_UNIQUE_UNIFORM,
- CC_GAUSSIAN,
- CC_XAVIER,
- CC_MSRA,
- CC_FILL_OP_TYPE_RESERVED
- } ccFillOpType_t;
-
- /**
- * @ingroup dnn
- * @brief loss function reduction mode
- */
- typedef enum tagCcLossReduction {
- CC_LOSS_REDUCTION_NONE = 0,
- CC_LOSS_REDUCTION_SUM,
- CC_LOSS_REDUCTION_RESERVED
- } ccLossReduction_t;
-
- /**
- * @ingroup dnn
- * @brief max size of ccIntArray
- */
- #define CC_INT_ARRAY_MAX_SIZE (8)
-
- /**
- * @ingroup dnn
- * @brief struct define of int array less than 8.
- */
- typedef struct tagIntArray {
- uint32_t size;
- int32_t value[CC_INT_ARRAY_MAX_SIZE];
- } ccIntArray_t;
-
- typedef enum tagCcPadMode {
- CC_PAD_CONSTANT = 0, /*CONSTANT */
- CC_PAD_REFLECT, /*REFLECT */
- CC_PAD_SYMMETRIC, /*SYMMETRIC*/
- CC_PAD_EDGE, /*EDGE */
- CC_PAD_MODE_RESERVED
- } ccPadMode_t;
-
- /*
- * @ingroup dnn
- * @brief pad operation of extractImagePatches
- */
- typedef enum {
- CC_EXTRACT_IMAGE_PATCHES_PAD_VALID = 1,
- CC_EXTRACT_IMAGE_PATCHES_PAD_SAME,
- CC_EXTRACT_IMAGE_PATCHES_PAD_RESERVED
- } ccExtractImagePatchesPadType_t;
-
- /**
- * @ingroup dnn
- * @brief image dimensions of aipp input
- */
- #define CC_AIPP_IMG_DIM (2)
-
- /**
- * @ingroup dnn
- * @brief image channel number of aipp input
- */
- #define CC_AIPP_IMG_CHN_NUM (4)
-
- /**
- * @ingroup dnn
- * @brief element number of aipp color space convertion matrix
- */
- #define CC_AIPP_CSC_MATRIX_DIM (9)
-
- /**
- * @ingroup dnn
- * @brief element number of aipp color space convertion bias
- */
- #define CC_AIPP_CSC_BIAS_DIM (3)
-
- /**
- * @ingroup dnn
- * @brief struct define of AIPP operator
- */
-
- typedef struct tagCcAipp {
- ccAippInputFormat_t inputFormat;
- ccDataType_t outputFormat;
- int32_t srcImageSize[CC_AIPP_IMG_DIM];
- int32_t loadStartPos[CC_AIPP_IMG_DIM];
- int32_t loadSize[CC_AIPP_IMG_DIM];
- int32_t scfInputSize[CC_AIPP_IMG_DIM];
- int32_t scfOutputSize[CC_AIPP_IMG_DIM];
- int32_t cscMatrix[CC_AIPP_CSC_MATRIX_DIM];
- int32_t cscOutputBias[CC_AIPP_CSC_BIAS_DIM];
- int32_t cscInputBias[CC_AIPP_CSC_BIAS_DIM];
- int32_t dtcPixelMean[CC_AIPP_IMG_CHN_NUM];
- float dtcPixelMin[CC_AIPP_IMG_CHN_NUM];
- float dtcPixelVarReci[CC_AIPP_IMG_CHN_NUM];
- ccAippPaddingMode_t paddingMode;
- int32_t paddingSize[CC_AIPP_IMG_DIM * 2]; // up,down,left,right
- float cpaddingVaule;
- bool cscSwitch; // 0:off,1:on
- bool scfSwitch; // 0:off,1:on
- bool rbuvSwapSwitch;
- bool axSwapSwitch;
- bool singleLineMode;
- bool cscConfigFlag;
- bool dtcConfigFlag;
- bool padConfigFlag;
- bool commConfigFlag;
- bool aippEn;
- bool dyncAippFlag;
- const void *dyncParaAddr;
- bool rotationFlag;
- } ccConvolutionAipp_t;
-
-
- typedef struct tagCcQuantizePara {
- ccConvolutionScaleValueMode_t scaleValueMode;
- uint16_t *scale;
- uint16_t *offsetq;
- int32_t *offsetw;
- uint8_t *allOffsetw;
- uint8_t *offsetPad;
- } CcQuantizePara_t;
-
- typedef struct tagCcQuantize {
- ccQuantizeAlgo_t quantAlgo;
-
- ccConvolutionScaleType_t scaleWType; // show scaleRq,scaleDq type
-
- CcQuantizePara_t scaleQ;
-
- CcQuantizePara_t scaleRq;
-
- CcQuantizePara_t scaleDq;
-
- // need relu
- bool reluFlag;
-
- // relu6
- uint16_t *scaleRelu6;
- bool bConcat;
- } ccQuantize_t;
-
- typedef struct tagCcPad *ccPadDescriptor_t;
-
- /**
- * @ingroup dnn
- * @brief operation of Cum
- */
- typedef enum {
- CC_CUM_OP_SUM = 0, /**< sum */
- CC_CUM_OP_PROD, /**< product */
- CC_CUM_OP_INVALID
- } CumOpType;
-
- /**
- * @ingroup dnn
- * @brief desciptor of tensor
- */
- typedef struct tagCcTensor *ccTensorDescriptor_t;
-
- /**
- * @ingroup dnn
- * @brief desciptor of filter tensor
- */
- typedef struct tagCcFilter *ccFilterDescriptor_t;
-
- /**
- * @ingroup dnn
- * @brief desciptor of convolution operator
- */
- typedef struct tagCcConvolution *ccConvolutionDescriptor_t;
-
- /**
- * @ingroup dnn
- * @brief desciptor of correlation operator
- */
- typedef struct tagCcConvolution *ccCorrelationDescriptor_t;
- typedef struct tagCcFullConnection_t *ccFullConnectionDescriptor_t;
-
- /**
- * @ingroup dnn
- * @brief desciptor of pooling operator
- */
- typedef struct tagCcPooling *ccPoolingDescriptor_t;
-
- /**
- * @ingroup dnn
- * @brief desciptor of activation operator
- */
- typedef struct tagCcActivation *ccActivationDescriptor_t;
-
- /**
- * @ingroup dnn
- * @brief desciptor of batchToSpace operator
- */
- typedef struct tagCcBatchToSpace *ccBatchToSpaceDescriptor_t;
-
- /**
- * @ingroup dnn
- * @brief desciptor of spaceToBatch operator
- */
- typedef struct tagCcSpaceToBatch *ccSpaceToBatchDescriptor_t;
-
- /**
- * @ingroup dnn
- * @brief desciptor of svdf operator
- */
- typedef struct tagCcSvdf *ccSvdfDescriptor_t;
-
- /**
- * @ingroup dnn
- * @brief desciptor of crop operator
- */
- typedef struct tagCcCrop *ccCropDescriptor_t;
-
- /**
- * @ingroup dnn
- * @brief desciptor of interp operator
- */
- typedef struct tagCcInterp *ccInterpDescriptor_t;
-
- /**
- * @ingroup dnn
- * @brief desciptor of GetRegionBox operator
- */
- typedef struct tagCcGetRegionBox *ccGetRegionBoxDescriptor_t;
-
- /**
- * @ingroup dnn
- * @brief desciptor of CorrectBoxes operator
- */
- typedef struct tagCorrectBoxes *ccCorrectBoxesDescriptor_t;
-
- /**
- * @ingroup dnn
- * @brief desciptor of ClsProb operator
- */
- typedef struct tagClsProb *ccClsProbDescriptor_t;
-
- /**
- * @ingroup dnn
- * @brief desciptor of NMS operator
- */
- typedef struct tagCcNms *ccNmsDescriptor_t;
-
- /**
- * @ingroup dnn
- * @brief descriptor of MultiClassNms operator
- */
- typedef struct tagCcMultiClassNms *ccMultiClassNmsDescriptor_t;
-
- /**
- * @ingroup dnn
- * @brief desciptor of MscnnBoxOutput operator
- */
- typedef struct tagCcMscnnBoxOutput *ccMscnnBoxOutputDescriptor_t;
-
- /**
- * @ingroup dnn
- * @brief define of SoftmaxTree
- */
- typedef void *ccSoftmaxTree_t;
-
- /**
- * @ingroup dnn
- * @brief descriptor of exp operator
- */
- typedef struct tagCcExp *ccExpDescriptor_t;
-
- /**
- * @ingroup dnn
- * @brief descriptor of log operator
- */
- typedef struct tagCcLog *ccLogDescriptor_t;
-
- /**
- * @ingroup dnn
- * @brief descriptor of pow operator
- */
- typedef struct tagCcPow *ccPowDescriptor_t;
-
- /**
- * @ingroup dnn
- * @brief descriptor of padv2 operator
- */
- typedef struct tagCcPadV2 *ccPadV2Descriptor_t;
-
- /**
- * @ingroup dnn
- * @brief desciptor of ShapeClassify operator
- */
- typedef struct tagCcShapeClassify *ccShapeClassifyDescriptor_t;
-
- /**
- * @ingroup dnn
- * @brief descriptor of DetectionFull3DOutput operator
- */
- typedef struct tagCcDetectionFull3DOutput *ccDetectionFull3DOutputDescriptor_t;
-
- /**
- * @ingroup dnn
- * @brief descriptor of Quantize operator
- */
- typedef struct tagCcQuantize *ccQuantizeDescriptor_t;
-
- /**
- * @ingroup dnn
- * @brief descriptor of StridedSlice operator
- */
- typedef struct tagCcStridedSlice *ccStridedSliceDescriptor_t;
-
- /**
- * @ingroup dnn
- * @brief descriptor of StridedSliceAttrs operator
- */
- typedef struct tagCcStridedSliceAttrs *ccStridedSliceAttrsDescriptor_t;
-
- /**
- * @ingroup dnn
- * @brief descriptor of ResizeBilinear operator
- */
- typedef struct tagCcResizeBilinear *ccResizeBilinearDescriptor_t;
-
- typedef struct tagCcEltwise *ccEltwiseDescriptor_t;
-
- typedef struct tagCcBatchNorm *ccBatchNormDescriptor_t;
-
- /**
- * @ingroup dnn
- * @brief descriptor of Square operator
- */
- typedef struct tagCcSquare *ccSquareDescriptor_t;
-
- /**
- * @ingroup dnn
- * @brief descriptor of NonMaxSuppression operator
- */
- typedef struct tagNonMaxSuppression *ccNonMaxSuppressionDescriptor_t;
-
- /**
- * @ingroup dnn
- * @brief descriptor of NonMaxSuppression operator
- */
- typedef struct tagUpsamplePara *ccUpsampleParaDescriptor_t;
-
- /**
- * @ingroup dnn
- * @brief descriptor of ResizeNearestNeighbor operator
- */
- typedef struct tagCcResizeNearestNeighbor *ccResizeNearestNeighborDescriptor_t;
-
- /**
- * @ingroup dnn
- * @brief descriptor of Fill operator
- */
- typedef struct tagCcFillParam *ccFillParamDescriptor_t;
-
- /**
- * @ingroup dnn
- * @brief descriptor of Argmaxmin operator
- */
- typedef struct tagCcArgmaxmin *ccArgmaxminDescriptor_t;
-
- }; // namespace cce
-
- #endif // DNN_BASE_HPP__
|