news 2026/7/17 15:00:00

CANN/asc-devkit TPipe WriteSpmBuffer函数

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
CANN/asc-devkit TPipe WriteSpmBuffer函数

WriteSpmBuffer

【免费下载链接】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 推理系列产品:支持
  • Atlas 200I/500 A2 推理产品:不支持
  • Atlas 推理系列产品AI Core:支持
  • Atlas 推理系列产品Vector Core:不支持
  • Atlas 训练系列产品:支持
  • Kirin X90:支持
  • Kirin 9030:支持

功能说明

头文件路径为:"basic_api/kernel_tpipe.h"

将因为UB空间不足而需要溢出暂存的数据拷贝到SPM Buffer中。

函数原型

  • 适用于连续和不连续的数据暂存:

    template <typename T> __aicore__ inline void WriteSpmBuffer(const LocalTensor<T>& writeBuffer, const DataCopyParams& copyParams, int32_t writeOffset = 0)
  • 适用于连续的数据暂存:

    template <typename T> __aicore__ inline void WriteSpmBuffer(const LocalTensor<T>& writeBuffer, const int32_t writeSize, int32_t writeOffset = 0)

参数说明

表1模板参数说明

参数名称

含义

T

待获取Tensor的数据类型,支持的类型请见LocalTensor相关描述。

表2接口参数说明

参数名称

输入/输出

含义

writeBuffer

输入

需要溢出暂存的Local内存。

copyParams

输入

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

writeSize

输入

拷贝的元素个数。

writeOffset

输入

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

表3DataCopyParams结构体参数定义

参数名称

含义

blockCount

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

blockLen

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

srcGap

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

dstGap

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

约束说明

  • 暂存拷贝到L1时注意writeSize和writeOffset保证32字节对齐。
  • 拷贝的内存不要超出初始化的SPM Buffer大小,否则会存在溢出踩踏等问题。

返回值说明

调用示例

  • 使用DataCopyParams搬运

    AscendC::TPipe pipe; int offset = 32; // 拷贝到SPM Buffer时偏移32字节 AscendC::DataCopyParams copyParams{2, 2, 1, 1}; // 搬运两个数据块,一个数据块的长度为2个datablock,一个datablock为32字节,源地址和目的地址相邻数据块间均间隔一个数据块 // writeLocal为UB上的half类型的LocalTensor pipe.WriteSpmBuffer(writeLocal, copyParams, offset); // 将UB上的数据块搬运到SPM Buffer ... pipe.ReadSpmBuffer(writeLocal, copyParams, offset); // 当UB空间足够时,将暂存在SPM Buffer的数据读回到UB
  • 使用writeSize连续搬运

    AscendC::TPipe pipe; int dataSize = 32; int offset = 32; // 拷贝到spmBuffer时偏移32字节 ; // writeLocal为UB上的half类型的LocalTensor pipe.WriteSpmBuffer(writeLocal, dataSize, offset); // 将UB上的连续传输数据块搬运到SPM Buffer ... pipe.ReadSpmBuffer(writeLocal, dataSize, offset); // 当UB空间足够时,将暂存在SPM Buffer的数据读回到UB

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

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

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

BilibiliDown终极指南:三步完成B站视频批量下载的完整方案

BilibiliDown终极指南&#xff1a;三步完成B站视频批量下载的完整方案 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader &#x1f633; 项目地址: https://gitcode.com/gh_mirro…

作者头像 李华
网站建设 2026/7/17 14:58:44

终极Mac光标自定义指南:用Mousecape打造个性化桌面体验

终极Mac光标自定义指南&#xff1a;用Mousecape打造个性化桌面体验 【免费下载链接】Mousecape Cursor Manager for OSX 项目地址: https://gitcode.com/gh_mirrors/mo/Mousecape 想要让你的Mac桌面焕然一新吗&#xff1f;厌倦了千篇一律的默认光标&#xff1f;Mousecap…

作者头像 李华
网站建设 2026/7/17 14:57:25

制造企业人效低成本高:北京华恒智信破解案例

【客户行业】制造业&#xff1b;高新技术行业&#xff1b;国有企业【问题类型】人效提升【客户背景】某国有高新技术新材料科技生产制造企业成立于上世纪90年代&#xff0c;隶属于某大型央企&#xff0c;位于华中地区&#xff0c;专注于电子陶瓷及高端新材料领域的研发、生产与…

作者头像 李华
网站建设 2026/7/17 14:57:01

终极Zotero PDF翻译解决方案:5分钟完成学术文献中文翻译配置

终极Zotero PDF翻译解决方案&#xff1a;5分钟完成学术文献中文翻译配置 【免费下载链接】zotero-pdf2zh PDF2zh for Zotero | Zotero PDF中文翻译插件 项目地址: https://gitcode.com/gh_mirrors/zo/zotero-pdf2zh 还在为阅读英文学术文献而烦恼吗&#xff1f;Zotero P…

作者头像 李华
网站建设 2026/7/17 14:56:02

国内国产替代的DC-DC芯片测试座工厂整套解决方案

在半导体国产替代的大潮中&#xff0c;DC-DC电源管理芯片的需求量持续攀升。然而&#xff0c;很多工程师都面临一个共同的“卡脖子”难题&#xff1a;芯片设计出来了&#xff0c;测试环节却频频掉链子——接触不良、电阻漂移、高低温循环失效……这些问题直接导致良率损失高达1…

作者头像 李华
网站建设 2026/7/17 14:55:48

Bake项目实战:从零开始构建一个完整的C++应用程序

Bake项目实战&#xff1a;从零开始构建一个完整的C应用程序 【免费下载链接】bake Bake, A build system for building, testing and running C & C projects 项目地址: https://gitcode.com/gh_mirrors/bake/bake Bake是一个轻量级的C/C项目构建系统&#xff0c;旨…

作者头像 李华