news 2026/5/11 3:51:31

CANN/asc-devkit SPM缓冲区读取API

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
CANN/asc-devkit SPM缓冲区读取API

ReadSpmBuffer

【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C++标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit

产品支持情况

产品

是否支持

Ascend 950PR/Ascend 950DT

Atlas A3 训练系列产品 / Atlas A3 推理系列产品

Atlas A2 训练系列产品 / Atlas A2 推理系列产品

Kirin X90

Kirin 9030

功能说明

从SPM Buffer读回到local数据中。

函数原型

  • 适用于连续和不连续的数据回读:

    template <typename T> __aicore__ inline void ReadSpmBuffer(const LocalTensor<T>& readBuffer, const DataCopyParams& copyParams, int32_t readOffset = 0)
  • 适用于连续的数据回读:

    template <typename T> __aicore__ inline void ReadSpmBuffer(const LocalTensor<T>& readBuffer, const int32_t readSize, int32_t readOffset = 0)

参数说明

表 1接口参数说明

参数名称

输入/输出

含义

readBuffer

输入

读回的目标local内存。

copyParams

输入

搬运参数,DataCopyParams类型,DataCopyParams结构定义请参考表2。

readSize

输入

读回的元素个数。

readOffset

输入

SPM Buffer的偏移,单位为字节。

表 2DataCopyParams结构体参数定义

参数名称

含义

blockCount

待搬运的连续传输数据块个数。uint16_t类型,取值范围:blockCount∈[1, 4095]。

blockLen

待搬运的每个连续传输数据块长度,单位为DataBlock(32字节)。uint16_t类型,取值范围:blockLen∈[1, 65535]。

特别地,当dst位于C2PIPE2GM时,单位为128B;当dst位于C2时,表示源操作数的连续传输数据块长度,单位为64B。

针对Kirin 9030,当dst位于C2时,表示源操作数的连续传输数据长度,单位为32B。

srcGap

源操作数相邻连续数据块的间隔(前面一个数据块的尾与后面数据块的头的间隔),单位为DataBlock(32字节)。uint16_t类型,srcGap不要超出该数据类型的取值范围。

在L1 Buffer -> Fixpipe Buffer场景中,srcGap特指源操作数相邻连续数据块的间隔(前面一个数据块的头与后面数据块的头的间隔),单位为DataBlock(32字节)。uint16_t类型,srcGap不要超出该数据类型的取值范围。

dstGap

目的操作数相邻连续数据块间的间隔(前面一个数据块的尾与后面数据块的头的间隔),单位为DataBlock(32字节)。uint16_t类型,dstGap不要超出该数据类型的取值范围。

特别地,当dstLocal位于C2PIPE2GM时,单位为128B;当dstLocal位于C2时,单位为64B。针对Kirin 9030,当dstLocal位于C2时,单位为32B。

在L1 Buffer -> Fixpipe Buffer场景中,dstGap特指源操作数相邻连续数据块的间隔(前面一个数据块的头与后面数据块的头的间隔),单位为DataBlock(32字节)。uint16_t类型,dstGap不要超出该数据类型的取值范围。

约束说明

返回值说明

调用示例

AscendC::TPipe pipe; AscendC::TQue<AscendC::TPosition::VECIN, 1> inQueueSrcVecIn; int dataSize = 32; // 假设T为half类型,从UB上申请一块内存32 * sizeof(half)字节 int offset = 32; // 读回时在spmBuffer上偏移32字节 pipe.InitBuffer(inQueueSrcVecIn, 1, dataSize * sizeof(half)); AscendC::LocalTensor<half> writeLocal = inQueueSrcVecIn.AllocTensor<half>(); AscendC::DataCopyParams copyParams{1, 2, 0, 0};// 搬运一个连续传输数据块,连续传输数据块的长度为2个datablock,一个datablock32字节 pipe.ReadSpmBuffer(writeLocal, copyParams, offset);
AscendC::TPipe pipe; AscendC::TQue<AscendC::TPosition::VECIN, 1> inQueueSrcVecIn; int dataSize = 64; // 从UB上申请一块内存64*sizeof(half)字节 int offset = 32; // 读回时在spmBuffer上偏移32字节 pipe.InitBuffer(inQueueSrcVecIn, 1, dataSize * sizeof(half)); AscendC::LocalTensor<half> writeLocal = inQueueSrcVecIn.AllocTensor<half>(); pipe.ReadSpmBuffer(writeLocal, dataSize, offset);

【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C++标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit

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

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

LinearMouse:禁用鼠标加速度与自定义滚动,实现精准线性控制

1. 项目概述&#xff1a;当鼠标指针不再“听话”作为一名长期与代码和界面打交道的开发者&#xff0c;我深知一个流畅、精准的鼠标指针对于工作效率和操作体验意味着什么。你是否也遇到过这样的场景&#xff1a;在连接多台显示器时&#xff0c;鼠标指针在不同屏幕间移动的速度感…

作者头像 李华
网站建设 2026/5/11 3:48:40

Vibe-Coding:开源AI编码助手部署与深度集成指南

1. 项目概述&#xff1a;当API遇上AI&#xff0c;一个为开发者打造的智能编码伴侣最近在GitHub上闲逛&#xff0c;发现了一个挺有意思的项目&#xff0c;叫thelinkapi/vibe-coding。光看名字&#xff0c;“Vibe Coding”&#xff0c;直译过来是“氛围编码”或者“感觉编码”&am…

作者头像 李华
网站建设 2026/5/11 3:37:30

CANN/GE图引擎Profiling初始化接口

aclgrphProfInit 【免费下载链接】ge GE&#xff08;Graph Engine&#xff09;是面向昇腾的图编译器和执行器&#xff0c;提供了计算图优化、多流并行、内存复用和模型下沉等技术手段&#xff0c;加速模型执行效率&#xff0c;减少模型内存占用。 GE 提供对 PyTorch、TensorFlo…

作者头像 李华
网站建设 2026/5/11 3:33:45

GE获取模型输出大小

aclmdlGetOutputSizeByIndex 【免费下载链接】ge GE&#xff08;Graph Engine&#xff09;是面向昇腾的图编译器和执行器&#xff0c;提供了计算图优化、多流并行、内存复用和模型下沉等技术手段&#xff0c;加速模型执行效率&#xff0c;减少模型内存占用。 GE 提供对 PyTorch…

作者头像 李华
网站建设 2026/5/11 3:33:44

昇腾AI处理器算子开发工具包:__half2float类型转换函数

__half2float 【免费下载链接】asc-devkit 本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言&#xff0c;原生支持C和C标准规范&#xff0c;主要由类库和语言扩展层构成&#xff0c;提供多层级API&#xff0c;满足多维场景算子开发诉求。 项目地址: https://gitcode.c…

作者头像 李华
网站建设 2026/5/11 3:24:13

【信息科学与工程学】【控制科学】第三篇 管理系统控制知识

管理系统控制知识 表K.144501 管理系统控制概述 项目 内容 定理/规律/数学方程式/集合特征/几何特征/拓扑特征/代数特征​ 1. 管理控制定义:控制系统S = (A, B, C, D),其中A是控制主体集合,B是被控对象集合,C是控制规则集合,D是信息流集合 2. 控制层级定理:高层战略控…

作者头像 李华