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

开发步骤详解如表1所示。
步骤 |
描述 |
参考 |
---|---|---|
环境准备 |
准备算子开发及运行验证所依赖的开发环境与运行环境。 |
|
算子分析 |
进行算子开发前,需要进行算子分析,明确算子的功能、输入、输出,规划算子类型名称以及算子编译生成的库文件名称等。 |
|
工程创建 |
创建自定义算子工程。 |
|
算子原型定义 |
算子原型定义规定了在昇腾AI处理器BS9SX1A AI处理器上可运行算子的约束,主要体现算子的数学含义,包含定义算子输入、输出、属性和取值范围,基本参数的校验和shape的推导,原型定义的信息会被注册到GE的算子原型库中。离线模型转换时,GE会调用算子原型库的校验接口进行基本参数的校验,校验通过后,会根据原型库中的推导函数推导每个节点的输出shape与dtype,进行输出tensor的静态内存的分配。 |
|
算子代码实现 |
实现算子的计算逻辑。 |
|
算子信息库定义 |
算子信息配置文件用于将算子的相关信息注册到算子信息库中,包括算子的OpType、输入输出dtype、name等信息。网络运行时,AI CPU Engine会根据算子信息库中的算子信息做基本校验,并进行算子匹配。 |
|
算子适配 |
基于第三方框架(TensorFlow/Caffe)进行自定义算子开发的场景,开发人员完成自定义算子的实现代码后,需要进行插件的开发将基于TensorFlow/Caffe的算子映射成昇腾AI处理器BS9SX1A AI处理器的算子。 |
|
算子工程编译部署 |
命令行场景下,可直接使用样例工程的编译文件进行算子工程的一键式编译,生成自定义算子安装包。指定opp路径,执行安装包,实现自定义算子部署。 |
|
算子ST测试 |
系统测试(System Test),在真实的硬件环境中,验证算子的正确性。 |
|
算子网络验证 |
将自定义算子加载到网络模型中进行运行验证。 |