ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

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

2026/9/18 16:50:00 拓冰建站 浏览量
SiP (AscendSiPBoost) 社区贡献指南:从签署 CLA 到 Pull Request 合入的完整流程 SiP (AscendSiPBoost) 社区贡献指南从签署 CLA 到 Pull Request 合入的完整流程【免费下载链接】sip本项目是CANN提供的一款高效、可靠的高性能信号处理算子加速库基于华为Ascend AI处理器专门为信号处理领域而设计。项目地址: https://gitcode.com/cann/sip本文为 CANN 开放项目 SiPAscendSiPBoost基于华为 Ascend AI 处理器的信号处理算子加速库的官方贡献指南。读完本文你将掌握在 SiP 仓库中参与贡献的完整路径签署贡献者协议CLA、选择贡献方向算子 Bug 修复、算子优化、新算子开发、文档修正、协助他人排障、通过 Issue 认领任务、按许可证要求编写代码、以及通过 Fork Pull Request 模式走完“编译门禁 → 评审 → 合入”的全过程并能使用社区 Bot 命令解决 CLA 检查、CI 触发等常见卡点。一、贡献前置要求行为准则与 CLA1.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 --prettyfuller查询。commit 邮箱与 Gitcode 提交邮箱需保持一致详见 docs/zh/context/infra-faqs.md 第 1 节。二、五大贡献方向签署 CLA 后即可开始贡献所有贡献都欢迎且被重视。所有发现的问题和新想法都可以通过 Issue 报告、讨论和跟踪并在贡献代码的 Pull Request 合入后关闭关联 Issue。各贡献方向对应的 Issue 类型如下2.1 算子 Bug 修复Operator Bug Fix发现仓库中某些算子的 Bug 并希望修复时创建Bug-Report类型 Issue描述 Bug 现象在 Issue 评论区输入/assign或/assign 你的用户名将 Issue 指派给自己处理。2.2 算子优化Operator Optimization如果对仓库中某个算子实现有泛化增强或性能优化思路创建Requirement类型 Issue描述优化点并附上你的设计方案在评论区输入/assign或/assign 你的用户名认领该 Issue跟踪优化落地。2.3 贡献新算子Contributing New Operators如果你有全新的算子想基于 Ascend 芯片设计实现创建Requirement类型 Issue给出新算子描述和设计方案与 Ascend 团队成员讨论Ascend 团队成员会与你确认并为你的算子指定合适的目录类别如ops/base、ops/blas、ops/fft等仓库中的算子目录新算子需贡献到对应类别目录在已提交的 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 任务找到 Issue 列表在 SiP 项目的 Gitcode 主页点击 “Issues” 进入 Issue 列表提交 Issue报告 Bug、提出需求或提交意见/建议均通过提交 Issue 完成参与 Issue 讨论每个 Issue 均支持开发者讨论感兴趣可在评论区发表意见认领 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.0、pyyaml、gcc/g 7.3.0、cmake 3.16.0、pigz、dos2unix、numpy运行 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.shbuild.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 评审。完整流程如下Fork 并克隆仓库先 Fork SiP 仓库到你的个人仓库再下载到本地在本地分支上进行修改git clone https://gitcode.com/cann/sip.git提交 Pull Request代码验证满足贡献要求后向 SiP 提交 Pull Request可在 Pull-Request 列表中找到你提交的 PR触发编译在 PR 评论区评论compile触发编译流水线。编译通过后 PR 会被打上ci-pipeline-passed标签失败则打上ci-pipeline-failed标签关注门禁测试结果测试不通过时根据问题提示修改本地代码测试通过后 PR 会指派 committer 评审需关注 committer 的评审意见合入PR 评审通过后代码合入 SiP 源码仓库。六、常见卡点与社区 Bot 命令PR 过程中遇到卡点可参考 FAQs高频问题包括PR 出现cann-cla/no红色标签说明 PR 中部分 commit 的贡献者未签署 CLA。按身份选择个人/法人/法人贡献者登记签署签署审批通过后在 PR 评论区评论/check-cla重新触发检查通过后打上cann-cla/yes标签。commit 邮箱与 Gitcode 提交邮箱不一致时需先统一邮箱再签署详见 FAQ 第 1 节的处理表格个人账号下无法 Fork 仓库通常是因为个人账号下已存在同名仓库Gitcode 按“个人账号 仓库名”寻址不允许同名。解决方法是重命名个人账号下已有仓库后再次 ForkFAQ 第 2 节CI 未触发可能是网络或调度导致 webhook 未及时送达可在 PR 评论中输入/compile重新触发若是仓库刚创建后短时间内提交 PRJenkins 侧尚未创建 CI 构建工程评论/compile也不生效需等待系统自动构建工程FAQ 第 7 节保护分支与非保护分支保护分支可设置特定角色/成员的推送与合并权限非保护分支不支持FAQ 第 3 节直接 push 会缺少必要审核环节仅适用于超大文件等少数场景常规贡献应使用/lgtm、/approve评审合入FAQ 第 5 节。社区仓库评论区支持的 Bot 命令一览详见 docs/zh/context/infra-command.md命令作用面向对象/check-cla强制重新检查 PR 的 CLA 状态添加cann-cla/yes或cann-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贡献 FAQdocs/zh/context/infra-faqs.mdBot 命令一览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),仅供参考