已合并
[fix] 优化Host DPU多QP配置获取实现方式 #5298
[fix] 优化Host DPU多QP配置获取实现方式 #5298
已合并
刘宏明创建于 29 天前
刘宏明
刘宏明
29 天前

描述

改动原因:
此前已提交以下两个相关 PR:

两个 PR 分别通过配置文件和环境变量提供 Host 网卡多 QP 配置,但相关解析和查询逻辑分散在 HCCP、legacy 及集合通信域管理层。根据 Issue #835:优化Host网卡多QP配置获取方式,本次将 /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 中不再使用的环境变量解析、查询和符号导出。

变更类型

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

关联的Issue

关联 Issue #835:优化Host网卡多QP配置获取方式

测试

补充或调整的 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 配置优先、未匹配时回退以及端口循环复用行为。

文档更新

NA

合入检查

likedislike
Pull Request已成功合入, 合并人@CANN-robot
(感谢 刘宏明 的贡献)
刘宏明刘宏明
29 天前 创建了 pull request,commit 9da733b8
刘宏明刘宏明
29 天前 关联了issue:[Requirement|需求建议]: 优化Host网卡多QP配置获取方式
atomgit-bot
atomgit-bot
29 天前 评论:

变更摘要

本 PR 优化 Host 网卡多 QP 配置的获取方式:将 /etc/hcomm.cfg 的读取与解析从依赖 HCCP 的 RoceChannelDescConfigurator 迁移到 EnvRdmaConfig,统一用 HostRdmaUdpPortsList 保存配置文件与环境变量 HCCL_HOST_RDMA_UDP_PORTS_LIST 的解析结果(新增 qpCountByPhyId 字段),并按 /etc/hcomm.cfg > HCCL_HOST_RDMA_UDP_PORTS_LIST > MultiQpSrcPort.cfg 的优先级生效,同时删除 RoceChannelDescConfigurator 中基于 RaGetHccnCfg 读取配置的逻辑及相关 HCCP 依赖。

主要改动

  • 配置文件解析迁入 EnvRdmaConfig:EnvRdmaConfig::Parse() 新增调用 ParseHostRdmaUdpPortsList() 与 ParseHostMultiQpConfig(),后者通过 OpenHostMultiQpConfigFile/CollectHostMultiQpConfigFields/ParseHostMultiQpDeviceConfig 按物理设备 ID 解析 udp_port_mode_、multi_qp_count_、multi_qp_udp_ports_ 配置,校验配置完整性、UDP 端口模式、QP 数量及端口范围,并将结果写入 hostRdmaUdpPortsList_ 快照。
  • 解析函数通用化:env_func.cc 中原 ParseDecimalU32 改为带 minValue/maxValue 范围校验的 ParseStrictDecimal(对外声明),ParseHostRdmaUdpPorts、CastHostRdmaUdpPortsList、GetUIntFromStr 均改为复用它;新增 GetHostRdmaQpCountByPhyId 并在 hccl_v2.map 中导出。
  • 删除 HCCP 读取链路:roce_channel_desc_configurator.cc/.h 删除 ReadHostConfigValue、ReadHostNicMultiQpConfigItem、ReadHostNicMultiQpCount、ReadHostNicMultiQpUdpPorts、ParseStrictDecimal 及 HOST_NIC_CONFIG_BUFFER_SIZE,ResolveRoceSrcPorts 不再直接读取 host 多 QP 端口配置。
  • QP 数量查询改走快照:coll_comm_res_c_adpt.cc 的 ResolveQueueNum 在 host 端 ROCE 场景下改为先通过 hrtGetDevice/hrtGetDevicePhyIdByIndex 获取物理设备 ID,再调用 Hccl::GetHostRdmaQpCountByPhyId(rdmaConfig.GetHostRdmaUdpPortsList(), devicePhyId) 查询 QP 数量。
  • 单元测试同步调整:ut_env_config.cc/ut_env_config_validate.cc 新增 ParseHostMultiQpConfigContent、GetHostRdmaQpCountByPhyId 及重复解析清空快照等用例;ut_coll_comm_res_c_adpt.cc、ut_my_rank.cc 删除 StubRaGetHostMultiQpCount/StubRaGetHostMultiQpConfig 等 HCCP mock,改为直接构造 HostRdmaUdpPortsList 数据验证优先级与回退行为。
likedislike
不准确?
atomgit-bot
atomgit-bot
29 天前 评论:

代码审查

✅ 未发现问题

likedislike
不准确?
CANN-robotCANN-robot成员
29 天前 添加了label:cann-cla/yes
此处折叠了183条消息 查看更多
LQ_oyLQ_oy成员
22 天前 解决了最后一个问题
LQ_oy
LQ_oy成员
22 天前 评论:

/lgtm

likedislike
57_Viking
57_Viking成员
21 天前 评论:

/approve

likedislike
CANN-robotCANN-robot成员
21 天前 添加了label:lgtmapproved
CANN-robotCANN-robot成员
21 天前 合入了pull request