18 Star 41 Fork 99

Ascend/ascendc-api-adv

Create your Gitee Account
Explore and code with more than 13.5 million developers,Free private repositories !:)
Sign up
文件
Clone or Download
contribute
Sync branch
Cancel
Notice: Creating folder will generate an empty file .keep, because not support in Git
Loading...
README

概述

本样例介绍了调用FasterGelu高阶API实现FasterGeluCustom单算子,并按照不同的算子调用方式分别给出了对应的端到端实现。

  • 直调:使用核函数直调FasterGeluCustom自定义算子。

    核函数的基础调用方式,开发者完成算子核函数的开发和Tiling实现后,即可通过AscendCL运行时接口,完成算子的调用。

  • 框架调用:使用框架调用FasterGeluCustom自定义算子。

    按照工程创建->算子实现->编译部署->算子调用的流程完成算子开发。整个过程都依赖于算子工程:基于工程代码框架完成算子核函数的开发和Tiling实现,通过工程编译脚本完成算子的编译部署,继而实现单算子调用或第三方框架中的算子调用。

本样例中包含如下调用方式:

调用方式 目录 描述
直调 kernel_launch_method_by_direct host侧的核函数调用程序,包含CPU侧、NPU侧、仿真侧三种运行验证方法。
框架调用 kernel_launch_method_by_framework 通过aclnn调用的方式调用FasterGeluCustom算子。

样例支持的产品型号为:

  • Atlas A2训练系列产品/Atlas 800I A2推理产品
  • Atlas推理系列产品(Ascend 310P处理器)AI Core

目录结构

目录 描述
kernel_launch_method_by_direct 通过kernel直调的方式调用自定义算子工程样例目录
kernel_launch_method_by_framework 通过aclnn调用的方式调用自定义算子工程样例目录
host_tiling 本样例tiling代码实现
kernel_impl 本样例kernel侧代码实现

算子描述

FasterGeluCustom单算子,对输入tensor做FasterGelu计算。

FasterGeluCustom算子规格:

算子类型(OpType)FasterGeluCustom
算子输入
nameshapedata typeformat
src1024floatND
算子输出
dst1024floatND
核函数名faster_gelu_custom

算子实现介绍

本样例实现了FasterGeluCustom算子,其中输入src为固定shape[1024]。

  • kernel实现

    计算逻辑是:Ascend C提供的矢量计算接口的操作元素都为LocalTensor,输入数据需要先搬运进片上存储,然后使用FasterGelu高阶API接口完成FasterGelu计算,得到最终结果,再搬出到外部存储上。

    FasterGeluCustom算子的实现流程分为3个基本任务:CopyIn,Compute,CopyOut。CopyIn任务负责将Global Memory上的输入Tensor srcGm存储在srcLocal中,Compute任务负责对srcLocal执行FasterGelu计算,计算结果存储在dstLocal中,CopyOut任务负责将输出数据从dstLocal搬运至Global Memory上的输出Tensor dstGm。

  • tiling实现

    FasterGeluCustom算子的tiling实现流程如下:首先获取FasterGelu接口能完成计算所需最大/最小临时空间大小,根据该范围结合实际的内存使用情况设置合适的空间大小,然后根据输入长度dataLength确定所需tiling参数。

马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/ascend/ascendc-api-adv.git
git@gitee.com:ascend/ascendc-api-adv.git
ascend
ascendc-api-adv
ascendc-api-adv
v0.8-8.0.0.beta1

Search