集合通信库(Huawei Collective Communication Library,简称HCCL)是基于昇腾AI处理器的高性能集合通信库,为计算集群提供高性能、高可靠的通信方案
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
[feat]检视skill新增Markdown文档检视规则(写作规范+接口文档准确性) Co-authored-by: yanzhenghang<625612333@qq.com> # message auto-generated for no-merge-commit merge: !3191 merge feat/review-skill-md-rules into master [feat]检视skill新增Markdown文档检视规则(写作规范+接口文档准确性) Created-by: yanzhenghang Commit-by: yanzhenghang Merged-by: cann-robot Description: ## 描述 为仓内检视 skill 扩展 Markdown 文档检视能力。规则基线参考 [cann/docs 仓 skills/md-review-skill](https://gitcode.com/cann/docs/tree/master/skills/md-review-skill),按本仓实际适配。 新增两份检视规范文档并接入既有检视流程: | 文件 | 内容 | |------|------| | references/markdown-writing.md | Markdown 写作规范:文件命名/标题/字体/图片/代码块/列表/注释/链接/锚点/表格/标点/目录结构/内容要求/贡献合规 14 类 + 语言通顺、敏感词、术语规范(文件编码与双语配对由 CI 门禁把守,不设重复规则) | | references/markdown-api-accuracy.md | 接口文档准确性:原型与头文件一致性(PH-01~07)、参数解释准确性(PA-01~09)、代码样例正确性(CC-01~04),核对基准 git show <head_sha>:<头文件> | 另修改 SKILL.md(检视维度补"文档质量"、资料表加两行)与 references/README.md(索引七类、加两行)。 **适配说明**:目录结构类规则按本仓 docs/zh 布局与 *_en.md 同目录双语配对惯例改写;pr_review.py 与测试零改动,MD 检视意见复用现有 findings schema(rule_id 嵌 dimension 字段,如 文档规范[HD-05]),行号验证、按行提交、去重、报告全链路复用。触发条件:PR diff 含任意 .md 变更加载写作规范;触碰 docs/zh/api_ref/ 或文档涉及 include/ 对外接口原型时加载接口准确性规范。 **审计修复**(追加 commit 4c497b360):DS-02 按 check-pr 豁免名单实态改写(名单以共享仓 cann/.gitcode 的 repo_md_files.yaml 为准,当前豁免 docs/zh/api_ref、docs/zh/user_guide、docs/zh/architecture、.agents/、AGENTS.md,环境变量文档所在 user_guide 属豁免区);FN-02 补 API 文档 PascalCase(如 HcclAllReduce.md)、环境变量文档 UPPER_SNAKE_CASE(如 HCCL_ALGO.md)例外(根 AGENTS.md 第 6 节);补 AN-03/DS-06/DS-07 三条对齐基线编号;SKILL.md "五类"→"七类" 与 references/README.md 对齐、触发条件补"对外"。 ## 变更类型 - [x] 新特性 ## 关联的Issue NA ## 测试 1. 规则文档自洽自检:新增两份 md 无 BOM(EC-01)、标题逐级递增(HD-05)、规则编号(PH 7 条/PA 9 条/CC 4 条 + 15 类写作规范)与 CANN docs 基线逐一对照;追加 commit 按 skill-creator 方法论审计后修复 7 项一致性/完整性问题(DS-02 豁免名单实态、FN-02 仓内命名例外、补 AN-03/DS-06/DS-07 对齐基线编号等),修复后再次逐条自检通过;再追加 commit a0145b16e 处置检视意见:删除与 CI 门禁重复的 DS-02(双语,check-pr)与 EC-01(编码,staticcheck encoding_format_checker)规则,规则数 15→14 类;补 commit 28f830f03 清理节标题(目录结构与双语→目录结构)的删除残留 2. 样例缺陷文档(含标题手工序号 HD-06/夸大宣传 CP-04/原型与头文件不一致 PH-01 三类缺陷)按规则逐项核对全部命中 3. 既有 42 个单测不受影响(本次零脚本改动,不触碰 scripts/) ## 文档更新 本 PR 即检视 skill 文档扩展。 ## 合入检查 - [x] 已经详细阅读了贡献指南(CONTRIBUTING.md) - [x] 标题中使用了合适的类型标签([feat]) - [x] 纯新增/修改 .agents/ 下 md 文档,不触碰 src/include/scripts,无代码变更 See merge request: cann/hccl!3191 | 11 天前 | |
fix compile阶段上传产物 Co-authored-by: cui_jiahao<cuijiahao5@h-partners.com> # message auto-generated for no-merge-commit merge: !2992 merge master into master fix compile阶段上传产物 Created-by: cui_jiahao Commit-by: cui_jiahao Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR不涉及Issue,可填写"NA"。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于构造对应xx测试用例、二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/hccl!2992 | 25 天前 | |
fixing experimental option and ReduceScatter BIRS Co-authored-by: Davydov_Danil<davydov.danil1@huawei.com> # message auto-generated for no-merge-commit merge: !2185 merge ReduceScatterBIRS_fix into master fixing experimental option and ReduceScatter BIRS Created-by: Davydov_Danil Commit-by: Davydov_Danil Merged-by: cann-robot Description: ## Description Fixes: - build.sh 的 build_device() 未转发 ENABLE_EXPERIMENTAL,导致 experimental BIRS 执行器未编入 device 库,运行时 ReduceScatter 失败 - ReduceScatter BIRS 多层忽略通信返回值导致失败后仍继续执行 Build-system changes required for the first fix: - Third-party dependency pin bump: cann-cmake master-044 -> master-051 in cmake/fetch_cann_cmake.cmake (URL_HASH 2d8827b3... -> f50ea0bf...). Reason: only master-051's add_cann_device_project supports extra-argument passthrough (cmake_parse_arguments(CANN "" "" "EXT_ARGS" ${ARGN}) + list(APPEND EP_CMAKE_ARGS ${CANN_EXT_ARGS}) in function/prepare.cmake); master-044 has no EXT_ARGS. This is the prerequisite for CMakeLists.txt: add_cann_device_project(hccl EXT_ARGS -D ENABLE_EXPERIMENTAL=${ENABLE_EXPERIMENTAL}), i.e. the flag reaches the device ExternalProject without keeping an in-repo override copy of add_cann_device_project. Pin verified: SHA256 of https://raw.gitcode.com/cann/cmake/archive/refs/heads/master-051.tar.gz == f50ea0bf7f80ce9e664f26693252aee8d2a42438a80bc2cd335741dc4b3b834f. 044 -> 051 side effects reviewed (new __cann_check_build_env() gate: gcc >= 7.3.0 + python3; convert_dependencies_to_package_formats renamed to a private __cann_ helper; device EP no longer forwards -D VERSION_INFO): hccl does not call the renamed function, and cmake/device/CMakeLists.txt includes version.cmake directly, so host and device builds are unaffected. - cmake/device/CMakeLists.txt: added option(ENABLE_EXPERIMENTAL "Enable experimental features" OFF) so the standalone device project accepts the forwarded flag and gates add_subdirectory(experimental/ops). - Removed the now-redundant if(NOT ENABLE_EXPERIMENTAL) return() guards from 6 leaf CMakeLists under experimental/ops (op_common, op_common/template, op_common/topo, reduce_scatter, reduce_scatter/birs, reduce_scatter/birs/template), per review. Gating stays single-sourced: the guard in experimental/ops/CMakeLists.txt plus the two add_subdirectory call sites (root CMakeLists.txt for host, cmake/device/CMakeLists.txt for device); leaf target_sources(hccl ...) remains protected by if(TARGET hccl), so the device build (no hccl target) is unaffected. - experimental/ops/all_reduce/example: GetAlgNetMeta() signature adapted to the current base-class interface (added const OpParam& param). ## Related Issue https://gitcode.com/cann/hccl/issues/324 https://gitcode.com/cann/hccl/issues/380 ## Testing Testing with the hccl-checker tool via ST tests "/test/st/algorithm/testcase/reduce_scatter_testcase_a3.cc" Single-node: ReduceScatterBirs was deployed on one Atlas A3 node with RankSize set between 4 and 16. Example of ReduceScatterBIRS output from hccl_test for RankSize 16:  ## Documentation Update <!-- If this PR includes documentation updates, indicate them here. For example: Updated the README.md file. --> - docs/zh/build/build.md and docs/en/build/build.md: third-party software table, cann-cmake row master-044 -> master-051. Download source switched from the cann-3rd OBS bucket (cmake-master-051.tar.gz is not published there — HTTP 403) to the raw.gitcode.com archive, whose SHA256 matches the pin declared in cmake/fetch_cann_cmake.cmake. ## Type Label <!-- [x] to select --> - [x] Bug fix - [ ] New feature - [ ] Performance optimization - [ ] Documentation update - [ ] Other, please describe: See merge request: cann/hccl!2185 | 17 天前 | |
[docs] 修正文档术语、标点与命令格式 Co-authored-by: pqm12345<puqingming@h-partners.com> # message auto-generated for no-merge-commit merge: !3389 merge fix/pr3355-07-doc-wording into master [docs] 修正文档术语、标点与命令格式 Created-by: pqm12345 Commit-by: pqm12345 Merged-by: cann-robot Description: ## 描述 修正文档术语、标点、空格、命令格式及RFC英文语法。保留master已重写的HCCL_ALGO配置说明,仅修正仍存在的“平方根复杂度”表述。中文架构的AlltoAllV和Notify文字修正同步到master新增的英文文档;build和RFC修改保持中英文配对。图片文件名已正常,保留原文件。 从[原PR #3355](https://gitcode.com/cann/hccl/pull/3355)按缺陷类别拆出。本PR对应《HCCL 代码与文档缺陷清单.xlsx》的“文档错别字”,来源行号:10、18、19、24–32、40、41、44;第31行无需修改(第1行为表头)。共21个文件,基于master 3951cec7a063。 ## 关联的Issue 关联 #776。本PR处理上述子集,其余问题由同批拆分PR处理。 ## 测试 - git diff --check通过。 - 拆分覆盖校验通过:原PR的247个文件、670处差异完整重建;上游已修复部分不重复修改,另同步一份新增英文架构文档。七组在最新master上可以无冲突组合。 - 本PR独立面向master,与其他拆分PR无堆叠依赖,可分别检视。 - 修改文档UTF-8无BOM、代码围栏及新增本地链接检查通过;双语门禁以本PR远端CI结果为准。 - 本机为Windows,缺少Linux/CANN构建环境,未运行完整编译、UT/ST或设备测试;提交后由远端CI验证。 ## 文档更新 涉及21份Markdown文档,范围见描述。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## 合入检查 - [x] 改动按类别拆分,关联原PR及Issue。 - [x] 完成本地静态检查及拆分完整性校验。 - [ ] 远端CI与维护者检视通过后合入。 See merge request: cann/hccl!3389 | 6 天前 | |
【2026 HCCL通信库创新大赛-东北赛区】【这是什么地方汪汪汪汪汪汪】修复 BatchSendRecv Ring 示例 help 文本引号未闭合问题 Co-authored-by: hlw246<3171863855@qq.com> # message auto-generated for no-merge-commit merge: !2918 merge fix/issue-679-batch-send-recv-help into master 【2026 HCCL通信库创新大赛-东北赛区】【这是什么地方汪汪汪汪汪汪】修复 BatchSendRecv Ring 示例 help 文本引号未闭合问题 Created-by: hlw246 Commit-by: hlw246 Merged-by: cann-robot Description: ## 描述 修复 BatchSendRecv Ring 示例 Makefile 中 help target 的字符串引号未闭合问题。 原代码中的说明文本缺少结束双引号: @echo "This example shows how to use HcclBatchSendRecv() for 导致执行 make help 时 shell 报 Unterminated quoted string。 本 PR 仅补充缺失的结束双引号,不修改示例构建、运行或通信逻辑。 本次修改位于 examples/ 目录,仅影响 BatchSendRecv Ring 示例的 help 信息输出。 ## 关联的Issue fixes #679 ## 测试 修改前执行: make ASCEND_HOME_PATH=/tmp help 结果: - exit code:2 - shell 报错:Unterminated quoted string 修改后执行相同命令: make ASCEND_HOME_PATH=/tmp help 结果: - exit code:0 - BatchSendRecv 说明及全部 help targets 正常输出 - 不再出现 shell 引号解析错误 其他检查: - make -n help:PASS - git diff --check:PASS - pre-commit clang-format:PASS - OAT Compliance Check:PASS 本次仅修改 Makefile help 文本,不涉及 HCCL 编译、NPU 或通信运行路径,因此未执行设备侧测试。 ## 文档更新 无独立文档更新。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/hccl!2918 | 5 天前 | |
[fix]all_reduce example添加 IsExampleEnabled() 守卫并补充绕过CMS验证方法 Co-authored-by: chenyizhuo<chenyizhuo8@huawei.com> # message auto-generated for no-merge-commit merge: !3407 merge master into master [fix]all_reduce example添加 IsExampleEnabled() 守卫并补充绕过CMS验证方法 Created-by: chenyizhuo Commit-by: chenyizhuo Merged-by: cann-robot Description: ## 描述 当前自编包无法通过CMS验证,因此在文档中加入了使用npu-smi工具绕过CMS验签的方法。 experimental目录要求实验特性加入 IsExampleEnabled() 守卫,因此本次修改加入了该函数。 ## 关联的Issue [issue#784](https://gitcode.com/cann/hccl/issues/784) ## 测试 本地checker测试通过。 ## 文档更新 更新了hccl/experimental/ops/all_reduce/example/README.md及hccl/experimental/ops/all_reduce/example/README_en.md。添加了 IsExampleEnabled() 相关的说明及绕过CMS验证的方法。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/hccl!3407 | 6 天前 | |
docs: 补全14个算子接口文档返回值错误码、并发约束及AllGatherV/ReduceScatterV调用示例 Co-authored-by: Leewis<liwei945@huawei.com> # message auto-generated for no-merge-commit merge: !2892 merge docs/api-return-concurrency-examples into master docs: 补全14个算子接口文档返回值错误码、并发约束及AllGatherV/ReduceScatterV调用示例 Created-by: Leewis Commit-by: Leewis Merged-by: cann-robot Description: ## 描述 本 PR 对 HCCL 对外接口文档与头文件进行以下修改,覆盖 hccl_api_problems.md 中的 C1/C2/D1/B2/A2 问题项,Issue #673、Issue #670 的文档修复,扩展排查修复故障诊断目录其余故障码错配问题,并根据检视意见修正错误码表格与头文件注释。 ### 1. C1:14 个算子文档页返回值补全错误码列举 将 14 个算子文档页的 ## 返回值 节由泛指一句改为错误码表格,列举 HCCL_SUCCESS/HCCL_E_PTR/HCCL_E_PARA/HCCL_E_NOT_SUPPORT/HCCL_E_INTERNAL 及其触发条件。 ### 2. C2:HcclBatchSendRecv 头文件补 [@return](https://gitcode.com/return) 行 include/hccl.h 中 HcclBatchSendRecv 注释块缺失 @return HcclResult 行,现已补全。 ### 3. D1:14 个算子文档页补充并发约束 在每个算子文档页的 ## 约束说明 节末尾追加并发约束说明。 ### 4. B2:AllGatherV/ReduceScatterV 补调用示例 两个文档页补全 ## 调用示例 节。 ### 5. A2:头文件数据类型/操作类型列举统一改为指向接口文档 将 include/hccl.h 中 13 个算子的 @param 注释里具体列举的数据类型和操作类型(共 20 处)统一替换为指向接口文档的说明。 ### 6. Issue #673:constraints.md 默认展开模式描述不一致 constraints.md 中 950 段默认展开模式由 AI_CPU(默认值) 更正为 AICPU_TS(默认值)。 ### 7. Issue #670:故障码显示文本与链接文件名不一致 fault_diagnosis/ 下 4 处 (EI0003) 与 *_EI0019.md 不一致,更正为 (EI0019)。同时删除 README 中"定位思路(EI0002)"多余的 EI0002 标注。 ### 8. 扩展排查:故障诊断目录其余故障码错配 全量排查 fault_diagnosis/ 目录,发现另有 4 处显示文本与链接文件名不一致,一并更正: - rank_table device_ip 字段校验失败:显示 (EI0004) → 更正为 (EI0014)(2 处) - TLS 信息配置不一致:显示 (EI0014) → 更正为 (EI0016)(2 处) ### 9. 根据检视意见修正 根据检视人 yanzhenghang 的检视意见,修正 5 处错误码表格与头文件注释: - **ReduceScatterV**:HCCL_E_PTR 行移除 sendBuf,改为条件表述(实现不校验 sendBuf) - **BatchSendRecv**:补充 HCCL_E_PARA 行(实现中 CheckCount 和 HcomCheckUserRank 返回该码) - **AllGatherV**:HCCL_E_PTR 行改为条件表述(sendBuf 仅 sendCount>0 时校验,recvBuf 仅 recvCounts 非全 0 时校验) - **Scatter**:HCCL_E_PTR 行移除 stream(新路径 CheckScatterInputPara 不校验 stream) - **hccl.h**:destRank/srcRank 补 (u32) 宽度标注,与同文件 root 参数风格一致 ## 关联的Issue - #673 - #670 - #691 - #671 - #672 ## 测试 - clang-format: Passed - OAT: 无新增问题 - GitCode 远端 Hooks: PASSED ## 文档更新 本次 PR 仅涉及文档与头文件注释修改,不涉及代码逻辑变更。 ## 涉及文件清单 | 文件 | 修改内容 | |---|---| | include/hccl.h | C2 补 [@return](https://gitcode.com/return) 行 + A2 数据类型列举改为指向文档(20 处)+ 检视意见: destRank/srcRank 补 (u32) | | docs/zh/api_ref/comm_op_interface/HcclAllReduce.md | C1 + D1 | | docs/zh/api_ref/comm_op_interface/HcclBroadcast.md | C1 + D1 | | docs/zh/api_ref/comm_op_interface/HcclReduce.md | C1 + D1 | | docs/zh/api_ref/comm_op_interface/HcclAllGather.md | C1 + D1 | | docs/zh/api_ref/comm_op_interface/HcclAllGatherV.md | C1 + D1 + B2 + 检视意见: HCCL_E_PTR 条件表述 | | docs/zh/api_ref/comm_op_interface/HcclReduceScatter.md | C1 + D1 | | docs/zh/api_ref/comm_op_interface/HcclReduceScatterV.md | C1 + D1 + B2 + 检视意见: HCCL_E_PTR 条件表述 | | docs/zh/api_ref/comm_op_interface/HcclScatter.md | C1 + D1 + 检视意见: HCCL_E_PTR 移除 stream | | docs/zh/api_ref/comm_op_interface/HcclAlltoAll.md | C1 + D1 | | docs/zh/api_ref/comm_op_interface/HcclAlltoAllV.md | C1 + D1 | | docs/zh/api_ref/comm_op_interface/HcclAlltoAllVC.md | C1 + D1 | | docs/zh/api_ref/comm_op_interface/HcclSend.md | C1 + D1 | | docs/zh/api_ref/comm_op_interface/HcclRecv.md | C1 + D1 | | docs/zh/api_ref/comm_op_interface/HcclBatchSendRecv.md | C1 + D1 + 检视意见: 补 HCCL_E_PARA 行 | | docs/zh/user_guide/constraints.md | Issue #673 | | docs/zh/user_guide/fault_diagnosis/README.md | Issue #670 + 扩展排查 + 删除 EI0002 | | docs/zh/user_guide/fault_diagnosis/_dump_cluster_info_nego.md | Issue #670 | | docs/zh/user_guide/fault_diagnosis/_dump_param_link_stage.md | Issue #670 | | docs/zh/user_guide/fault_diagnosis/_dump_rank_table_load_fail.md | 扩展排查 | | docs/zh/user_guide/fault_diagnosis/_dump_cluster_info_verify_fail.md | 扩展排查 | See merge request: cann/hccl!2892 | 26 天前 | |
统一配置hccl安装目录及文件权限规范 Co-authored-by: q00889097<qinhan10@huawei.com> # message auto-generated for no-merge-commit merge: !3007 merge master into master 统一配置hccl安装目录及文件权限规范 Created-by: qinhan123 Commit-by: q00889097 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 该 PR 聚焦于统一 hccl 安装目录及文件权限规范:将原本散落在各安装脚本中的 chmod 权限设置逻辑移除,使权限管理统一收敛;同时升级 cann-cmake 依赖版本。核心改动集中在 install.sh 的 chmod_end 与 update_version_info_version 中删除对 python、site-packages/hccl、ascend_install.info、version.info、scene.info、script 等路径的 chmod 权限设置(chmod_end 仅保留 chown 属主设置),并删除 hccl_custom_create_softlink.sh 的 python_dir_chmod_set 及 hccl_custom_install.sh 中 install_es_whl 的 chmod -R 755 调用。此外,install.sh 中存在大量行尾空白字符清理(无业务影响的格式变更)。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR不涉及Issue,可填写"NA"。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于构造对应xx测试用例、二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [x] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/hccl!3007 | 24 天前 | |
[fix] 统一日志文案与内部标识符拼写 Co-authored-by: pqm12345<puqingming@h-partners.com> # message auto-generated for no-merge-commit merge: !3387 merge fix/pr3355-05-log-wording into master [fix] 统一日志文案与内部标识符拼写 Created-by: pqm12345 Commit-by: pqm12345 Merged-by: cann-robot Description: ## 描述 修正日志与注释中的语法、算子名称、OmniPipe/SendRecv/in-place及Algo match空格,统一MultiJetty、Scratch、original等内部标识符拼写,并同步相关声明、实现和引用。 AlltoAll、AlltoAllV、AlltoAllVC选择器遵循仓库标准,保持中间的t小写,日志前缀及本PR修改的注释使用相同写法。公开API、枚举和算法配置键保持原状。 ## 关联的Issue 关联 #776。本PR为 #3355 拆分的日志文案与内部标识符拼写修正,其余问题由同批拆分PR处理。 ## 测试 - clang-format 18.1.8:本PR的63个源码文件通过 --dry-run --Werror。 - git diff --check通过。 - 三个AlltoAll选择器的类声明、13个成员函数实现及注册引用一致,无旧大写T选择器引用残留。 - 本次检视修正的12个文件仅调整AlltoAll大小写,其中6个文件仅修改注释;整个PR新增行不再引入AllToAll写法。 - 已验证可无冲突合入当前master;保留master新增的Layer1非对称拓扑GCD拆分逻辑及算法选择逻辑。 - 本PR独立面向master,与其他拆分PR无堆叠依赖,可分别检视。 - 本机为Windows,缺少Linux/CANN构建环境,未运行完整编译、UT/ST或设备测试;推送后重新触发远端CI验证。 ## 文档更新 本PR不涉及文档文件。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## 合入检查 - [x] 改动按类别拆分,关联原PR及Issue。 - [x] 完成本地格式、引用一致性检查及检视意见修正。 - [ ] 远端CI与维护者检视通过后合入。 See merge request: cann/hccl!3387 | 6 天前 | |
fix HCCL_ALGO parse bug Co-authored-by: clause<wanglichang3@huawei.com> # message auto-generated for no-merge-commit merge: !3392 merge hcclAlgoMaster2 into master fix HCCL_ALGO parse bug Created-by: clause Commit-by: clause Merged-by: cann-robot Description: ## 描述 Send & Recv算子处理逻辑不一致,netgative场景未跳过对Send&Recv算子costtable值的修改,修复逻辑不改动Send &Recv相关算子的值,与其他部分处理逻辑一致; ## 关联的Issue https://gitcode.com/cann/hccl/issues/742 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于构造对应xx测试用例、二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/hccl!3392 | 6 天前 | |
[build] License Header Co-authored-by: ouyangcaike<ouyangcaike@h-partners.com> # message auto-generated for no-merge-commit merge: !2558 merge build/oat into master [build] License Header Created-by: ouyangcaike Commit-by: ouyangcaike Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 1. 全仓C/C++、Python、Shell文件规范头部License的使用 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR不涉及Issue,可填写"NA"。--> NA ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于构造对应xx测试用例、二级冒烟、算子泛化等。--> NA ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> NA ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:工程 See merge request: cann/hccl!2558 | 1 个月前 | |
[build] unified encoding, line breaks, and license header format Co-authored-by: ouyangcaike<ouyangcaike@h-partners.com> # message auto-generated for no-merge-commit merge: !2756 merge build/format into master [build] unified encoding, line breaks, and license header format Created-by: ouyangcaike Commit-by: ouyangcaike Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 1. 文本编码格式统一为 UTF-8 2. 所有文本换行符 CRLF 转为 LF,并在 .gitattributes 添加相应规则 3. OAT 检查涉及额外文件补充 license 头,并在 OAT.xml 更新规则 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR不涉及Issue,可填写"NA"。--> NA ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于构造对应xx测试用例、二级冒烟、算子泛化等。--> NA ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> NA ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:工程 See merge request: cann/hccl!2756 | 1 个月前 | |
[build] OAT Check Co-authored-by: ouyangcaike<ouyangcaike@h-partners.com> # message auto-generated for no-merge-commit merge: !2950 merge build/pre-commit into master [build] OAT Check Created-by: ouyangcaike Commit-by: ouyangcaike Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 1. 更新 OAT 检查脚本,并统一当前代码中 License 格式问题 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR不涉及Issue,可填写"NA"。--> NA ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于构造对应xx测试用例、二级冒烟、算子泛化等。--> 1. 编译通过 2. 全量拦截通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> NA ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:工程 See merge request: cann/hccl!2950 | 26 天前 | |
[feat]新增仓内AI贡献流程skill(.agents/skills/hccl-contribute) Co-authored-by: yanzhenghang<625612333@qq.com> # message auto-generated for no-merge-commit merge: !2824 merge feat/agents-contribute-skill into master [feat]新增仓内AI贡献流程skill(.agents/skills/hccl-contribute) Created-by: yanzhenghang Commit-by: yanzhenghang Merged-by: cann-robot Description: ## 描述 为贡献者(AI Agent 或人工)提供仓内标准的贡献流程工作流。关联需求见 Issue #669。 新增 .agents/skills/hccl-contribute/(贡献流程 skill,与已合入的 hccl-review 检视 skill 配对): | 文件 | 内容 | |------|------| | SKILL.md | 贡献流程八步(代码获取与更新→依赖环境确认→本地构建与测试→Issue 查重创建→PR 创建提交并自动触发 CI→CI 监控→CI 失败修复→检视意见处置)+ 清理;每个子流程可独立运行;首次配置引导与执行纪律 | | references/README.md | 参考文档索引(按场景加载) | | references/gitcode-api.md | GitCode API 端点、认证、PR/Issue 创建语义、CI 标签流转与 saw_running 终态判定、错误码与已验证行为规律 | | references/ci-triage.md | CI 失败诊断:常见失败模式表、codecheck G.* 规则与修复模式清单、已知非阻塞判定 | | scripts/contribute.py | 贡献辅助脚本(Python 3.7+ 纯标准库):环境校验 / 仓库同步(clone、fetch、脏工作区自动 worktree 隔离)/ Issue 查重与创建(标题关键词匹配,已有复用)/ PR 提交(git 身份校验 + push fork + 创建或复用 PR + 自动评论 /compile + GET 回查)/ CI 状态轮询(saw_running 状态机防旧标签误判)/ CI 失败日志获取(OBS 直链免登录)/ 未处理检视意见列表 / worktree 与临时文件清理 | | scripts/test_contribute.py | 单元测试(55 用例,mock git 仓 + mock API,无网络依赖) | | .agents/README.md | 仓内两个 AI skill(contribute/review)的简介与使用指引 | 另:根 AGENTS.md 末尾新增一行——贡献链路操作使用本 skill,本地构建与测试命令以 AGENTS.md 第 4 节与 build.md 为准。 **设计原则**:SKILL.md 只固化通用工作流;构建命令、依赖版本、编码规范不复制进 skill,从仓内 AGENTS.md 与 docs/zh/build/build.md 动态获取(规范演进自动跟随,无双源漂移)。与 hccl-review skill 分工互补:review 管检视,contribute 管贡献链路;检视意见修复后的线程回复复用 review skill 的 --dispose。 ## 变更类型 - [x] ✨ 新特性 ## 关联的Issue #807 ## 测试 已完成的测试用例和场景: 1. 单元测试 54 用例双平台全绿:Windows(Python 3.14)与 WSL Ubuntu(Python 3.10),运行方式 python3 -m unittest test_contribute,无网络依赖(mock git 仓 + mock API,覆盖仓库同步三态、Issue 查重命中/未命中、PR 创建/422 复用、CI 状态机含 stale 标签防误判、检视意见列表、翻页防护、环境校验) 2. 真实只读验证:--check-env(token/remote/身份全通过)、--ci-status(真实 PR 标签与 GitCode 页面一致)、--list-review-comments(真实 PR 14 条未处理检视意见正确识别,含文件路径与行号) 3. **本 PR 自身作为 dogfooding 实测**:Issue #669 由本 skill --issue-ensure 创建(自动查重无重复 + 自动加 [Requirement|需求建议]: 前缀);重复运行验证查重复用生效;本 PR 由本 skill --submit-pr 提交(push fork + PR 创建 + 自动 /compile 触发 + GET 回查全链路) 4. 检视意见修复轮(skill 深度自检 10/11 条实证意见全部修复:sync 二次运行/本地提交保护/v5 单条接口补路径/fork 绑定 token 账号/stale 退出/issue 自动关联/force-with-lease 设防等),测试增至 54 用例 5. 按需配置改进:纯 clone 用户(不提交 PR)免 token(check-env 降 WARN);AGENTS.md 索引移入贡献流程章节;ci-triage 扩充 C++ 场景失败模式 6. 环境坑指引轮:Step 2/3 补充实测环境坑(UT 的 aicpu 前置须 --pkg --full 并安装 CANN、rootinfo 残留排查、WSL source 姿势、CANN 符号落后判别),ci-triage 新增「环境坑」节;本地构建/UT/ST 实测验证 6. 一轮 CI codecheck 失败(8 条告警:G.ERR.09 父子异常同捕 / G.CLS.06 方法排列 ×4 / G.FMT.03 空行 ×3)已全部修复,修复模式同步沉淀进 references/ci-triage.md;修复后单测双平台回归全绿 5. CI ci-pipeline-passed 补充的UT用例: scripts/test_contribute.py(54 用例:URL 归一化 / remote 探测 / 布局探测 / sync-repo 三态 / Issue 关键词与查重 / submit-pr 全链路与 422 复用与拒绝条件 / CI 状态机 7 态 / 流水线链接解析 / OBS 日志下载与 404 容忍 / 检视意见列表与过滤 / cleanup / token 优先级 / 翻页防护 5 例) ## 文档更新 本 PR 即文档与工具新增;另修改根 AGENTS.md 新增一行贡献流程 skill 索引。 ## 合入检查 - [x] 🧐 已经详细阅读了贡献指南(CONTRIBUTING.md) - [x] 🏷️ 标题中使用了合适的类型标签([feat]) - [x] 📄 代码修改内容已简要描述 - [x] 🛠️ 纯新增 .agents/ 下文档与 python 脚本 + AGENTS.md 一行索引,不触碰 src/include/pkg_inc,无 C++ 代码变更 See merge request: cann/hccl!2824 | 1 个月前 | |
fixing experimental option and ReduceScatter BIRS Co-authored-by: Davydov_Danil<davydov.danil1@huawei.com> # message auto-generated for no-merge-commit merge: !2185 merge ReduceScatterBIRS_fix into master fixing experimental option and ReduceScatter BIRS Created-by: Davydov_Danil Commit-by: Davydov_Danil Merged-by: cann-robot Description: ## Description Fixes: - build.sh 的 build_device() 未转发 ENABLE_EXPERIMENTAL,导致 experimental BIRS 执行器未编入 device 库,运行时 ReduceScatter 失败 - ReduceScatter BIRS 多层忽略通信返回值导致失败后仍继续执行 Build-system changes required for the first fix: - Third-party dependency pin bump: cann-cmake master-044 -> master-051 in cmake/fetch_cann_cmake.cmake (URL_HASH 2d8827b3... -> f50ea0bf...). Reason: only master-051's add_cann_device_project supports extra-argument passthrough (cmake_parse_arguments(CANN "" "" "EXT_ARGS" ${ARGN}) + list(APPEND EP_CMAKE_ARGS ${CANN_EXT_ARGS}) in function/prepare.cmake); master-044 has no EXT_ARGS. This is the prerequisite for CMakeLists.txt: add_cann_device_project(hccl EXT_ARGS -D ENABLE_EXPERIMENTAL=${ENABLE_EXPERIMENTAL}), i.e. the flag reaches the device ExternalProject without keeping an in-repo override copy of add_cann_device_project. Pin verified: SHA256 of https://raw.gitcode.com/cann/cmake/archive/refs/heads/master-051.tar.gz == f50ea0bf7f80ce9e664f26693252aee8d2a42438a80bc2cd335741dc4b3b834f. 044 -> 051 side effects reviewed (new __cann_check_build_env() gate: gcc >= 7.3.0 + python3; convert_dependencies_to_package_formats renamed to a private __cann_ helper; device EP no longer forwards -D VERSION_INFO): hccl does not call the renamed function, and cmake/device/CMakeLists.txt includes version.cmake directly, so host and device builds are unaffected. - cmake/device/CMakeLists.txt: added option(ENABLE_EXPERIMENTAL "Enable experimental features" OFF) so the standalone device project accepts the forwarded flag and gates add_subdirectory(experimental/ops). - Removed the now-redundant if(NOT ENABLE_EXPERIMENTAL) return() guards from 6 leaf CMakeLists under experimental/ops (op_common, op_common/template, op_common/topo, reduce_scatter, reduce_scatter/birs, reduce_scatter/birs/template), per review. Gating stays single-sourced: the guard in experimental/ops/CMakeLists.txt plus the two add_subdirectory call sites (root CMakeLists.txt for host, cmake/device/CMakeLists.txt for device); leaf target_sources(hccl ...) remains protected by if(TARGET hccl), so the device build (no hccl target) is unaffected. - experimental/ops/all_reduce/example: GetAlgNetMeta() signature adapted to the current base-class interface (added const OpParam& param). ## Related Issue https://gitcode.com/cann/hccl/issues/324 https://gitcode.com/cann/hccl/issues/380 ## Testing Testing with the hccl-checker tool via ST tests "/test/st/algorithm/testcase/reduce_scatter_testcase_a3.cc" Single-node: ReduceScatterBirs was deployed on one Atlas A3 node with RankSize set between 4 and 16. Example of ReduceScatterBIRS output from hccl_test for RankSize 16:  ## Documentation Update <!-- If this PR includes documentation updates, indicate them here. For example: Updated the README.md file. --> - docs/zh/build/build.md and docs/en/build/build.md: third-party software table, cann-cmake row master-044 -> master-051. Download source switched from the cann-3rd OBS bucket (cmake-master-051.tar.gz is not published there — HTTP 403) to the raw.gitcode.com archive, whose SHA256 matches the pin declared in cmake/fetch_cann_cmake.cmake. ## Type Label <!-- [x] to select --> - [x] Bug fix - [ ] New feature - [ ] Performance optimization - [ ] Documentation update - [ ] Other, please describe: See merge request: cann/hccl!2185 | 17 天前 | |
【2026 HCCL通信库创新大赛-西部赛区】【降临派】docs: 修正 CONTRIBUTING.md 中“现在Issue列表中查询”表述 Co-authored-by: 2301_81769094<ziconglu@foxmail.com> # message auto-generated for no-merge-commit merge: !1795 merge docs/fix-contributing-wording-230 into master 【2026 HCCL通信库创新大赛-西部赛区】【降临派】docs: 修正 CONTRIBUTING.md 中“现在Issue列表中查询”表述 Created-by: 2301_81769094 Commit-by: 2301_81769094 Merged-by: cann-robot Description: ## 描述 本次修改针对 CONTRIBUTING.md 中“简单问题处理”章节的文档表述问题进行修正。 原文为: 现在Issue列表中查询该问题是否有对应的Issue; 结合上下文,该步骤语义应为“先在 Issue 列表中查询该问题是否有对应的 Issue”,当前表述存在歧义,语句不够通顺,可能影响读者对贡献流程的理解。 本次将其修正为: 先在Issue列表中查询该问题是否有对应的Issue; 本次修改仅涉及文档文字调整,不涉及代码逻辑、接口或功能行为变化。 补充说明:本PR为“2026 HCCL通信库创新大赛”西部赛区特别贡献奖提交,队名:降临派。 ## 关联的Issue https://gitcode.com/cann/hccl/issues/230 ## 测试 本次为纯文档表述修正,未涉及代码逻辑变更,无需执行功能性测试。 已结合 CONTRIBUTING.md 上下文检查修改前后语义,确认修改后表述更准确、通顺,符合该流程步骤的实际含义。 ## 文档更新 更新了 CONTRIBUTING.md 文件中“简单问题处理”章节的表述。 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/hccl!1795 | 2 个月前 | |
修改中英文一致性问题 Co-authored-by: zangyan<zangyan@huawei.com> # message auto-generated for no-merge-commit merge: !2608 merge master into master 修改中英文一致性问题 Created-by: flyswa Commit-by: zangyan Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 1、docs/en/rfcs/0001-add-batch-invariant-reducescatter.md 增加对应的英文文档 2、其他md修正中英文不一致问题。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR不涉及Issue,可填写"NA"。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于构造对应xx测试用例、二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/hccl!2608 | 1 个月前 | |
子包适配 Co-authored-by: tianmingL<liutianming2@h-partners.com> | 7 个月前 | |
[build] unified encoding, line breaks, and license header format Co-authored-by: ouyangcaike<ouyangcaike@h-partners.com> # message auto-generated for no-merge-commit merge: !2756 merge build/format into master [build] unified encoding, line breaks, and license header format Created-by: ouyangcaike Commit-by: ouyangcaike Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 1. 文本编码格式统一为 UTF-8 2. 所有文本换行符 CRLF 转为 LF,并在 .gitattributes 添加相应规则 3. OAT 检查涉及额外文件补充 license 头,并在 OAT.xml 更新规则 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR不涉及Issue,可填写"NA"。--> NA ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于构造对应xx测试用例、二级冒烟、算子泛化等。--> NA ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> NA ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:工程 See merge request: cann/hccl!2756 | 1 个月前 | |
HCCL软件目录与软件架构保持一致 Co-authored-by: miaoziyi1031<miaoziyi3@huawei.com> # message auto-generated for no-merge-commit merge: !2823 merge feature/m00981902_hccl_dir_refactor into master HCCL软件目录与软件架构保持一致 Created-by: miaoziyi1031 Commit-by: miaoziyi1031 Merged-by: cann-robot Description: ## 描述 本次修改用于实现 **HCCL 仓软件目录与软件架构保持一致**,主要针对 src/ops 下公共模块及各算子目录进行结构调整、职责归位,并同步完成相关构建和测试适配。 主要修改内容如下: 1. **op_common 公共算法目录调整** - 在 src/ops/op_common 下新增 algorithm 目录。 - 将原 executor、template 迁移至 algorithm/executor、algorithm/template,统一算法执行相关代码的目录归属。 2. **拓扑相关职责拆分与目录调整** - 将拓扑匹配相关 topo_match_*.cc/h 归入 src/ops/op_common/algorithm/topo_match。 - 将拓扑信息、Rank 信息及拓扑信息初始化相关公共能力topo.cc/h、topo_host.cc/h归入 src/ops/op_common/topo_info(原topo更名为topo_info)。 - 明确拓扑信息获取与拓扑匹配职责边界,保持现有业务调用关系和功能逻辑不变。 3. **各算子目录结构统一** - 对 all_reduce、all_gather、reduce_scatter、broadcast、reduce、scatter、all_to_all_v、barrier、send、recv 等算子目录进行结构对齐。 - 算法执行相关代码统一归入 algorithm/{executor,template}。 - 算法选择相关代码保留在 selector。 - 同步调整部分算子入口文件命名,去掉_op,使目录及文件职责与软件架构保持一致。 4. **工程及引用适配** - 同步修改相关 CMakeLists.txt、.cmake、头文件引用路径及构建配置。 - 同步适配 ST、AICPU Kernel 等相关构建引用。 - 本次修改以目录迁移、职责归位及工程适配为主,不改变原有集合通信算法功能和算法执行逻辑。 ## 关联的Issue https://gitcode.com/cann/hccl/issues/658 ## 测试 ST全量通过、已完成Checker自验证 ## 文档更新 更新了README.md、README_en.md及architecture-brief.md,变更软件目录架构 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ x ] 其他,请描述:HCCL仓目录架构调整 See merge request: cann/hccl!2823 | 1 个月前 | |
HCCL软件目录与软件架构保持一致 Co-authored-by: miaoziyi1031<miaoziyi3@huawei.com> # message auto-generated for no-merge-commit merge: !2823 merge feature/m00981902_hccl_dir_refactor into master HCCL软件目录与软件架构保持一致 Created-by: miaoziyi1031 Commit-by: miaoziyi1031 Merged-by: cann-robot Description: ## 描述 本次修改用于实现 **HCCL 仓软件目录与软件架构保持一致**,主要针对 src/ops 下公共模块及各算子目录进行结构调整、职责归位,并同步完成相关构建和测试适配。 主要修改内容如下: 1. **op_common 公共算法目录调整** - 在 src/ops/op_common 下新增 algorithm 目录。 - 将原 executor、template 迁移至 algorithm/executor、algorithm/template,统一算法执行相关代码的目录归属。 2. **拓扑相关职责拆分与目录调整** - 将拓扑匹配相关 topo_match_*.cc/h 归入 src/ops/op_common/algorithm/topo_match。 - 将拓扑信息、Rank 信息及拓扑信息初始化相关公共能力topo.cc/h、topo_host.cc/h归入 src/ops/op_common/topo_info(原topo更名为topo_info)。 - 明确拓扑信息获取与拓扑匹配职责边界,保持现有业务调用关系和功能逻辑不变。 3. **各算子目录结构统一** - 对 all_reduce、all_gather、reduce_scatter、broadcast、reduce、scatter、all_to_all_v、barrier、send、recv 等算子目录进行结构对齐。 - 算法执行相关代码统一归入 algorithm/{executor,template}。 - 算法选择相关代码保留在 selector。 - 同步调整部分算子入口文件命名,去掉_op,使目录及文件职责与软件架构保持一致。 4. **工程及引用适配** - 同步修改相关 CMakeLists.txt、.cmake、头文件引用路径及构建配置。 - 同步适配 ST、AICPU Kernel 等相关构建引用。 - 本次修改以目录迁移、职责归位及工程适配为主,不改变原有集合通信算法功能和算法执行逻辑。 ## 关联的Issue https://gitcode.com/cann/hccl/issues/658 ## 测试 ST全量通过、已完成Checker自验证 ## 文档更新 更新了README.md、README_en.md及architecture-brief.md,变更软件目录架构 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ x ] 其他,请描述:HCCL仓目录架构调整 See merge request: cann/hccl!2823 | 1 个月前 | |
修改中英文一致性问题 Co-authored-by: zangyan<zangyan@huawei.com> # message auto-generated for no-merge-commit merge: !2608 merge master into master 修改中英文一致性问题 Created-by: flyswa Commit-by: zangyan Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 1、docs/en/rfcs/0001-add-batch-invariant-reducescatter.md 增加对应的英文文档 2、其他md修正中英文不一致问题。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR不涉及Issue,可填写"NA"。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于构造对应xx测试用例、二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/hccl!2608 | 1 个月前 | |
【modifiy docs】修改英文文档中的非标准英文字符,统一翻译术语 Co-authored-by: zangyan<zangyan@huawei.com> # message auto-generated for no-merge-commit merge: !2711 merge master into master 【modifiy docs】修改英文文档中的非标准英文字符,统一翻译术语 Created-by: flyswa Commit-by: zangyan Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 修改英文文档中非标注英文字符,统一翻译术语 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR不涉及Issue,可填写"NA"。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于构造对应xx测试用例、二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/hccl!2711 | 1 个月前 | |
[fix] 修复自定义算子 allgather_aicpu / p2p 样例编译失败 Co-authored-by: Leewis<liwei945@huawei.com> # message auto-generated for no-merge-commit merge: !2911 merge fix/custom-allgather-aicpu-build into master [fix] 修复自定义算子 allgather_aicpu / p2p 样例编译失败 Created-by: Leewis Commit-by: Leewis Merged-by: cann-robot Description: ## 描述 修复自定义算子样例编译失败的问题,涵盖 allgather_aicpu 与 p2p 两个样例、根 CMakeLists.txt 构建配置及样例日志,共 6 个缺陷。下文逐个列出问题日志、问题原因、修改方案与验证情况。 --- ## 一、examples/05_custom_ops_allgather/aicpu ### 缺陷 1:testcase 链接库名不匹配 **问题日志** /usr/bin/ld: cannot find -lhccl_custom_allgather collect2: error: ld returned 1 exit status gmake[2] *** [examples/05_custom_ops_allgather/testcase/CMakeFiles/custom_allgather_test.dir/build.make:97: ...] Error 1 gmake: *** [Makefile:156: all] Error 2 **问题原因** testcase/CMakeLists.txt 中链接 hccl_custom_${OP_NAME}(即 hccl_custom_allgather),但 AICPU 引擎实际构建的库名为 hccl_custom_allgather_aicpu(带 _aicpu 后缀,与 README 和 Makefile 中记载的安装名一致),导致链接器找不到库。 **修改方案** 按 ENGINE_TYPE 条件选择正确的库名(examples/05_custom_ops_allgather/testcase/CMakeLists.txt)。 **验证情况** 链接阶段通过,cannot find -lhccl_custom_allgather 不再出现。 ### 缺陷 2:签名后 tar 包路径不匹配 > 注:缺陷 1 修复后构建继续推进,才会暴露此问题。 **问题日志** CMake Error at .../build/examples/05_custom_ops_allgather/aicpu/cmake_install.cmake (file): file INSTALL cannot find ".../build_device/signatures/aicpu_hccl_custom_allgather.tar.gz": No such file or directory. CPack Error: Error when generating package: cann-hccl-allgather_aicpu-cust gmake: *** [Makefile:71: package] Error 1 **问题原因** aicpu/CMakeLists.txt 的 else() 分支中 install 引用 ${BUILD_DEVICE_DIR}/signatures/aicpu_hccl_custom_allgather.tar.gz,但 add_cann_sign_file 实际将签名文件输出到 ${CMAKE_CURRENT_BINARY_DIR}/signatures_<safe_name>/ 子目录(即 build_device/examples/05_custom_ops_allgather/aicpu/signatures_aicpu_hccl_custom_allgather_tar_gz/)。Device 构建与 Host 构建是两次独立的 cmake 配置,Host 侧无法直接引用 Device 侧 CMAKE_CURRENT_BINARY_DIR 下的产物,路径对不上导致 CPack install 阶段找不到文件。 **修改方案** 在 KERNEL_MODE 分支签名完成后,用 add_custom_command(TARGET ... POST_BUILD) 将签名 tar 包从 RESULT_VAR 返回的实际路径复制到 Host 侧 install 引用的统一路径 ${BUILD_DEVICE_DIR}/signatures/(examples/05_custom_ops_allgather/aicpu/CMakeLists.txt)。 **验证情况** 打包阶段通过,build_out/cann-hccl_custom_allgather_aicpu_linux-<arch>.run 正常产出,包含 .so、头文件、AICPU kernel tar 包和 json 描述文件。 --- ## 二、examples/04_custom_ops_p2p ### 缺陷 3:签名后 tar 包路径不匹配 **问题日志** CMake Error at /home/.../build/examples/04_custom_ops_p2p/cmake_install.cmake:63 (file): file INSTALL cannot find "/home/.../build_device/signatures/aicpu_hccl_custom_p2p.tar.gz": No such file or directory. Call Stack (most recent call first): /home/.../build/cmake_install.cmake:51 (include) CPack Error: Error when generating package: cann-hccl-p2p-cust gmake: *** [Makefile:71: package] Error 1 **问题原因** 与缺陷 2 同类问题。CMakeLists.txt 的 else() 分支中 install 引用 ${BUILD_DEVICE_DIR}/signatures/aicpu_hccl_custom_p2p.tar.gz,但 add_cann_sign_file 实际将签名文件输出到 ${CMAKE_CURRENT_BINARY_DIR}/signatures_<safe_name>/ 子目录,Device 与 Host 两次独立 cmake 配置路径对不上,CPack install 阶段找不到文件。 **修改方案** 在 KERNEL_MODE 分支签名完成后,用 add_custom_command(TARGET ... POST_BUILD) 将签名 tar 包从 RESULT_VAR 返回的实际路径复制到统一路径 ${BUILD_DEVICE_DIR}/signatures/(examples/04_custom_ops_p2p/CMakeLists.txt),与缺陷 2 修复方式一致。 **验证情况** 打包阶段通过,build_out/cann-hccl_custom_p2p_linux-<arch>.run 正常产出,包含 .so、头文件、AICPU kernel tar 包和 json 描述文件。 --- ## 三、CMakeLists.txt(x86 主机交叉编译) ### 缺陷 4:x86 主机上 device 侧 AICPU kernel 缺少交叉编译 **问题日志** /usr/bin/ld: .../lib64/device/lib64/libccl_kernel.a: error adding symbols: file format not recognized collect2: error: ld returned 1 exit status **问题原因** 设备侧 AICPU kernel 运行在 NPU(aarch64 架构),其依赖的 ccl_kernel 库为 aarch64 二进制。但 x86 主机上 device 侧编译产物为 x86_64 架构,与 aarch64 的 ccl_kernel 库架构不匹配,链接失败。根 CMakeLists.txt 中已有 ENABLE_BUILD_AARCH 交叉编译工具链配置块(设置 CMAKE_SYSTEM_PROCESSOR=aarch64 + 交叉编译器),但 build_custom() 未在 device 侧构建时启用该选项。 **修改方案** 在根 CMakeLists.txt 的 project() 之前添加自动检测逻辑:当 KERNEL_MODE=ON(device 侧构建)且主机架构为 x86 时,自动将 ENABLE_BUILD_AARCH 设为 ON,复用已有的交叉编译工具链配置块。build.sh 不做修改。 检测方式使用 execute_process(uname -m) 获取宿主机架构。曾尝试用 CMake 内置变量 CMAKE_HOST_SYSTEM_PROCESSOR 替代,但实测该变量在 project() 之前尚未初始化(值为空),导致检测失效。交叉编译器必须在 project() 之前设置,而 CMAKE_HOST_SYSTEM_PROCESSOR 只在 project() 之后才有值,两者矛盾,因此 execute_process 是唯一可靠方案。 **验证情况** 在 aarch64 主机上回归验证通过:device kernel 产物为 ELF 64-bit LSB shared object, ARM aarch64,host 库产物为 ARM aarch64,编译、链接、打包全部成功。x86 主机上 device 侧自动启用交叉编译,host 侧保持 native。 --- ## 四、add_cann_sign_file VERSION 参数缺失 ### 缺陷 5:部分 CANN cmake 版本 VERSION 必填 **问题日志** CMake Error at build_device/_deps/cann-cmake-src/function/prepare.cmake:943(message): [sign_file] Missing required:Version **问题原因** cann/cmake 仓 MR !252(master-047 起)将 add_cann_sign_file 的 VERSION 参数从可选改为必选,并移除了内部对 VERSION_INFO 的回退逻辑。hccl 的 fetch_cann_cmake.cmake 仍锁定 master-044,但部分环境会拉取更高版本导致报错。 **修改方案** - 将 fetch_cann_cmake.cmake 中 cann-cmake 版本从 master-044 更新到 master-058,与 upstream/master 对齐 - 两个 example 的 add_cann_sign_file 调用显式传入 VERSION ${VERSION_INFO}(VERSION_INFO 由 build.sh 通过 -DVERSION_INFO 传入) --- ## 五、样例日志修正 ### 缺陷 6:接口调用失败时仍打印成功日志 **问题原因** main() 通过 std::thread 启动 Sample(),但 std:🧵:join() 不返回线程函数的返回值。Sample() 中 ACLCHECK/HCCLCHECK 宏出错时 return ret,该返回值被丢弃,main() 无感知,始终打印 "test completed successfully"。 **修改方案** 用 std::atomic<int> g_errCode 记录线程中首个接口错误码,宏中出错时 g_errCode.store(ret),main() 末尾检查后决定打印成功还是失败日志(examples/04_custom_ops_p2p/testcase/main.cc、examples/05_custom_ops_allgather/aicpu/testcase/main.cc)。P2P 样例 README.md 与 README_en.md 的样例结果示例同步增加成功日志。 --- ## 关联的Issue NA ## 测试 bash # allgather_aicpu 样例 bash build.sh --vendor=cust --ops=allgather_aicpu --custom_ops_path=./examples/05_custom_ops_allgather/aicpu # p2p 样例 bash build.sh --vendor=cust --ops=p2p --custom_ops_path=./examples/04_custom_ops_p2p 两个样例编译、链接、打包全部成功。pre-commit(clang-format + OAT 许可检查)通过。 ## 文档更新 - docs/zh/build/build.md、docs/en/build/build.md:cann-cmake 版本号与下载链接从 master-044 更新到 master-058 - Third_Party_Open_Source_Software_List.yaml:cann-cmake 版本号同步更新 - examples/04_custom_ops_p2p/README.md、README_en.md:样例结果示例同步增加成功日志 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/hccl!2911 | 23 天前 | |
modify example c++17 & third party software notice Co-authored-by: Leewis<liwei945@huawei.com> # message auto-generated for no-merge-commit merge: !2588 merge master into master modify example c++17 & third party software notice Created-by: Leewis Commit-by: Leewis Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 1. example 中保持与主仓一致,c++14--》c++17 2. 修改相关第三方依赖文档 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR不涉及Issue,可填写"NA"。--> [#303](https://gitcode.com/cann/hccl/issues/303) [#597](https://gitcode.com/cann/hccl/issues/597) ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于构造对应xx测试用例、二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/hccl!2588 | 1 个月前 | |
[fix] 05_custom_ops_allgather aiv bug Co-authored-by: wandongdong<wandongdong1@huawei.com> # message auto-generated for no-merge-commit merge: !2935 merge allgather_aiv_bugfix into master [fix] 05_custom_ops_allgather aiv bug Created-by: wandongdong Commit-by: wandongdong Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 重构allgather的PRhttps://gitcode.com/cann/hccl/pull/2418合入的时候rebase将https://gitcode.com/cann/hccl/pull/2935的内容丢掉了,本PR将https://gitcode.com/cann/hccl/pull/2935的内容添加恢复 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR不涉及Issue,可填写"NA"。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于构造对应xx测试用例、二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/hccl!2935 | 10 天前 | |
[build] unified encoding, line breaks, and license header format Co-authored-by: ouyangcaike<ouyangcaike@h-partners.com> # message auto-generated for no-merge-commit merge: !2756 merge build/format into master [build] unified encoding, line breaks, and license header format Created-by: ouyangcaike Commit-by: ouyangcaike Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 1. 文本编码格式统一为 UTF-8 2. 所有文本换行符 CRLF 转为 LF,并在 .gitattributes 添加相应规则 3. OAT 检查涉及额外文件补充 license 头,并在 OAT.xml 更新规则 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR不涉及Issue,可填写"NA"。--> NA ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于构造对应xx测试用例、二级冒烟、算子泛化等。--> NA ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> NA ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:工程 See merge request: cann/hccl!2756 | 1 个月前 |
HCCL
简体中文 | English
🔥Latest News
- [2026/05] Ascend950 通信算子支持静态库,详见Issue#90,Issue#105
- [2026/04] Ascend950 通信算子支持图模式,详见PR#613, PR#340, PR#296, GE PR#1620
- [2026/03] Ascend950 通信算子支持AIV&AICPU通信引擎(单算子)
- [2025/11/30] HCCL项目正式开源。
🚀 概述
集合通信库(Huawei Collective Communication Library,简称HCCL)是基于昇腾AI处理器的高性能集合通信库,为计算集群提供高性能、高可靠的通信方案,具备以下核心功能:
- 提供单机、多机环境中的高性能集合通信和点对点通信。
- 支持AllReduce、Broadcast、AllGather、ReduceScatter、AlltoAll等集合通信原语。
- 支持Ring、Mesh、Recursive Halving-Doubling(RHD)等通信算法。
- 支持HCCS、RoCE、PCIe等高速通信链路。
- 支持单算子和图模式两种执行模式。
HCCL是CANN的核心组件,对上支持多种AI框架,对下使能多款昇腾AI处理器之间的通信能力,其软件架构如下图所示:

HCCL包含HCCL集合通信库与HCOMM(Huawei Communication)通信基础库:
- HCCL集合通信库:包含内置通信算子和扩展通信算子,提供对外的通信算子接口。
- HCOMM通信基础库:采用分层解耦的设计思路,将通信能力划分为控制面和数据面两部分。
🔍 目录结构说明
本项目关键目录如下所示:
│── src # HCCL算子源码目录
| ├── common # 通用逻辑,包括类型定义、日志模块等
| └── ops # HCCL算子实现
| ├── all_gather # AllGather算子实现
| ├── all_gather_v # AllGatherV算子实现
| ├── all_reduce # AllReduce算子实现
| ├── all_to_all_v # AlltoAll、AlltoAllV、AlltoAllVC算子实现
| ├── barrier # Barrier算子实现
| ├── batch_send_recv # BatchSendRecv算子实现
| ├── broadcast # Broadcast算子实现
| ├── interface_graph_mode # 图模式接口实现
| ├── op_common # 算子通用组件
| │ ├── algorithm # 算法层
| │ │ ├── executor # 执行器
| │ │ ├── template # 算法模板
| │ │ └── topo_match # 算法执行阶段拓扑层级匹配
| │ ├── selector # 算法选择、CostModel等选择逻辑
| │ ├── topo_info # 公共拓扑信息生成、转换与Rank映射
| │ └── inc # 公共头文件
| ├── recv # Recv算子实现
| ├── reduce # Reduce算子实现
| ├── reduce_scatter # ReduceScatter算子实现
| ├── reduce_scatter_v # ReduceScatterV算子实现
| ├── scatter # Scatter算子实现
| └── send # Send算子实现
├── include # HCCL对外头文件
├── test # 测试代码目录
| ├── ut # 单元测试代码目录
| └── st # 系统测试代码目录
├── docs # 资料文档目录
├── examples # 样例代码目录
└── build.sh # 编译构建脚本
📝版本配套
本项目源码会跟随CANN软件版本发布,关于CANN软件版本与本项目标签的对应关系请参阅release仓库中的相应版本说明。 请注意,为确保您的源码定制开发顺利进行,请选择配套的CANN版本与GitCode标签源码,使用master分支可能存在版本不匹配的风险。
⚡️ 快速开始
若您希望快速构建并体验本项目,请访问如下简易指南。
📖 学习教程
HCCL提供了使用指南、通信算子开发指南、技术文章、培训视频,详细可参见 HCCL 参考资料。