基于算子样例
命令行场景下,开发者可以直接基于Ascend开源社区中提供的自定义算子样例工程进行修改,追加自定义算子。
样例获取
单击Gitee或Github,进入Ascend samples开源仓,参见README中的“版本说明”下载配套版本的sample包,从“cplusplus/level1_single_api/4_op_dev/1_custom_op”目录中获取样例。
如无权限获取代码,请联系技术支持申请加入“Ascend”组织。
目录结构介绍
算子工程目录结构如下所示,请基于如下规则在对应目录下进行算子交付件的开发:
├── custom.proto // 原始框架为Caffe的自定义算子的proto定义文件 ├── build.sh // 工程编译入口脚本 ├── cpukernel // AI CPU算子实现文件及信息库文件所在目录 │ ├── impl //存放算子实现文件xx.h与xx.cc │ ├── op_info_cfg │ ├── aicpu_kernel │ ├── xx.ini //算子信息库定义文件xx.ini ├── framework //算子插件实现文件目录,框架为“PYTORCH”的算子无需关注 │ ├── CMakeLists.txt │ ├── caffe_plugin //Caffe算子适配插件实现代码及CMakeLists文件所在目录 │ ├── CMakeLists.txt │ ├── xx_plugin.cc │ ├── tf_plugin //TensorFlow算子适配插件实现代码及CMakeLists文件所在目录 │ ├── CMakeLists.txt │ ├── xx_plugin.cc │ ├── onnx_plugin //ONNX算子适配插件实现代码及CMakeLists文件所在目录 │ ├── CMakeLists.txt │ ├── xx_plugin.cc │ ├── tf_scope_fusion_pass //Parser Scope融合规则实现代码及CMakeLists文件所在目录 │ └── xx_pass.h │ └── xx_pass.cc │ └── CMakeLists.txt ├── op_proto //算子原型定义文件及CMakeLists文件所在目录 │ ├── xx.h │ ├── xx.cc │ ├── CMakeLists.txt //算子IR定义文件的CMakeLists.txt,会被算子工程的CMakeLists.txt调用 ├── tbe │ ├── CMakeLists.txt │ ├── custom_impl //算子实现文件目录 │ │ ├── xx.py │ │ ├── __init__.py //Python中的package标识文件 │ ├── op_info_cfg //算子信息库文件目录 │ └── ai_core │ ├── {Soc Version} //昇腾AI处理器类型 │ ├── xx.ini │ ├── testcase │ ├── tf1.15_test //基于TensorFlow 1.15的算子测试文件目录,此目录下代码仅支持在昇腾910 AI处理器上运行 │ ├── op_name //单算子网络测试代码 │ ├── tf_xx.py │ ├── tf2.6_test //基于TensorFlow 2.6的算子测试文件目录,此目录下代码仅支持在昇腾910 AI处理器上运行 │ ├── op_name //单算子网络测试代码 │ ├── tf_xx.py ├── cmake │ ├── config.cmake │ ├── util // 编译相关公共文件存放目录 │ ├── makeself //编译相关公共文件存放目录 ├── scripts //自定义算子工程打包相关脚本 ├── tools
PyTorch框架的适配代码不在此算子工程中,需要基于PyTorch框架源码进行适配代码的开发,详情请参见适配插件开发(PyTorch框架)。
- 若开发者需要自定义多个算子,需要在同一算子工程中进行实现,对应实现文件按照如上规则进行存放,并将所有自定义算子在同一工程中同时进行编译。
编译方法请参见算子工程编译。
- 样例工程中同时包含了原始框架为TensorFlow与Caffe的TBE算子与AI CPU算子样例,算子工程编译部署时,会将所有样例工程中的算子部署到算子库中。若样例算子与用户算子冲突,请自行删除对应目录下的样例算子。
- 关于TensorFlow的Parser Scope融合规则开发的详细介绍,请参见《TensorFlow Parser Scope融合规则开发指南》。
父主题: 工程创建