文件最后提交记录最后更新时间
UDMA场景支持rootinfo自动生成 Co-authored-by: suqwe<sujianjia@huawei.com> # message auto-generated for no-merge-commit merge: !302 merge master into master UDMA场景支持rootinfo自动生成 Created-by: suqwe Commit-by: suqwe Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> UDMA场景支持rootinfo自动生成 ### 简介 昇腾芯片在950代际中, 超平面使用Unified Bus总线组网,在不同产品形态中使用多种不同的拓扑组网方式, 本模块用于在发现在不同拓扑下每条边的端点地址 #### 组网介绍 组网主要采用了MESH和CLOS两种类型组网。相关介绍可参考论文:https://arxiv.org/abs/2503.20377 ##### mesh组网 即每个NPU之间均有一条直连的物理链路,因此有一对独立的通信地址。 例如在同一个NPU板上有8个NPU,因此存在8*7/2 = 28条物理路径,即28对通信地址 ##### CLOS组网 任意两个NPU之间通过交换芯片转发。 因此一个NPU址需要一个地址。 在常见组网中,由于可靠性等原因,CLOS组网通常可以分为多个平面,每个平面对应一个地址。例如在液冷POD中,NPU使用两个独立的逻辑口连接两个分开的网络平面 ##### 组网规划 #### 网络层级说明 在950芯片代际中,按通信质量和范围,将网络划分为多层 | 网络层级| 说明 | |:-------| :-----------| |0 |通信质量最高,时延最低。多为MESH组网,主要是同一个NPU单板内的fullmesh网络和POD形态的框级网络| |1 |通信质量次高,时延中等。为CLOS组网, 通信范围较大,为超节点范围, 仍然在scale up范围内 | |2 |通信质量最低,CLOS组网, 通信范围为整个集群,主要是ROCE或者UBOE这类scale out网络| ##### 网络地址说明 | 网络层级| 说明 | |:-------| :-----------| |0 | 由于是mesh组网为主,因此有多对通信地址, 在topo addr info中表达为每个NPU上每个端口的地址, 地址类型为EID | |1 | 根据组网平面填写地址, 多平面组网时,地址数量于平面数量相同 , 集合通信在不同平面之间做流量分担 ,地址类型为EID| |2 |地址规划域层1相同, 地址类型为IP地址| ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #123--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/shmem/issues/175 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> UT用例 ![image.png](https://raw.gitcode.com/user-images/assets/8546182/95df7a81-91f5-4e60-b97c-dbe883118b21/image.png 'image.png') 测试 [root@localhost aclshmem-master]# ./build/bin/root_info_generate 3 Generating root info for NPU with physical ID: 3 Required buffer size: 2048 bytes topo_addr_info_get succeeded, actual size: 1329 bytes Rank info: {"version": "2.0","topo_file_path": "/usr/local/Ascend/driver/topo/950/atlas_850_1.json","rank_count": 1,"rank_list": [{"device_id": 3,"local_id": 3,"level_list": [{"net_layer": 0,"net_instance_id": "sp-1_srv65535","net_type": "MESH","net_attr": "","rank_addr_list": [{"addr_type": "EID","addr": "000000000000006000100000dfdf008b","plane_id": "plane_1","ports": ["1/0"]},{"addr_type": "EID","addr": "000000000000006000100000dfdf00cb","plane_id": "plane_1","ports": ["1/8"]},{"addr_type": "EID","addr": "000000000000006000100000dfdf00c3","plane_id": "plane_1","ports": ["1/7"]},{"addr_type": "EID","addr": "000000000000006000100000dfdf00ab","plane_id": "plane_1","ports": ["1/4"]},{"addr_type": "EID","addr": "000000000000006000100000dfdf00a3","plane_id": "plane_1","ports": ["1/3"]},{"addr_type": "EID","addr": "000000000000006000100000dfdf009b","plane_id": "plane_1","ports": ["1/2"]},{"addr_type": "EID","addr": "000000000000006000100000dfdf0093","plane_id": "plane_1","ports": ["1/1"]}]}, {"net_layer": 1,"net_instance_id": "superpod_-1","net_type": "CLOS","net_attr": "","rank_addr_list": [{"addr_type": "EID","addr": "000000000000004000100000dfdf00df","plane_id": "plane_1","ports": ["1/5","1/6"]},{"addr_type": "EID","addr": "000000000000006000100000dfdf005f","plane_id": "plane_0","ports": ["0/4","0/5","0/6","0/7"]}]}]}]} Topology file path: /usr/local/Ascend/driver/topo/950/atlas_850_1.json Root info generation completed successfully ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/shmem!30228 天前
UDMA场景支持rootinfo自动生成 Co-authored-by: suqwe<sujianjia@huawei.com> # message auto-generated for no-merge-commit merge: !302 merge master into master UDMA场景支持rootinfo自动生成 Created-by: suqwe Commit-by: suqwe Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> UDMA场景支持rootinfo自动生成 ### 简介 昇腾芯片在950代际中, 超平面使用Unified Bus总线组网,在不同产品形态中使用多种不同的拓扑组网方式, 本模块用于在发现在不同拓扑下每条边的端点地址 #### 组网介绍 组网主要采用了MESH和CLOS两种类型组网。相关介绍可参考论文:https://arxiv.org/abs/2503.20377 ##### mesh组网 即每个NPU之间均有一条直连的物理链路,因此有一对独立的通信地址。 例如在同一个NPU板上有8个NPU,因此存在8*7/2 = 28条物理路径,即28对通信地址 ##### CLOS组网 任意两个NPU之间通过交换芯片转发。 因此一个NPU址需要一个地址。 在常见组网中,由于可靠性等原因,CLOS组网通常可以分为多个平面,每个平面对应一个地址。例如在液冷POD中,NPU使用两个独立的逻辑口连接两个分开的网络平面 ##### 组网规划 #### 网络层级说明 在950芯片代际中,按通信质量和范围,将网络划分为多层 | 网络层级| 说明 | |:-------| :-----------| |0 |通信质量最高,时延最低。多为MESH组网,主要是同一个NPU单板内的fullmesh网络和POD形态的框级网络| |1 |通信质量次高,时延中等。为CLOS组网, 通信范围较大,为超节点范围, 仍然在scale up范围内 | |2 |通信质量最低,CLOS组网, 通信范围为整个集群,主要是ROCE或者UBOE这类scale out网络| ##### 网络地址说明 | 网络层级| 说明 | |:-------| :-----------| |0 | 由于是mesh组网为主,因此有多对通信地址, 在topo addr info中表达为每个NPU上每个端口的地址, 地址类型为EID | |1 | 根据组网平面填写地址, 多平面组网时,地址数量于平面数量相同 , 集合通信在不同平面之间做流量分担 ,地址类型为EID| |2 |地址规划域层1相同, 地址类型为IP地址| ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #123--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/shmem/issues/175 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> UT用例 ![image.png](https://raw.gitcode.com/user-images/assets/8546182/95df7a81-91f5-4e60-b97c-dbe883118b21/image.png 'image.png') 测试 [root@localhost aclshmem-master]# ./build/bin/root_info_generate 3 Generating root info for NPU with physical ID: 3 Required buffer size: 2048 bytes topo_addr_info_get succeeded, actual size: 1329 bytes Rank info: {"version": "2.0","topo_file_path": "/usr/local/Ascend/driver/topo/950/atlas_850_1.json","rank_count": 1,"rank_list": [{"device_id": 3,"local_id": 3,"level_list": [{"net_layer": 0,"net_instance_id": "sp-1_srv65535","net_type": "MESH","net_attr": "","rank_addr_list": [{"addr_type": "EID","addr": "000000000000006000100000dfdf008b","plane_id": "plane_1","ports": ["1/0"]},{"addr_type": "EID","addr": "000000000000006000100000dfdf00cb","plane_id": "plane_1","ports": ["1/8"]},{"addr_type": "EID","addr": "000000000000006000100000dfdf00c3","plane_id": "plane_1","ports": ["1/7"]},{"addr_type": "EID","addr": "000000000000006000100000dfdf00ab","plane_id": "plane_1","ports": ["1/4"]},{"addr_type": "EID","addr": "000000000000006000100000dfdf00a3","plane_id": "plane_1","ports": ["1/3"]},{"addr_type": "EID","addr": "000000000000006000100000dfdf009b","plane_id": "plane_1","ports": ["1/2"]},{"addr_type": "EID","addr": "000000000000006000100000dfdf0093","plane_id": "plane_1","ports": ["1/1"]}]}, {"net_layer": 1,"net_instance_id": "superpod_-1","net_type": "CLOS","net_attr": "","rank_addr_list": [{"addr_type": "EID","addr": "000000000000004000100000dfdf00df","plane_id": "plane_1","ports": ["1/5","1/6"]},{"addr_type": "EID","addr": "000000000000006000100000dfdf005f","plane_id": "plane_0","ports": ["0/4","0/5","0/6","0/7"]}]}]}]} Topology file path: /usr/local/Ascend/driver/topo/950/atlas_850_1.json Root info generation completed successfully ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/shmem!30228 天前
UDMA场景支持rootinfo自动生成 Co-authored-by: suqwe<sujianjia@huawei.com> # message auto-generated for no-merge-commit merge: !302 merge master into master UDMA场景支持rootinfo自动生成 Created-by: suqwe Commit-by: suqwe Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> UDMA场景支持rootinfo自动生成 ### 简介 昇腾芯片在950代际中, 超平面使用Unified Bus总线组网,在不同产品形态中使用多种不同的拓扑组网方式, 本模块用于在发现在不同拓扑下每条边的端点地址 #### 组网介绍 组网主要采用了MESH和CLOS两种类型组网。相关介绍可参考论文:https://arxiv.org/abs/2503.20377 ##### mesh组网 即每个NPU之间均有一条直连的物理链路,因此有一对独立的通信地址。 例如在同一个NPU板上有8个NPU,因此存在8*7/2 = 28条物理路径,即28对通信地址 ##### CLOS组网 任意两个NPU之间通过交换芯片转发。 因此一个NPU址需要一个地址。 在常见组网中,由于可靠性等原因,CLOS组网通常可以分为多个平面,每个平面对应一个地址。例如在液冷POD中,NPU使用两个独立的逻辑口连接两个分开的网络平面 ##### 组网规划 #### 网络层级说明 在950芯片代际中,按通信质量和范围,将网络划分为多层 | 网络层级| 说明 | |:-------| :-----------| |0 |通信质量最高,时延最低。多为MESH组网,主要是同一个NPU单板内的fullmesh网络和POD形态的框级网络| |1 |通信质量次高,时延中等。为CLOS组网, 通信范围较大,为超节点范围, 仍然在scale up范围内 | |2 |通信质量最低,CLOS组网, 通信范围为整个集群,主要是ROCE或者UBOE这类scale out网络| ##### 网络地址说明 | 网络层级| 说明 | |:-------| :-----------| |0 | 由于是mesh组网为主,因此有多对通信地址, 在topo addr info中表达为每个NPU上每个端口的地址, 地址类型为EID | |1 | 根据组网平面填写地址, 多平面组网时,地址数量于平面数量相同 , 集合通信在不同平面之间做流量分担 ,地址类型为EID| |2 |地址规划域层1相同, 地址类型为IP地址| ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #123--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/shmem/issues/175 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> UT用例 ![image.png](https://raw.gitcode.com/user-images/assets/8546182/95df7a81-91f5-4e60-b97c-dbe883118b21/image.png 'image.png') 测试 [root@localhost aclshmem-master]# ./build/bin/root_info_generate 3 Generating root info for NPU with physical ID: 3 Required buffer size: 2048 bytes topo_addr_info_get succeeded, actual size: 1329 bytes Rank info: {"version": "2.0","topo_file_path": "/usr/local/Ascend/driver/topo/950/atlas_850_1.json","rank_count": 1,"rank_list": [{"device_id": 3,"local_id": 3,"level_list": [{"net_layer": 0,"net_instance_id": "sp-1_srv65535","net_type": "MESH","net_attr": "","rank_addr_list": [{"addr_type": "EID","addr": "000000000000006000100000dfdf008b","plane_id": "plane_1","ports": ["1/0"]},{"addr_type": "EID","addr": "000000000000006000100000dfdf00cb","plane_id": "plane_1","ports": ["1/8"]},{"addr_type": "EID","addr": "000000000000006000100000dfdf00c3","plane_id": "plane_1","ports": ["1/7"]},{"addr_type": "EID","addr": "000000000000006000100000dfdf00ab","plane_id": "plane_1","ports": ["1/4"]},{"addr_type": "EID","addr": "000000000000006000100000dfdf00a3","plane_id": "plane_1","ports": ["1/3"]},{"addr_type": "EID","addr": "000000000000006000100000dfdf009b","plane_id": "plane_1","ports": ["1/2"]},{"addr_type": "EID","addr": "000000000000006000100000dfdf0093","plane_id": "plane_1","ports": ["1/1"]}]}, {"net_layer": 1,"net_instance_id": "superpod_-1","net_type": "CLOS","net_attr": "","rank_addr_list": [{"addr_type": "EID","addr": "000000000000004000100000dfdf00df","plane_id": "plane_1","ports": ["1/5","1/6"]},{"addr_type": "EID","addr": "000000000000006000100000dfdf005f","plane_id": "plane_0","ports": ["0/4","0/5","0/6","0/7"]}]}]}]} Topology file path: /usr/local/Ascend/driver/topo/950/atlas_850_1.json Root info generation completed successfully ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/shmem!30228 天前
UDMA场景支持rootinfo自动生成 Co-authored-by: suqwe<sujianjia@huawei.com> # message auto-generated for no-merge-commit merge: !302 merge master into master UDMA场景支持rootinfo自动生成 Created-by: suqwe Commit-by: suqwe Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> UDMA场景支持rootinfo自动生成 ### 简介 昇腾芯片在950代际中, 超平面使用Unified Bus总线组网,在不同产品形态中使用多种不同的拓扑组网方式, 本模块用于在发现在不同拓扑下每条边的端点地址 #### 组网介绍 组网主要采用了MESH和CLOS两种类型组网。相关介绍可参考论文:https://arxiv.org/abs/2503.20377 ##### mesh组网 即每个NPU之间均有一条直连的物理链路,因此有一对独立的通信地址。 例如在同一个NPU板上有8个NPU,因此存在8*7/2 = 28条物理路径,即28对通信地址 ##### CLOS组网 任意两个NPU之间通过交换芯片转发。 因此一个NPU址需要一个地址。 在常见组网中,由于可靠性等原因,CLOS组网通常可以分为多个平面,每个平面对应一个地址。例如在液冷POD中,NPU使用两个独立的逻辑口连接两个分开的网络平面 ##### 组网规划 #### 网络层级说明 在950芯片代际中,按通信质量和范围,将网络划分为多层 | 网络层级| 说明 | |:-------| :-----------| |0 |通信质量最高,时延最低。多为MESH组网,主要是同一个NPU单板内的fullmesh网络和POD形态的框级网络| |1 |通信质量次高,时延中等。为CLOS组网, 通信范围较大,为超节点范围, 仍然在scale up范围内 | |2 |通信质量最低,CLOS组网, 通信范围为整个集群,主要是ROCE或者UBOE这类scale out网络| ##### 网络地址说明 | 网络层级| 说明 | |:-------| :-----------| |0 | 由于是mesh组网为主,因此有多对通信地址, 在topo addr info中表达为每个NPU上每个端口的地址, 地址类型为EID | |1 | 根据组网平面填写地址, 多平面组网时,地址数量于平面数量相同 , 集合通信在不同平面之间做流量分担 ,地址类型为EID| |2 |地址规划域层1相同, 地址类型为IP地址| ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #123--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/shmem/issues/175 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> UT用例 ![image.png](https://raw.gitcode.com/user-images/assets/8546182/95df7a81-91f5-4e60-b97c-dbe883118b21/image.png 'image.png') 测试 [root@localhost aclshmem-master]# ./build/bin/root_info_generate 3 Generating root info for NPU with physical ID: 3 Required buffer size: 2048 bytes topo_addr_info_get succeeded, actual size: 1329 bytes Rank info: {"version": "2.0","topo_file_path": "/usr/local/Ascend/driver/topo/950/atlas_850_1.json","rank_count": 1,"rank_list": [{"device_id": 3,"local_id": 3,"level_list": [{"net_layer": 0,"net_instance_id": "sp-1_srv65535","net_type": "MESH","net_attr": "","rank_addr_list": [{"addr_type": "EID","addr": "000000000000006000100000dfdf008b","plane_id": "plane_1","ports": ["1/0"]},{"addr_type": "EID","addr": "000000000000006000100000dfdf00cb","plane_id": "plane_1","ports": ["1/8"]},{"addr_type": "EID","addr": "000000000000006000100000dfdf00c3","plane_id": "plane_1","ports": ["1/7"]},{"addr_type": "EID","addr": "000000000000006000100000dfdf00ab","plane_id": "plane_1","ports": ["1/4"]},{"addr_type": "EID","addr": "000000000000006000100000dfdf00a3","plane_id": "plane_1","ports": ["1/3"]},{"addr_type": "EID","addr": "000000000000006000100000dfdf009b","plane_id": "plane_1","ports": ["1/2"]},{"addr_type": "EID","addr": "000000000000006000100000dfdf0093","plane_id": "plane_1","ports": ["1/1"]}]}, {"net_layer": 1,"net_instance_id": "superpod_-1","net_type": "CLOS","net_attr": "","rank_addr_list": [{"addr_type": "EID","addr": "000000000000004000100000dfdf00df","plane_id": "plane_1","ports": ["1/5","1/6"]},{"addr_type": "EID","addr": "000000000000006000100000dfdf005f","plane_id": "plane_0","ports": ["0/4","0/5","0/6","0/7"]}]}]}]} Topology file path: /usr/local/Ascend/driver/topo/950/atlas_850_1.json Root info generation completed successfully ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/shmem!30228 天前
UDMA场景支持rootinfo自动生成 Co-authored-by: suqwe<sujianjia@huawei.com> # message auto-generated for no-merge-commit merge: !302 merge master into master UDMA场景支持rootinfo自动生成 Created-by: suqwe Commit-by: suqwe Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> UDMA场景支持rootinfo自动生成 ### 简介 昇腾芯片在950代际中, 超平面使用Unified Bus总线组网,在不同产品形态中使用多种不同的拓扑组网方式, 本模块用于在发现在不同拓扑下每条边的端点地址 #### 组网介绍 组网主要采用了MESH和CLOS两种类型组网。相关介绍可参考论文:https://arxiv.org/abs/2503.20377 ##### mesh组网 即每个NPU之间均有一条直连的物理链路,因此有一对独立的通信地址。 例如在同一个NPU板上有8个NPU,因此存在8*7/2 = 28条物理路径,即28对通信地址 ##### CLOS组网 任意两个NPU之间通过交换芯片转发。 因此一个NPU址需要一个地址。 在常见组网中,由于可靠性等原因,CLOS组网通常可以分为多个平面,每个平面对应一个地址。例如在液冷POD中,NPU使用两个独立的逻辑口连接两个分开的网络平面 ##### 组网规划 #### 网络层级说明 在950芯片代际中,按通信质量和范围,将网络划分为多层 | 网络层级| 说明 | |:-------| :-----------| |0 |通信质量最高,时延最低。多为MESH组网,主要是同一个NPU单板内的fullmesh网络和POD形态的框级网络| |1 |通信质量次高,时延中等。为CLOS组网, 通信范围较大,为超节点范围, 仍然在scale up范围内 | |2 |通信质量最低,CLOS组网, 通信范围为整个集群,主要是ROCE或者UBOE这类scale out网络| ##### 网络地址说明 | 网络层级| 说明 | |:-------| :-----------| |0 | 由于是mesh组网为主,因此有多对通信地址, 在topo addr info中表达为每个NPU上每个端口的地址, 地址类型为EID | |1 | 根据组网平面填写地址, 多平面组网时,地址数量于平面数量相同 , 集合通信在不同平面之间做流量分担 ,地址类型为EID| |2 |地址规划域层1相同, 地址类型为IP地址| ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #123--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/shmem/issues/175 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> UT用例 ![image.png](https://raw.gitcode.com/user-images/assets/8546182/95df7a81-91f5-4e60-b97c-dbe883118b21/image.png 'image.png') 测试 [root@localhost aclshmem-master]# ./build/bin/root_info_generate 3 Generating root info for NPU with physical ID: 3 Required buffer size: 2048 bytes topo_addr_info_get succeeded, actual size: 1329 bytes Rank info: {"version": "2.0","topo_file_path": "/usr/local/Ascend/driver/topo/950/atlas_850_1.json","rank_count": 1,"rank_list": [{"device_id": 3,"local_id": 3,"level_list": [{"net_layer": 0,"net_instance_id": "sp-1_srv65535","net_type": "MESH","net_attr": "","rank_addr_list": [{"addr_type": "EID","addr": "000000000000006000100000dfdf008b","plane_id": "plane_1","ports": ["1/0"]},{"addr_type": "EID","addr": "000000000000006000100000dfdf00cb","plane_id": "plane_1","ports": ["1/8"]},{"addr_type": "EID","addr": "000000000000006000100000dfdf00c3","plane_id": "plane_1","ports": ["1/7"]},{"addr_type": "EID","addr": "000000000000006000100000dfdf00ab","plane_id": "plane_1","ports": ["1/4"]},{"addr_type": "EID","addr": "000000000000006000100000dfdf00a3","plane_id": "plane_1","ports": ["1/3"]},{"addr_type": "EID","addr": "000000000000006000100000dfdf009b","plane_id": "plane_1","ports": ["1/2"]},{"addr_type": "EID","addr": "000000000000006000100000dfdf0093","plane_id": "plane_1","ports": ["1/1"]}]}, {"net_layer": 1,"net_instance_id": "superpod_-1","net_type": "CLOS","net_attr": "","rank_addr_list": [{"addr_type": "EID","addr": "000000000000004000100000dfdf00df","plane_id": "plane_1","ports": ["1/5","1/6"]},{"addr_type": "EID","addr": "000000000000006000100000dfdf005f","plane_id": "plane_0","ports": ["0/4","0/5","0/6","0/7"]}]}]}]} Topology file path: /usr/local/Ascend/driver/topo/950/atlas_850_1.json Root info generation completed successfully ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/shmem!30228 天前
fix(rootinfo): 按 mainboard_id 选标卡 topo 文件,修复 350 被识别为 300a Co-authored-by: suqwe<sujianjia@huawei.com> # message auto-generated for no-merge-commit merge: !386 merge fix/rootinfo-topo-file-mainboard-id into master fix(rootinfo): 按 mainboard_id 选标卡 topo 文件,修复 350 被识别为 300a Created-by: suqwe Commit-by: suqwe Merged-by: cann-robot Description: ## 现象 tools/rootinfo/root_info_generate 在 Atlas 350 标卡(NOMESH/2PMESH/4PMESH)上生成 rootinfo 时,topo_file_path 一律是 atlas_300a.json,导致下游把 350 标卡识别成 300a。 ## 根因 src/host/transport/topo/rootinfo/aclshmemi_product_strategy.cpp:70aclshmemi_card_product_t::get_root_info 里写死了 atlas_300a.json,对所有标卡 mainboard_id 都生效。该 topo 文件名不在 hcomm 的映射表里。 ## 修复 按 mainboard_id 选 topo 文件,与 hcomm src/legacy/ascend950/framework/topo/topo_addr_info/src/topo.c 的映射对齐: | mainboard_id | topo 文件 | |---|---| | CARD_NOMESH (0x68) | atlas_350_1.json | | CARD_2PMESH (0x6a) | atlas_350_2.json | | CARD_4PMESH (0x6c) | atlas_350_3.json | 实现采用 [KEEP-NEW-SWITCH-CLEANUP] 模式: - [NEW] 新增 card_topo_filename(mainboard_id) 工具函数 - [SWITCH] aclshmemi_card_product_t::get_root_info 改为 build_topo_file_path(driver_path, card_topo_filename(mainboard_id)) - [CLEANUP] 删除原 "atlas_300a.json" 字面量 ## 验证 shmem_rootinfo target 在 -Werror 下编译通过。 Fix #282 See merge request: cann/shmem!3861 天前
UDMA场景支持rootinfo自动生成 Co-authored-by: suqwe<sujianjia@huawei.com> # message auto-generated for no-merge-commit merge: !302 merge master into master UDMA场景支持rootinfo自动生成 Created-by: suqwe Commit-by: suqwe Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> UDMA场景支持rootinfo自动生成 ### 简介 昇腾芯片在950代际中, 超平面使用Unified Bus总线组网,在不同产品形态中使用多种不同的拓扑组网方式, 本模块用于在发现在不同拓扑下每条边的端点地址 #### 组网介绍 组网主要采用了MESH和CLOS两种类型组网。相关介绍可参考论文:https://arxiv.org/abs/2503.20377 ##### mesh组网 即每个NPU之间均有一条直连的物理链路,因此有一对独立的通信地址。 例如在同一个NPU板上有8个NPU,因此存在8*7/2 = 28条物理路径,即28对通信地址 ##### CLOS组网 任意两个NPU之间通过交换芯片转发。 因此一个NPU址需要一个地址。 在常见组网中,由于可靠性等原因,CLOS组网通常可以分为多个平面,每个平面对应一个地址。例如在液冷POD中,NPU使用两个独立的逻辑口连接两个分开的网络平面 ##### 组网规划 #### 网络层级说明 在950芯片代际中,按通信质量和范围,将网络划分为多层 | 网络层级| 说明 | |:-------| :-----------| |0 |通信质量最高,时延最低。多为MESH组网,主要是同一个NPU单板内的fullmesh网络和POD形态的框级网络| |1 |通信质量次高,时延中等。为CLOS组网, 通信范围较大,为超节点范围, 仍然在scale up范围内 | |2 |通信质量最低,CLOS组网, 通信范围为整个集群,主要是ROCE或者UBOE这类scale out网络| ##### 网络地址说明 | 网络层级| 说明 | |:-------| :-----------| |0 | 由于是mesh组网为主,因此有多对通信地址, 在topo addr info中表达为每个NPU上每个端口的地址, 地址类型为EID | |1 | 根据组网平面填写地址, 多平面组网时,地址数量于平面数量相同 , 集合通信在不同平面之间做流量分担 ,地址类型为EID| |2 |地址规划域层1相同, 地址类型为IP地址| ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #123--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/shmem/issues/175 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> UT用例 ![image.png](https://raw.gitcode.com/user-images/assets/8546182/95df7a81-91f5-4e60-b97c-dbe883118b21/image.png 'image.png') 测试 [root@localhost aclshmem-master]# ./build/bin/root_info_generate 3 Generating root info for NPU with physical ID: 3 Required buffer size: 2048 bytes topo_addr_info_get succeeded, actual size: 1329 bytes Rank info: {"version": "2.0","topo_file_path": "/usr/local/Ascend/driver/topo/950/atlas_850_1.json","rank_count": 1,"rank_list": [{"device_id": 3,"local_id": 3,"level_list": [{"net_layer": 0,"net_instance_id": "sp-1_srv65535","net_type": "MESH","net_attr": "","rank_addr_list": [{"addr_type": "EID","addr": "000000000000006000100000dfdf008b","plane_id": "plane_1","ports": ["1/0"]},{"addr_type": "EID","addr": "000000000000006000100000dfdf00cb","plane_id": "plane_1","ports": ["1/8"]},{"addr_type": "EID","addr": "000000000000006000100000dfdf00c3","plane_id": "plane_1","ports": ["1/7"]},{"addr_type": "EID","addr": "000000000000006000100000dfdf00ab","plane_id": "plane_1","ports": ["1/4"]},{"addr_type": "EID","addr": "000000000000006000100000dfdf00a3","plane_id": "plane_1","ports": ["1/3"]},{"addr_type": "EID","addr": "000000000000006000100000dfdf009b","plane_id": "plane_1","ports": ["1/2"]},{"addr_type": "EID","addr": "000000000000006000100000dfdf0093","plane_id": "plane_1","ports": ["1/1"]}]}, {"net_layer": 1,"net_instance_id": "superpod_-1","net_type": "CLOS","net_attr": "","rank_addr_list": [{"addr_type": "EID","addr": "000000000000004000100000dfdf00df","plane_id": "plane_1","ports": ["1/5","1/6"]},{"addr_type": "EID","addr": "000000000000006000100000dfdf005f","plane_id": "plane_0","ports": ["0/4","0/5","0/6","0/7"]}]}]}]} Topology file path: /usr/local/Ascend/driver/topo/950/atlas_850_1.json Root info generation completed successfully ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/shmem!30228 天前
feat: add generated rootinfo fallback Co-authored-by: hbhdhd<luxianbin1@huawei.com> # message auto-generated for no-merge-commit merge: !315 merge rootinfo into master feat: add generated rootinfo fallback Created-by: hbhdhd Commit-by: hbhdhd Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 为 UDMA 场景补充 rootinfo 自动生成 fallback 能力,提升网络 Topo 自动发现流程的可用性和部署兼容性。 当前 UDMA 初始化依赖 rootinfo/topo 信息完成 EID 路由选择。如果固定路径 /etc/hccl_rootinfo.json 不存在、解析失败或内容不可用,原流程会直接导致初始化失败。本次修改在保留优先读取本地 rootinfo 文件的基础上,增加通过 topo_addr_info_get_sizetopo_addr_info_get 动态生成 rootinfo 的兜底路径。 主要改动包括: - TopoReader::ParseRootInfo 支持按当前 phyId 获取 rootinfo。 - 优先读取 /etc/hccl_rootinfo.json,失败后 fallback 到 generated rootinfo。 - 统一复用 ParseRootInfoJson 解析文件 rootinfo 和生成 rootinfo。 - rootinfo 解析按当前物理设备过滤,只保留当前 phyId 对应的 rank 条目。 - 支持 EIDIPV4IPV6 地址格式解析并转换为 UDMA 使用的 raw EID。 - UDMA 初始化流程中增加 logic device 到 phy device 的映射,确保 rootinfo 和底层 RA 查询使用一致的物理设备 ID。 - 增加 ACL 动态加载接口,用于获取当前逻辑 device 对应的物理 device ID。 该修改可以降低 UDMA Topo 自动发现对固定 rootinfo 文件的强依赖,在 rootinfo 文件缺失或不可用时仍可尝试通过系统生成信息完成初始化。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #123--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> Issue [#175](https://gitcode.com/cann/shmem/issues/175) ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ![ex.png](https://raw.gitcode.com/user-images/assets/8546182/9f814041-e74d-4469-a26c-dc9cde2b12ee/ex.png 'ex.png') ![ut.png](https://raw.gitcode.com/user-images/assets/8546182/675c3643-08ca-49c2-a18c-04bfa3ca51ea/ut.png 'ut.png') ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 无 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/shmem!31518 天前
feat: add generated rootinfo fallback Co-authored-by: hbhdhd<luxianbin1@huawei.com> # message auto-generated for no-merge-commit merge: !315 merge rootinfo into master feat: add generated rootinfo fallback Created-by: hbhdhd Commit-by: hbhdhd Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 为 UDMA 场景补充 rootinfo 自动生成 fallback 能力,提升网络 Topo 自动发现流程的可用性和部署兼容性。 当前 UDMA 初始化依赖 rootinfo/topo 信息完成 EID 路由选择。如果固定路径 /etc/hccl_rootinfo.json 不存在、解析失败或内容不可用,原流程会直接导致初始化失败。本次修改在保留优先读取本地 rootinfo 文件的基础上,增加通过 topo_addr_info_get_sizetopo_addr_info_get 动态生成 rootinfo 的兜底路径。 主要改动包括: - TopoReader::ParseRootInfo 支持按当前 phyId 获取 rootinfo。 - 优先读取 /etc/hccl_rootinfo.json,失败后 fallback 到 generated rootinfo。 - 统一复用 ParseRootInfoJson 解析文件 rootinfo 和生成 rootinfo。 - rootinfo 解析按当前物理设备过滤,只保留当前 phyId 对应的 rank 条目。 - 支持 EIDIPV4IPV6 地址格式解析并转换为 UDMA 使用的 raw EID。 - UDMA 初始化流程中增加 logic device 到 phy device 的映射,确保 rootinfo 和底层 RA 查询使用一致的物理设备 ID。 - 增加 ACL 动态加载接口,用于获取当前逻辑 device 对应的物理 device ID。 该修改可以降低 UDMA Topo 自动发现对固定 rootinfo 文件的强依赖,在 rootinfo 文件缺失或不可用时仍可尝试通过系统生成信息完成初始化。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #123--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> Issue [#175](https://gitcode.com/cann/shmem/issues/175) ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ![ex.png](https://raw.gitcode.com/user-images/assets/8546182/9f814041-e74d-4469-a26c-dc9cde2b12ee/ex.png 'ex.png') ![ut.png](https://raw.gitcode.com/user-images/assets/8546182/675c3643-08ca-49c2-a18c-04bfa3ca51ea/ut.png 'ut.png') ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 无 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/shmem!31518 天前
UDMA场景支持rootinfo自动生成 Co-authored-by: suqwe<sujianjia@huawei.com> # message auto-generated for no-merge-commit merge: !302 merge master into master UDMA场景支持rootinfo自动生成 Created-by: suqwe Commit-by: suqwe Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> UDMA场景支持rootinfo自动生成 ### 简介 昇腾芯片在950代际中, 超平面使用Unified Bus总线组网,在不同产品形态中使用多种不同的拓扑组网方式, 本模块用于在发现在不同拓扑下每条边的端点地址 #### 组网介绍 组网主要采用了MESH和CLOS两种类型组网。相关介绍可参考论文:https://arxiv.org/abs/2503.20377 ##### mesh组网 即每个NPU之间均有一条直连的物理链路,因此有一对独立的通信地址。 例如在同一个NPU板上有8个NPU,因此存在8*7/2 = 28条物理路径,即28对通信地址 ##### CLOS组网 任意两个NPU之间通过交换芯片转发。 因此一个NPU址需要一个地址。 在常见组网中,由于可靠性等原因,CLOS组网通常可以分为多个平面,每个平面对应一个地址。例如在液冷POD中,NPU使用两个独立的逻辑口连接两个分开的网络平面 ##### 组网规划 #### 网络层级说明 在950芯片代际中,按通信质量和范围,将网络划分为多层 | 网络层级| 说明 | |:-------| :-----------| |0 |通信质量最高,时延最低。多为MESH组网,主要是同一个NPU单板内的fullmesh网络和POD形态的框级网络| |1 |通信质量次高,时延中等。为CLOS组网, 通信范围较大,为超节点范围, 仍然在scale up范围内 | |2 |通信质量最低,CLOS组网, 通信范围为整个集群,主要是ROCE或者UBOE这类scale out网络| ##### 网络地址说明 | 网络层级| 说明 | |:-------| :-----------| |0 | 由于是mesh组网为主,因此有多对通信地址, 在topo addr info中表达为每个NPU上每个端口的地址, 地址类型为EID | |1 | 根据组网平面填写地址, 多平面组网时,地址数量于平面数量相同 , 集合通信在不同平面之间做流量分担 ,地址类型为EID| |2 |地址规划域层1相同, 地址类型为IP地址| ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #123--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/shmem/issues/175 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> UT用例 ![image.png](https://raw.gitcode.com/user-images/assets/8546182/95df7a81-91f5-4e60-b97c-dbe883118b21/image.png 'image.png') 测试 [root@localhost aclshmem-master]# ./build/bin/root_info_generate 3 Generating root info for NPU with physical ID: 3 Required buffer size: 2048 bytes topo_addr_info_get succeeded, actual size: 1329 bytes Rank info: {"version": "2.0","topo_file_path": "/usr/local/Ascend/driver/topo/950/atlas_850_1.json","rank_count": 1,"rank_list": [{"device_id": 3,"local_id": 3,"level_list": [{"net_layer": 0,"net_instance_id": "sp-1_srv65535","net_type": "MESH","net_attr": "","rank_addr_list": [{"addr_type": "EID","addr": "000000000000006000100000dfdf008b","plane_id": "plane_1","ports": ["1/0"]},{"addr_type": "EID","addr": "000000000000006000100000dfdf00cb","plane_id": "plane_1","ports": ["1/8"]},{"addr_type": "EID","addr": "000000000000006000100000dfdf00c3","plane_id": "plane_1","ports": ["1/7"]},{"addr_type": "EID","addr": "000000000000006000100000dfdf00ab","plane_id": "plane_1","ports": ["1/4"]},{"addr_type": "EID","addr": "000000000000006000100000dfdf00a3","plane_id": "plane_1","ports": ["1/3"]},{"addr_type": "EID","addr": "000000000000006000100000dfdf009b","plane_id": "plane_1","ports": ["1/2"]},{"addr_type": "EID","addr": "000000000000006000100000dfdf0093","plane_id": "plane_1","ports": ["1/1"]}]}, {"net_layer": 1,"net_instance_id": "superpod_-1","net_type": "CLOS","net_attr": "","rank_addr_list": [{"addr_type": "EID","addr": "000000000000004000100000dfdf00df","plane_id": "plane_1","ports": ["1/5","1/6"]},{"addr_type": "EID","addr": "000000000000006000100000dfdf005f","plane_id": "plane_0","ports": ["0/4","0/5","0/6","0/7"]}]}]}]} Topology file path: /usr/local/Ascend/driver/topo/950/atlas_850_1.json Root info generation completed successfully ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/shmem!30228 天前
UDMA场景支持rootinfo自动生成 Co-authored-by: suqwe<sujianjia@huawei.com> # message auto-generated for no-merge-commit merge: !302 merge master into master UDMA场景支持rootinfo自动生成 Created-by: suqwe Commit-by: suqwe Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> UDMA场景支持rootinfo自动生成 ### 简介 昇腾芯片在950代际中, 超平面使用Unified Bus总线组网,在不同产品形态中使用多种不同的拓扑组网方式, 本模块用于在发现在不同拓扑下每条边的端点地址 #### 组网介绍 组网主要采用了MESH和CLOS两种类型组网。相关介绍可参考论文:https://arxiv.org/abs/2503.20377 ##### mesh组网 即每个NPU之间均有一条直连的物理链路,因此有一对独立的通信地址。 例如在同一个NPU板上有8个NPU,因此存在8*7/2 = 28条物理路径,即28对通信地址 ##### CLOS组网 任意两个NPU之间通过交换芯片转发。 因此一个NPU址需要一个地址。 在常见组网中,由于可靠性等原因,CLOS组网通常可以分为多个平面,每个平面对应一个地址。例如在液冷POD中,NPU使用两个独立的逻辑口连接两个分开的网络平面 ##### 组网规划 #### 网络层级说明 在950芯片代际中,按通信质量和范围,将网络划分为多层 | 网络层级| 说明 | |:-------| :-----------| |0 |通信质量最高,时延最低。多为MESH组网,主要是同一个NPU单板内的fullmesh网络和POD形态的框级网络| |1 |通信质量次高,时延中等。为CLOS组网, 通信范围较大,为超节点范围, 仍然在scale up范围内 | |2 |通信质量最低,CLOS组网, 通信范围为整个集群,主要是ROCE或者UBOE这类scale out网络| ##### 网络地址说明 | 网络层级| 说明 | |:-------| :-----------| |0 | 由于是mesh组网为主,因此有多对通信地址, 在topo addr info中表达为每个NPU上每个端口的地址, 地址类型为EID | |1 | 根据组网平面填写地址, 多平面组网时,地址数量于平面数量相同 , 集合通信在不同平面之间做流量分担 ,地址类型为EID| |2 |地址规划域层1相同, 地址类型为IP地址| ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #123--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/shmem/issues/175 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> UT用例 ![image.png](https://raw.gitcode.com/user-images/assets/8546182/95df7a81-91f5-4e60-b97c-dbe883118b21/image.png 'image.png') 测试 [root@localhost aclshmem-master]# ./build/bin/root_info_generate 3 Generating root info for NPU with physical ID: 3 Required buffer size: 2048 bytes topo_addr_info_get succeeded, actual size: 1329 bytes Rank info: {"version": "2.0","topo_file_path": "/usr/local/Ascend/driver/topo/950/atlas_850_1.json","rank_count": 1,"rank_list": [{"device_id": 3,"local_id": 3,"level_list": [{"net_layer": 0,"net_instance_id": "sp-1_srv65535","net_type": "MESH","net_attr": "","rank_addr_list": [{"addr_type": "EID","addr": "000000000000006000100000dfdf008b","plane_id": "plane_1","ports": ["1/0"]},{"addr_type": "EID","addr": "000000000000006000100000dfdf00cb","plane_id": "plane_1","ports": ["1/8"]},{"addr_type": "EID","addr": "000000000000006000100000dfdf00c3","plane_id": "plane_1","ports": ["1/7"]},{"addr_type": "EID","addr": "000000000000006000100000dfdf00ab","plane_id": "plane_1","ports": ["1/4"]},{"addr_type": "EID","addr": "000000000000006000100000dfdf00a3","plane_id": "plane_1","ports": ["1/3"]},{"addr_type": "EID","addr": "000000000000006000100000dfdf009b","plane_id": "plane_1","ports": ["1/2"]},{"addr_type": "EID","addr": "000000000000006000100000dfdf0093","plane_id": "plane_1","ports": ["1/1"]}]}, {"net_layer": 1,"net_instance_id": "superpod_-1","net_type": "CLOS","net_attr": "","rank_addr_list": [{"addr_type": "EID","addr": "000000000000004000100000dfdf00df","plane_id": "plane_1","ports": ["1/5","1/6"]},{"addr_type": "EID","addr": "000000000000006000100000dfdf005f","plane_id": "plane_0","ports": ["0/4","0/5","0/6","0/7"]}]}]}]} Topology file path: /usr/local/Ascend/driver/topo/950/atlas_850_1.json Root info generation completed successfully ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/shmem!30228 天前
UDMA场景支持rootinfo自动生成 Co-authored-by: suqwe<sujianjia@huawei.com> # message auto-generated for no-merge-commit merge: !302 merge master into master UDMA场景支持rootinfo自动生成 Created-by: suqwe Commit-by: suqwe Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> UDMA场景支持rootinfo自动生成 ### 简介 昇腾芯片在950代际中, 超平面使用Unified Bus总线组网,在不同产品形态中使用多种不同的拓扑组网方式, 本模块用于在发现在不同拓扑下每条边的端点地址 #### 组网介绍 组网主要采用了MESH和CLOS两种类型组网。相关介绍可参考论文:https://arxiv.org/abs/2503.20377 ##### mesh组网 即每个NPU之间均有一条直连的物理链路,因此有一对独立的通信地址。 例如在同一个NPU板上有8个NPU,因此存在8*7/2 = 28条物理路径,即28对通信地址 ##### CLOS组网 任意两个NPU之间通过交换芯片转发。 因此一个NPU址需要一个地址。 在常见组网中,由于可靠性等原因,CLOS组网通常可以分为多个平面,每个平面对应一个地址。例如在液冷POD中,NPU使用两个独立的逻辑口连接两个分开的网络平面 ##### 组网规划 #### 网络层级说明 在950芯片代际中,按通信质量和范围,将网络划分为多层 | 网络层级| 说明 | |:-------| :-----------| |0 |通信质量最高,时延最低。多为MESH组网,主要是同一个NPU单板内的fullmesh网络和POD形态的框级网络| |1 |通信质量次高,时延中等。为CLOS组网, 通信范围较大,为超节点范围, 仍然在scale up范围内 | |2 |通信质量最低,CLOS组网, 通信范围为整个集群,主要是ROCE或者UBOE这类scale out网络| ##### 网络地址说明 | 网络层级| 说明 | |:-------| :-----------| |0 | 由于是mesh组网为主,因此有多对通信地址, 在topo addr info中表达为每个NPU上每个端口的地址, 地址类型为EID | |1 | 根据组网平面填写地址, 多平面组网时,地址数量于平面数量相同 , 集合通信在不同平面之间做流量分担 ,地址类型为EID| |2 |地址规划域层1相同, 地址类型为IP地址| ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #123--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/shmem/issues/175 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> UT用例 ![image.png](https://raw.gitcode.com/user-images/assets/8546182/95df7a81-91f5-4e60-b97c-dbe883118b21/image.png 'image.png') 测试 [root@localhost aclshmem-master]# ./build/bin/root_info_generate 3 Generating root info for NPU with physical ID: 3 Required buffer size: 2048 bytes topo_addr_info_get succeeded, actual size: 1329 bytes Rank info: {"version": "2.0","topo_file_path": "/usr/local/Ascend/driver/topo/950/atlas_850_1.json","rank_count": 1,"rank_list": [{"device_id": 3,"local_id": 3,"level_list": [{"net_layer": 0,"net_instance_id": "sp-1_srv65535","net_type": "MESH","net_attr": "","rank_addr_list": [{"addr_type": "EID","addr": "000000000000006000100000dfdf008b","plane_id": "plane_1","ports": ["1/0"]},{"addr_type": "EID","addr": "000000000000006000100000dfdf00cb","plane_id": "plane_1","ports": ["1/8"]},{"addr_type": "EID","addr": "000000000000006000100000dfdf00c3","plane_id": "plane_1","ports": ["1/7"]},{"addr_type": "EID","addr": "000000000000006000100000dfdf00ab","plane_id": "plane_1","ports": ["1/4"]},{"addr_type": "EID","addr": "000000000000006000100000dfdf00a3","plane_id": "plane_1","ports": ["1/3"]},{"addr_type": "EID","addr": "000000000000006000100000dfdf009b","plane_id": "plane_1","ports": ["1/2"]},{"addr_type": "EID","addr": "000000000000006000100000dfdf0093","plane_id": "plane_1","ports": ["1/1"]}]}, {"net_layer": 1,"net_instance_id": "superpod_-1","net_type": "CLOS","net_attr": "","rank_addr_list": [{"addr_type": "EID","addr": "000000000000004000100000dfdf00df","plane_id": "plane_1","ports": ["1/5","1/6"]},{"addr_type": "EID","addr": "000000000000006000100000dfdf005f","plane_id": "plane_0","ports": ["0/4","0/5","0/6","0/7"]}]}]}]} Topology file path: /usr/local/Ascend/driver/topo/950/atlas_850_1.json Root info generation completed successfully ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/shmem!30228 天前
UDMA场景支持rootinfo自动生成 Co-authored-by: suqwe<sujianjia@huawei.com> # message auto-generated for no-merge-commit merge: !302 merge master into master UDMA场景支持rootinfo自动生成 Created-by: suqwe Commit-by: suqwe Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> UDMA场景支持rootinfo自动生成 ### 简介 昇腾芯片在950代际中, 超平面使用Unified Bus总线组网,在不同产品形态中使用多种不同的拓扑组网方式, 本模块用于在发现在不同拓扑下每条边的端点地址 #### 组网介绍 组网主要采用了MESH和CLOS两种类型组网。相关介绍可参考论文:https://arxiv.org/abs/2503.20377 ##### mesh组网 即每个NPU之间均有一条直连的物理链路,因此有一对独立的通信地址。 例如在同一个NPU板上有8个NPU,因此存在8*7/2 = 28条物理路径,即28对通信地址 ##### CLOS组网 任意两个NPU之间通过交换芯片转发。 因此一个NPU址需要一个地址。 在常见组网中,由于可靠性等原因,CLOS组网通常可以分为多个平面,每个平面对应一个地址。例如在液冷POD中,NPU使用两个独立的逻辑口连接两个分开的网络平面 ##### 组网规划 #### 网络层级说明 在950芯片代际中,按通信质量和范围,将网络划分为多层 | 网络层级| 说明 | |:-------| :-----------| |0 |通信质量最高,时延最低。多为MESH组网,主要是同一个NPU单板内的fullmesh网络和POD形态的框级网络| |1 |通信质量次高,时延中等。为CLOS组网, 通信范围较大,为超节点范围, 仍然在scale up范围内 | |2 |通信质量最低,CLOS组网, 通信范围为整个集群,主要是ROCE或者UBOE这类scale out网络| ##### 网络地址说明 | 网络层级| 说明 | |:-------| :-----------| |0 | 由于是mesh组网为主,因此有多对通信地址, 在topo addr info中表达为每个NPU上每个端口的地址, 地址类型为EID | |1 | 根据组网平面填写地址, 多平面组网时,地址数量于平面数量相同 , 集合通信在不同平面之间做流量分担 ,地址类型为EID| |2 |地址规划域层1相同, 地址类型为IP地址| ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #123--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/shmem/issues/175 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> UT用例 ![image.png](https://raw.gitcode.com/user-images/assets/8546182/95df7a81-91f5-4e60-b97c-dbe883118b21/image.png 'image.png') 测试 [root@localhost aclshmem-master]# ./build/bin/root_info_generate 3 Generating root info for NPU with physical ID: 3 Required buffer size: 2048 bytes topo_addr_info_get succeeded, actual size: 1329 bytes Rank info: {"version": "2.0","topo_file_path": "/usr/local/Ascend/driver/topo/950/atlas_850_1.json","rank_count": 1,"rank_list": [{"device_id": 3,"local_id": 3,"level_list": [{"net_layer": 0,"net_instance_id": "sp-1_srv65535","net_type": "MESH","net_attr": "","rank_addr_list": [{"addr_type": "EID","addr": "000000000000006000100000dfdf008b","plane_id": "plane_1","ports": ["1/0"]},{"addr_type": "EID","addr": "000000000000006000100000dfdf00cb","plane_id": "plane_1","ports": ["1/8"]},{"addr_type": "EID","addr": "000000000000006000100000dfdf00c3","plane_id": "plane_1","ports": ["1/7"]},{"addr_type": "EID","addr": "000000000000006000100000dfdf00ab","plane_id": "plane_1","ports": ["1/4"]},{"addr_type": "EID","addr": "000000000000006000100000dfdf00a3","plane_id": "plane_1","ports": ["1/3"]},{"addr_type": "EID","addr": "000000000000006000100000dfdf009b","plane_id": "plane_1","ports": ["1/2"]},{"addr_type": "EID","addr": "000000000000006000100000dfdf0093","plane_id": "plane_1","ports": ["1/1"]}]}, {"net_layer": 1,"net_instance_id": "superpod_-1","net_type": "CLOS","net_attr": "","rank_addr_list": [{"addr_type": "EID","addr": "000000000000004000100000dfdf00df","plane_id": "plane_1","ports": ["1/5","1/6"]},{"addr_type": "EID","addr": "000000000000006000100000dfdf005f","plane_id": "plane_0","ports": ["0/4","0/5","0/6","0/7"]}]}]}]} Topology file path: /usr/local/Ascend/driver/topo/950/atlas_850_1.json Root info generation completed successfully ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/shmem!30228 天前
UDMA场景支持rootinfo自动生成 Co-authored-by: suqwe<sujianjia@huawei.com> # message auto-generated for no-merge-commit merge: !302 merge master into master UDMA场景支持rootinfo自动生成 Created-by: suqwe Commit-by: suqwe Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> UDMA场景支持rootinfo自动生成 ### 简介 昇腾芯片在950代际中, 超平面使用Unified Bus总线组网,在不同产品形态中使用多种不同的拓扑组网方式, 本模块用于在发现在不同拓扑下每条边的端点地址 #### 组网介绍 组网主要采用了MESH和CLOS两种类型组网。相关介绍可参考论文:https://arxiv.org/abs/2503.20377 ##### mesh组网 即每个NPU之间均有一条直连的物理链路,因此有一对独立的通信地址。 例如在同一个NPU板上有8个NPU,因此存在8*7/2 = 28条物理路径,即28对通信地址 ##### CLOS组网 任意两个NPU之间通过交换芯片转发。 因此一个NPU址需要一个地址。 在常见组网中,由于可靠性等原因,CLOS组网通常可以分为多个平面,每个平面对应一个地址。例如在液冷POD中,NPU使用两个独立的逻辑口连接两个分开的网络平面 ##### 组网规划 #### 网络层级说明 在950芯片代际中,按通信质量和范围,将网络划分为多层 | 网络层级| 说明 | |:-------| :-----------| |0 |通信质量最高,时延最低。多为MESH组网,主要是同一个NPU单板内的fullmesh网络和POD形态的框级网络| |1 |通信质量次高,时延中等。为CLOS组网, 通信范围较大,为超节点范围, 仍然在scale up范围内 | |2 |通信质量最低,CLOS组网, 通信范围为整个集群,主要是ROCE或者UBOE这类scale out网络| ##### 网络地址说明 | 网络层级| 说明 | |:-------| :-----------| |0 | 由于是mesh组网为主,因此有多对通信地址, 在topo addr info中表达为每个NPU上每个端口的地址, 地址类型为EID | |1 | 根据组网平面填写地址, 多平面组网时,地址数量于平面数量相同 , 集合通信在不同平面之间做流量分担 ,地址类型为EID| |2 |地址规划域层1相同, 地址类型为IP地址| ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #123--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/shmem/issues/175 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> UT用例 ![image.png](https://raw.gitcode.com/user-images/assets/8546182/95df7a81-91f5-4e60-b97c-dbe883118b21/image.png 'image.png') 测试 [root@localhost aclshmem-master]# ./build/bin/root_info_generate 3 Generating root info for NPU with physical ID: 3 Required buffer size: 2048 bytes topo_addr_info_get succeeded, actual size: 1329 bytes Rank info: {"version": "2.0","topo_file_path": "/usr/local/Ascend/driver/topo/950/atlas_850_1.json","rank_count": 1,"rank_list": [{"device_id": 3,"local_id": 3,"level_list": [{"net_layer": 0,"net_instance_id": "sp-1_srv65535","net_type": "MESH","net_attr": "","rank_addr_list": [{"addr_type": "EID","addr": "000000000000006000100000dfdf008b","plane_id": "plane_1","ports": ["1/0"]},{"addr_type": "EID","addr": "000000000000006000100000dfdf00cb","plane_id": "plane_1","ports": ["1/8"]},{"addr_type": "EID","addr": "000000000000006000100000dfdf00c3","plane_id": "plane_1","ports": ["1/7"]},{"addr_type": "EID","addr": "000000000000006000100000dfdf00ab","plane_id": "plane_1","ports": ["1/4"]},{"addr_type": "EID","addr": "000000000000006000100000dfdf00a3","plane_id": "plane_1","ports": ["1/3"]},{"addr_type": "EID","addr": "000000000000006000100000dfdf009b","plane_id": "plane_1","ports": ["1/2"]},{"addr_type": "EID","addr": "000000000000006000100000dfdf0093","plane_id": "plane_1","ports": ["1/1"]}]}, {"net_layer": 1,"net_instance_id": "superpod_-1","net_type": "CLOS","net_attr": "","rank_addr_list": [{"addr_type": "EID","addr": "000000000000004000100000dfdf00df","plane_id": "plane_1","ports": ["1/5","1/6"]},{"addr_type": "EID","addr": "000000000000006000100000dfdf005f","plane_id": "plane_0","ports": ["0/4","0/5","0/6","0/7"]}]}]}]} Topology file path: /usr/local/Ascend/driver/topo/950/atlas_850_1.json Root info generation completed successfully ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/shmem!30228 天前
UDMA场景支持rootinfo自动生成 Co-authored-by: suqwe<sujianjia@huawei.com> # message auto-generated for no-merge-commit merge: !302 merge master into master UDMA场景支持rootinfo自动生成 Created-by: suqwe Commit-by: suqwe Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> UDMA场景支持rootinfo自动生成 ### 简介 昇腾芯片在950代际中, 超平面使用Unified Bus总线组网,在不同产品形态中使用多种不同的拓扑组网方式, 本模块用于在发现在不同拓扑下每条边的端点地址 #### 组网介绍 组网主要采用了MESH和CLOS两种类型组网。相关介绍可参考论文:https://arxiv.org/abs/2503.20377 ##### mesh组网 即每个NPU之间均有一条直连的物理链路,因此有一对独立的通信地址。 例如在同一个NPU板上有8个NPU,因此存在8*7/2 = 28条物理路径,即28对通信地址 ##### CLOS组网 任意两个NPU之间通过交换芯片转发。 因此一个NPU址需要一个地址。 在常见组网中,由于可靠性等原因,CLOS组网通常可以分为多个平面,每个平面对应一个地址。例如在液冷POD中,NPU使用两个独立的逻辑口连接两个分开的网络平面 ##### 组网规划 #### 网络层级说明 在950芯片代际中,按通信质量和范围,将网络划分为多层 | 网络层级| 说明 | |:-------| :-----------| |0 |通信质量最高,时延最低。多为MESH组网,主要是同一个NPU单板内的fullmesh网络和POD形态的框级网络| |1 |通信质量次高,时延中等。为CLOS组网, 通信范围较大,为超节点范围, 仍然在scale up范围内 | |2 |通信质量最低,CLOS组网, 通信范围为整个集群,主要是ROCE或者UBOE这类scale out网络| ##### 网络地址说明 | 网络层级| 说明 | |:-------| :-----------| |0 | 由于是mesh组网为主,因此有多对通信地址, 在topo addr info中表达为每个NPU上每个端口的地址, 地址类型为EID | |1 | 根据组网平面填写地址, 多平面组网时,地址数量于平面数量相同 , 集合通信在不同平面之间做流量分担 ,地址类型为EID| |2 |地址规划域层1相同, 地址类型为IP地址| ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #123--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/shmem/issues/175 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> UT用例 ![image.png](https://raw.gitcode.com/user-images/assets/8546182/95df7a81-91f5-4e60-b97c-dbe883118b21/image.png 'image.png') 测试 [root@localhost aclshmem-master]# ./build/bin/root_info_generate 3 Generating root info for NPU with physical ID: 3 Required buffer size: 2048 bytes topo_addr_info_get succeeded, actual size: 1329 bytes Rank info: {"version": "2.0","topo_file_path": "/usr/local/Ascend/driver/topo/950/atlas_850_1.json","rank_count": 1,"rank_list": [{"device_id": 3,"local_id": 3,"level_list": [{"net_layer": 0,"net_instance_id": "sp-1_srv65535","net_type": "MESH","net_attr": "","rank_addr_list": [{"addr_type": "EID","addr": "000000000000006000100000dfdf008b","plane_id": "plane_1","ports": ["1/0"]},{"addr_type": "EID","addr": "000000000000006000100000dfdf00cb","plane_id": "plane_1","ports": ["1/8"]},{"addr_type": "EID","addr": "000000000000006000100000dfdf00c3","plane_id": "plane_1","ports": ["1/7"]},{"addr_type": "EID","addr": "000000000000006000100000dfdf00ab","plane_id": "plane_1","ports": ["1/4"]},{"addr_type": "EID","addr": "000000000000006000100000dfdf00a3","plane_id": "plane_1","ports": ["1/3"]},{"addr_type": "EID","addr": "000000000000006000100000dfdf009b","plane_id": "plane_1","ports": ["1/2"]},{"addr_type": "EID","addr": "000000000000006000100000dfdf0093","plane_id": "plane_1","ports": ["1/1"]}]}, {"net_layer": 1,"net_instance_id": "superpod_-1","net_type": "CLOS","net_attr": "","rank_addr_list": [{"addr_type": "EID","addr": "000000000000004000100000dfdf00df","plane_id": "plane_1","ports": ["1/5","1/6"]},{"addr_type": "EID","addr": "000000000000006000100000dfdf005f","plane_id": "plane_0","ports": ["0/4","0/5","0/6","0/7"]}]}]}]} Topology file path: /usr/local/Ascend/driver/topo/950/atlas_850_1.json Root info generation completed successfully ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/shmem!30228 天前
feat: add generated rootinfo fallback Co-authored-by: hbhdhd<luxianbin1@huawei.com> # message auto-generated for no-merge-commit merge: !315 merge rootinfo into master feat: add generated rootinfo fallback Created-by: hbhdhd Commit-by: hbhdhd Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 为 UDMA 场景补充 rootinfo 自动生成 fallback 能力,提升网络 Topo 自动发现流程的可用性和部署兼容性。 当前 UDMA 初始化依赖 rootinfo/topo 信息完成 EID 路由选择。如果固定路径 /etc/hccl_rootinfo.json 不存在、解析失败或内容不可用,原流程会直接导致初始化失败。本次修改在保留优先读取本地 rootinfo 文件的基础上,增加通过 topo_addr_info_get_sizetopo_addr_info_get 动态生成 rootinfo 的兜底路径。 主要改动包括: - TopoReader::ParseRootInfo 支持按当前 phyId 获取 rootinfo。 - 优先读取 /etc/hccl_rootinfo.json,失败后 fallback 到 generated rootinfo。 - 统一复用 ParseRootInfoJson 解析文件 rootinfo 和生成 rootinfo。 - rootinfo 解析按当前物理设备过滤,只保留当前 phyId 对应的 rank 条目。 - 支持 EIDIPV4IPV6 地址格式解析并转换为 UDMA 使用的 raw EID。 - UDMA 初始化流程中增加 logic device 到 phy device 的映射,确保 rootinfo 和底层 RA 查询使用一致的物理设备 ID。 - 增加 ACL 动态加载接口,用于获取当前逻辑 device 对应的物理 device ID。 该修改可以降低 UDMA Topo 自动发现对固定 rootinfo 文件的强依赖,在 rootinfo 文件缺失或不可用时仍可尝试通过系统生成信息完成初始化。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #123--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> Issue [#175](https://gitcode.com/cann/shmem/issues/175) ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ![ex.png](https://raw.gitcode.com/user-images/assets/8546182/9f814041-e74d-4469-a26c-dc9cde2b12ee/ex.png 'ex.png') ![ut.png](https://raw.gitcode.com/user-images/assets/8546182/675c3643-08ca-49c2-a18c-04bfa3ca51ea/ut.png 'ut.png') ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 无 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/shmem!31518 天前
UDMA场景支持rootinfo自动生成 Co-authored-by: suqwe<sujianjia@huawei.com> # message auto-generated for no-merge-commit merge: !302 merge master into master UDMA场景支持rootinfo自动生成 Created-by: suqwe Commit-by: suqwe Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> UDMA场景支持rootinfo自动生成 ### 简介 昇腾芯片在950代际中, 超平面使用Unified Bus总线组网,在不同产品形态中使用多种不同的拓扑组网方式, 本模块用于在发现在不同拓扑下每条边的端点地址 #### 组网介绍 组网主要采用了MESH和CLOS两种类型组网。相关介绍可参考论文:https://arxiv.org/abs/2503.20377 ##### mesh组网 即每个NPU之间均有一条直连的物理链路,因此有一对独立的通信地址。 例如在同一个NPU板上有8个NPU,因此存在8*7/2 = 28条物理路径,即28对通信地址 ##### CLOS组网 任意两个NPU之间通过交换芯片转发。 因此一个NPU址需要一个地址。 在常见组网中,由于可靠性等原因,CLOS组网通常可以分为多个平面,每个平面对应一个地址。例如在液冷POD中,NPU使用两个独立的逻辑口连接两个分开的网络平面 ##### 组网规划 #### 网络层级说明 在950芯片代际中,按通信质量和范围,将网络划分为多层 | 网络层级| 说明 | |:-------| :-----------| |0 |通信质量最高,时延最低。多为MESH组网,主要是同一个NPU单板内的fullmesh网络和POD形态的框级网络| |1 |通信质量次高,时延中等。为CLOS组网, 通信范围较大,为超节点范围, 仍然在scale up范围内 | |2 |通信质量最低,CLOS组网, 通信范围为整个集群,主要是ROCE或者UBOE这类scale out网络| ##### 网络地址说明 | 网络层级| 说明 | |:-------| :-----------| |0 | 由于是mesh组网为主,因此有多对通信地址, 在topo addr info中表达为每个NPU上每个端口的地址, 地址类型为EID | |1 | 根据组网平面填写地址, 多平面组网时,地址数量于平面数量相同 , 集合通信在不同平面之间做流量分担 ,地址类型为EID| |2 |地址规划域层1相同, 地址类型为IP地址| ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #123--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/shmem/issues/175 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> UT用例 ![image.png](https://raw.gitcode.com/user-images/assets/8546182/95df7a81-91f5-4e60-b97c-dbe883118b21/image.png 'image.png') 测试 [root@localhost aclshmem-master]# ./build/bin/root_info_generate 3 Generating root info for NPU with physical ID: 3 Required buffer size: 2048 bytes topo_addr_info_get succeeded, actual size: 1329 bytes Rank info: {"version": "2.0","topo_file_path": "/usr/local/Ascend/driver/topo/950/atlas_850_1.json","rank_count": 1,"rank_list": [{"device_id": 3,"local_id": 3,"level_list": [{"net_layer": 0,"net_instance_id": "sp-1_srv65535","net_type": "MESH","net_attr": "","rank_addr_list": [{"addr_type": "EID","addr": "000000000000006000100000dfdf008b","plane_id": "plane_1","ports": ["1/0"]},{"addr_type": "EID","addr": "000000000000006000100000dfdf00cb","plane_id": "plane_1","ports": ["1/8"]},{"addr_type": "EID","addr": "000000000000006000100000dfdf00c3","plane_id": "plane_1","ports": ["1/7"]},{"addr_type": "EID","addr": "000000000000006000100000dfdf00ab","plane_id": "plane_1","ports": ["1/4"]},{"addr_type": "EID","addr": "000000000000006000100000dfdf00a3","plane_id": "plane_1","ports": ["1/3"]},{"addr_type": "EID","addr": "000000000000006000100000dfdf009b","plane_id": "plane_1","ports": ["1/2"]},{"addr_type": "EID","addr": "000000000000006000100000dfdf0093","plane_id": "plane_1","ports": ["1/1"]}]}, {"net_layer": 1,"net_instance_id": "superpod_-1","net_type": "CLOS","net_attr": "","rank_addr_list": [{"addr_type": "EID","addr": "000000000000004000100000dfdf00df","plane_id": "plane_1","ports": ["1/5","1/6"]},{"addr_type": "EID","addr": "000000000000006000100000dfdf005f","plane_id": "plane_0","ports": ["0/4","0/5","0/6","0/7"]}]}]}]} Topology file path: /usr/local/Ascend/driver/topo/950/atlas_850_1.json Root info generation completed successfully ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/shmem!30228 天前