贡献指南

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

✍️ 如何签署 Ascend 社区贡献者许可协议(CLA)

在参与社区贡献前,您需要签署Ascend社区贡献者许可协议(CLA):

  • 个人贡献者:请选择「签署个人CLA」,填写好姓名和邮箱后提交申请即可。
  • 企业:请选择「签署法人CLA」,填写企业相关信息,提交申请后,企业将接收到社区发出的签署企业CLA的文件,请按照邮件中的提示完成后续签署。
  • 企业员工:请选择「法人贡献者登记」;签署后会收到主题为 “Signing CLA on project of xx” 的邮件,请联系邮件中的Corporation Managers进行审批。

开发者贡献

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

  • Bug修复

    如果您在本项目中发现了某些Bug,希望对其进行修复,欢迎您新建Issue进行反馈和跟踪处理。

    您可以新建Bug-Report|缺陷反馈类Issue对Bug进行描述,然后在评论框中输入“/assign”或“/assign @yourself”,将该Issue分配给您进行处理。

  • 贡献代码

    您可以新建Requirement|需求建议类Issue对新的样例算子予以说明,并提供您的设计方案,然后在评论框中输入“/assign”或“/assign @yourself”,将该Issue分配给您进行处理。

    对于您浏览的其他Issue:

    • 若该问题正是您要解决的,请在问题下评论说明您将负责处理。
    • 若问题已打开较久,解决前请先做预检查。
    • 若您解决了自己报告的问题,关闭前请简要说明处理结果。
  • 问题咨询

    如果您在本项目中的使用或者其他内容存在疑问,欢迎您新建Issue进行反馈和咨询。

    您可以通过新建Question|问题咨询类Issue提出自己的疑问。

  • 帮助解决他人Issue

    如果社区中他人遇到的问题您有合适的解决方法,欢迎您在Issue中发表评论交流,帮助他人解决问题和痛点,共同优化易用性。

    如果对应Issue需要进行代码修改,您可以在Issue评论框中输入 “/assign” 或 “/assign @yourself”,将该Issue分配给您,跟踪协助解决问题。

开发建议

代码风格

本代码仓采用LLVM社区通用的代码规范与编程风格,参见LLVM 编码规范。可使用以下工具进行代码风格检查:

提交 PR

  • GitCode上提出您的想法作为Issue。
  • 若新功能涉及较多设计细节,请同时提交设计方案。
  • 在问题讨论与设计方案审查达成共识后,再进行Fork开发并提交PR。
  • PR经充分讨论后,将根据讨论结果进行合并、拒绝或关闭。
  • PR合入需2位Reviewer评论/lgtm(Looks Good To Me)及1位Approver评论/approve;PR提交者本人无法执行合入操作。

Fork-Pull 开发模式

在向AscendNPU IR项目提交代码前,请先将项目Fork到您自己的仓库。后续在您Fork的仓库中进行开发,并通过Pull Request将变更合并到本项目。

代码更改自测

完成代码更改后,需在构建目录下编译并运行测试以验证功能:

ninja check-bishengir

代码推送验证

代码更新与测试通过后,将您的commit推送到您的远程仓库。

向主仓创建拉取请求

将代码推送到您的远程仓库后,在您的新分支与AscendNPU IR的master分支之间新建Pull Request。创建合并请求后,在PR中评论compile可触发CI构建流水线。建议尽快将PR合并到上游master,以降低合并冲突风险。

门禁异常处理

代码门禁异常主要包括以下几类,请根据CI提示信息逐项排查并修复。

  • 编译失败:根据提示检查编译失败原因,修复后重新编译。
  • 静态检查失败:根据提示定位并修复代码中的静态检查问题。
  • CI流水线未通过:根据提示定位未通过的测试用例并修复,然后重新触发CI。

注意事项

  • 避免在PR中引入与本次修改无关的变更。
  • 保持提交历史简洁、有序(可适当使用squash/rebase)。
  • 创建PR前,请将您的分支rebase到上游仓库最新master。
  • 若为错误修复类PR,请在描述中关联所有相关Issue与PR。