CANN/shmem 贡献指南 贡献指南【免费下载链接】shmemCANN SHMEM 是面向昇腾平台的多机多卡内存通信库基于OpenSHMEM 标准协议实现跨设备的高效内存访问与数据同步。项目地址: https://gitcode.com/cann/shmem本项目欢迎广大开发者体验并参与贡献在参与社区贡献之前。请参见cann-community了解行为准则进行CLA协议签署了解源码仓的贡献流程。开发者准备本地代码与提交PR时需要重点关注如下几点提交PR时请按照PR模板仔细填写本次PR的业务背景、目的、方案等信息。若您的修改不是简单的bug修复而是涉及到新增特性、新增接口、新增配置参数或者修改代码流程等请务必先通过Issue进行方案讨论以避免您的代码被拒绝合入。若您不确定本次修改是否可被归为“简单的bug修复”亦可通过提交Issue进行方案讨论。开发者贡献场景主要包括功能Bug修复如果您在本项目中发现了某些功能Bug希望对其进行修复欢迎您新建Issue进行反馈和跟踪处理。您可以按照提交Issue/处理Issue任务指引新建Bug-Report|缺陷反馈类Issue对Bug进行描述然后在评论框中输入“/assign”或“/assign yourself”将该Issue分配给您进行处理。功能优化如果您对本项目中某些功能或接口实现有泛化性增强/性能优化思路希望着手实现这些优化点欢迎您对此进行优化贡献。您可以按照提交Issue/处理Issue任务指引新建Requirement|需求建议类Issue对优化点进行说明并提供您的设计方案 然后在评论框中输入“/assign”或“/assign yourself”将该Issue分配给您进行跟踪优化。贡献新API如果您发现当前项目尚未支持的API并想对尚未支持的API进行开发实现欢迎您在Issue中提出新的想法和设计。您可以按照提交Issue/处理Issue任务指引新建Requirement|需求建议类Issue提供新增API说明和设计方案项目成员会与您进行沟通确认并为您的API提供一个合适的contrib目录分类您可以将新增API贡献到对应目录下。同时您需要在提交的Issue中评论“/assign”或“/assign yourself”认领该Issue并在后续完成新增API上库。文档纠错如果您在本项目中发现某些API文档描述错误欢迎您新建Issue进行反馈和修复。您可以按照提交Issue/处理Issue任务指引新建Documentation|文档反馈类Issue指出对应文档的问题然后在评论框中输入“/assign”或“/assign yourself”将该Issue分配给您纠正对应文档描述。帮助解决他人Issue如果社区中他人遇到的问题您有合适的解决方法欢迎您在Issue中发表评论交流帮助他人解决问题和痛点共同优化易用性。如果对应Issue需要进行代码修改您可以在Issue评论框中输入“/assign”或“/assign yourself”将该Issue分配给您跟踪协助解决问题。了解行为准则SHMEM属于CANN开放项目在参与贡献前请了解CANN开放项目行为准则后续您在SHMEM项目的活动包括但不限于发表评论、提交Issue、发表wiki等都请遵循此行为准则。签署CLA在参与项目贡献前您需要签署CANN开放项目贡献者许可协议CLA。请根据您的参与身份选择签署法人CLA、法人贡献者CLA、个人CLA 或企业管理员CLA请点击这里签署。法人CLA以企业身份参与贡献代表企业签署CLA一般由企业管理人员进行签署。法人贡献者CLA如果您属于签署了法人CLA的企业员工请申请签署法人贡献者CLA在申请页面选择您所属的企业申请后将由企业管理员进行审批审批完成即可参与贡献。个人CLA以非企业员工的个人身份参与贡献请签署个人CLA。企业管理员以企业管理员的身份参与贡献请签署企业管理员CLA企业管理员有权对签署法人贡献者CLA的申请进行审批和人员管理。参与贡献在签署了CLA协议之后就可以开始您的贡献之旅啦贡献的方式有很多种每一种贡献都将受到欢迎和重视。所有您发现的问题或想贡献的新想法都可以通过Issue进行反馈、讨论和跟踪并在后续贡献编码 PR 合入后关闭关联Issue。提示关于Gitcode工作流的详细操作可参见Gitcode工作流说明。当您在提交PR过程中遇到问题常见问题的解决方法可参见FAQs。贡献分类bug修复如果您在本仓库中发现了某些算子Bug并想对其进行修复欢迎您在仓库中新建Issue进行反馈和跟踪处理。您可以按照下方提交Issue/处理Issue任务指引新建Bug-Report|缺陷反馈类Issue对Bug进行描述 然后在评论框中输入“/assign”或“/assign yourself”将该Issue分配给您进行处理。性能优化如果您对本仓库中某些功能实现有泛化性增强/性能优化思路并想着手实现这些优化点欢迎您进行优化贡献。您可以按照下方提交Issue/处理Issue任务指引新建Requirement|需求建议类Issue对优化点进行说明并提供您的设计方案 然后在评论框中输入“/assign”或“/assign yourself”将该Issue分配给您进行跟踪优化。贡献新功能如果您有全新的算子想基于昇腾芯片进行设计实现欢迎您在Issue中提出新的想法和设计并与昇腾团队成员进行交流讨论。您可以按照下方提交Issue/处理Issue任务指引新建Requirement|需求建议类Issue提供您的新功能说明和设计方案 昇腾团队成员会与您进行沟通确认并为您的功能提供一个合适的contrib目录分类您可以将您的新功能贡献到对应分类目录下。同时您需要在提交的Issue中评论“/assign”或“/assign yourself”认领该Issue并在后续完成新功能上库。文档纠错如果您在仓库中发现某些文档描述错误欢迎您在仓库中新建Issue进行反馈和修复。您可以按照下方提交Issue/处理Issue任务指引新建Documentation|文档反馈类Issue指出对应文档中的问题 然后在评论框中输入“/assign”或“/assign yourself”将该Issue分配给您纠正对应文档描述。帮助解决他人Issue如果社区中他人遇到的问题您有合适的解决方法欢迎您在Issue中发表评论交流帮助他人解决问题和痛点共同优化易用性。如果对应Issue需要进行代码修改您可以在Issue评论框中输入“/assign”或“/assign yourself”将该Issue分配给您跟踪协助解决问题。提交Issue/处理Issue任务找到Issue列表在SHMEM项目Gitcode主页内点击“Issues”即可找到 Issue 列表。提交Issue如果您准备向社区上报Bug或者提交需求或者为社区贡献自己的意见或建议请提交Issue。提交Issue请参考 Issue 提交指南。参与Issue讨论每个Issue下面都支持开发者们交流讨论如果您感兴趣可以在评论区中发表自己的意见。找到愿意处理的Issue如果您愿意处理其中的一个 Issue可以将它分配给自己。只需要在评论框内输入“/assign”或 “/assign yourself”机器人就会将问题分配给您您的名字将显示在负责人列表里。贡献编码准备CANN开发环境如果您想参与编码贡献需要准备CANN开发环境请参考环境准备。了解SHMEM的开发注意事项1请参考安装指南了解编码贡献的一些环境和工具要求。2SHMEM软件编码遵循许可协议CANN Open Software License Agreement Version 2.0详细的协议说明请参见LICENSE文件如果您贡献代码到SHMEM源码仓请遵循此协议。请在新建的cpp、cc、h等源码文件头部增加如下声明/** * Copyright (c) [Name of the copyright owner]. 2025. 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 WARRANTIES 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) [Name of the copyright owner]. 2025. 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 WARRANTIES 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]替换为您的署名。如果您代表您的雇主贡献或者您的雇主拥有您贡献内容的版权请将第一行中的[Name of the copyright owner]替换为您的雇主的名称。如果您对于贡献内容的版权归属存在任何疑问请您咨询法律顾问或您雇主的法律团队。第一行中2025为您创建或修改该文件的年份请根据实际时间修改。代码下载与贡献流程(1) 进行代码开发前请先将需要SHMEM仓库fork到个人仓然后将个人仓下载到本地。并在本地分支进行代码修改。(2) 代码验证满足贡献要求后提交Pull-Request将代码贡献到SHMEM在Pull-Request列表可以找到提交的Pull-Request。(3) 在提交的Pull-Request的评论区评论compile触发编译。(4) 请注意查看门禁测试结果若未通过请根据问题提示进行本地代码修改若通过此PR会被分配给commiter检视请关注commiter的检视意见。(5) 当您的PR检视通过后代码会合入SHMEM源码仓。【免费下载链接】shmemCANN SHMEM 是面向昇腾平台的多机多卡内存通信库基于OpenSHMEM 标准协议实现跨设备的高效内存访问与数据同步。项目地址: https://gitcode.com/cann/shmem创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考