news 2026/9/18 16:49:46

SiP (AscendSiPBoost) 社区贡献指南:从签署 CLA 到 Pull Request 合入的完整流程

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
SiP (AscendSiPBoost) 社区贡献指南:从签署 CLA 到 Pull Request 合入的完整流程

SiP (AscendSiPBoost) 社区贡献指南:从签署 CLA 到 Pull Request 合入的完整流程

【免费下载链接】sip本项目是CANN提供的一款高效、可靠的高性能信号处理算子加速库,基于华为Ascend AI处理器,专门为信号处理领域而设计。项目地址: https://gitcode.com/cann/sip

本文为 CANN 开放项目 SiP(AscendSiPBoost,基于华为 Ascend AI 处理器的信号处理算子加速库)的官方贡献指南。读完本文,你将掌握在 SiP 仓库中参与贡献的完整路径:签署贡献者协议(CLA)、选择贡献方向(算子 Bug 修复、算子优化、新算子开发、文档修正、协助他人排障)、通过 Issue 认领任务、按许可证要求编写代码、以及通过 Fork + Pull Request 模式走完“编译门禁 → 评审 → 合入”的全过程,并能使用社区 Bot 命令解决 CLA 检查、CI 触发等常见卡点。

一、贡献前置要求:行为准则与 CLA

1.1 遵守 CANN 开放项目行为准则

SiP 是 CANN 旗下的开放项目。所有后续在 SiP 项目中的活动(包括但不限于发表评论、提交 Issue、编辑 Wiki)都必须遵循 CANN 开放项目行为准则,其全文见 docs/zh/context/code-of-conduct.md。准则核心要点包括:

  • 社区承诺所有参与者免于任何骚扰,不论年龄、民族、经验水平、受教育程度、国籍等;
  • 鼓励的行为:措辞友好包容、尊重不同观点、耐心接受有益批评、关注对社区最有利的事情;
  • 禁止的行为:发布色情/暴力相关内容、造谣或人身攻击、公开或私下骚扰其他参与者、未经授权使用他人个人信息;
  • 维护者(Maintainer)有权诠释“不当行为”,并可删除、编辑、拒绝违反准则的评论、提交、代码、Wiki 编辑和 Issue 等贡献,必要时可暂时或永久封禁参与者。

1.2 签署 CANN 开放项目贡献者协议(CLA)

在向项目贡献之前,必须签署 CANN 开放项目贡献者协议(CLA)。请根据参与身份选择对应类型(签署入口由 CANN 社区官方提供,原文档附有签署链接;若 PR 提交后出现 CLA 检查未通过,签署地址也会在 PR 评论区给出):

CLA 类型适用身份说明
Institutional CLA(法人 CLA)企业代表代表企业签署,通常由企业负责人签署
Institutional Contributor CLA(法人贡献者登记)已签署法人 CLA 企业的员工在申请页选择所在企业,提交后由企业管理员审批,通过后即可参与贡献
Individual CLA(个人 CLA)非企业员工的个人贡献者以个人名义签署
Enterprise Administrator(企业管理员)企业管理员有权审批法人贡献者登记申请并管理人员

提示:CLA 检查以 commit 信息中的 committer 邮箱作为检查凭证,可通过git log --pretty=fuller查询。commit 邮箱与 Gitcode 提交邮箱需保持一致,详见 docs/zh/context/infra-faqs.md 第 1 节。

二、五大贡献方向

签署 CLA 后即可开始贡献,所有贡献都欢迎且被重视。所有发现的问题和新想法都可以通过 Issue 报告、讨论和跟踪,并在贡献代码的 Pull Request 合入后关闭关联 Issue。各贡献方向对应的 Issue 类型如下:

2.1 算子 Bug 修复(Operator Bug Fix)

发现仓库中某些算子的 Bug 并希望修复时:

  1. 创建Bug-Report类型 Issue,描述 Bug 现象;
  2. 在 Issue 评论区输入/assign/assign @你的用户名,将 Issue 指派给自己处理。

2.2 算子优化(Operator Optimization)

如果对仓库中某个算子实现有泛化增强或性能优化思路:

  1. 创建Requirement类型 Issue,描述优化点并附上你的设计方案;
  2. 在评论区输入/assign/assign @你的用户名认领该 Issue,跟踪优化落地。

2.3 贡献新算子(Contributing New Operators)

如果你有全新的算子想基于 Ascend 芯片设计实现:

  1. 创建Requirement类型 Issue,给出新算子描述和设计方案,与 Ascend 团队成员讨论;
  2. Ascend 团队成员会与你确认,并为你的算子指定合适的目录类别(如ops/baseops/blasops/fft等仓库中的算子目录),新算子需贡献到对应类别目录;
  3. 在已提交的 Issue 中评论/assign/assign @你的用户名认领 Issue,随后向代码仓库提交新算子。

新算子的开发可参考仓库内的完整教程 从零开始开发一个简单算子。该教程以 Conj(共轭)算子为例,演示了 Host 侧入口函数(如 core/base/conj.cpp 中的AsdSip::Conj接口)、Device 侧ops/base/conj目录下的 tiling 与 op_kernel 代码、参数结构头文件ops/include/params/conj.h,以及把算子注册进 configs/op_list.yaml 的完整步骤——这正是“贡献新算子”方向需要走通的实际代码路径。

2.4 文档修正(Documentation Correction)

发现仓库中算子文档有误时:创建Documentation类型 Issue 指出对应文档的问题,再输入/assign/assign @你的用户名认领并修正。

2.5 协助他人解决问题(Helping Others Solve Issues)

如果你对社区中他人遇到的问题有合适方案,欢迎在 Issue 中评论提供帮助、共同改善易用性;若该 Issue 需要代码修改,同样可以评论/assign认领并协助解决。

三、提交 Issue 与认领 Issue 任务

  1. 找到 Issue 列表:在 SiP 项目的 Gitcode 主页点击 “Issues” 进入 Issue 列表;
  2. 提交 Issue:报告 Bug、提出需求或提交意见/建议,均通过提交 Issue 完成;
  3. 参与 Issue 讨论:每个 Issue 均支持开发者讨论,感兴趣可在评论区发表意见;
  4. 认领 Issue:若你愿意处理某个 Issue,在评论区输入/assign/assign @你的用户名,机器人会将 Issue 指派给你,你的名字会出现在负责人列表中。

Issue 认领机制由社区 Bot 实现,Bot 交互流程与完整命令说明见 docs/zh/context/infra-command.md:

四、贡献编码:环境准备与许可证声明

4.1 准备 CANN 开发环境

参与编码贡献需要准备好 CANN 开发环境,详见 README_en.md 的 Environment Setup 章节。关键步骤摘要:

  • 依赖要求(来自 README_en.md 3.1.1 节):python >= 3.7.0pyyamlgcc/g++ >= 7.3.0cmake >= 3.16.0pigzdos2unixnumpy,运行 UT 时还需googletest(推荐 v1.14.0);
  • 一键安装依赖:bash install_deps.sh,随后执行pip3 install -r requirements.txt
  • 安装社区版 CANN Toolkit 与 Ops 安装包并配置环境变量(source ${install_path}/cann/set_env.sh);
  • 工具版本要求见 README_en.md 的 3.1.5 节。

本地编译验证可参考 编译与构建文档:

cd ${SiP_root_path} bash build.sh

build.sh支持--help--dev(仅编译算子库)、--clean(清理缓存与第三方依赖)、--ut(编译并执行单元测试)等参数;目标芯片架构通过 configs/build_config.json 配置(ascend310b/ascend310p/ascend910b/ascend950四个布尔开关)。

4.2 遵循 CANN Open 软件许可协议

SiP 编码遵循CANN Open Software License Agreement Version 2.0,协议全文见 LICENSE。向 SiP 源码仓库贡献代码必须遵守该协议,并在新建源文件头部添加版权声明:

cpp、cc、h 等文件

/** * Copyright (c) 2025 [Name of the copyright owner] All rights reserved. * This program is free software, you can redistribute it and/or modify it under the terms and conditions of * CANN Open Software License Agreement Version 2.0 (the "License"). * Please refer to the License for details. You may not use this file except in compliance with the License. * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, * INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE. * See LICENSE in the root of the software repository for the full text of the License. */

py、sh 等文件

# Copyright (c) 2025 [Name of the copyright owner] All rights reserved. # This program is free software, you can redistribute it and/or modify it under the terms and conditions of # CANN Open Software License Agreement Version 2.0 (the "License"). # Please refer to the License for details. You may not use this file except in compliance with the License. # THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, # INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE. # See LICENSE in the root of the software repository for the full text of the License.

署名规则:

  • 以个人名义贡献且你拥有贡献内容的版权时,将第一行的[Name of the copyright owner]替换为你的署名;
  • 代表雇主贡献或雇主拥有贡献内容版权时,替换为雇主名称;对版权归属有疑问时,请咨询法律顾问或雇主法务团队;
  • 第一行的2025是创建或修改文件所在年份,请按实际时间修改。

从源码结构看,该模板与仓库现有文件完全一致,例如 core/base/mul.cpp 的头部即采用该格式(Copyright (c) 2025 Huawei Technologies Co., Ltd.),新贡献文件保持同样风格即可。

五、代码贡献流程(Fork → Pull Request → 合入)

SiP 官方不允许社区开发者直接 push 代码到仓库(含 CANN 开发者角色),贡献必须走 Fork + Pull Request 流程,且合入需经过至少一位提交者以外的 committer 评审。完整流程如下:

  1. Fork 并克隆仓库:先 Fork SiP 仓库到你的个人仓库,再下载到本地,在本地分支上进行修改:

    git clone https://gitcode.com/cann/sip.git
  2. 提交 Pull Request:代码验证满足贡献要求后,向 SiP 提交 Pull Request,可在 Pull-Request 列表中找到你提交的 PR;

  3. 触发编译:在 PR 评论区评论compile触发编译流水线。编译通过后 PR 会被打上ci-pipeline-passed标签,失败则打上ci-pipeline-failed标签;

  4. 关注门禁测试结果:测试不通过时,根据问题提示修改本地代码;测试通过后 PR 会指派 committer 评审,需关注 committer 的评审意见;

  5. 合入:PR 评审通过后,代码合入 SiP 源码仓库。

六、常见卡点与社区 Bot 命令

PR 过程中遇到卡点可参考 FAQs,高频问题包括:

  • PR 出现cann-cla/no红色标签:说明 PR 中部分 commit 的贡献者未签署 CLA。按身份选择个人/法人/法人贡献者登记签署;签署审批通过后在 PR 评论区评论/check-cla重新触发检查,通过后打上cann-cla/yes标签。commit 邮箱与 Gitcode 提交邮箱不一致时,需先统一邮箱再签署(详见 FAQ 第 1 节的处理表格);
  • 个人账号下无法 Fork 仓库:通常是因为个人账号下已存在同名仓库,Gitcode 按“个人账号 + 仓库名”寻址,不允许同名。解决方法是重命名个人账号下已有仓库后再次 Fork(FAQ 第 2 节);
  • CI 未触发:可能是网络或调度导致 webhook 未及时送达,可在 PR 评论中输入/compile重新触发;若是仓库刚创建后短时间内提交 PR,Jenkins 侧尚未创建 CI 构建工程,评论/compile也不生效,需等待系统自动构建工程(FAQ 第 7 节);
  • 保护分支与非保护分支:保护分支可设置特定角色/成员的推送与合并权限,非保护分支不支持(FAQ 第 3 节);直接 push 会缺少必要审核环节,仅适用于超大文件等少数场景,常规贡献应使用/lgtm/approve评审合入(FAQ 第 5 节)。

社区仓库评论区支持的 Bot 命令一览(详见 docs/zh/context/infra-command.md):

命令作用面向对象
/check-cla强制重新检查 PR 的 CLA 状态,添加cann-cla/yescann-cla/no标签所有开发者
compile触发编译流水线,通过后打ci-pipeline-passed标签,失败打ci-pipeline-failed所有开发者
/lgtm//lgtm cancel添加/移除代表代码已评审的lgtm标签sig 组 reviewers
/approve//approve cancel添加/移除代表 committers 同意合并的approved标签sig 组 committers
/check-pr检查 PR 标签是否满足条件,满足则合并所有人
/merge添加代表 branch_keeper 同意合并的keeper_approved标签对应分支的 branch_keeper
/assign//unassign为 Issue 指派/取消指派负责人所有人
/kind **/priority **/sig **及对应/remove-*为 Issue/PR 添加或移除分类、优先级、sig 标签(标签须已存在于仓库中)管理员可直接添加,其他用户通过评论添加

七、相关资源导航

  • 行为准则:docs/zh/context/code-of-conduct.md
  • 贡献 FAQ:docs/zh/context/infra-faqs.md
  • Bot 命令一览:docs/zh/context/infra-command.md
  • 环境准备与依赖:README_en.md、requirements.txt、install_deps.sh
  • 编译与构建:docs/compilation_build_en.md、configs/build_config.json
  • 新算子开发教程:docs/developing_a_simple_operator_en.md
  • 算子调用示例(可用于本地验证):example/example.cpp
  • 许可协议:LICENSE

【免费下载链接】sip本项目是CANN提供的一款高效、可靠的高性能信号处理算子加速库,基于华为Ascend AI处理器,专门为信号处理领域而设计。项目地址: https://gitcode.com/cann/sip

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

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

WiFi CSI动作识别数据集全解析:从数据采集到深度学习应用

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/18 16:42:06

从矩阵分析到STM32:卡尔曼滤波工程落地指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/18 16:42:02

精益与DevOps合流:价值流映射驱动的CI/CD流水线交付优化

简介:这份PDF资料围绕精益实践与DevOps融合的产品开发体系展开,面向产品经理、研发负责人及运维工程师,用于解决交付周期长、协作割裂、质量波动等常见问题。内容从精益消除浪费、流程优化讲到DevOps的自动化、持续集成与交付、监控反馈&…

作者头像 李华
网站建设 2026/9/18 16:39:47

德国宣誓翻译留学材料包含哪些?怎么办理?完整清单汇总

申请德国留学,宣誓翻译是绝大多数同学都会卡住的关键环节,区别于普通翻译,它是德国官方认可、具备法律效力的专属翻译形式,也是高校申请、签证递交、材料审核的硬性要求。很多留学生因材料不全、翻译不规范、无宣誓资质&#xff0…

作者头像 李华
网站建设 2026/9/18 16:34:18

Spring Boot 3整合MyBatis-Plus连接MySQL完整指南与避坑实践

1. 为什么 Spring Boot 3 让很多人卡在了第一步 说个真实经历,我接手过一个老项目升级的活儿,pom 文件里 Spring Boot 版本从 2.7 升到 3.2,结果编译报错差点把人整崩溃。不是业务代码的问题,而是依赖之间的版本兼容关系全变了。…

作者头像 李华
网站建设 2026/9/18 16:33:12

正弦稳态电路向量法:从复数阻抗到功率计算全解析

简介:《用向量法表示电路》PPT学习教案面向电路分析初学者与教学者,系统讲解如何以复数与相量法表示和求解正弦交流电路,帮助读者突破从时域到相量域的抽象难点。压缩包内仅有1个pptx文件,大小482KB,以图文教案形式呈现…

作者头像 李华