概述
【免费下载链接】shmemCANN SHMEM 是面向昇腾平台的多机多卡内存通信库,基于OpenSHMEM 标准协议,实现跨设备的高效内存访问与数据同步。项目地址: https://gitcode.com/cann/shmem
本样例基于 SHMEM 工程,介绍了 put & get scalar 数据传输接口访问 Host 内存的使用。
支持的产品型号
- Atlas A3 训练系列产品/Atlas A3 推理系列产品
样例实现
本样例呈现的是 SHMEM 的 put & get scalar 数据传输接口的使用流程,以下简称 put & get 接口。
测试用例实现
(1)初始化 ACL,分配 input 和 output 数据内存大小并初始化数据,input 初始化数据为 0,output 数据为当前 my_pe,后续 put 接口会把本 PE 的 PE 编号发送给下一个 PE 的 input,get 接口会获取下一个 PE 的 output。
(2)调用 run_demo_scalar 启动内核,执行对应 kernel 实现,前后调用 aclshmem_barrier 插入同步确保内核执行不受影响。
(3)执行结果校验,判断各个 PE 上的结果是否符合预期。
(4)清理释放 SHMEM 和 ACL 相关资源。
Kernel 实现
(1)kernel 侧获取本 PE 编号、总 PE 数量、目标 PE 编号。
(2)调用 aclshmem_int32_p 接口向下一个 PE 的 input 发送本 PE 的 PE 编号,调用 aclshmem_quiet 插入同步等待 scalar 数据发送完成。
(3)调用 aclshmem_int32_g 获取下一个 PE 的 output 数据,调用 aclshmem_quiet 插入同步等待 scalar 数据接收完成,并将数据填入本 PE 的 output。
编译执行
环境配置请参考快速上手。完成环境配置后,执行如下命令可进行功能验证。
# 执行编译 bash scripts/build.sh -examples -cann cd examples/rma_d2h_demo # 运行用例 bash run.sh用例执行完成,打屏信息出现“[INFO] demo run end in pe <my_pe>”,说明样例执行结束;打屏信息出现“[SUCCESS] run success in pe <my_pe>”,说明样例执行成功且结果准确。
约束限制
查询A3超节点可用内存大小
运行check_support.py脚本扫描可用的物理内存:
python3 check_support.py样例当前默认配置 1GB Host 内存大小,查询的总的可用内存需要大于 1GB。
A3 超节点 Server ID 配置要求
本样例在 A3 超节点环境下运行时,需要确保各服务器的 Server ID 配置正确。特别是在更换故障硬件后,可能出现 Server ID 未正确配置的情况,会导致样例运行失败。
查询 Server ID 方法
使用 npu-smi 工具查询当前服务器的 Server ID 配置:
npu-smi info -t spod-info -i 0 -c 0输出示例:
SDID : 16777216 Super Pod Size : 384 Super Pod ID : 0 Server Index : 4其中Server Index即为当前服务器的 Server ID,需要确保一个计算节点内所有NPU保持一致。
配置 Server ID 方法
如果发现 Server ID 配置不正确,可以通过以下方式修改:
通过 Redfish 接口修改
- 参考文档:Redfish 接口修改文档
通过 Computing Toolkit 修改
- 参考文档:Computing Toolkit 修改文档
【免费下载链接】shmemCANN SHMEM 是面向昇腾平台的多机多卡内存通信库,基于OpenSHMEM 标准协议,实现跨设备的高效内存访问与数据同步。项目地址: https://gitcode.com/cann/shmem
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考