news 2026/5/9 16:11:31

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/9 16:06:40

分布式智能与连续体机器人:仿生柔体协同控制实践

1. 项目概述:当仿生柔体遇见分布式智能如果你关注过前沿机器人技术,大概率对波士顿动力的Atlas那种关节分明、动作刚猛的机器人印象深刻。但机器人世界还有另一个截然不同的分支,它们没有传统的“关节”,身体像章鱼触手或象鼻一样…

作者头像 李华
网站建设 2026/5/9 16:03:36

构建企业级MLOps平台:从数据湖到自动调度的端到端实践

1. 项目概述:从数据到模型的“高速公路”构想在机器学习项目从实验室走向生产的过程中,我们常常会陷入一种“沼泽地”式的困境。数据科学家在Jupyter Notebook里精心调优的模型,一旦需要处理TB级的实时数据、应对动态变化的计算资源、并保证线…

作者头像 李华
网站建设 2026/5/9 16:03:34

CANN/opbase算子缓存容器API

op_cache_container 【免费下载链接】opbase 本项目是CANN算子库的基础框架库,为算子提供公共依赖文件和基础调度能力。 项目地址: https://gitcode.com/cann/opbase 本章接口为预留接口,后续有可能变更或废弃,不建议开发者使用&#…

作者头像 李华