new multi process per rank impl
Co-authored-by: WujingChen<chenwujing@h-partners.com>
# message auto-generated for no-merge-commit merge:
!1386 merge master into master
new multi process per rank impl
Created-by: WujingChen
Commit-by: WujingChen
Merged-by: cann-robot
Description: ## 描述
<!--在这里详细描述你的改动,包括改动的原因和所采取的方法。-->
**1.修复单卡多进程开启后,当子通信域的rankid指向的物理卡与全局通信域一样的rankid指向的物理卡不一致时,子通信域查询监听端口异常导致建链失败的问题。**
取消进程共享的静态变量端口映射map,改用跟通信域独立关联的二重map,在初始化全局通信域/子通信域的时候,分别维护通信域所用卡的端口映射map。
**2.修复单卡多进程开启后,混跑DPU自定义算子时,由于自定义算子持有自身的空壳SocketManager, 从而无法从通信域中的SocketManager查询监听端口导致建链失败的问题。**
兼容当前存在两个socketmanager的代码架构,使得当存在两个socketmanger的时候,回归成关闭socketmanager的功能,并且保证单卡单进程总能成功。
**3.删除发送两次localranktable的逻辑,改为在首次发送localranktable之前通过topo.json来推理出哪些ip地址启动监听,并抢占独立的端口,减少性能损失。**
本MR修复单进程多通信域/多线程/子通信域场景下单卡多进程有可能失败的问题,核心变更是将端口映射从全局静态的rankId -> port一维映射重构为实例级的rankId -> (IpAddress -> port)二维映射,使每个网络接口拥有独立的监听端口。主要变更:
socket_manager.cc/h: 端口映射从静态unordered_map<u32,u32>改为实例成员unordered_map<u32, unordered_map<IpAddress, u32>>;ServerInitAll重构为基于PhyTopo图遍历的端口抢占逻辑;新增GetDeviceListenPort和GetSubCommDeviceServerListenPortMap
communicator_impl.cc/h: SetDeviceServerListenPortMap调用从初始化流程移入InitSocketManager和CreateSubComm;GetTopoFilePath改为static;删除InitDeviceListenPort
address_info.cc/h: 新增listenPort字段并加入二进制序列化
rank_table_info.cc/h: GetRankDeviceListenPortMap返回类型从一维map改为二维map
rank_info_detect相关: 删除二阶段Update流程,端口抢占提前到Setup阶段完成
op_base_v2.cc: 删除RootInfoUpdate函数及调用
## 关联的Issue
<!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。-->
<!-- 如果这个PR不涉及Issue,可填写"NA"。-->
NA
## 测试
<!--描述进行了哪些测试来验证你的改动。包括但不限于构造对应xx测试用例、二级冒烟、算子泛化等。-->
1.rootinfo初始化通信域,单进程子通信域情况下配置环境变量HCCL_NPU_SOCKET_PORT_RANGE=auto下发通信算子成功。
2.rootinfo初始化通信域,DPU组网时执行下发通信算子成功。
3.rootinfo初始化通信域,单进程多通信域情况下配置环境变量HCCL_NPU_SOCKET_PORT_RANGE=auto下发通信算子成功。
新增两个UT用例,覆盖src/legacy/framework/resource_manager/socket/socket_manager.cc文件的SocketManager::ServerInitAll函数。
Ut_ServerInitAll_Skip_Init_When_Env_not_Config:覆盖不配置环境变量的情况。
Ut_ServerInitAll_Skip_Init_When_Env_Config:覆盖配置环境变量的情况。
## 文档更新
<!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。-->
N/A
## 类型标签
<!-- [x] 表示选中 -->
- [x] Bug修复
- [ ] 新特性
- [ ] 性能优化
- [ ] 文档更新
- [ ] 其他,请描述:
See merge request: cann/hcomm!1386