CANN/shmem RDMA同步栅栏示例
示例场景【免费下载链接】shmemCANN SHMEM 是面向昇腾平台的多机多卡内存通信库基于OpenSHMEM 标准协议实现跨设备的高效内存访问与数据同步。项目地址: https://gitcode.com/cann/shmem本示例演示通过 RDMA RoCE 传输通路使用低阶接口aclshmemx_roce_put_nbi配合同步/栅栏原语完成多 PE 之间的全交换all-gather数据通信并验证数据正确性。具体包含以下 8 种同步模式sync_all使用aclshmemx_roce_put_nbiaclshmemx_roce_quietaclshmemx_roce_sync_all完成全局同步sync_all_buf使用aclshmemx_roce_put_nbiaclshmemx_roce_quietaclshmemx_roce_sync_all(buf, sync_id)显式传入 UB buffer 和 sync_idbarrier_all使用aclshmemx_roce_put_nbiaclshmemx_roce_barrier_all完成全局同步barrier 内部自动 quietbarrier_all_buf使用aclshmemx_roce_put_nbiaclshmemx_roce_barrier_all(buf, sync_id)显式传入 UB buffer 和 sync_idsync_team使用aclshmemx_roce_put_nbiaclshmemx_roce_quietaclshmemx_roce_team_sync(team)在 team 内完成同步sync_team_buf使用aclshmemx_roce_put_nbiaclshmemx_roce_quietaclshmemx_roce_team_sync(team, buf, sync_id)在 team 内显式传入参数barrier_team使用aclshmemx_roce_put_nbiaclshmemx_roce_barrier(team)在 team 内完成同步barrier_team_buf使用aclshmemx_roce_put_nbiaclshmemx_roce_barrier(team, buf, sync_id)显式传入参数环境要求运行本示例需要机器具备 RDMA 环境RDMA 网卡及驱动已正确安装配置。检查 RDMA 环境Ascend910B/C 平台for i in {0..7}; do hccn_tool -i $i -ip -g; done for i in {0..7}; do hccn_tool -i $i -net_health -g; done注7 需要根据实际要查看的卡数修改。可用环境命令输出如下Ascend950 平台使用ibv_devinfo命令检查 RDMA 设备信息。ibv_devinfo | grep xscale可用环境命令输出如下使用方式编译在shmem/目录执行以下命令进行编译Ascend910B/C 平台bash scripts/build.sh -enable_rdma -examplesAscend950 平台bash scripts/build.sh -soc_type Ascend950 -enable_rdma -rdma_backend XSCALE -examples运行方式一在examples/rdma_sync_barrier_demo目录下执行bash run.shrun.sh支持通过参数指定 demo 类型默认为sync_all。bash run.sh sync_all # 运行 sync_all demo默认 bash run.sh sync_all_buf # 运行 sync_all(buf, sync_id) demo bash run.sh barrier_all # 运行 barrier_all demo bash run.sh barrier_all_buf # 运行 barrier_all(buf, sync_id) demo bash run.sh sync_team # 运行 sync_team demo bash run.sh sync_team_buf # 运行 sync_team(buf, sync_id) demo bash run.sh barrier_team # 运行 barrier_team demo bash run.sh barrier_team_buf # 运行 barrier_team(buf, sync_id) demo注Ascend950 平台需要在run.sh中设置IBV_EXTEND_DRIVERS环境变量export IBV_EXTEND_DRIVERSpath_to_libxscale_nda.so方式二在shmem/目录手动运行命令单机 2 卡执行命令export PROJECT_ROOTshmem-root-directory export IBV_EXTEND_DRIVERSpath_to_libxscale_nda.so # 仅 Ascend950 平台需要 export LD_LIBRARY_PATH${PROJECT_ROOT}/build/lib:$LD_LIBRARY_PATH ./build/bin/rdma_sync_barrier_demo 2 0 tcp://127.0.0.1:8899 2 0 0 sync_all # PE 0 ./build/bin/rdma_sync_barrier_demo 2 1 tcp://127.0.0.1:8899 2 0 0 sync_all # PE 1注shmem-root-directory 为 SHMEM 项目的根目录。跨机 2 卡执行命令假设机器 A 的 IP 为 ip1机器 B 的 IP 为 ip2。 在机器 A 执行如下命令export PROJECT_ROOTshmem-root-directory export IBV_EXTEND_DRIVERSpath_to_libxscale_nda.so # 仅 Ascend950 平台需要 export LD_LIBRARY_PATH${PROJECT_ROOT}/build/lib:$LD_LIBRARY_PATH ./build/bin/rdma_sync_barrier_demo 2 0 tcp://ip1:8765 1 0 0 sync_all # PE 0同时在机器 B 执行如下命令export PROJECT_ROOTshmem-root-directory export IBV_EXTEND_DRIVERSpath_to_libxscale_nda.so # 仅 Ascend950 平台需要 export LD_LIBRARY_PATH${PROJECT_ROOT}/build/lib:$LD_LIBRARY_PATH ./build/bin/rdma_sync_barrier_demo 2 1 tcp://ip1:8765 1 1 0 sync_all # PE 1注shmem-root-directory 为 SHMEM 项目的根目录。如需在容器中运行跨机测试启动容器时指定--nethost模式即可。双机 16 卡每机 8 卡执行命令示例假设机器 A 的 IP 为 ip1机器 B 的 IP 为 ip2。 在机器 A 执行如下命令export PROJECT_ROOTshmem-root-directory export LD_LIBRARY_PATH${PROJECT_ROOT}/build/lib:$LD_LIBRARY_PATH pids() for pe in $(seq 0 7); do ./build/bin/rdma_sync_barrier_demo 16 $pe tcp://ip1:8765 8 0 0 sync_all pids($!) done for pid in ${pids[]}; do wait $pid; done在机器 B 执行如下命令export PROJECT_ROOTshmem-root-directory export LD_LIBRARY_PATH${PROJECT_ROOT}/build/lib:$LD_LIBRARY_PATH pids() for pe in $(seq 8 15); do ./build/bin/rdma_sync_barrier_demo 16 $pe tcp://ip1:8765 8 8 0 sync_all pids($!) done for pid in ${pids[]}; do wait $pid; done命令行参数说明./rdma_sync_barrier_demo n_pes pe_id ipport g_npus f_pe f_npu [demo_type]参数说明n_pes全局 PE 数量pe_id当前进程的 PE 号ipportSHMEM 初始化需要的 IP 及端口号格式为tcp://IP:端口号。若执行跨机测试需将 IP 设为 PE 0 所在 Host 的 IPg_npus当前机器上启动的 NPU 卡数量f_pe当前机器上使用的第一个 PE 号f_npu当前机器执行本样例使用的第一张 NPU 卡的卡号demo_type可选指定 demo 类型默认为sync_all。支持的值见下方表格demo_type 取值值说明sync_all使用aclshmemx_roce_sync_all完成全局同步sync_all_buf使用aclshmemx_roce_sync_all(buf, sync_id)完成全局同步barrier_all使用aclshmemx_roce_barrier_all完成全局同步barrier_all_buf使用aclshmemx_roce_barrier_all(buf, sync_id)完成全局同步sync_team使用aclshmemx_roce_team_sync(team)在 team 内完成同步sync_team_buf使用aclshmemx_roce_team_sync(team, buf, sync_id)在 team 内完成同步barrier_team使用aclshmemx_roce_barrier(team)在 team 内完成同步barrier_team_buf使用aclshmemx_roce_barrier(team, buf, sync_id)在 team 内完成同步预期输出每个 PE 向所有其他 PE 发送自己的数据值为pe_id 10同步完成后各 PE 校验收到的数据是否正确。校验通过后输出[PASS] check success, pepe_id若校验失败会打印具体的不匹配信息[FAIL] pepe_id offsetoffset gotactual expectedexpected【免费下载链接】shmemCANN SHMEM 是面向昇腾平台的多机多卡内存通信库基于OpenSHMEM 标准协议实现跨设备的高效内存访问与数据同步。项目地址: https://gitcode.com/cann/shmem创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

Agent Skills技能文档生成:自动生成技能使用说明的工具链

Agent Skills技能文档生成:自动生成技能使用说明的工具链

Agent Skills技能文档生成:自动生成技能使用说明的工具链 【免费下载链接】agentskills Specification and documentation for Agent Skills 项目地址: https://gitcode.com/GitHub_Trending/ag/agentskills Agent Skills技能文档生成工具链是一套专为开发者…

2026/7/4 8:28:45阅读更多 →
10分钟快速上手:FlipperZeroHondaFirmware安装与配置教程

10分钟快速上手:FlipperZeroHondaFirmware安装与配置教程

10分钟快速上手:FlipperZeroHondaFirmware安装与配置教程 【免费下载链接】FlipperZeroHondaFirmware Custom Firmware for the Flipper Zero, to add support for Honda key fobs (FCC ID: KR5V2X) 项目地址: https://gitcode.com/gh_mirrors/fl/FlipperZeroHond…

2026/7/4 8:28:45阅读更多 →
CANN/ge DataFlow Python API参考

CANN/ge DataFlow Python API参考

# DataFlow构图接口参考(Python) 【免费下载链接】ge GE(Graph Engine)是面向昇腾的图编译器和执行器,提供了计算图优化、多流并行、内存复用和模型下沉等技术手段,加速模型执行效…

2026/7/4 8:23:45阅读更多 →
深入解析NVIDIA Isaac GR00T:下一代机器人基础模型的架构与性能

深入解析NVIDIA Isaac GR00T:下一代机器人基础模型的架构与性能

深入解析NVIDIA Isaac GR00T:下一代机器人基础模型的架构与性能 【免费下载链接】Isaac-GR00T NVIDIA Isaac GR00T N1.7 - A Foundation Model for Generalist Robots. 项目地址: https://gitcode.com/gh_mirrors/is/Isaac-GR00T NVIDIA Isaac GR00T N1.7是一…

2026/7/4 9:28:52阅读更多 →
水下目标检测技术:挑战、优化与边缘部署实践

水下目标检测技术:挑战、优化与边缘部署实践

1. 水下目标检测的技术挑战与解决方案水下目标检测作为计算机视觉在海洋监测领域的核心应用,面临着远比陆地场景复杂的多模态挑战。经过在多个海洋监测项目的实战验证,我发现传统检测模型直接迁移到水下环境时,性能下降往往达到40-60%。这种&…

2026/7/4 9:28:52阅读更多 →
Grafonnet-lib安装与配置:从0到1搭建Grafana仪表盘开发环境

Grafonnet-lib安装与配置:从0到1搭建Grafana仪表盘开发环境

Grafonnet-lib安装与配置:从0到1搭建Grafana仪表盘开发环境 【免费下载链接】grafonnet-lib Jsonnet library for generating Grafana dashboard files. 项目地址: https://gitcode.com/gh_mirrors/gr/grafonnet-lib Grafonnet-lib是一款强大的Jsonnet库&…

2026/7/4 9:28:52阅读更多 →
WVP-GB28181-Pro企业级视频监控平台技术指南:5大核心优势深度解析

WVP-GB28181-Pro企业级视频监控平台技术指南:5大核心优势深度解析

WVP-GB28181-Pro企业级视频监控平台技术指南:5大核心优势深度解析 【免费下载链接】wvp-GB28181-pro 基于GB28181-2016、部标808、部标1078标准实现的开箱即用的网络视频平台。自带管理页面,支持NAT穿透,支持海康、大华、宇视等品牌的IPC、NV…

2026/7/4 9:28:52阅读更多 →
四层PCB设计进阶:从阻抗控制到信号完整性优化

四层PCB设计进阶:从阻抗控制到信号完整性优化

1. PCB层数升级的核心需求解析在电子设计领域,从双层板升级到四层板从来都不是简单的层数叠加。最近处理的一个工业控制器项目就遇到了典型场景:当信号频率超过50MHz,双层板的EMI问题开始失控,电源完整性指标跌出安全阈值。这让我…

2026/7/4 9:28:52阅读更多 →
【Qt】窗口预览(1)—— 菜单栏

【Qt】窗口预览(1)—— 菜单栏

窗口预览(1) 1. QMainWindow 2. QMenuBar——菜单栏 2.1 创建菜单栏/将菜单栏添加到widget中 2.2 addMenu——在菜单栏中添加菜单 2.3 在菜单中添加选项 2.4 添加快捷键 2.5 支持嵌套添加菜单 2.6 添加信号 2.7 添加分割线和图标 3. QToolBar——工具栏 3.1 创建工具栏 3.2 设…

2026/7/4 9:23:52阅读更多 →
AI Coding 六个月真实ROI账本:产品经理的血泪教训,研发的冷静忠告

AI Coding 六个月真实ROI账本:产品经理的血泪教训,研发的冷静忠告

6个月前的2025年12月,Boris Cherny 公开宣布自己卸载了 IDE。一时间,Vibe Coding 成了全行业最热的话题。6个月后,当我们回过头来拉一份真实账本,发现事情远没有"一句话生成一个App"那么浪漫。本文从产品经理和研发两个…

2026/7/3 14:18:39阅读更多 →
审计来了,数据权限全开——审计走了,怎么确保权限全部关掉?

审计来了,数据权限全开——审计走了,怎么确保权限全部关掉?

引言:审计结束三个月了,审计员的权限还没关某城商行每年按照监管要求开展至少一次数据安全审计。审计期间,内审部门需要抽样检查各类业务数据——交易流水、客户信息、员工操作日志、权限配置记录。这些数据分布在不同系统中,审计…

2026/7/3 14:38:35阅读更多 →
端到端自动驾驶:从GTC‘26看工程可信落地的核心逻辑

端到端自动驾驶:从GTC‘26看工程可信落地的核心逻辑

1. 项目概述:当算法工程师走进GTC26展厅,看到的不是芯片,而是“端到端”的呼吸节奏“端到端”这三个字,在GTC’26现场出现的频率,高得像NVLink带宽测试时的峰值曲线——它不再是一个论文里的技术路径选项,而…

2026/7/4 0:02:48阅读更多 →
缺牙修复科普:常见义齿类型与选择参考

缺牙修复科普:常见义齿类型与选择参考

缺牙修复科普:常见义齿类型与选择参考牙齿缺失是中老年人群中较为常见的口腔问题,不仅会造成咀嚼不便、进食受影响,长期还可能对营养摄入与日常社交带来困扰。义齿是改善缺牙问题的常用方式,目前市面上的义齿种类较多,…

2026/7/4 0:02:48阅读更多 →
STM32F091RC与LTC6904实现高精度方波信号生成

STM32F091RC与LTC6904实现高精度方波信号生成

1. 项目概述:LTC6904与STM32F091RC的精准方波生成方案在嵌入式系统开发中,精确的时钟信号和定时控制往往是项目成败的关键。LTC6904作为一款低功耗、高精度的可编程振荡器芯片,与STM32F091RC这款ARM Cortex-M0内核微控制器的组合,…

2026/7/4 0:02:48阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/4 1:16:56阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/4 2:33:55阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/4 2:33:55阅读更多 →