CANN/ops-nn贡献指南
贡献指南【免费下载链接】ops-nn本项目是CANN提供的神经网络类计算算子库实现网络在NPU上加速计算。项目地址: https://gitcode.com/cann/ops-nn本项目欢迎广大开发者体验并参与贡献在参与社区贡献之前。请参见cann-community了解行为准则进行CLA协议签署了解源码仓的贡献流程。开发者准备本地代码与提交PR时需要重点关注如下几点提交PR时请按照PR模板仔细填写本次PR的业务背景、目的、方案等信息。若您的修改不是简单的bug修复而是涉及到新增特性、新增接口、新增配置参数或者修改代码流程等请务必先通过Issue进行方案讨论以避免您的代码被拒绝合入。若您不确定本次修改是否可被归为“简单的bug修复”亦可通过提交Issue进行方案讨论。开发者贡献场景主要包括一、贡献新算子算子开发贡献流程如下如果您有全新的算子希望基于NPU设计与实现欢迎在Issue中提出您的想法与设计方案。完整的贡献过程如下1. 创建Issue需求新建Requirement|需求建议类Issue并阐明新增算子的设计方案。Issue一般需包含以下内容背景信息价值/作用设计方案请在提交的Issue中评论/assign yourself认领该任务。2. 需求评审Sig组将指派Committer对您提交的Issue进行评审并反馈修改意见。请在完成修改后于Issue中对应Committer。若需求被接纳sig成员将为您分配合适的算子分类路径如experimental/activation请将贡献算子提交至experimental对应算子分类目录。3. PR提交生态最简算子交付件如下${op_class} # 算子分类 ├── ${op_name} # 算子名 │ ├── ${op_name}.cpp # 算子Kernel实现文件 │ └── tests │ │ ├── test_${op_name}.py # 算子测试文件 │ ├── CMakeLists.txt # 算子编译配置文件 │ ├── README.md # 算子README文档PR上库要求代码交付件需提供算子Kernel实现、算子测试文件开发过程参考fast_kernel_launch_example。文档交付件算子README文档为必选其余文档可视情况提供。文档写作模板和规范参考文档贡献指南。精度要求新贡献算子需满足精度标准具体请参见生态算子开源精度标准。合规检查代码是否符合《C 编程规范》代码是否编译通过Markdown文档语法是否符合规范贡献目录按sig成员意见提交至指定目录下experimental/${op_class}可参考已有算子文件放置规则。PR提交通过git命令提交目标分支PR检查PR标题是否清晰、PR描述是否规范指明更改内容和原因、是否关联对应Issue、是否签署CLA。如果您希望贡献项目标准算子其交付件和开发过程比生态算子复杂包括Kernel、Tiling实现等具体贡献指导参考附录。4. CI门禁通过评论compile指令触发开源仓门禁并依据CI检测结果进行修改目前CI门禁包含以下检查项代码编译静态检查如涉及codecheck误报请提交给sig成员屏蔽UT测试冒烟测试门禁通过后请在关联的Issue中指派的Committer。5. Committer检视Committer检视后将反馈检视意见请根据意见修改完成后指派的Committer。6. Maintainer合入Committer检视通过后标注/lgtm标签。Maintainer将在1天内进行最终审核确认无问题后将标注/approve标签合入PR。二、算子Bug修复如果您在本项目中发现了某些算子Bug希望对其进行修复欢迎您新建Issue进行反馈和跟踪处理。您可以按照提交Issue/处理Issue任务指引新建Bug-Report|缺陷反馈类Issue对Bug进行描述然后在评论框中输入“/assign”或“/assign yourself”将该Issue分配给您进行处理。三、算子优化如果您对本项目中某些算子实现有泛化性增强/性能优化思路希望着手实现这些优化点欢迎您对算子进行优化贡献。您可以按照提交Issue/处理Issue任务指引新建Requirement|需求建议类Issue对优化点进行说明并提供您的设计方案然后在评论框中输入“/assign”或“/assign yourself”将该Issue分配给您进行跟踪优化。四、文档纠错如果您在本项目中发现某些算子文档描述错误欢迎您新建Issue进行反馈和修复文档规范参考文档贡献指南。您可以按照提交Issue/处理Issue任务指引新建Documentation|文档反馈类Issue指出对应文档的问题然后在评论框中输入“/assign”或“/assign yourself”将该Issue分配给您纠正对应文档描述。五、帮助解决他人Issue如果社区中他人遇到的问题您有合适的解决方法欢迎您在Issue中发表评论交流帮助他人解决问题和痛点共同优化易用性。如果对应Issue需要进行代码修改您可以在Issue评论框中输入“/assign”或“/assign yourself”将该Issue分配给您跟踪协助解决问题。附录项目标准算子交付件如下${op_class} # 算子分类 ├── ${op_name} # 算子名 │ ├── op_host # 算子定义、Tiling相关实现 │ │ ├── ${op_name}_def.cpp # 算子定义文件 │ │ ├── ${op_name}_tiling.cpp # 算子Tiling实现文件 │ │ └── CMakeLists.txt │ ├── op_kernel # 算子Kernel目录 │ │ ├── ${op_name}.cpp # Kernel入口文件包含主函数和调度逻辑 │ │ ├── ${op_name}.h # Kernel实现文件定义Kernel头文件包含函数说明、结构定义、逻辑实现 │ │ ├── ${op_name}_tiling_data.h # TilingData文件存储Tiling策略相关配置信息 │ │ └── ${op_name}_tiling_key.h # TilingKey文件定义Tiling策略的key标识不同划分方式 │ ├── CMakeLists.txt # 算子编译配置文件保留原文件即可 │ └── README.md # 算子说明文档 │ └── tests # 算子测试文件 │ │ ├── ut # 算子UT测试文件PR上库要求代码交付件需提供op_host算子Tiling实现、op_kernel算子Kernel实现、算子UT测试文件开发过程请参考算子开发指南。文档交付件算子README文档为必选其余文档可视情况提供。文档写作模板和规范请参见文档贡献指南。合规检查代码是否符合《C 编程规范》、是否符合标准算子基础编程规范代码是否编译通过Markdown文档语法是否符合规范贡献目录按sig成员意见提交至指定目录下experimental/${op_class}可参考已有算子文件放置规则。PR提交通过git命令提交目标分支PR检查PR标题是否清晰、PR描述是否规范指明更改内容和原因、是否关联对应Issue、是否签署CLA。【免费下载链接】ops-nn本项目是CANN提供的神经网络类计算算子库实现网络在NPU上加速计算。项目地址: https://gitcode.com/cann/ops-nn创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考