Pull Request已成功合入, 合并人@CANN-robot
(感谢 刘宏明 的贡献)变更摘要
该 PR 新增通过环境变量 HCCL_RDMA_UDP_SPORTS_LIST 按物理设备(phy_dev_id)配置多 QP UDP 源端口的能力,配置格式为 phy_dev_id:port_0,port_1;...。核心流程上,在 MyRankUtils::FillRoceSrcPortList 填充 QP 源端口时,优先按当前物理设备 ID 查询该环境变量中的端口配置,未匹配时回退到原有 MultiQpSrcPort.cfg 配置,且当端口数量少于 QP 数量时循环复用端口,便于按组网需求进行哈希分流。
主要改动
- 环境变量接入与访问接口:在
base_config_legacy.h的EnvRdmaConfig中新增CfgField<RdmaUdpSportsList> rdmaUdpSportsList字段,并在base_config_legacy.cc的Parse()中解析HCCL_RDMA_UDP_SPORTS_LIST及打印配置信息,同时新增访问接口GetRdmaUdpSportsList()。 - 解析与校验逻辑:在
env_func.cc新增CastRdmaUdpSportsList及辅助解析函数,按分号切分设备配置、按冒号切分设备 ID 与端口列表,校验配置长度上限(CONFIG_VALUE_LEN_MAX)、分隔符、十进制设备 ID、端口范围及非零(上限CONFIG_SRC_PORT_ID_MAX)、单设备端口数量上限(CONFIG_SRC_PORT_NUM_MAX)和重复phy_dev_id,非法配置抛出InvalidParamsException。 - 数据结构:在
env_func.h新增RdmaUdpSportsList结构(内部以portsByPhyId的std::unordered_map<u32, std::vector<std::uint16_t>>存储),提供IsAvailable()、GetDeviceConfigCount(),并声明按设备 ID 查询的GetRdmaUdpSportsByPhyId()。 - 端口获取优先级与回退逻辑:在
my_rank.cc将原FillRoceSrcPortList逻辑拆分为FillPortsFromRdmaUdpSportsList(经hrtGetDevice/hrtGetDevicePhyIdByIndex获取当前物理设备 ID 后查询环境变量端口)和FillPortsFromMultiQpSrcPortConfig(保留原MultiQpSrcPort.cfg按 IP 对查询逻辑),按环境变量优先、配置文件回退的顺序取端口,并在端口数与queueNum不匹配时告警、按ports[j % ports.size()]截断或循环复用。 - 单元测试补充:在
ut_env_config.cc增加合法配置解析、空配置处理以及非法设备 ID、非法端口、越界、超限、重复设备 ID 抛异常的用例;在ut_my_rank.cc扩展Ut_FillRoceSrcPortList_HostConfigPriority验证环境变量优先级、按物理设备匹配、未匹配回退及端口循环复用行为,并在env_config_stub.h中注册HCCL_RDMA_UDP_SPORTS_LIST的空默认值。


Thanks for your pull-request.
The full list of commands accepted by me can be found at here.
You can get sig-info at here.
You can self-configure the PR merge rules for this repository. For more details, please refer to Here.
For more, you also can visit HICANN.
PR Approval Progress
✅ Congratulations! All modules have met the lgtm and approve requirements.
Module Approval Details
| module | lgtm status | approve status |
|---|---|---|
| src/coll_communicator_mgr | ✅ 丁炜秦, 颜业峰, 严正行, 欧阳茜 (4/2) | ✅ 丁炜秦, 颜业峰 (2/1) |
| src/legacy/ascend950/framework/env_config | ✅ 欧阳茜, 颜业峰, 严正行 (3/2) | ✅ 颜业峰 (1/1) |
| src/legacy/ascend950/hccl_v2.map | ✅ 颜业峰, 严正行, 欧阳茜 (3/2) | ✅ 颜业峰 (1/1) |
| test | ✅ 丁炜秦, 颜业峰, 严正行, 欧阳茜 (4/2) | ✅ 丁炜秦, 颜业峰 (2/1) |
💡 Tip:
- Committer can comment
/approveor/lgtm- Commenting
/approveimplies both code review (lgtm) and intent to merge (approve)
CLA Signature Pass
qq_45577430, thanks for your pull request. All authors of the commits have signed the CLA. 👍


The following users do not have permission to comment /lgtm or /approve on any module in this PR:
gaoyongqiang


/approve


The following users do not have permission to comment /lgtm or /approve on any module in this PR:
gaoyongqiang


描述
改动原因:支持通过环境变量HCCL_HOST_RDMA_UDP_PORTS_LIST按物理设备配置多 QP 的 UDP 源端口,便于根据组网需求进行哈希分流。
改动方法:
变更类型
请选择本次引入的变更类型:
关联的Issue
NA
测试
补充的UT用例:
文档更新
在hccl仓库中新增HCCL_HOST_RDMA_UDP_PORTS_LIST环境变量说明,见https://gitcode.com/cann/hccl/pull/2970。
合入检查