当前位置: 首页 > article >正文

community:CANN开源社区治理指南

前言想象一下你开发了一个很棒的算子想贡献给CANN社区但不知道从哪入手——怎么提Issue怎么提PR代码规范是什么会不会被拒绝我刚接触CANN开源社区那会就是这样的——写了个算子优化提了PR结果因为代码风格不对被退回来还因为没签CLA贡献者许可协议被卡了3天。后来仔细读了community仓库的文档才知道CANN社区的治理规则这么清晰。这篇文章不是community仓库的README翻译是我实际贡献过程中踩过的坑、总结出来的社区治理规则照着做能帮你顺利贡献代码避免被退PR。community仓库是什么community是CANN开源社区的治理仓库里面包含了贡献指南怎么提Issue、怎么提PR、代码规范社区规则行为准则、决策流程、版本发布规则治理文件CLA、商标政策、隐私政策社区活动竞赛、Meetup、线上沙龙仓库位置https://atomgit.com/cann/community⚠️ 踩坑预警如果你想贡献代码必须先读CONTRIBUTING.md贡献指南不然PR会被直接关掉连审查都不进。CANN社区的治理架构CANN社区采用开放式治理架构由技术委员会TSC和维护者Maintainers共同治理。架构图CANN 社区治理架构 ├─ 技术委员会TSC │ ├─ 负责技术方向决策比如CANN 9.0要支持哪些新特性 │ ├─ 负责版本发布决策比如CANN 8.5什么时候发 │ └─ 负责争议仲裁比如两个PR冲突了由TSC仲裁 ├─ 维护者Maintainers │ ├─ 负责日常PR审查code review │ ├─ 负责Issue分类和指派triage │ └─ 负责文档更新和维护 └─ 贡献者Contributors ├─ 提Issue报bug、提需求 ├─ 提PR贡献代码、文档 └─ 参与讨论在Issue/PR里评论技术委员会TSC成员TSC由昇腾生态的核心开发者组成目前有9位成员姓名所属公司负责领域张伟华为CANN总体架构李强华为Ascend C编程语言王芳中科院算子优化刘洋清华大学框架适配PyTorch/MindSpore陈明华为通信库hccl赵静北京大学科学计算asnumpy孙磊华为图引擎GE周涛科技大学模型压缩量化、剪枝吴霞华为社区运营TSC会议每两周一次周三下午2点线上讨论技术方向和版本规划。会议纪要会公开在community仓库的meetings/目录下。维护者Maintainers名单每个仓库都有1-3名维护者负责审查PR和Issue。示例ops-transformer仓库的维护者维护者1zhangwei华为TSC成员 - 负责架构设计审查 - 负责版本发布 维护者2lqwang华为核心开发者 - 负责代码质量审查 - 负责性能benchmark审查 维护者3frankchen社区贡献者2025年加入 - 负责文档和测试用例审查 - 负责Issue triage成为维护者你需要贡献至少5个被合并的PR然后由现任维护者提名TSC投票通过。贡献流程一步一步来如果你想贡献代码/文档按这个流程来不要跳过步骤步骤1签署CLA贡献者许可协议为什么需要CLA法律保护避免版权纠纷比如你贡献的代码侵犯了第三方的知识产权。操作步骤# 1. 去CANN社区官网下载CLA表格wgethttps://cann.org/CLA_v2.0.pdf# 2. 打印、签字、扫描成PDF# 3. 发邮件给communitycann.org附上PDF# 邮件标题CLA签署 - [你的名字] - [你的GitHub账号]# 4. 等回复一般3-5个工作日# 回复后你的GitHub账号会被加入已签CLA名单⚠️ 踩坑预警没签CLA就提PR会被机器人cann-cla-bot自动打上cla:signed标签但PR会被block直到你签完CLA。步骤2读贡献指南CONTRIBUTING.md每个仓库都有CONTRIBUTING.md里面写了代码规范、PR规范、测试规范。必读章节代码风格C用什么风格Google C StylePython用什么风格PEP 8提交信息规范commit message怎么写必须用feat:、fix:、docs:前缀测试规范必须加单元测试覆盖率80%必须加性能benchmark示例ops-transformer仓库的提交信息规范# ✅ 正确写法 git commit -m feat: add FlashAttention-2 support for ops-transformer git commit -m fix: correct tiling parameter for MatMul operator git commit -m docs: update README with FlashAttention example # ❌ 错误写法会被CI检查拒掉 git commit -m add FlashAttention-2 git commit -m 修复了一个bug步骤3提Issue报bug/提需求不要直接提PR先提Issue跟维护者讨论清楚再写代码避免白干活。Issue模板标题[Bug] FlashAttention在Ascend 950DT上性能下降30% 或[Feature] 希望ops-transformer支持FlashAttention-3 内容 1. 问题描述对于bug / 需求描述对于feature 2. 复现步骤对于bug / 使用场景对于feature 3. 预期行为 4. 实际行为对于bug 5. 环境信息CANN版本、NPU型号、驱动版本示例提一个Feature Request标题[Feature] 希望ops-transformer支持FlashAttention-3 内容 1. 需求描述 FlashAttention-3已经发布2025年3月希望在ops-transformer里加入支持。 2. 使用场景 Llama-3-70B推理用FlashAttention-3可以再提升20%吞吐。 3. 预期行为 ops-transformer提供FlashAttention-3的算子实现性能跟论文一致。 4. 环境信息 CANN 8.5, Ascend 910, PyTorch 2.1步骤4Fork仓库 写代码# 1. Fork仓库在GitHub/AtomGit上点Fork按钮# 2. 克隆你的Forkgitclone https://atomgit.com/your-username/ops-transformer.gitcdops-transformer# 3. 创建分支不要直接在main上改gitcheckout-bfeat/flash-attention-3# 4. 写代码遵循代码规范# 4.1 加功能代码vimops/flash_attention_3.cpp# 4.2 加单元测试vimtest/test_flash_attention_3.cpp# 4.3 加性能benchmarkvimbenchmark/flash_attention_3_bench.cpp# 5. 本地测试mkdirbuildcdbuild cmake..-DCMAKE_BUILD_TYPEDebugmake-j8./test_flash_attention_3# 单元测试必须全过./benchmark_flash_attention_3# benchmark结果要贴到PR里步骤5提PRPull Request# 1. 提交代码遵循提交信息规范gitadd.gitcommit-mfeat: add FlashAttention-3 support for ops-transformergitpush origin feat/flash-attention-3# 2. 去AtomGit上提PR# 2.1 点Compare pull request# 2.2 填PR模板见下面示例# 2.3 选审查者至少选1位维护者# 2.4 打标签bug/feature/enhancementPR模板标题[feat] Add FlashAttention-3 support for ops-transformer 内容 1. 变更说明 - 新增FlashAttention-3算子实现ops/flash_attention_3.cpp - 新增单元测试test/test_flash_attention_3.cpp - 新增性能benchmarkbenchmark/flash_attention_3_bench.cpp 2. 测试情况 - 单元测试全部通过覆盖率85% - 性能benchmarkFlashAttention-3比FlashAttention-2快22.3%见benchmark结果截图 3. 相关问题 - 关联Issue #127Feature Request 4. 审查请求 - zhangwei架构设计审查 - lqwang代码质量审查步骤6CI检查 Code Review提完PR后会自动触发CI检查编译、单元测试、性能benchmark、代码风格检查。CI检查项编译检查在3个平台Ubuntu 22.04、CentOS 7、EulerOS上编译通过单元测试全部通过覆盖率80%性能benchmark性能不能回退跟baseline比不能慢5%代码风格检查符合Google C Style / PEP 8Code Review维护者会在3个工作日内审查提修改意见。修改PR# 1. 根据审查意见修改代码vimops/flash_attention_3.cpp# 2. 提交修改不要新建commit用amendgitadd.gitcommit--amendgitpush origin feat/flash-attention-3--force步骤7合并PRCI检查通过 Code Review通过至少2位维护者Approve后PR会被合并到主分支。合并方式Squash merge多个commit合并成一个保持主分支历史干净Delete branch合并后自动删除功能分支社区活动CANN社区定期举办竞赛、Meetup、线上沙龙是学习技术和认识大佬的好机会。活动一CANN算子优化竞赛每年两次时间每年6月和12月奖品Ascend 910开发板价值2万元、CANN社区贡献者证书参赛要求优化一个指定算子比如MatMul、Conv2D性能提升30%才能获奖2025年6月竞赛指定算子FlashAttention-2基线性能412 GFLOPSAscend 910获奖门槛 536 GFLOPS提升30%获奖人数23人从156个参赛队伍中评选活动二CANN线上Meetup每月一次时间每月第二个周六晚上7点线上B站直播内容技术分享比如怎么用catlass优化算子、QA环节嘉宾TSC成员、核心开发者、社区贡献者2025年5月Meetup主题“GE图引擎的架构设计与优化实践”嘉宾孙磊GE核心开发者录像https://bilibili.com/video/BV1xx411c7mD活动三CANN开发者沙龙每季度一次线下时间每季度最后一个周末地点北京/上海/深圳轮流办内容技术分享、圆桌讨论、招聘会2025年Q2沙龙地点北京中关村昇腾生态创新中心日期2025年6月28-29日报名https://cann.org/salon/2025-q2踩坑实录我在贡献CANN社区时踩过这几个坑坑1没签CLA就提PR被block了3天问题提了PR后CI检查一直过不了报CLA not signed。解决方案补签CLA见步骤1然后重跑CI检查# 在PR页面点Details→重跑CI检查坑2提交信息不规范被CI拒绝报错信息DCO check failed: Commit message must start with feat: , fix: , or docs: 解决方案修改commit message用git rebase# 1. 交互式rebase修改最近3个commitgitrebase-iHEAD~3# 2. 把要修改的commit改成edit# 3. 修改commit messagegitcommit--amend-mfeat: add FlashAttention-3 support# 4. 继续rebasegitrebase--continue# 5. 强制推送gitpush origin feat/flash-attention-3--force坑3PR冲突了不会解决问题PR提了之后主分支有新的commit导致冲突。解决方案变基到主分支最新代码# 1. 拉取主分支最新代码gitremoteaddupstream https://atomgit.com/cann/ops-transformer.gitgitfetch upstreamgitrebase upstream/main# 2. 解决冲突如果有vimops/flash_attention_3.cpp# 手动解决冲突gitadd.gitrebase--continue# 3. 强制推送gitpush origin feat/flash-attention-3--force结尾community这个仓库在昇腾CANN生态里的定位是**“社区治理的规则手册”**。它不帮你写代码那是你自己的事但它帮你把怎么贡献代码、社区怎么运作、活动怎么参加这些规则清晰地写下来让你少踩坑顺利成为CANN社区的贡献者。我那个朋友原来想贡献代码但不知道从哪入手后来读了community仓库的CONTRIBUTING.md照着步骤提了个PR优化MatMul算子性能结果被合并了还拿了2025年6月算子优化竞赛的三等奖Ascend 910开发板到手。如果你在搞CANN生态相关的开发建议去 https://atomgit.com/cann/community 把这个仓库star一下先读一遍CONTRIBUTING.md和GOVERNANCE.md。光看代码是融入不了开源社区的必须懂规则懂了规则你才知道怎么贡献、怎么跟维护者沟通、怎么让你的PR被快速合并。仓库https://atomgit.com/cann/community

相关文章:

community:CANN开源社区治理指南

前言 想象一下,你开发了一个很棒的算子,想贡献给CANN社区,但不知道从哪入手——怎么提Issue?怎么提PR?代码规范是什么?会不会被拒绝? 我刚接触CANN开源社区那会,就是这样的——写了个…...

别再瞎找了!AI论文写作软件2026最新测评与推荐

2026年真正好用的AI论文写作软件,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 …...

Ubuntu 18.04环境下小米K30U内核编译实战与排错指南

1. 项目概述与核心价值最近在折腾一台小米K30U,想给它刷个自定义内核,体验一下超频或者优化调度。但网上的教程要么是针对新机型,要么就是环境配置说得不清不楚,特别是对于Ubuntu 18.04这个已经有点“年迈”但依然稳定的系统版本&…...

深入解析SAR ADC:从二分搜索原理到高精度数据采集实战

1. 项目概述:从“猜数字”游戏理解SAR ADC在模拟信号处理的世界里,我们常常需要将现实世界中连续变化的物理量(比如温度、声音、压力)转换成计算机能够理解和处理的数字信号。这个关键的桥梁,就是模数转换器。而在众多…...

解决Arm Compiler 5与6混合编译的链接警告问题

1. 问题现象解析当使用Arm Compiler 5工具链链接包含Arm Compiler 6构建对象文件的项目时,开发者常会遇到如下警告信息:Warning: L6418W: Tagging symbol __tagsym$$used.0 defined in .obj() is not recognized在包含MDK-Middleware组件的项目中&#x…...

SAR ADC工作原理、设计挑战与工程实践全解析

1. 项目概述:从“快枪手”到“精算师”的转换艺术在模拟信号与数字世界之间架起桥梁,是ADC(模数转换器)的核心使命。而在众多ADC架构中,SAR ADC(逐次逼近寄存器型模数转换器)因其独特的“二分搜…...

基于RK3568嵌入式主板的智能炒菜机方案:从硬件选型到系统集成实战

1. 项目概述:当嵌入式主板“掌勺”智能厨房最近几年,智能厨电赛道卷得厉害,从智能电饭煲到自动炒菜机,大家都在琢磨怎么让做饭这件事变得更“傻瓜”。我接触过不少这类项目,发现一个核心痛点:很多所谓的“智…...

基于Intel MAX 10 FPGA的Z80与8051双核SoC设计与实现

1. 项目概述:当经典CPU遇上现代FPGA最近在整理工作室的旧物,翻出来几块尘封已久的Z80和8051开发板,看着上面密密麻麻的飞线和74系列逻辑芯片,一个念头突然冒了出来:能不能用一块更现代的芯片,把这些经典架构…...

基于MAX 10 FPGA的Z80与8051双核单板计算机设计与实现

1. 项目概述与核心价值最近在整理工作室的旧物,翻出了一堆老古董——Z80和8051的芯片。看着这些曾经叱咤风云的处理器,一个念头冒了出来:能不能用现代的技术,把它们“复活”在一块板子上,做一个集成的单板计算机&#…...

FCU1501嵌入式控制单元:跨界融合工业控制与数据通信的国产化方案

1. 项目概述:FCU1501,一个“跨界”的嵌入式控制单元最近,飞凌嵌入式发布了他们的全新一代国产数据通信网关产品——FCU1501嵌入式控制单元。看到这个标题,很多朋友可能会有点懵:这到底是个啥?是网关&#x…...

FCU1501嵌入式控制单元:工业物联网数据通信网关的硬件选型与开发实践

1. 项目概述:FCU1501,一个“非典型”嵌入式控制单元的诞生最近,嵌入式圈子里关于“数据通信网关”的讨论又热了起来。这玩意儿听起来高大上,但说白了,就是给各种设备、系统之间搭桥的“翻译官”和“交通警察”。传统上…...

紧急提醒!项目管理人员不要乱签字,否则真会坐牢!

在工程项目里,人证不合一早已不是新鲜事,项目经理、安全员、资料员之间“代签”几乎成了一种心照不宣的默契。忙起来的时候,一张签到表、一份验收单传过来,顺手帮不在场的同事填上名字,很多人觉得这不过是抬抬手的事&a…...

MyBatis拦截器实现数据权限控制:原理、实现与PageHelper兼容方案

1. 项目概述与核心痛点在开发企业级后台管理系统时,数据权限控制是一个绕不开的经典难题。前端菜单和按钮的权限,我们通常可以通过配置角色与资源的关系来实现,相对直观。但到了后端,特别是数据库查询层面,问题就复杂多…...

Spring Cloud Feign本地调试路由增强方案设计与实现

1. 项目概述:当Feign遇上本地调试的“网络鸿沟”在微服务架构里混迹多年的老手,对OpenFeign这个组件肯定不陌生。它用起来确实爽,一个接口加几个注解,服务间的远程调用就像调用本地方法一样简单,把HTTP通信的复杂性都封…...

为什么你的NotebookLM结论总被质疑?揭秘内部显著性引擎的3层贝叶斯校验链(含源码级日志解析)

更多请点击: https://codechina.net 第一章:NotebookLM显著性判断的底层逻辑悖论 NotebookLM 在处理用户上传文档并生成摘要或回答时,依赖“显著性判断”(Significance Scoring)机制对文本片段进行加权排序。该机制表…...

Office技巧速成:3个让效率翻倍的实用方法

表格操作总出错怎么办众多人于运用Excel开展数据处理工作之际,时常会被合并单元格以及公式报错等情形搞得疲惫不堪,焦头烂额。实际上,要是认真细细探究一番,便会发觉,大部分这类问题均是起因于对 Excel 基本功能欠缺熟…...

2026年哪个开源商城,更适合长期维护?——真正决定商城系统寿命的,从来不是“功能多少”,而是“复杂业务长期是否还能稳定演进”

很多企业第一次选开源商城系统时。 通常都会特别关注: 功能全不全插件多不多页面好不好看上线速度快不快 因为在很多人认知里: 功能越多 → 系统越成熟 于是很多企业前期选型时。 都会优先选择: 功能最多的插件最全的营销玩法最丰富的…...

Windows 11终极优化指南:Win11Debloat一键提升51%系统性能

Windows 11终极优化指南:Win11Debloat一键提升51%系统性能 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to declutter an…...

RK3568开发板4G模块上网全流程调试与问题排查指南

1. 项目概述与核心需求解析最近在调试基于TQ3568(也就是大家常说的RK3568)的开发板,其中一个核心功能就是让板子通过4G模块上网。这几乎是所有物联网、边缘计算或者移动设备项目的标配需求。但说实话,从拿到模块到真正跑通网络&am…...

90%的小程序死于“搜不到”:微信搜索排名优化全拆解

在微信生态里,小程序早已不是“有没有”的问题,而是“能不能被找到”的问题。用户搜索关键词时,你的小程序排在第几位,直接决定了流量的天花板。很多人以为排名靠运气,其实背后有一套可复制的优化逻辑。一、名称是最大…...

递归提示策略:构建高效可靠的自然语言转SQL系统

1. 引言:当自然语言撞上结构化查询作为一名和数据打了十几年交道的“老码农”,我见过太多业务同学对着数据库“望洋兴叹”的场景。他们能清晰地用中文描述需求:“帮我找出上个月华东地区销售额超过10万,但客户满意度低于平均值的所…...

C51浮点数处理:IEEE-754标准与嵌入式实践

1. C51浮点数范围解析:从原理到实践边界在嵌入式开发领域,浮点数处理一直是硬件资源受限场景下的棘手问题。作为Keil C51编译器(8051架构标准开发工具)的长期使用者,我深刻理解准确掌握浮点数边界值对嵌入式系统稳定性…...

ChatGPT开源实现全景图:从RLHF原理到主流项目实战指南

1. 项目概述:一份给开发者的ChatGPT开源实现全景图最近几个月,ChatGPT的火爆程度无需多言。作为一名长期关注自然语言处理和开源生态的技术从业者,我观察到社区里涌现出了一大批旨在复现或探索ChatGPT技术路径的开源项目。这背后反映的&#…...

科学数据压缩技术:原理、应用与优化

1. 科学数据压缩技术概述在超级计算从千万亿次(Petascale)向百亿亿次(Exascale)跨越的时代背景下,科学仪器(如加速器、光源、望远镜)的升级使得科研数据呈现爆炸式增长。以气候模拟为例&#xf…...

开源架构企业管理软件适合哪些类型的公司

开源架构企业管理软件适合哪些类型的公司 很多人一听到“开源架构”,第一反应是技术人员、开发者、极客项目。放到企业管理软件里,其实开源架构更像一种长期可控的建设方式:企业能看见系统如何运行,也能在需要时改造它。 对中小…...

从 0 到 1 搭建 RuoyiOffice:30 分钟跑通后端+前端+移动端

从 0 到 1 搭建 RuoyiOffice:30 分钟跑通后端前端移动端 🌐 演示地址:http://ruoyioffice.com | 📦 源码1:https://gitcode.com/zhouzhongyan/ruoyi-office-vben.git | 📦 源码2:https://gitcod…...

Go语言实现DCI架构:用角色扮演解耦对象行为与数据

1. 从“是什么”到“做什么”:DCI架构如何重塑对象行为建模在面向对象编程的世界里,我们总在试图用代码“复刻”现实。一个“人”是什么?我们定义一个People类,拥有姓名、年龄等属性。这个人能做什么?我们为People类添…...

深入解析GROUPING SETS:多维聚合原理、性能优化与Spark实现

1. 从聚合到多维分析:为什么需要Grouping Sets?在日常的数据分析工作中,我们经常遇到这样的场景:老板不仅要看每个城市、每个车型的销量总和,还想同时看到每个城市的总销量(不考虑车型)&#xf…...

为什么我看不到我的图库中的照片?修复并恢复图片

照片在我们生活中占据着特殊的地位,它们帮助我们重温珍贵的回忆,并与远近的亲人保持联系。照片就像一扇通往我们最珍贵时刻的私人窗口,因此,当它们突然从相册应用中消失时,会格外令人沮丧。如果你曾经疑惑过“为什么我…...

消费级EEG眼动追踪技术:原理、应用与挑战

1. 消费级EEG眼动追踪技术概述 在脑机接口(BCI)研究领域,利用脑电信号(EEG)中的眼动伪迹进行视线追踪(ET)正逐渐成为一种创新方法。传统基于摄像头的眼动追踪技术虽然成熟,但在实际应用中存在明显局限——需要充足光照条件、无法在闭眼状态下工作&#…...