Pull Request已成功合入, 合并人@CANN-robot
(感谢 LQ_oy 的贡献)变更摘要
本 PR 使 peer 模式下 host 侧网卡的多 QP 配置(multi_qp_count、multi_qp_udp_ports)可以被获取并参与建链参数解析。核心做法是扩展 Hccn 配置读取链路:RsGetHccnCfg 与 RaGetHccnCfg 的签名由 phyId 改为 struct RaInfo *,从而按模式区分配置文件(offline 读 /etc/hccl.cfg,peer online 读 /etc/hcomm.cfg),并新增 RaPeerGetHccnCfg 供 peer 侧读取;在此基础上新增 EnvRdmaConfig::LoadHostNicMultiQpConfig(phyId),按物理设备 ID 读取并校验 host 配置、以互斥锁按 ConfigState(UNLOADED/VALID/INVALID)缓存,并在 CommunicatorImpl::InitHccpPeer 中于 peer 初始化完成后触发加载。同时调整 ResolveQueueNum 与 FillRoceSrcPortList 的解析优先级,使 host 配置优先于 IP 对环境变量配置与全局默认值,且不改变非 peer 场景既有逻辑。
主要改动
-
配置读取接口扩展:
RsGetHccnCfg/RaGetHccnCfg改为接收struct RaInfo *info,按NETWORK_OFFLINE(/etc/hccl.cfg)与NETWORK_PEER_ONLINE(/etc/hcomm.cfg)选择配置文件路径,其他模式返回不支持;ra_peer.c新增RaPeerGetHccnCfg(校验gRaInitCounter、加 peer 互斥锁后调用RsGetHccnCfg),ra_adp.c的RaRsGetHccnCfg相应构造NETWORK_OFFLINE的RaInfo调用。 -
host 多 QP 配置加载与缓存:
base_config_legacy.cc新增EnvRdmaConfig::LoadHostNicMultiQpConfig(phyId),通过RaGetHccnCfg读取udp_port_mode/multi_qp_count/multi_qp_udp_ports并校验(mode 须为multi_qp、count∈[1,32]、端口为逗号分隔十进制且∈[1,65535]、最多 32 个端口),结果以ConfigState(UNLOADED/VALID/INVALID)按 phyId 缓存,由phyIdConfigMutex保证惰性加载与并发安全;env_func.h/cc相应新增ConfigState、MultiQpConfig、GetMultiQpCountByPhyId、GetMultiQpSrcPortsByPhyId、IsPhyIdConfigAvailable,并将原IsAvailable保留为兼容别名IsIpPairConfigAvailable。 -
队列数解析优先级调整:
coll_comm_res_c_adpt.cc中ResolveQueueNum增加phyId参数,优先级改为调用方显式配置 > host 配置(GetMultiQpCountByPhyId)> IP 对环境变量配置 > 全局默认(GetRdmaQueueNum),ProcessRoceChannelDesc通过HrtGetDevicePhyIdByIndex获取 phyId 传入。 -
源端口列表填充优先级调整:
my_rank.cc中FillRoceSrcPortList增加phyId参数,优先取 host 配置端口(GetMultiQpSrcPortsByPhyId),无配置时回退 IP 对配置,再回退默认(udpSport=0);CreateChannels在存在 ROCH 通道时通过hrtGetDevicePhyIdByIndex计算devicePhyId传入。 -
peer 初始化后触发加载:
communicator_impl.cc的InitHccpPeer在HccpPeerManager::GetInstance().Init(devLogicId)之后调用LoadHostNicMultiQpConfig(devPhyId),使 host 配置仅在 peer 模式下被加载;并配套更新多处 UT/ST 桩与用例(如ut_env_config.cc覆盖合法/非法/边界/缓存/并发、ut_coll_comm_res_c_adpt.cc验证优先级、ut_my_rank.cc验证端口回退、ut_communicator_impl.cc验证加载时机)。


/lgtm


/approve


描述
改动原因:peer 模式下 host 侧网卡的多 QP 配置(QP 数量、源 UDP 端口)此前无法获取,只能使用调用方显式配置、IP 对环境变量配置或全局默认值建链,导致 host 网卡无法按 host 配置文件中的多 QP 参数生效。
改动方法:
在 ResolveQueueNum 和 FillRoceSrcPortList 中根据设备 logicId 获取 phyId,通过 MyRankUtils 按需读取并校验 Host multi-QP config 中的 QP 数量或源 UDP 端口。QP 数量按照“调用方显式配置 > Host multi-QP config > IP 对环境变量配置 > 全局默认值”的顺序选择;源端口优先使用 Host multi-QP config,读取失败或配置无效时回退到 IP 对环境变量配置和原有默认行为。
变更类型
请选择本次引入的变更类型:
测试
补充的UT用例:
合入检查