CANN/shmem Root Info工具指南

发布时间:2026/7/11 17:53:50

CANN/shmem Root Info工具指南 Root Info Generate 工具 - 用户指南【免费下载链接】shmemCANN SHMEM 是面向昇腾平台的多机多卡内存通信库基于OpenSHMEM 标准协议实现跨设备的高效内存访问与数据同步。项目地址: https://gitcode.com/cann/shmem概述root_info_generate是一个辅助工具用于查看Ascend950 NPU设备拓扑地址信息帮助用户了解组网结构和设备配置。重要说明支持范围当前仅支持Ascend950平台自动生成root info信息会在SHMEM初始化时自动调用相关接口生成无需用户手动执行工具辅助用途本工具主要用于辅助用户查看和了解组网拓扑、EID地址等信息便于开发和调试非必需操作正常使用SHMEM时用户不需要手动运行此工具背景知识简介昇腾芯片在950代际中超平面使用Unified BusUB总线组网在不同产品形态中使用多种不同的拓扑组网方式。本模块用于发现不同拓扑下每条边的端点地址。组网介绍组网主要采用了MESH和CLOS两种类型组网。相关介绍可参考论文https://arxiv.org/abs/2503.20377MESH组网每个NPU之间均有一条直连的物理链路因此有一对独立的通信地址。示例在同一个NPU板上有8个NPU因此存在8*7/2 28条物理路径即28对通信地址。特点直连链路无交换芯片通信质量最高时延最低地址数量N*(N-1)/2 对地址N为NPU数量CLOS组网任意两个NPU之间通过交换芯片转发因此一个NPU只需一个地址。多平面设计在常见组网中由于可靠性等原因CLOS组网通常分为多个平面每个平面对应一个地址。示例在液冷POD中NPU使用两个独立的逻辑口连接两个分开的网络平面。特点通过交换芯片转发地址数量与平面数量相同可实现流量分担和冗余组网规划网络层级说明在950芯片代际中按通信质量和范围将网络划分为多层网络层级说明层级0通信质量最高时延最低。多为MESH组网主要是同一个NPU单板内的fullmesh网络和POD形态的框级网络层级1通信质量次高时延中等。为CLOS组网通信范围较大为超节点范围仍然在scale up范围内层级2通信质量最低CLOS组网通信范围为整个集群主要是ROCE或者UBOE这类scale out网络层级特点对比层级0板内/框内通信最优质量层级1超节点内通信中等质量层级2集群间通信最低质量但范围最大网络地址说明网络层级地址规划说明层级0由于是MESH组网为主因此有多对通信地址。在拓扑信息中表示为每个NPU上每个端口的地址。地址类型EID层级1根据组网平面填写地址多平面组网时地址数量与平面数量相同。集合通信在不同平面之间做流量分担。地址类型EID层级2地址规划与层级1相同。地址类型IP地址地址类型说明EID (Extended ID)扩展标识符用于层级0和层级1的UB网络通信IP地址用于层级2的scale out网络通信如RoCE、UBOEEID地址格式EID地址为16字节128位在JSON输出中表示为32位十六进制字符串格式示例: 000000000000006000100000dfdf008b 长度: 32个十六进制字符 16字节EID结构参考包含subnet_prefix子网前缀包含interface_id接口标识用于UB网络的端点寻址功能特性拓扑查询: 获取指定NPU的完整拓扑地址信息缓冲区检测: 自动获取拓扑数据所需缓冲区大小文件路径查询: 获取拓扑配置文件路径JSON格式输出: 以结构化JSON格式显示拓扑信息前置条件系统要求SOC类型: Ascend950平台: Linux依赖库: libdcmi.so驱动库、c_sec安全库编译要求CMake 3.16C17编译器Ascend驱动已安装安装说明从源码编译# 克隆代码仓库 git clone 仓库地址 cd shmem # 使用Ascend950 SOC类型编译 bash scripts/build.sh -soc_type Ascend950 # 工具生成位置 # - 编译后立即可用: build/bin/root_info_generate # - 安装后完整安装: install/shmem/bin/root_info_generate验证安装编译完成后可立即使用# 检查编译生成的工具 ls -l build/bin/root_info_generate # 直接运行编译后 ./build/bin/root_info_generate 物理ID # 或使用安装后的工具完整编译安装后 ./install/shmem/bin/root_info_generate 物理ID打包安装完整编译安装后生成安装包install/aarch64/SHMEM_1.0.0_linux-aarch64.run使用方法基本语法./root_info_generate 物理ID参数说明:物理ID: NPU物理ID整数范围0-63使用示例示例1查询ID为3的NPU./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示例2查询其他NPU./root_info_generate 0 ./root_info_generate 5示例3无效物理ID./root_info_generate 100错误输出:Generating root info for NPU with physical ID: 100 Error: topo_addr_info_get_size failed with ret-1输出解读成功输出结构工具执行成功后会输出以下信息缓冲区大小Required buffer size: XXX bytes实际数据大小topo_addr_info_get succeeded, actual size: XXX bytesJSON拓扑数据紧凑格式建议使用jq格式化查看输出为JSON字符串包含拓扑地址信息可使用jq .格式化输出便于阅读拓扑文件路径Topology file path: /usr/local/Ascend/driver/topo/950/atlas_850_1.json错误处理当工具执行失败时会输出错误信息Error: topo_addr_info_get_size failed with ret-1常见错误原因物理ID超出范围有效范围0-63驱动未初始化或设备不可访问设备权限不足常见问题与解决方案问题1工具找不到症状:./root_info_generate: command not found解决方案:使用SOC_TYPEAscend950编译验证安装位置:build/bin/或install/shmem/bin/检查编译日志确认工具已生成问题2库依赖缺失症状:error while loading shared libraries: libshmem_rootinfo.so: cannot open shared object file解决方案:# 设置库路径 export LD_LIBRARY_PATHinstall/shmem/lib:$LD_LIBRARY_PATH # 或复制库到标准位置 cp install/shmem/lib/*.so /usr/local/lib/ ldconfig问题3驱动未初始化症状:Error: topo_addr_info_get_size failed with ret-1解决方案:检查Ascend驱动安装:ls /usr/local/Ascend/初始化驱动: 运行驱动初始化脚本验证NPU设备:ls /dev/davinci*问题4权限拒绝症状:Error: cannot access /dev/davinci0解决方案:# 检查设备权限 ls -l /dev/davinci* # 将用户添加到相应组 sudo usermod -a -G ascend 用户名 # 或使用适当权限运行 sudo ./root_info_generate 0问题5无效物理ID症状:Error: get_mainboard_id returned null for phy_id100解决方案:使用有效的物理ID范围: 0到ACLSHMEMI_MAX_NPU_COUNT-1检查可用NPU:ls /dev/davinci*支持与故障排查获取帮助检查日志: 仔细审查错误消息验证安装: 确保所有依赖已安装测试驱动: 验证Ascend驱动功能联系支持: 提交包含详细日志的问题调试模式启用详细日志用于调试# 设置调试环境如果可用 export SHMEM_LOG_LEVELDEBUG ./root_info_generate 0日志分析检查系统日志获取额外信息# 检查驱动日志 dmesg | grep -i ascend # 检查应用日志 journalctl -u ascend-driver【免费下载链接】shmemCANN SHMEM 是面向昇腾平台的多机多卡内存通信库基于OpenSHMEM 标准协议实现跨设备的高效内存访问与数据同步。项目地址: https://gitcode.com/cann/shmem创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻