在开发算子代码之前需要分析算子的数学表达式、输入、输出以及计算逻辑的实现,明确需要调用的Ascend C接口。
Add算子的数学表达式为:
z = x + y
计算逻辑是:Ascend C提供的矢量计算接口的操作元素都为LocalTensor,输入数据需要先搬运进片上存储,然后使用计算接口完成两个输入参数相加,得到最终结果,再搬出到外部存储上。Ascend C Add算子的计算逻辑如下图所示。
通过以上分析,得到Ascend C Add算子的设计规格如下:
算子类型(OpType) |
Add |
|||
---|---|---|---|---|
算子输入输出 |
name |
shape |
data type |
format |
x(输入) |
(8, 2048) |
half |
ND |
|
y(输入) |
(8, 2048) |
half |
ND |
|
z(输出) |
(8, 2048) |
half |
ND |
|
核函数名称 |
add_custom |
|||
使用的主要接口 |
DataCopy:数据搬移接口 |
|||
Add:矢量双目指令接口 |
||||
EnQue、DeQue等接口:Queue队列管理接口 |
||||
算子实现文件名称 |
add_custom.cpp |