本节以Add TBE算子和AI CPU算子开发为例进行算子分析,帮助读者快速掌握算子分析流程。
使用TBE DSL方式开发Add算子前,我们需要确定算子功能、输入、输出、算子开发方式、算子类型以及算子实现函数名称等。
add算子的数学表达式为:
z=x+y
计算过程:将两个输入参数相加,得到最终结果z并将其返回。
因此本例中,算子类型定义为Add;算子的实现文件名称及实现函数名称将首字母转换小写字符,定义为add。
通过以上分析,得到Add算子的设计规格如下:
算子类型(OpType) |
Add |
|||
---|---|---|---|---|
算子输入 |
name:x1 |
shape:all |
data type: float16、float32、 int32 |
format: NCHW,NC1HWC0,NHWC,ND |
name:x2 |
shape:all |
data type: float16、float32、 int32 |
format: NCHW,NC1HWC0,NHWC,ND |
|
算子输出 |
name:y |
shape:all |
data type: float16、float32、 int32 |
format: NCHW,NC1HWC0,NHWC,ND |
算子实现使用的主要DSL接口 |
tbe.dsl.broadcast(var, shape, output_dtype=None) tbe.dsl.vadd(lhs, rhs) |
|||
算子实现文件/实现函数名称 |
add |
使用AI CPU方式开发算子前,我们需要确定算子功能、输入、输出、算子类型以及算子实现函数名称等。
以Add算子为例,Add算子的数学表达式为:
z=x+y
计算过程是:将两个输入参数相加,得到最终结果z并将其返回。
因此本例中,算子类型定义为Add,算子的实现文件名称为add,因此各个交付件的名称建议命名如下:
通过以上分析,得到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 |