news 2026/5/9 15:14:32

CANN ops-math 贡献指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
CANN ops-math 贡献指南

贡献指南

【免费下载链接】ops-math本项目是CANN提供的数学类基础计算算子库,实现网络在NPU上加速计算。项目地址: https://gitcode.com/cann/ops-math

本项目欢迎广大开发者体验并参与贡献,在参与社区贡献之前,请参见cann-community了解行为准则,进行CLA协议签署,了解源码仓的贡献流程。

开发者准备本地代码与提交PR时需要重点关注如下几点:

  1. 提交PR时,请按照PR模板仔细填写本次PR的业务背景、目的、方案等信息。
  2. 若您的修改不是简单的bug修复,而是涉及到新增特性、新增接口、新增配置参数或者修改代码流程等,请务必先通过Issue进行方案讨论,以避免您的代码被拒绝合入。若您不确定本次修改是否可被归为“简单的bug修复”,亦可通过提交Issue进行方案讨论。

开发者贡献场景主要包括:

一、贡献新算子

算子开发贡献流程如下:

![算子开发贡献流程](https://raw.gitcode.com/cann/ops-math/raw/3ffb15f2fb388ae3537121dac31c80b25598f54e/docs/zh/figures/算子开发贡献流程.png "算子开发贡献流程图"?utm_source=gitcode_repo_files)

如果您有全新的算子希望基于NPU进行设计与实现,欢迎在Issue中提出您的想法与设计方案。完整的贡献过程如下:

1. 创建Issue需求

新建Requirement|需求建议类 Issue,并阐明新增算子的设计方案。Issue一般需包含以下内容:

  • 背景信息
  • 价值/作用
  • 设计方案

请在提交的Issue中评论/assign @yourself认领该任务。

2. 需求评审

Sig组将指派Committer对您提交的Issue进行评审并反馈修改意见。请在完成修改后,于Issue中@对应Committer。

若需求被接纳,sig成员将为您分配合适的算子分类路径(如:experimental/math),请将贡献的算子提交至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-math本项目是CANN提供的数学类基础计算算子库,实现网络在NPU上加速计算。项目地址: https://gitcode.com/cann/ops-math

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/9 15:12:45

新能源汽车电池生产线实战:C#上位机+Modbus TCP实现电芯数据毫秒级采集与存储

上个月在天津滨海新区的一家新能源电池生产企业做项目,他们的电芯装配线需要一套实时数据采集系统——要对接产线上的12台PLC,读取每个电芯的电压、温度、内阻、极耳焊接质量等20多项数据,采集周期要求100ms,数据要同时存SQL Server做业务追溯和InfluxDB做实时看板。之前他…

作者头像 李华
网站建设 2026/5/9 15:12:30

深度剖析KrkrzExtract:新一代krkrz引擎资源处理技术利器

深度剖析KrkrzExtract:新一代krkrz引擎资源处理技术利器 【免费下载链接】KrkrzExtract The next generation of KrkrExtract 项目地址: https://gitcode.com/gh_mirrors/kr/KrkrzExtract 在游戏开发与逆向工程领域,专业化的资源处理工具往往决定…

作者头像 李华
网站建设 2026/5/9 15:12:14

CANN/catlass变更日志

CHANGELOG 【免费下载链接】catlass 本项目是CANN的算子模板库,提供NPU上高性能矩阵乘及其相关融合类算子模板样例。 项目地址: https://gitcode.com/cann/catlass CATLASS 1.X CATLASS 1.5.0 关键特性 新增支持 Ascend950 架构与配套底层模板组件TLA 增强…

作者头像 李华
网站建设 2026/5/9 15:10:21

50.人工智能实战:大模型系统如何做 CI/CD?从前期发现“Prompt 改坏了”到自动评测、发布门禁与回滚

人工智能实战:大模型系统如何做 CI/CD?从前期发现“Prompt 改坏了”到自动评测、发布门禁与回滚 一、问题场景:代码没改,Prompt 改了,线上却出事故了 传统软件系统里,CI/CD 通常围绕代码: 代码提交↓ 单元测试↓ 构建镜像↓ 部署但大模型系统不一样。 很多关键行为来…

作者头像 李华
网站建设 2026/5/9 15:09:19

3篇3章7节:Obsidian 笔记的导出、备份和主题设置

Obsidian作为当下热门的本地优先笔记工具,凭借数据自主可控、自由度高、插件丰富、界面简洁的优势,成为学习、办公、知识整理的首选工具。但绝大多数新手用户在使用过程中,常会遇到各类实操难题:精心排版的笔记导出后格式错乱、无…

作者头像 李华
网站建设 2026/5/9 15:05:58

CANN学习中心安全声明

安全声明 【免费下载链接】cann-learning-hub CANN 学习中心仓,支持在线互动运行、边学边练,提供教程、示例与优化方案,一站式助力昇腾开发者快速上手。 项目地址: https://gitcode.com/cann/cann-learning-hub 运行用户建议 基于安全…

作者头像 李华