当前位置: 首页 > news >正文

CANN/shmem SIMT远程内存访问示例

样例介绍

【免费下载链接】shmemCANN SHMEM 是面向昇腾平台的多机多卡内存通信库,基于OpenSHMEM 标准协议,实现跨设备的高效内存访问与数据同步。项目地址: https://gitcode.com/cann/shmem

本样例旨在展示 SIMD 与 SIMT 混合编译模式下,SIMT 远程内存访问(RMA)接口的典型使用方法。该类接口主要包含以下三种形式:

  1. __simt_callee__ inline void aclshmem_{NAME}_{op}(__gm__ TYPE *dst, __gm__ TYPE *src, uint32_t elem_size, int32_t pe)
  2. __simt_callee__ inline void aclshmem_{op}{BITS}(__gm__ void *dst, __gm__ void *src, size_t nelems, int32_t pe)
  3. __simt_callee__ inline void aclshmem_{op}mem(__gm__ void *dst, __gm__ void *src, uint32_t elem_size, int32_t pe)

上述接口名称中的占位符{}可选值如下表所示:

占位符可选值
{op}put,get
{NAME}half,float,int8,int16,int32,int64,uint8,uint16,uint32,uint64,char,bfloat16
{BITS}8,16,32,64,128

这三种接口的核心功能均为实现连续内存区域的数据传输,其区别在于数据长度的指定方式:

  • 第一种接口:基于每个传输元素的具体数据类型(如halffloat等)进行描述。
  • 第二种接口:基于每个传输元素的比特位大小(如816等)进行描述。
  • 第三种接口:直接指定需要传输的总内存字节大小。

样例执行流程

本样例通过以下流程演示 RMA 接口的具体工作机制:

  1. 环境初始化:每个计算单元(PE)初始化 3 块大小相同的对称内存。其中,第一块内存的数据初始化为[my_pe + 0, ..., my_pe + size - 1],第二块和第三块内存的数据初始化为-1
  2. GET 操作演示:每个 PE 均调用get接口,将逻辑上属于上一个 PE的第一块内存中的数据,拉取并写入至自身的第二块内存中。
  3. PUT 操作演示:每个 PE 均调用put接口,将自身第一块内存中的数据,推送并写入至逻辑上属于下一个 PE的第三块内存中。
  4. 结果校验:通信操作完成后,各 PE 将自动比对内存中的数据,验证数据传输的正确性。

支持的设备

  • Ascend950

使用方式

  1. 编译项目
    shmem/根目录下执行编译脚本:

    bash scripts/build.sh -examples -enable_simt -soc_type Ascend950
  2. 运行simt_rma示例程序
    进入示例目录并执行运行脚本:

    cd examples/simt_rma bash scripts/run.sh

【免费下载链接】shmemCANN SHMEM 是面向昇腾平台的多机多卡内存通信库,基于OpenSHMEM 标准协议,实现跨设备的高效内存访问与数据同步。项目地址: https://gitcode.com/cann/shmem

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

http://www.jsqmd.com/news/783930/

相关文章:

  • ru-text:为AI编码助手注入俄语文本质量灵魂的规则引擎
  • Open-Harness:一站式开源AI模型高效推理与微调框架解析
  • CANN/driver DCMI获取设备频率API
  • 98.吃透YOLOv8架构(C2f+解耦头),手把手落地行人检测项目
  • 7个Vlog背景音乐素材宝藏网站,找歌不费劲儿还不侵权 - 拾光而行
  • CANN TensorFlow迭代循环加载
  • 网络安全之 Burp Suite 深度解析与实战
  • 从RTL到可执行:手把手拆解基于FPGA的硬件仿真器前端三步骤(Analyze, Elaboration, Synthesis)
  • 2026年亲测靠谱:3个私藏AIGC降重工具+免费降AI指令,解决论文AI率过高问题 - 降AI实验室
  • 孤舟笔记 JVM篇三 JVM如何判断一个对象可以被回收?可达性分析比引用计数强在哪
  • CANN/pyasc数据连接API文档
  • 低空经济工业互联网中的数字孪生与智能体:IOC与平台协同的演进逻辑
  • ARM系统控制与调试接口:PPU与DAP详解
  • 有限单边响应游戏中的蒙特卡洛反事实遗憾最小化
  • 别再死记硬背API了!图解 LVGL 的“类”(lv_obj_class_t)与“对象”(lv_obj_t)继承体系
  • 别急着重启!Redis突然连不上的5分钟排查手册(附CentOS 7实战命令)
  • 宁波双利再生资源:镇海废旧金属回收推荐几家公司 - LYL仔仔
  • 抖音下载器终极指南:从零开始掌握批量下载与无水印提取
  • ChatGPT如何通过大学计算机安全课程考核?实验揭示AI对教育评估的冲击与机遇
  • 南京情绪障碍心理医院选择:专业机构服务解析 - 品牌排行榜
  • Facebook+Google+INS代运营公司优选,搭配海外市场AI推广平台与一站式出海营销服务商,赋能企业海外布局(附带联系方式) - 品牌2026
  • CANN-Bench直接启动算子示例
  • Godot文档仓库深度解析:从源码构建到高效使用的完整指南
  • 基于AI智能体的Wazuh自主安全运营流水线构建与实战
  • OpenClaw WebDAV插件:为开发工作空间开启跨平台文件访问
  • kafka 消费组内leader选举1 - 小镇
  • AI技能开发实践:将经典方法论转化为可执行的Agent技能
  • CANN/pypto: gcd函数文档
  • 无锡蔷薇动能科技:滨湖专业的高空车租赁公司电话 - LYL仔仔
  • 拆解ADAS域控成本密码:聊聊MCU端AutoSAR CP软件如何从DV、产测到量产一步步省钱