昇腾社区首页
中文
注册

ElewiseOperation

功能

常用的逐元素数值计算集合。

约束

  • ELEWISE_ADD、ELEWISE_MUL、ELEWISE_REALDIV、ELEWISE_SUB计算类型将会对输入进行广播后再进行指定操作。
  • 输入x、y对应维度的对应值要求相同或至少其中一个为1。

定义

struct ElewiseParam {
    enum ElewiseType: int {
        ELEWISE_UNDEFINED = 0,
        ELEWISE_CAST,
        ELEWISE_MULS,
        ELEWISE_COS,
        ELEWISE_SIN,
        ELEWISE_NEG,
        ELEWISE_QUANT,
        ELEWISE_LOGICAL_NOT,
        ELEWISE_ADD,
        ELEWISE_MUL,
        ELEWISE_REALDIV,
        ELEWISE_LOGICAL_AND,
        ELEWISE_LOGICAL_OR,
        ELEWISE_LESS,
        ELEWISE_GREATER,
        ELEWISE_SUB,
        ELEWISE_EQUAL,
        ELEWISE_QUANT_PER_CHANNEL,
        ELEWISE_DEQUANT_PER_CHANNEL,
        ELEWISE_DYNAMIC_QUANT,
        ELEWISE_TANH
    };
 
    struct QuantParam {
        float inputScale = 1.0f;
        bool asymmetric = false;
        int inputOffset = 0;
    };
 
    struct MulsParam {
        float varAttr = 0.0f;
    };
 
    ElewiseType elewiseType = ELEWISE_UNDEFINED;
    QuantParam quantParam;
    MulsParam mulsParam;

    aclDataType outTensorType = ACL_DT_UNDEFINED;
};

成员

成员名称

描述

ElewiseType

计算类型,支持如下种类:

  • ELEWISE_UNDEFINED:默认值,未定义。
  • ELEWISE_CAST:数据类型转换。
  • ELEWISE_MULS:向量逐元素乘值。
  • ELEWISE_COS:逐元素计算余弦值。
  • ELEWISE_SIN:逐元素计算正弦值。
  • ELEWISE_NEG:逐元素取相反数。
  • ELEWISE_QUANT:量化。
  • ELEWISE_LOGICAL_NOT:逐元素逻辑非。
  • ELEWISE_ADD:逐元素相加。
  • ELEWISE_MUL:向量与向量逐元素相乘。
  • ELEWISE_REALDIV:向量与向量逐元素相除。
  • ELEWISE_LOGICAL_AND:逐元素逻辑与。
  • ELEWISE_LOGICAL_OR:逐元素逻辑或。
  • ELEWISE_LESS:逐元素判断是否小于。
  • ELEWISE_GREATER:逐元素判断是否大于。
  • ELEWISE_SUB:逐元素相减。
  • ELEWISE_EQUAL:逐元素判断是否相等。
  • ELEWISE_QUANT_PER_CHANNEL:每个通道量化。
  • ELEWISE_DEQUANT_PER_CHANNEL:每个通道反量化。
  • ELEWISE_DYNAMIC_QUANT:逐行动态量化。
  • ELEWISE_TANH:逐元素计算双曲正切值。

QuantParam

量化参数,具体请参见表1

MulsParam

乘值参数,具体请参见表2

elewiseType

计算方式。

quantParam

量化参数。

mulsParam

乘值参数

outTensorType

指定数据类型转换输出的数据类型,具体请参见aclDataType

表1 QuantParam成员

成员名称

描述

inputScale

量化的步长。

asymmetric

动态量化的是否为非对称量化。

  • false:symmetric,对称量化。
  • true:asymmetric,非对称量化。

inputOffset

量化的偏移度。

表2 MulsParam成员

成员名称

描述

varAttr

向量乘的值。

ELEWISE_DYNAMIC_QUANT输入输出描述

参数

维度

数据类型

格式

描述

x

[n1, ..., ny, H]

float16

ND

输入向量,n>1,且不支持数据类型为BF16。

最后一维H小于等于24576。

若为Atlas 推理系列产品,最后一维H小于或等于4096,并为32的倍数。

z

[n1, ..., ny, H]

int8

ND

量化输出结果。

scale

[n1, ..., ny]

float

ND

反量化所需的scale。

offset

[n1, ..., ny]

float

ND

反量化所需的offset,在“asymmetric”“true”时才返回。

ELEWISE_TANH输入输出描述

参数

维度

数据类型

格式

描述

x

[-1, ..., -1]

float16

ND

输入。

out

[-1, ..., -1]

float16

ND

输出。