昇腾社区首页
中文
注册

算子分析

使用AI CPU方式开发算子前,我们需要确定算子功能、输入、输出、算子类型以及算子实现函数名称等。

  1. 明确算子的功能以及数学表达式。

    以Add算子为例,Add算子的数学表达式为:

     z=x+y

    计算过程是:将两个输入参数相加,得到最终结果z并将其返回。

  2. 明确输入和输出。
    • 例如Add算子有两个输入:x与y,输出为z。
    • 本样例中算子的输入支持的数据类型为float16、float32、 int32,算子输出的数据类型与输入数据类型相同。
    • 算子输入支持所有shape,输出shape与输入shape相同。
    • 算子输入支持的format为:NCHW,NHWC,ND。
  3. 明确算子实现文件名称以及算子的类型(OpType)。
    • 算子类型需要采用大驼峰的命名方式,即采用大写字符区分不同的语义。
    • 算子文件名称,可选用以下任意一种命名规则:

      建议将OpType按照如下方式进行转换,得到算子文件名称。

      转换规则如下:
      • 首字符的大写字符转换为小写字符。

        例如:Abc -> abc

      • 小写字符后的大写字符转换为下划线+小写字符。

        例如:AbcDef -> abc_def

      • 紧跟数字以及大写字符后的大写字符,作为同一语义字符串,查找此字符串后的第一个小写字符,并将此小写字符的前一个大写字符转换为下划线+小写字符,其余大写字符转换为小写字符。若此字符串后不存在小写字符,则直接将此字符串中的大写字符转换为小写字符。

        例如:ABCDef -> abc_def;Abc2DEf -> abc2d_ef;Abc2DEF -> abc2def;ABC2dEF -> abc2d_ef。

    因此本例中,算子类型定义为Add,算子的实现文件名称为add,因此各个交付件的名称建议命名如下:

    • 算子的代码实现(即kernel实现)文件命名为add_kernel.h与add_kernel.cc。
    • 插件实现文件命名为add_kernel_plugin.cc。
    • 原型定义文件命名为:add.h与add.cc。
    • 信息定义文件命名为add.ini。

    通过以上分析,得到Add算子的设计规格如下:

    表1 Add算子设计规格

    算子类型(OpType)

    Add

    算子输入

    name:x

    shape:all

    data type:

    float16、float32、 int32

    name:y

    shape:all

    data type:

    float16、float32、 int32

    算子输出

    name:z

    shape:all

    data type:

    float16、float32、 int32

    算子实现文件名称

    add