| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
[fix] 优化Host DPU多QP配置获取实现方式 Co-authored-by: qq_45577430<liuhongming4@huawei.com> # message auto-generated for no-merge-commit merge: !5298 merge feature/multi_qp_config into master [fix] 优化Host DPU多QP配置获取实现方式 Created-by: qq_45577430 Commit-by: qq_45577430 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 改动原因: 此前已提交以下两个相关 PR: - [PR #4886:[feat] 支持host网卡的多QP配置的获取](https://gitcode.com/cann/hcomm/pull/4886) ,通过 HCCP 接口读取 /etc/hcomm.cfg 中的多 QP 配置。 - [PR #5135:[feat] 支持通过环境变量配置多QP UDP源端口](https://gitcode.com/cann/hcomm/pull/5135) ,从环境变量 HCCL_HOST_RDMA_UDP_PORTS_LIST 读取多 QP UDP 源端口。 两个 PR 分别通过配置文件和环境变量提供 Host 网卡多 QP 配置,但相关解析和查询逻辑分散在 HCCP、legacy 及集合通信域管理层。根据 [Issue #835:优化Host网卡多QP配置获取方式](https://gitcode.com/cann/hcomm/issues/835),本次将 /etc/hcomm.cfg 和 HCCL_HOST_RDMA_UDP_PORTS_LIST 的解析、合并与查询能力统一收归 src/coll_communicator_mgr/config_mgr,由新增的 HostMultiQpConfig 管理,不再依赖 HCCP 或在 legacy 中维护相关能力。同时新增 CollCommConfigMgr,统一持有和初始化集合通信域管理层的进程级配置 EnvUbConfig 与 HostMultiQpConfig,并由 CollCommMgr 管理其生命周期,确保多个通信域共享一致的配置解析结果。 改动方法: 1. 在 src/coll_communicator_mgr/config_mgr 新增 HostMultiQpConfig,统一管理 /etc/hcomm.cfg 和 HCCL_HOST_RDMA_UDP_PORTS_LIST。 2. 新增进程级配置管理类 CollCommConfigMgr,统一持有 EnvUbConfig 和 HostMultiQpConfig,并作为 CollCommMgr 的成员管理生命周期。 3. CollComm::Init 通过 CollCommMgr::InitConfigMgr() 统一初始化配置。 4. HostMultiQpConfig 先解析环境变量,再解析 /etc/hcomm.cfg,最终按物理设备 ID 保存到同一张配置表中;配置文件中的完整合法单卡配置覆盖对应环境变量配置。 5. ResolveQueueNum 和 RoceChannelDescConfigurator 通过 CollCommMgr::GetConfigMgr() 分别获取 Host RoCE 的 QP 数量和 UDP 源端口;未匹配 Host 多 QP 配置时继续回退到原有 MultiQpSrcPort.cfg 配置。UB 多 Channel 配置查询也通过同一配置管理器获取。 6. 删除 Host 多 QP 配置通过 RaGetHccnCfg 获取的逻辑及相关 HCCP 依赖,移除原有独立配置单例入口,并清理 legacy 中不再使用的环境变量解析、查询和符号导出。 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] 🚀 性能优化 - [ ] 📝 文档更新 - [x] 📋 其他,请描述:代码实现方式优化 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR不涉及Issue,可填写"NA"。--> 关联 [Issue #835:优化Host网卡多QP配置获取方式](https://gitcode.com/cann/hcomm/issues/835) ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于构造对应xx测试用例、二级冒烟、算子泛化等。--> 补充或调整的 UT 用例: 1. test/ut/framework/next/comms/common/ut_host_multi_qp_config.cc:新增 HostMultiQpConfig UT,验证环境变量和配置文件的解析校验、配置覆盖与回退、空白及 CRLF 兼容、重复 key 处理和首次解析结果缓存。 2. test/ut/framework/next/comms/common/ut_config_mgr.cc:新增 CollCommConfigMgr UT,验证配置统一初始化、重复调用只解析一次,以及 EnvUbConfig 解析失败时的错误返回和后续配置解析短路行为。 3. test/ut/framework/next/coll_comms/api_c_adpt/ut_coll_comm_res_c_adpt.cc:调整 Host RoCE QP 数量相关 UT,验证用户指定 QP 数量、Host 多 QP 配置及原有配置之间的优先级和回退行为。 4. test/ut/framework/next/coll_comms/rank/ut_my_rank.cc:调整 Host RoCE UDP 源端口相关 UT,验证按物理设备匹配、Host 多 QP 配置优先、未匹配时回退以及端口循环复用行为。 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> NA ## 合入检查 <!-- 在正式合入前,请做好必要的代码测试,用例补充,软件代码风格检查等。提高合入效率。--> <!-- [x] 表示选中 --> - [x] 🧐 已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 - [x] 🔍 邀请 committer评论 /lgtm前的必要检查 - [x] 🏷️ 标题中使用了合适的类型标签(如:[feat], [fix]) - [x] 📄 代码修改内容已简要描述,相关文档已更新 - [x] 📝 代码注释已更新,代码遵循项目整体代码风格 - [x] 🧪 代码UT测试已更新,覆盖率已达标 - [x] 🔬 验证方法已更新到"测试"部分 - [x] 🛠️ 代码已通过静态分析工具检查,无错误 - [ ] 👥 代码检视/code review/同行评议和必要的代码串讲,确保代码质量 - [ ] ✅ 代码检视意见已处理或答复,无未处理的检视意见 - [ ] 🚀 预约 前冒烟 用例前的必要检查 - [ ] ✔️ 代码已有committer的/lgtm 和 模块committer的/lgtm评论 - [ ] 🔧 代码已通过compile,编译无错误,无告警 - [ ] 🖥️ 代码已通过基本功能本地测试或者在线测试,确保基本功能正常 - [ ] 🎯 预约 approver评论/approve,正式合入前的必要检查 - [ ] 📊 前冒烟 用例已全量通过 - [ ] 📦 新增功能已同步补充基本功能测试用例到前冒烟里 See merge request: cann/hcomm!5298 | 11 天前 | |
[feat] HOST DPU集合通信TLS安全建链一致性校验 Co-authored-by: LQ_OY<ouyangzhikang@huawei.com> # message auto-generated for no-merge-commit merge: !4884 merge feature/host_dpu_tls into master [feat] HOST DPU集合通信TLS安全建链一致性校验 Created-by: LQ_OY Commit-by: LQ_OY Merged-by: cann-robot Description: ## 描述 改动原因:HOST DPU 集合通信场景下,TLS 安全建链发生在 Host 侧网卡(DPU)。原有一致性校验仅查询 Device 侧 TLS 开关状态,无法发现 Host DPU 侧配置不一致,且建链失败时缺少可定位的 TLS 信息。 改动方法: NewRankInfo 新增 hostDpuTlsStatus 字段并随 rank 信息序列化/反序列化,用于记录 Host DPU 侧 TLS 状态。 RankInfoDetectClient 新增 GetLocalHostDpuTlsStatus,以 NETWORK_PEER_ONLINE 模式查询 Host DPU 侧状态;建 rank 表时同时采集 Device 与 Host DPU 两侧 TLS 状态。校验逻辑抽取为按 TLS 类型参数化的通用函数,VerifyRankTable 同时校验 tls 与 hostDpuTls 一致性,EI0016 报错信息区分两种配置。 MyRank 的 TLS 查询按通道端点类型选择模式:Host ROCE 通道用 NETWORK_PEER_ONLINE,Device 通道用 NETWORK_OFFLINE;仅对异常通道批量采集逐通道 TLS 状态;建链失败日志补充协议、TLS 类型及状态,并消除重复错误日志。 ChannelLogger 错误详情表改为逐通道打印 TLS 状态,区分 Device/HostDpu。 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] 🚀 性能优化 - [ ] 📝 文档更新 - [ ] 📋 其他,请描述: ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于构造对应xx测试用例、二级冒烟、算子泛化等。--> 已完成的测试用例和场景: 1. 双机 Host-DPU TLS 状态均为 DISABLE 或均为 ENABLE 时,一致性校验通过,通信域能够初始化并完成集合通信。 2. 双机 Host-DPU TLS 状态为 ENABLE/DISABLE 混合时,一致性校验能够识别对应 rank,并在通信域初始化阶段拒绝继续。 补充的UT用例: ut_my_rank_tls.cc:Host ROCE 通道按 NETWORK_PEER_ONLINE 查询;仅异常通道采集 TLS 状态;全部 READY 时不触发查询。 ut_new_rank_info.cc:tlsStatus、hostDpuTlsStatus 序列化/反序列化往返一致。 ut_rank_info_detect_client.cc:建表时同时采集两侧 TLS 状态;Host DPU TLS 查询不支持/失败返回预期结果;Host DPU TLS 一致性校验覆盖全开、全关、开/关混合、一致+未知、不一致+未知、全未知六种场景;不一致时上报 EI0016 并抛异常。 ut_loggers_test.cc:适配逐通道 TLS 状态数组的新接口。 ## 合入检查 <!-- 在正式合入前,请做好必要的代码测试,用例补充,软件代码风格检查等。提高合入效率。--> <!-- [x] 表示选中 --> - [ ] 🧐 已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 - [ ] 🔍 邀请 committer评论/lgtm前的必要检查 - [ ] 🏷️ 标题中使用了合适的类型标签(如:[feat], [fix]) - [ ] 📄 代码修改内容已简要描述,相关文档已更新 - [ ] 📝 代码注释已更新,代码遵循项目整体代码风格 - [ ] 🧪 代码UT测试已更新,覆盖率已达标 - [ ] 🔬 验证方法已更新到"测试"部分 - [ ] 🛠️ 代码已通过静态分析工具检查,无错误 - [ ] 👥 代码检视/code review/同行评议和必要的代码串讲,确保代码质量 - [ ] ✅ 代码检视意见已处理或答复,无未处理的检视意见 - [ ] 🚀 预约 前冒烟 用例前的必要检查 - [ ] ✔️ 代码已有committer的/lgtm 和 模块committer的/lgtm评论 - [ ] 🔧 代码已通过compile,编译无错误,无告警 - [ ] 🖥️ 代码已通过基本功能本地测试或者在线测试,确保基本功能正常 - [ ] 🎯 预约 approver评论/approve,正式合入前的必要检查 - [ ] 📊 前冒烟 用例已全量通过 - [ ] 📦 新增功能已同步补充基本功能测试用例到前冒烟里 See merge request: cann/hcomm!4884 | 1 个月前 | |
【HCOMM】A5通信域粒度的batch一致性配置 Co-authored-by: huangdongsheng<huangdongsheng6@huawei.com> # message auto-generated for no-merge-commit merge: !5430 merge dev into master 【HCOMM】A5通信域粒度的batch一致性配置 Created-by: huangdongsheng Commit-by: huangdongsheng Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> A5已有通过HCCL_DETERMINISTIC=strict开启Batch一致性的能力,但环境变量是进程级的,无法让同一进程中的不同通信域分别选择普通确定性或Batch一致性。A2/A3已支持通过通信域配置该开关,本需求补齐A5能力。 用户可在三个Config通信域创建接口中,通过HcclCommConfig::hcclDeterministic显式设置0、1或2;不设置时继承进程级配置。HCOMM在创建通信域时保存生效值,HCCL执行AllReduce、ReduceScatter时按当前通信域查询:值2使用现有strict保序路径,值0或1沿用A5普通确定性路径。本需求不新增Device侧算法。 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [x] ✨ 新特性 - [ ] 🚀 性能优化 - [x] 📝 文档更新 - [ ] 📋 其他,请描述: ## 关联的Issue NA ## 测试 已完成的测试用例和场景: HCOMM相关 UT 全量回归通过。 补充的UT用例: - HCOMM:覆盖 A5 确定性 0/1/2 环境解析与 Get、Set/Get 非法值、通信域显式配置覆盖环境与默认继承、非法值报错、双通信域及父子通信域隔离、HcclConfigGetInfo 长度/空指针校验。 ## 文档更新 更新相关文档 ## 合入检查 <!-- 在正式合入前,请做好必要的代码测试,用例补充,软件代码风格检查等。提高合入效率。--> <!-- [x] 表示选中 --> - [ ] 🧐 已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 - [ ] 🔍 邀请 committer评论 /lgtm前的必要检查 - [ ] 🏷️ 标题中使用了合适的类型标签(如:[feat], [fix]) - [ ] 📄 代码修改内容已简要描述,相关文档已更新 - [ ] 📝 代码注释已更新,代码遵循项目整体代码风格 - [ ] 🧪 代码UT测试已更新,覆盖率已达标 - [ ] 🔬 验证方法已更新到"测试"部分 - [ ] 🛠️ 代码已通过静态分析工具检查,无错误 - [ ] 👥 代码检视/code review/同行评议和必要的代码串讲,确保代码质量 - [ ] ✅ 代码检视意见已处理或答复,无未处理的检视意见 - [ ] 🚀 预约 前冒烟 用例前的必要检查 - [ ] ✔️ 代码已有committer的/lgtm 和 模块committer的/lgtm评论 - [ ] 🔧 代码已通过compile,编译无错误,无告警 - [ ] 🖥️ 代码已通过基本功能本地测试或者在线测试,确保基本功能正常 - [ ] 🎯 预约 approver评论/approve,正式合入前的必要检查 - [ ] 📊 前冒烟 用例已全量通过 - [ ] 📦 新增功能已同步补充基本功能测试用例到前冒烟里 See merge request: cann/hcomm!5430 | 9 天前 | |
[fix] 修复A5 MC2 Profiling通信流关联 Co-authored-by: jiangxinyu3<jiangxinyu3@hisilicon.com> # message auto-generated for no-merge-commit merge: !5028 merge fix/a5-mc2-profiling-stream-relation into master [fix] 修复A5 MC2 Profiling通信流关联 Created-by: jiangxinyu3 Commit-by: jiangxinyu3 Merged-by: cann-robot Description: ## 问题与修复分工 本 PR 配套 https://gitcode.com/cann/asc-devkit/pull/5536 修复 A5 MC2/API 通信任务及 CONDITION 错误归入 stream 65535、Communication 泳道缺失。 **当前方案不再由 HCOMM 延迟关联展开流。** asc-devkit 自行补报真实 KFC 逻辑 stream 与完整通信物理 SQ 的 Mc2CommInfo;HCOMM 保持原申请即上报流程,并补齐 CONDITION KfcInfo 和 MC2 上报缓冲区优化。已用实验 PR !5634 的验证版本覆盖本 PR,实验 PR 已关闭。 ## 修改内容 1. **保留原 Mc2CommInfo 边界。** Thread 申请/WithStream/查询/EngineCtx 不再包含本 PR 旧版待报队列、CPU_TS 候选、EngineCtx 识别及查询补报逻辑。AICPU Thread 申请仍按原流程上报 FreeStreamId=0;普通 CPU_TS 申请/查询不承担 MC2 关联。无需 reserved 或跨仓 ThreadConfig 约定。 2. **补齐 CONDITION KfcInfo。** RtsqA5::CCoreNotifyWait/Record 在 RefreshInfo 前登记完整 taskId、真实物理 SQ 及有效 DFX 上下文。新增的是 profiling 元数据,不是 SQE;无上下文时不登记,不改变下发。通过既有 DeviceOp/队列流程上报,不增加 HEAD/TAIL、同步或 GM 读取。 3. **类型与异常处理。** 内部枚举追加 CCore_Wait/CCore_Record 映射,异常处理识别对应任务;不按普通 Notify 解码,不伪造硬件 notifyId。 4. **仅 MC2 当前操作使用小缓冲区。** CONDITION 登记时标记有效当前 DFX 操作,每次新操作注册清空标记;main/sub Thread 共享策略。仅队列有效任务全部属于标记操作时使用 16 项小缓冲区及较大任务按需分配;混合队列、未标记或无法确认归属时走原 512 项上报实现。无 batch callback 的优化仅限 MC2 路径。 5. **host/device 隔离及测试。** device 专属 MarkCompactReportOp 以 CCL_KERNEL_AICPU 隔离,避免 host libhcomm.so 未定义引用;补充 CONDITION、DFX/异常及缓冲区测试,修正测试对当前任务字段的断言。 ## 对普通 HCCL 的影响 - 不改变原 Thread/EngineCtx 资源行为、Mc2CommInfo 上报时机,也不再依赖后续 CPU_TS 展开流查询。 - 不改变算法选择、数据传输、同步 SQE、任务顺序或 HCOMM 公共接口/公开结构。 - 普通 HCCL 未被 CONDITION 标记的操作保持原缓冲区上报策略,不应用本次 MC2 小缓冲区优化。 - 内部任务枚举、DFX 上下文及状态增加,不应描述为所有内部结构完全不变;共享 DFX 路径仍有策略判断,不能承诺逐周期零性能影响。 - 真实 KFC 关系由配套 asc-devkit 提供,本 PR 不能单独解决全部泳道关联问题。 ## 编译与定向测试 - 实验开发阶段 A5_4p AICPU package 编译成功;资源申请 15 项、DFX/异常/缓冲区 118 项定向 UT 通过;全量 UT 目标构建成功不等于全量执行通过。 - CONDITION 独立测试曾为 6/7,剩余项系测试错误期望原始 notifyId;断言已修正,未将未复跑的最终断言修订宣称为全通过。 - 配套包内动态依赖检查、git diff --check 通过。以上为开发阶段证据,不能冒充整理提交后的新增全量编译/CI 结果。 ## 配套板端验证(2026-09-23) 用户在黄区 8P 服务器对比 0923 newest 与配套修复包;hccl_api_test 执行 AllGather、AllReduce,32 MiB、FP16、AICPU_TS、-w 0 -n 1。两版本各 16 份 PROF,共 32 份数据库及导出时间线已核对。 | 每 rank 指标 | newest AllGather | 修复 AllGather | newest AllReduce | 修复 AllReduce | |---|---:|---:|---:|---:| | AscendTask 中 stream 65535 的任务数 | 63 | 0 | 74 | 0 | | KfcTask 数量 | 0 | 63 | 0 | 74 | | 两条 CONDITION 所在 stream | 65535 | 7 | 65535 | 7 | | 通信物理 stream | 未正确关联 | 7–13 | 未正确关联 | 7–14 | 修复后每 rank 的 Communication 时间线包含 63/74 个任务及一个算子区间,KFC 逻辑 stream 为 59。原始 KFC=0 与补报 KFC=59 的关系同时存在,但按 stream/task/context/batch 检查未生成重复 KfcTask。解析日志未检出 ERROR/Traceback;两组均有可选采集表缺失 WARNING。 这是上述配套包及两个用例的验证,不代表其他算子、子通信域、静态图、多轮动态采集或性能已全面验证。修复版执行日志另有每进程一次 GetUnfoldThreadInfo 返回 HCCL_E_NOT_FOUND 的 ERROR 误报;asc-devkit 已追加最小修正,保留正常创建流程及其他错误处理,该日志修正尚未重新编译/板测。 ## 变更类型 - Bug修复:CONDITION profiling 元数据。 - 性能优化:仅 MC2 当前操作的上报缓冲区。 ## 关联的Issue NA See merge request: cann/hcomm!5028 | 9 天前 | |
[fix] 抽离MyRank按(rank,IP)查端口公共接口,心跳端口查询与建链路径统一数据源 Co-authored-by: renmengguang<renmengguang@h-partners.com> # message auto-generated for no-merge-commit merge: !5588 merge rmg_code into master [fix] 抽离MyRank按(rank,IP)查端口公共接口,心跳端口查询与建链路径统一数据源 Created-by: ren-mengguang Commit-by: renmengguang Merged-by: cann-robot Description: ## 描述 建链路径的端口查询已改为按 (rank, IP) 两级端口表获取(同一 rank 多 IP 场景下各 IP 监听端口不同),但集群心跳路径( ClusterMonitor::GetSocketDescFromRankInfo)仍通过 RankGraph::GetDevicePort 做 rank 级单端口查询,两条路径端口数据源不一致,心跳使用的端口可能与实际监听端口不符。 本次改动将端口表查询能力抽离为公共接口,并统一心跳路径的端口数据源: 1. MyRank 新增公共接口 GetDevicePortByAddr(rank, addr, port):按 (rank, IP) 两级端口表查询 device 侧监听端口,命中返回 HCCL_SUCCESS,未命中返回 HCCL_E_NOT_FOUND; 2. GetListenPortByAddr 的 device 分支复用该接口,未命中时保留原有 fallback(端口区间最小值/默认端口),建链路径行为不变; 3. GetSocketDescFromRankInfo 改用 GetDevicePortByAddr 查询对端/本端监听端口(替换两处 rankGraph->GetDevicePort 调用),未查到时不把该 link 加入 needConnectRank(跳过该 rank 心跳),端口上限(MAX_VALUE_TCPPORT)校验保持不变。 ## 变更类型 请选择本次引入的变更类型: - [x] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] 🚀 性能优化 - [ ] 📝 文档更新 - [ ] 📋 其他,请描述: ## 关联的Issue NA ## 测试 已完成的测试用例和场景: 1. 改动文件对象级编译通过、无告警;clang-format v18.1.8 检查通过 2. MyRank 既有 QueryListenPort 用例回归通过,验证建链路径(GetListenPortByAddr 重构后)行为不变 3. CI 流水线通过(ci-pipeline-passed) 补充的UT用例: - ut_my_rank.cc:GetDevicePortByAddr 4 个用例(条目命中 / rank 未命中 / addr 未命中 / 空指针·空端口表返回 HCCL_E_PTR) - ut_cluster_monitor.cc:GetSocketDescFromRankInfo 4 个用例(对端端口非法返回 HCCL_E_PARA / 本端监听端口非法返回 HCCL_E_PARA / 端口表无对端条目返回 HCCL_E_NOT_FOUND / 正常场景返回 HCCL_SUCCESS 且角色为 SERVER) ## 文档更新 增加HcommChannelCreate接口的约束描述。 ## 合入检查 - [x] 🧐 已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 - [x] 🔍 邀请 committer评论/lgtm前的必要检查 - [x] 🏷️ 标题中使用了合适的类型标签(如:[feat], [fix]) - [x] 📄 代码修改内容已简要描述,相关文档已更新 - [x] 📝 代码注释已更新,代码遵循项目整体代码风格 - [x] 🧪 代码UT测试已更新,覆盖率已达标 - [x] 🔬 验证方法已更新到"测试"部分 - [x] 🛠️ 代码已通过静态分析工具检查,无错误 - [x] 👥 代码检视/code review/同行评议和必要的代码串讲,确保代码质量 - [ ] ✅ 代码检视意见已处理或答复,无未处理的检视意见 - [ ] 🚀 预约 前冒烟 用例前的必要检查 - [ ] ✔️ 代码已有committer的/lgtm 和 模块committer的/lgtm评论 - [x] 🔧 代码已通过compile,编译无错误,无告警 - [ ] 🖥️ 代码已通过基本功能本地测试或者在线测试,确保基本功能正常 - [ ] 🎯 预约 approver评论/approve,正式合入前的必要检查 - [ ] 📊 前冒烟 用例已全量通过 - [ ] 📦 新增功能已同步补充基本功能测试用例到前冒烟里 See merge request: cann/hcomm!5588 | 10 天前 | |
[fix] 修正A5 EI0004/EI0017日志及EI0001定位资料 Co-authored-by: ganglei123<zhaoganglei@huawei.com> # message auto-generated for no-merge-commit merge: !5480 merge codex/a5-ei0001-docs-hcomm-20260918 into master [fix] 修正A5 EI0004/EI0017日志及EI0001定位资料 Created-by: ganglei123 Commit-by: ganglei123 Merged-by: cann-robot Description: ## 描述 A5 EI日志整改存在两类缺口:新ranktable解析路径缺少EI0017的 [InitGroupStage][RanktableConfig] plog关键字;EI0004部分路径把ranktable_path和error_reason键值对应错位,导致ERROR MESSAGE字段显示异常。本PR补齐上述代码路径,并完善EI0001在Ascend 950PR&950DT系列产品上的plog定位说明。 变更后: - EI0004无效/空ranktable路径按ranktable_path, error_reason正确上报,并保留[InitGroupStage][RanktableConfig]关键字。 - EI0017新旧A5解析路径均打印[InitGroupStage][RanktableConfig]。 - EI0001中英文资料列出A5适用的检索关键字和示例,并用npu="950"标签限定适用产品。 - 新增直接调用PhyTopoBuilder::Build("")的UT,校验EI0004的错误码、参数键及参数值。 背景PR:https://gitcode.com/cann/hcomm/pull/4978 。 ## 变更类型 - [x] 🐛 Bug修复 - [ ] ✨ 新特性 - [x] 📝 文档更新 - [ ] 📋 其他 ## 关联的Issue NA ## 测试 NA ## 文档更新 更新EI0001中英文资料:使用Ascend 950PR&950DT系列产品标准命名,为A5专属plog定位段落添加npu="950"标签,保留日志检索关键字和示例,删除源码路径及编译实现细节。 ## 合入检查 - [x] 代码和文档改动保持小范围、可审查 - [x] 已补充针对性UT - [x] 已运行本地静态检查 See merge request: cann/hcomm!5480 | 11 天前 | |
[fix]修复fdHanlde拼写及sended非标准命名,统一ProcessOneSendEvent声明,补SendHelper/IsOk const Co-authored-by: Trouble_Im_in<guanzhongkang1@huawei.com> # message auto-generated for no-merge-commit merge: !5235 merge fix/rank-info-dispatch-fdhandle into master [fix]修复fdHanlde拼写及sended非标准命名,统一ProcessOneSendEvent声明,补SendHelper/IsOk const Created-by: Trouble_Im_in Commit-by: Trouble_Im_in Merged-by: cann-robot Description: ## 描述 修复 rank_info_detect/rank_info_dispatcher 的拼写错误与代码风格问题: 1. 形参拼写: fdHanlde -> fdHandle(与头文件声明及 fdHandleToFdContextMap_ 命名一致) 2. 非标准英语命名:sendedLen/headerSended/bodySended -> sentLen/headerSent/bodySent('sended' 非标准过去式,标准为 'sent'),并同步修改 UT/ST 测试中对这些成员的引用 3. 声明与定义统一:ProcessOneSendEvent 头文件声明 int epollFd 与实现 [[maybe_unused]] s32 epollFd 不一致,统一为后者 4. const-correctness:SendHelper、IsOk 均为只读方法,补充 const 限定(与 topoinfo_exchange_dispatcher 同款结构体保持一致) ## 变更类型 - [x] 🐛 Bug修复 ## 关联的Issue NA ## 测试 改动涉及 rank_info_detect/rank_info_dispatcher(业务 2 文件 + 测试 2 文件): 1. 仅为拼写修正、声明一致性、const 限定与测试引用同步,运行逻辑不变 2. 本地 arm 增量编译验证:src / UT / ST 全部编译链接通过 3. 以 /compile 触发 master 分支门禁验证编译 ## 文档更新 无 ## 合入检查 - [x] 🧐 已经详细阅读了贡献指南(CONTRIBUTING.md) - [x] 🔍 标题使用了合适的类型标签([fix]) - [x] 📄 代码修改内容已简要描述 - [x] 🛠️ /compile 门禁验证编译 See merge request: cann/hcomm!5235 | 18 天前 | |
[build] License Header Co-authored-by: ouyangcaike<ouyangcaike@h-partners.com> # message auto-generated for no-merge-commit merge: !4556 merge build/oat into master [build] License Header Created-by: ouyangcaike Commit-by: ouyangcaike Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 1. 全仓C/C++、CMake、Python、Shell文件规范头部License的使用 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] 🚀 性能优化 - [ ] 📝 文档更新 - [x] 📋 其他,请描述:工程 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR不涉及Issue,可填写"NA"。--> NA ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于构造对应xx测试用例、二级冒烟、算子泛化等。--> 已完成的测试用例和场景: 1. 编译成功 2. 全量拦截项通过 补充的UT用例: NA ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> NA ## 合入检查 <!-- 在正式合入前,请做好必要的代码测试,用例补充,软件代码风格检查等。提高合入效率。--> <!-- [x] 表示选中 --> - [x] 🧐 已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 - [x] 🔍 邀请 committer评论 /lgtm前的必要检查 - [x] 🏷️ 标题中使用了合适的类型标签(如:[feat], [fix]) - [x] 📄 代码修改内容已简要描述,相关文档已更新 - [x] 📝 代码注释已更新,代码遵循项目整体代码风格 - [x] 🧪 代码UT测试已更新,覆盖率已达标 - [x] 🔬 验证方法已更新到"测试"部分 - [x] 🛠️ 代码已通过静态分析工具检查,无错误 - [x] 👥 代码检视/code review/同行评议和必要的代码串讲,确保代码质量 - [x] ✅ 代码检视意见已处理或答复,无未处理的检视意见 - [x] 🚀 预约 前冒烟 用例前的必要检查 - [x] ✔️ 代码已有committer的/lgtm 和 模块committer的/lgtm评论 - [x] 🔧 代码已通过compile,编译无错误,无告警 - [x] 🖥️ 代码已通过基本功能本地测试或者在线测试,确保基本功能正常 - [x] 🎯 预约 approver评论/approve,正式合入前的必要检查 - [x] 📊 前冒烟 用例已全量通过 - [x] 📦 新增功能已同步补充基本功能测试用例到前冒烟里 See merge request: cann/hcomm!4556 | 1 个月前 | |
[fix]修复CopyCommEngineCtx锁外TOCTOU并消除engineCtxMap深拷贝 Co-authored-by: Trouble_Im_in<guanzhongkang1@huawei.com> # message auto-generated for no-merge-commit merge: !5154 merge fix/deep-copy-perf into master [fix]修复CopyCommEngineCtx锁外TOCTOU并消除engineCtxMap深拷贝 Created-by: Trouble_Im_in Commit-by: Trouble_Im_in Merged-by: cann-robot Description: ## 描述 本 PR 仅涉及 EngineCtxs(coll_communicator_mgr,host 侧 V2 路径): 1. **消除 engineCtxMap 整 map 深拷贝**: EngineCtxs::CreateCommEngineCtx 中 auto engineCtxMap = contextMap_[tag]; 会将内层 unordered_map 深拷贝一份,而实际只用于 find 存在性判断(阻止重复创建);改为 const auto& 绑定引用,消除每次创建 engine context 时的无谓深拷贝开销。(GetCommEngineCtx 在本 PR 基线中本就经 const auto& 引用查询、无深拷贝,本 PR 未改动其取 map 方式;对其的改动为锁作用域与返回路径收敛,见第 2、3 点。) 2. **修复 CopyCommEngineCtx 锁外 TOCTOU**:EngineCtxs::CopyCommEngineCtx 原先经 GetCommEngineCtx 在锁内取出 ctx 地址,释放锁后才执行拷贝;若另一线程此刻 Destroy* 释放该 ctx 内存,拷贝将访问已释放地址(use-after-free)。现将查找与拷贝整体纳入 mutex_ 临界区,并提取调用方持锁的 GetCommEngineCtxNoLock 供 Get/Copy 复用。HcommEngineCtxCopy 为纯 C 适配函数(内部仅 hrtMemSyncCopy/memcpy_s,无锁无重入),持锁调用无死锁风险。 3. **GetCommEngineCtx 返回路径收敛(本次增补)**:GetCommEngineCtx 不再经 CHK_RET 宏早返回,改为显式保存 GetCommEngineCtxNoLock 的返回值,仅在成功时打印 get context success 日志,并透传实际错误码统一返回;单点返回、错误码一致性与可读性更好,是对上述 TOCTOU 锁修复的代码整理完善。 4. **UT 补齐(本次增补,回应检视意见)**:针对检视意见「GetCommEngineCtx/CopyCommEngineCtx 缺少 UT 覆盖」,在既有 ut_engine_ctxs.cc(此前仅覆盖析构与 DestroyEngineCtx 路径)基础上补齐 8 个用例,为本次锁作用域重构提供回归保护:GetCommEngineCtx 正常成功(校验返回地址与大小)/ tag 不存在(HCCL_E_NOT_FOUND)/ engine 不存在(HCCL_E_NOT_FOUND);CopyCommEngineCtx 正常成功(校验 HcommEngineCtxCopy 收到的目的地址按 dstCtxOffset 偏移,含 offset+size 恰好等于 dstSize 的边界)/ size 越界(HCCL_E_PARA)/ dstCtxOffset 大于 dstSize(HCCL_E_PARA)/ tag 不存在(HCCL_E_NOT_FOUND)/ engine 不存在(HCCL_E_NOT_FOUND),且失败路径均校验未执行拷贝;另按检视意见补充第 9 个用例 Ut_CopyCommEngineCtx_When_OffsetPlusSizeWraparound_Expect_Para——旧 dstCtxOffset + size > dstSize 写法在 dstCtxOffset+size 无符号回绕后会误判可拷贝,新实现先判 dstCtxOffset > dstSize 直接返回 HCCL_E_PARA,锁定防回绕修复。mock 沿用既有 HcommEngineCtxCreate/Destroy 桩方式,新增 HcommEngineCtxCopy 计数+参数记录桩。 ## 变更类型 请选择本次引入的变更类型: - [x] 🐛 Bug修复 - [x] 🚀 性能优化 ## 关联的Issue NA ## 测试 已完成的测试用例和场景: 1. 本地 build.sh --pkg -j16 编译通过(aarch64,生成 cann-hcomm_9.2.0_linux-aarch64.run),无新增告警 2. pre-commit 钩子 clang-format / OAT Compliance Check 全部通过 3. PR 门禁:/compile 触发的 ci-pipeline 已通过(ci-pipeline-passed);后续历次 amend 后均已重新触发 /compile 门禁,本次补充回绕 UT 用例 amend 后同样已重新触发 4. UT 本地验证(UT 增补时):UT 目标 hccl_utest_test_next_resource 编译通过,--gtest_filter=*EngineCtx* 共 25 个用例全部通过:EngineCtxsTest 12 个(4 个既有析构用例 + 8 个新增 Get/Copy 用例),以及 TestHcommEngineCtx / HcommCAdptTest 相邻套件 13 个用例回归通过,确认新增 HcommEngineCtxCopy mock 桩无跨用例干扰;后续按检视意见补充回绕用例后 *EngineCtx* 共 26 个用例(EngineCtxsTest 13 个),由重新触发的 ci-pipeline 门禁统一编译运行验证 补充的UT用例: - Ut_GetCommEngineCtx_When_CtxExist_Expect_SuccessWithAddrAndSize:正常成功,校验返回地址与大小 - Ut_GetCommEngineCtx_When_TagNotExist_Expect_NotFound / Ut_GetCommEngineCtx_When_EngineNotExist_Expect_NotFound:tag/engine 不存在返回 HCCL_E_NOT_FOUND - Ut_CopyCommEngineCtx_When_Normal_Expect_SuccessWithOffsetDst:正常成功,校验拷贝目的地址按 dstCtxOffset 偏移、src/size 传参,及恰好放满(offset+size==dstSize)边界 - Ut_CopyCommEngineCtx_When_SizeOverflow_Expect_Para / Ut_CopyCommEngineCtx_When_OffsetOverflow_Expect_Para:size 越界 / dstCtxOffset 越界(offset > dstSize)校验返回 HCCL_E_PARA,且未执行拷贝 - Ut_CopyCommEngineCtx_When_OffsetPlusSizeWraparound_Expect_Para(按检视意见补充):dstCtxOffset+size 无符号回绕(dstCtxOffset = UINT64_MAX - 9、size = 20、dstSize = 100,旧 dstCtxOffset + size > dstSize 写法回绕后误判可拷贝)返回 HCCL_E_PARA,且未执行拷贝,锁定防回绕修复 - Ut_CopyCommEngineCtx_When_TagNotExist_Expect_NotFound / Ut_CopyCommEngineCtx_When_EngineNotExist_Expect_NotFound:tag/engine 不存在返回 HCCL_E_NOT_FOUND,且未执行拷贝 ## 文档更新 NA ## 合入检查 - [x] 🧐 已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 - [x] 🔍 邀请 committer评论/lgtm前的必要检查 - [x] 🏷️ 标题中使用了合适的类型标签(如:[feat], [fix]) - [x] 📄 代码修改内容已简要描述,相关文档已更新 - [x] 📝 代码注释已更新,代码遵循项目整体代码风格 - [x] 🧪 代码UT测试已更新,覆盖率已达标 - [x] 🔬 验证方法已更新到"测试"部分 - [x] 🛠️ 代码已通过静态分析工具检查,无错误 - [ ] 👥 代码检视/code review/同行评议和必要的代码串讲,确保代码质量 - [ ] ✅ 代码检视意见已处理或答复,无未处理的检视意见 - [ ] 🚀 预约 前冒烟 用例前的必要检查 - [ ] ✔️ 代码已有committer的/lgtm 和 模块committer的/lgtm评论 - [x] 🔧 代码已通过compile,编译无错误,无告警 - [ ] 🖥️ 代码已通过基本功能本地测试或者在线测试,确保基本功能正常 - [ ] 🎯 预约 approver评论/approve,正式合入前的必要检查 - [ ] 📊 前冒烟 用例已全量通过 - [ ] 📦 新增功能已同步补充基本功能测试用例到前冒烟里 See merge request: cann/hcomm!5154 | 12 天前 | |
refactor: restructure UB_MEM symmetric memory implementation Co-authored-by: z00940303<zhangzhuopan@huawei.com> # message auto-generated for no-merge-commit merge: !5402 merge master into master refactor: restructure UB_MEM symmetric memory implementation Created-by: zhangzhuopan Commit-by: z00940303 Merged-by: cann-robot Description: ## 描述 本次变更重构 UB_MEM 对称内存实现,并参考 A3 已验证的处理流程优化代码结构、信息交换及资源生命周期管理。 主要改动如下: 1. 调整 LSA 成员信息交换流程,启动接收线程后再发送数据,避免多成员场景下 Socket 建链和接收串行等待;同时适配非阻塞 Socket 的部分收发。 2. 完善对称 VA 的初始化、预留及偏移分配逻辑,增加 stride 溢出、地址范围和映射粒度校验。 3. 调整 Fabric Shareable Handle 的处理顺序,完成成员 bare TGID 收集和跨进程授权后,再执行 Handle 交换、Import 和 Map。 4. 重构 Window 注册及注销流程: - 底层按完整内存块建立 LSA 对称 VA 映射; - Window 保留用户注册子区间,并在发布时叠加相对偏移; - 支持同一 PA Handle 的映射复用和引用计数管理; - 完善注册失败、部分映射失败及 Finalize 场景下的资源清理。 5. 简化内部数据结构,将映射信息统一收敛到 PaMappingInfo,删除重复或未使用字段,并补充关键变量及资源所有权注释。 6. 调整相关函数及变量命名,使其职责更加明确,并尽量与 A3 的实现和处理顺序保持一致。 ## 变更类型 请选择本次引入的变更类型: - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [x] 🚀 性能优化 - [ ] 📝 文档更新 - [x] 📋 其他,请描述:UB_MEM 对称内存代码重构 ## 关联的Issue https://gitcode.com/cann/hcomm/issues/909 ## 测试 已完成的测试用例和场景: 1. git diff --check 检查通过。 2. 已补充和调整 UB_MEM 对称内存相关 UT;需在完整构建环境中执行并更新测试结果。 补充的UT用例: 1. 注册地址、大小及对称 VA 映射范围校验。 2. stride 超出 HBM 容量的异常场景。 3. 本地及远端 PA Handle 的导入与所有权校验。 4. 部分成员映射失败后的立即清理。 5. 两成员 Ring 信息交换及成员顺序校验。 6.信息交换完成后映射失败的资源回滚。 7. 两成员 Window 注册和 Finalize 完整生命周期。 8. 同一完整内存块的重叠、重复注册及 PA 映射复用。 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 合入检查 <!-- 在正式合入前,请做好必要的代码测试,用例补充,软件代码风格检查等。提高合入效率。--> <!-- [x] 表示选中 --> - [ ] 🧐 已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 - [ ] 🔍 邀请 committer评论/lgtm前的必要检查 - [ ] 🏷️ 标题中使用了合适的类型标签(如:[feat], [fix]) - [ ] 📄 代码修改内容已简要描述,相关文档已更新 - [ ] 📝 代码注释已更新,代码遵循项目整体代码风格 - [ ] 🧪 代码UT测试已更新,覆盖率已达标 - [ ] 🔬 验证方法已更新到"测试"部分 - [ ] 🛠️ 代码已通过静态分析工具检查,无错误 - [ ] 👥 代码检视/code review/同行评议和必要的代码串讲,确保代码质量 - [ ] ✅ 代码检视意见已处理或答复,无未处理的检视意见 - [ ] 🚀 预约 前冒烟 用例前的必要检查 - [ ] ✔️ 代码已有committer的/lgtm 和 模块committer的/lgtm评论 - [ ] 🔧 代码已通过compile,编译无错误,无告警 - [ ] 🖥️ 代码已通过基本功能本地测试或者在线测试,确保基本功能正常 - [ ] 🎯 预约 approver评论/approve,正式合入前的必要检查 - [ ] 📊 前冒烟 用例已全量通过 - [ ] 📦 新增功能已同步补充基本功能测试用例到前冒烟里 See merge request: cann/hcomm!5402 | 9 天前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 11 天前 | ||
| 1 个月前 | ||
| 9 天前 | ||
| 9 天前 | ||
| 10 天前 | ||
| 11 天前 | ||
| 18 天前 | ||
| 1 个月前 | ||
| 12 天前 | ||
| 9 天前 |