昇腾社区首页
中文
注册

算子开发流程

进行AI CPU自定义算子开发的流程如图所示

图1 算子开发流程

开发步骤详解如表1所示。

表1 AI CPU算子开发步骤详解

步骤

描述

参考

环境准备

准备算子开发及运行验证所依赖的开发环境与运行环境。

算子开发准备

算子分析

进行算子开发前,需要进行算子分析,明确算子的功能、输入、输出,规划算子类型名称以及算子编译生成的库文件名称等。

算子分析

工程创建

创建自定义算子工程。

基于算子样例

算子原型定义

算子原型定义规定了在昇腾AI处理器BS9SX1A AI处理器上可运行算子的约束,主要体现算子的数学含义,包含定义算子输入、输出、属性和取值范围,基本参数的校验和shape的推导,原型定义的信息会被注册到GE的算子原型库中。离线模型转换时,GE会调用算子原型库的校验接口进行基本参数的校验,校验通过后,会根据原型库中的推导函数推导每个节点的输出shape与dtype,进行输出tensor的静态内存的分配。

算子原型定义

算子代码实现

实现算子的计算逻辑。

算子代码实现

算子信息库定义

算子信息配置文件用于将算子的相关信息注册到算子信息库中,包括算子的OpType、输入输出dtype、name等信息。网络运行时,AI CPU Engine会根据算子信息库中的算子信息做基本校验,并进行算子匹配。

算子信息库定义

算子适配

基于第三方框架(TensorFlow/Caffe)进行自定义算子开发的场景,开发人员完成自定义算子的实现代码后,需要进行插件的开发将基于TensorFlow/Caffe的算子映射成昇腾AI处理器BS9SX1A AI处理器的算子。

算子适配

算子工程编译部署

  • 算子编译:将算子适配插件实现文件、原型定义文件、信息定义文件编译成算子插件库文件、算子原型库、算子信息库。
  • 算子部署:将算子实现文件、插件库文件、原型库、信息库部署到算子库中(opp的对应目录下)。

命令行场景下,可直接使用样例工程的编译文件进行算子工程的一键式编译,生成自定义算子安装包。指定opp路径,执行安装包,实现自定义算子部署。

算子工程编译部署

算子ST测试

系统测试(System Test),在真实的硬件环境中,验证算子的正确性。

算子ST测试

算子网络验证

将自定义算子加载到网络模型中进行运行验证。

算子网络测试(推理)

算子网络测试(训练)