已合并
多jetty:hcomm支持环境变量HCCL_UB_MULTI_CHANNEL_NUM的解析 #4732
huangbolin创建于 8月20日
多jetty:hcomm支持环境变量HCCL_UB_MULTI_CHANNEL_NUM的解析 #4732
已合并
huangbolin创建于 8月20日
huangbolin
huangbolin成员
8月20日

描述

在 CLOS 拓扑 + UB 协议(CTP/RTP)场景下,通过环境变量配置每个 eid 对之间建多个 channel(每个 channel 底层对应一个独立 jetty),类比 ROCE 多 QP 提升通信带宽。

核心思路:同一个 eid 对之间建多个 channel → 每个 channel 一个独立 jetty → 多 jetty 并行搬运。
hcomm需要获取解析环境变量HCCL_CONFIG_TYPE_UB_MULTI_CHANNEL_NUM并暴露给hccl

另外关于ut的main.cc的修改:
本 PR 新增的 UT Ut_HcclConfigGetInfo_When_CfgTypeIs,HCCL_UB_MULTI_CHANNEL_NUM 是该二进制里第一个触发 EnvConfig 全量解析的用例(新分支要读 EnvConfig::GetInstance().GetRdmaConfig().GetUbMultiChannelNum())。
解析时会校验 HCCL_DFS_CONFIG,而 main.cc 原有的值 connection_fault_detction_time:0 用的 key 已被解析器移除(CastDfsConfig 白名单只剩 task_exception / cluster_heartbeat / inconsistent_check),必然抛 InvalidParamsException。
现象实锤过:线上 UT 因此挂 3 个用例(新的 2 个 + 级联无辜的 SymWinGet),改成 task_exception:on 后全量 UT 57/57 通过。

变更类型

请选择本次引入的变更类型:

关联的Issue

后续需要修改:https://gitcode.com/cann/hcomm/issues/851

测试

已完成的测试用例和场景:

  1. 正常用例:设置环境变量为1到16,可以被hccl的算子获取到正确的值
  2. 异常用例:测试了-1,abc,0,17等异常用例,可以正常拦截报错
  3. RDV RATIO:98.64%,失败用例为已知问题

补充的UT用例:

  1. 验证新特性(新枚举分支 + 全局读值)
  2. 保护重构分支

文档更新

更新了docs/zh/api_ref/comm_mgr_c/data_type_definition/HcclConfigType.md,关于HcclConfigType这个接口的变更

合入检查

likedislike
Pull Request已成功合入, 合并人@CANN-robot
(感谢 huangbolin 的贡献)
huangbolinhuangbolin成员
8月20日 创建了 pull request,commit 1f028588
atomgit-bot
atomgit-bot
8月20日 评论:

变更摘要

本 PR 为 hcomm 新增了对环境变量 HCCL_UB_MULTI_JETTY_NUM 的解析支持,用于配置 UB 多 jetty 数量(多 jetty 特性)。改动在 EnvRdmaConfig 中新增对应的配置字段与读取接口,在 HcclConfigType 枚举中新增配置类型,并将 HcclConfigGetInfo 重构为按配置类型分发的 switch 结构,新增 GetUbMultiJettyNumConfig 以读取并校验该配置值。

主要改动

  • 新增环境变量配置字段:在 src/legacy/ascend950/framework/env_config/base_config.h 与 base_config.cc 中,为 EnvRdmaConfig 新增 CfgField<u32> ubMultiJettyNum{"HCCL_UB_MULTI_JETTY_NUM", ...} 配置项及 GetUbMultiJettyNum() 读取接口,并定义了默认值/最小/最大值常量 HCCL_UB_MULTI_JETTY_NUM_DEFAULT/MIN/MAX(默认 1,范围 1~16),同时在 Parse() 中加入该字段的解析与日志输出。
  • 新增配置类型枚举:在 include/hccl/hccl_comm.h 的 HcclConfigType 枚举中新增 HCCL_CONFIG_TYPE_UB_MULTI_JETTY_NUM = 2,使上层可通过该类型查询多 jetty 数量配置。
  • 重构 HcclConfigGetInfo 并新增查询处理:在 src/legacy/ascend910/framework/op_base/src/op_base.cc 中,将 HcclConfigGetInfo 中原有的条件分支重构为 switch 分发,抽出 GetOpExpansionModeConfig、GetHcclAlgoConfig,并新增 GetUbMultiJettyNumConfig:通过 Hccl::EnvConfig::GetInstance().GetRdmaConfig().GetUbMultiJettyNum() 获取配置值,校验其处于 [1, 16] 范围后写入 info 返回。
likedislike
不准确?
atomgit-bot
atomgit-bot
8月20日 评论:

代码审查

✅ 未发现问题

likedislike
不准确?
huangbolinhuangbolin成员
8月20日 修改了pull request 的描述
CANN-robotCANN-robot成员
8月20日 添加了label:cann-cla/yes
此处折叠了251条消息 查看更多
huangbolinhuangbolin成员
9月7日 关联了issue:[Requirement|需求建议]: HCCL_UB_MULTI_CHANNEL_NUM环境变量解析功能迁移到新目录
huangbolinhuangbolin成员
9月7日 修改了pull request 的描述
57_Viking
57_Viking成员
9月7日 评论:

/approve

likedislike
CANN-robotCANN-robot成员
9月7日 添加了label:lgtmapproved
CANN-robotCANN-robot成员
9月7日 合入了pull request