首先下载算子设计文档模板:GPU算子设计文档模板(点击下载)
(以下内容以算子FractionalAvgPool为例)
准备部分
首先通过搜索引擎查一下相应的算子有什么作用:

大概了解这个算子是做不规则区域的平均池化的。
对于需要开发的算子,首先进入MindSpore的issues栏搜索:https://toscode.gitee.com/mindspore/mindspore/issues
因为我需要开发的是FractionalAvgPool,所以我会搜索到这样的算子信息:



根据此处的标杆接口参考,可以看到在tensorflow中这个算子的实现:

然后就可以开始写算子设计文档了。
功能介绍和接口描述
这部分可以直接参考MindSpore的issues那部分填入。
实现方式(重点)
实现方式主要是参考pytorch或者tensorflow的源码。
通过git下载tensorflow 2.6.2版代码
git clone --branch v2.6.2 https://github.com/tensorflow/tensorflow.git
如果是下载pytorch 1.8.1
git clone --branch v1.8.1 https://github.com/pytorch/pytorch.git
如果下载太慢可使用
https://github.com/tensorflow/tensorflow/archive/refs/tags/v2.6.2.zip
和
https://github.com/pytorch/pytorch/archive/refs/tags/v1.8.1.zip
tensorflow
通过vscode或pycharm搜索tensorflow中的接口定义,直接搜索REGISTER_OP("算子名称"),其中算子名称用大驼峰命名。
于是FractionalAvgPool这个算子可以定位到相关接口定义为:

与前面的参数定义基本一致。
然后再找相应的cuda代码,大部分算子在目录\tensorflow\tensorflow\core\kernels下,cuda实现的算子后缀为cu.cc,头文件后缀为.h,其他都是CPU实现。找到相应算子的GPU实现,然后把GPU实现读懂,然后把实现逻辑写入设计文档中。(遇到不懂的可以看这篇博客的cuda编程入门)
pytorch
查找算子在pytorch中的cuda实现,通常路径为\pytorch-1.8.1\aten\src\ATen\native\cuda,后缀为.cu





冠新牛的