CANN/asc-devkit TPipe写入SPM缓冲

发布时间:2026/7/15 14:59:01

CANN/asc-devkit TPipe写入SPM缓冲
WriteSpmBuffer产品支持情况产品是否支持Ascend 950PR/Ascend 950DT√Atlas A3 训练系列产品 / Atlas A3 推理系列产品√Atlas A2 训练系列产品 / Atlas A2 推理系列产品√Atlas 200I/500 A2 推理产品xAtlas 推理系列产品 AI Core√Atlas 推理系列产品 Vector CorexAtlas 训练系列产品√Kirin X90√Kirin 9030√功能说明将需要溢出暂存的数据拷贝到SPM Buffer中。函数原型适用于连续和不连续的数据暂存template typename T __aicore__ inline void WriteSpmBuffer(const LocalTensorT writeBuffer, const DataCopyParams copyParams, int32_t writeOffset 0)适用于连续的数据暂存template typename T __aicore__ inline void WriteSpmBuffer(const LocalTensorT writeBuffer, const int32_t writeSize, int32_t writeOffset 0)参数说明表 1接口参数说明参数名称输入/输出含义writeBuffer输入需要溢出暂存的Local内存。copyParams输入搬运参数DataCopyParams类型DataCopyParams结构定义请参考表2。writeSize输入拷贝的元素个数。writeOffset输入拷贝到SPM Buffer的偏移单位为字节。表 2DataCopyParams结构体参数定义参数名称含义blockCount待搬运的连续传输数据块个数。uint16_t类型取值范围blockCount∈[1, 4095]。blockLen待搬运的每个连续传输数据块长度单位为DataBlock32字节。uint16_t类型取值范围blockLen∈[1, 65535]。srcGap源操作数相邻连续数据块的间隔前面一个数据块的尾与后面数据块的头的间隔单位为DataBlock32字节。uint16_t类型srcGap不要超出该数据类型的取值范围。dstGap目的操作数相邻连续数据块间的间隔前面一个数据块的尾与后面数据块的头的间隔单位为DataBlock32字节。uint16_t类型dstGap不要超出该数据类型的取值范围。约束说明暂存拷贝到L1时注意writeSize和writeOffset保证32字节对齐。拷贝的内存不要超出初始化的SPM Buffer大小否则会存在溢出踩踏等问题。返回值说明无调用示例使用DataCopyParams搬运AscendC::TPipe pipe; int dataSize 32; // 假设T为half类型从ub上申请一块内存32 * sizeof(half)字节 int offset 32; // 拷贝到spmBuffer时偏移32字节 AscendC::DataCopyParams copyParams{1, 2, 0, 0}; // 从ub上搬运一个连续传输数据块一个数据块的长度为2个datablock一个datablock为32bytes // writeLocal为SPM Buffer上的half类型的LocalTensor pipe.WriteSpmBuffer(writeLocal, copyParams, offset); // 将ub上的连续传输数据块搬运到SPM Buffer pipe.ReadSpmBuffer(writeLocal, copyParams, offset); // 将暂存在SPM Buffer的数据读回到local数据 ... // 当ub内存足够时将暂存在SPM Buffer的数据块搬运回GM上dstGlobal为half类型的GlobalTensor AscendC::DataCopy(dstGlobal, writeLocal, copyParams);使用writeSize连续搬运AscendC::TPipe pipe; int dataSize 32; // 假设T为half类型从ub上申请一块内存32 * sizeof(half)字节 int offset 32; // 拷贝到spmBuffer时偏移32字节 ; // writeLocal为SPM Buffer上的half类型的LocalTensor pipe.WriteSpmBuffer(writeLocal, dataSize, offset); // 将ub上的连续传输数据块搬运到SPM Buffer pipe.ReadSpmBuffer(writeLocal, dataSize, offset); // 将暂存在SPM Buffer的数据读回到local数据 ... // 当ub内存足够时将暂存在SPM Buffer的数据块搬运回GM上dstGlobal为half类型的GlobalTensor AscendC::DataCopy(dstGlobal, writeLocal, dataSize);创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

昇腾C SIMD API InitBufPool

昇腾C SIMD API InitBufPool

2026/7/15 14:59:01

InitBufPool 产品支持情况 产品 是否支持 Ascend 950PR/Ascend 950DT √ Atlas A3 训练系列产品/Atlas A3 推理系列产品√ Atlas A2 训练系列产品/Atlas A2 推理系列产品√ Atlas 200I/500 A2 推理产品x Atlas 推理系列产品AI Core √ Atlas 推理系列产品Vector Core x Atlas …

Ascend C FetchEventID API文档

Ascend C FetchEventID API文档

2026/7/15 14:59:01

FetchEventID 产品支持情况 产品 是否支持 Ascend 950PR/Ascend 950DT √ Atlas A3 训练系列产品/Atlas A3 推理系列产品√ Atlas A2 训练系列产品/Atlas A2 推理系列产品√ Atlas 200I/500 A2 推理产品x Atlas 推理系列产品AI Core √ Atlas 推理系列产品Vector Core x Atlas…

Kubernetes 节点磁盘空间空了怎么办?解决 containerd overlay 100%问题

Kubernetes 节点磁盘空间空了怎么办?解决 containerd overlay 100%问题

2026/7/15 14:59:01

Kubernetes 节点磁盘空间空了怎么办?解决 containerd overlay 100%问题 当 Kubernetes 集群中的节点出现如下错误: MountVolume.SetUp failed for volume xxx: no space left on device或者执行 df -h 显示: /dev/mapper/centos-root 50G 50G 0G …

宠物洗护宠物店如何提升老客复购?餐宝盈小程序GEO获客逻辑,全程零代码,SAAS+GEO模式

宠物洗护宠物店如何提升老客复购?餐宝盈小程序GEO获客逻辑,全程零代码,SAAS+GEO模式

2026/7/15 16:19:06

摘要 在本地生活竞争进入 AI 推荐时代之后,宠物洗护宠物店 这类门店的增长逻辑已经从“等平台分发流量”转向“搭建自有交易阵地并主动争取 AI 推荐流量”。本文从系统性经营视角出发,围绕餐宝盈“小程序搭建 GEO 获客 移动端成交”模式展开分析&…

深入解析C6748 DSP内存映射、启动模式与中断系统设计

深入解析C6748 DSP内存映射、启动模式与中断系统设计

2026/7/15 16:19:06

1. 项目概述:从地址空间到系统灵魂的深度解构在嵌入式系统开发,尤其是高性能数字信号处理(DSP)领域,我们常常会面对一个看似枯燥但至关重要的文档:芯片的数据手册(Datasheet)或技术参…

C++课程设计实战:从面向对象到文件I/O的教材订购系统开发指南

C++课程设计实战:从面向对象到文件I/O的教材订购系统开发指南

2026/7/15 16:19:06

1. 项目概述:一个典型的C课程设计 如果你是一名计算机相关专业的学生,或者正在自学C,那么“教材订购系统”这个名字你一定不陌生。它几乎是国内高校《C面向对象程序设计》或《数据结构》课程设计的“常客”。这个项目听起来平平无奇&#xff…

技术底座携手产业基建|拉孚智控与上海电器达成深度战略合作

技术底座携手产业基建|拉孚智控与上海电器达成深度战略合作

2026/7/15 16:19:06

近日,拉孚智控(Larfe)与上海电器控股集团(SHEE)正式签订长期战略合作协议。双方将共建联合软件研发体系、共创场景化数字能源技术产品,深度整合上海电器全链条电力产业基建优势与拉孚智控全栈空间数字化技术…

数字化会务新范式:会助力智能会务系统一站式会议管理系统解决方案

数字化会务新范式:会助力智能会务系统一站式会议管理系统解决方案

2026/7/15 16:19:06

一、传统会务管理现存痛点在各类峰会、行业论坛、企业年会、学术会议常态化举办的当下,传统人工会务模式的短板持续凸显,大量重复性工作消耗人力成本,还极易出现流程疏漏。会前筹备阶段,人工收集参会报名信息、手动统计参会人员资…

最小二乘法拟合空间直线的原理及实现

最小二乘法拟合空间直线的原理及实现

2026/7/15 16:09:06

空间直线的表达式可以表示为: x−ba=y−dc=z1 \frac{x-b}{a} = \frac{y-d}{c} = \frac{z}{1} ax−b​=cy−d​=1z​ 通过变形可得: { x=az+by=cz+d \begin{cases} x = a z + b \\ y = c z + d \end{cases} { x=az+by=cz+d​ 用矩阵可表示为: [abcd][z1]=[xy] \begin{gathe…

Unity游戏文本翻译架构深度解析:XUnity.AutoTranslator的技术实现与工程实践

Unity游戏文本翻译架构深度解析:XUnity.AutoTranslator的技术实现与工程实践

2026/7/14 10:03:09

Unity游戏文本翻译架构深度解析:XUnity.AutoTranslator的技术实现与工程实践 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator XUnity.AutoTranslator作为Unity游戏社区中最成熟的文本翻译解决方…

openEuler Raspberry Pi Kernel设备驱动开发指南:为树莓派硬件添加支持

openEuler Raspberry Pi Kernel设备驱动开发指南:为树莓派硬件添加支持

2026/7/13 20:43:19

openEuler Raspberry Pi Kernel设备驱动开发指南:为树莓派硬件添加支持 【免费下载链接】raspberrypi-kernel It provides openEuler kernel source for Raspberry Pi 项目地址: https://gitcode.com/openeuler/raspberrypi-kernel 前往项目官网免费下载&…

openEuler系统集成测试实战:基于smoke-test套件的环境验证技巧

openEuler系统集成测试实战:基于smoke-test套件的环境验证技巧

2026/7/15 0:26:43

openEuler系统集成测试实战:基于smoke-test套件的环境验证技巧 【免费下载链接】integration-test The repo contains test suits for system integration test 项目地址: https://gitcode.com/openeuler/integration-test 前往项目官网免费下载:…

【LINUX】驱动

【LINUX】驱动

2026/7/15 0:08:14

【LINUX驱动】【字符设备】【中断】【Platform】【网课 设备树】【GPIO】【PINCTRL】【INPUT】【IIC】【SPI】【网络驱动】【屏幕驱动】【一 设备树】【二 内核模块编译】【三 基本驱动框架】【四 Platform总线设备驱动框架】【五 驱动子系统】【六 综合】

【1982-2026】全国高精度建筑轮廓|村级精度|SHP矢量

【1982-2026】全国高精度建筑轮廓|村级精度|SHP矢量

2026/7/15 0:08:14

🔍 数据简介 本次分享1982-2026年全国村级精度建筑轮廓矢量数据,覆盖全国各省市区县,到村级别精细,为2026年最新实时采集成果,非网传仅60/77个城市的老旧数据。 数据含带高度/不带高度双版本,单体建筑边界精…

【1975-2026】全国水系水路数据|河流/水库/运河|SHP矢量

【1975-2026】全国水系水路数据|河流/水库/运河|SHP矢量

2026/7/15 0:08:14

🔍 数据简介 本次分享1975-2026年全国高精度水系水路矢量数据,覆盖全国全域,包含河流、水系、水库、运河、湿地、冰川、沟渠等全类别水文要素。 数据集包含双层矢量图层,字段分类清晰、要素齐全,支持2013-2026逐年完整…