昇腾社区首页
中文
注册
开发者
下载

工作原理

算子下发过程

输出shape推导(inferShape)

shape推导(inferShape)的作用是由输入的shape+属性推输出shape和数据类型dtype

例如:矩阵乘Matmul的左矩阵tensorAM*K,右矩阵tensorBK*N,inferShape的结果是M*N,如下图所示。

在输入数据类型为float16场景下,输出数据类型默认float16

图1 shape推导示例

Tiling

大多数情况下,单个AI Core存在存储空间有限,算子的输入数据无法一次完全载入完成计算,需要将输入切分成多块,分块完成计算,这个过程称为Tiling,数据切分的算法称为Tiling算法或者Tiling策略。

Tiling策略对复杂算子的性能影响巨大, 同一个算子在不同Tiling策略下可能有10倍性能差异。

图2 Tiling示例

获取workspace大小

workspace:算子内部有时需要通过额外的device内存进行数据交换或者缓存,需要在算子实际执行前分配好。通常存在两种使用场景:

1. 需要使用Unified Buffer和L1 Buffer上空间且空间不够用时,可以将数据暂存至workspace上。

2. 调用其他API接口时,需要workspace作为入参。

通常Tiling和workspace是一起计算的。

图3 workspace示例

算子下发LaunchKernel

图4 算子下发示意

算子执行

图5 算子执行示意图