CANN/asc-devkit TPipe写入SPM缓冲

发布时间:2026/9/29 12:37:57

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/9/8 12:11:53

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/8/23 0:16:57

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/9/26 18:21:23

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 …

CANN/GE ACL数据集缓冲区添加函数

CANN/GE ACL数据集缓冲区添加函数

2026/9/28 4:08:17

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

用ffmpeg高效批量调整图片尺寸的实战指南

用ffmpeg高效批量调整图片尺寸的实战指南

2026/9/28 16:01:49

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

Transformers 音频特征提取工具库 audio_utils 全解析:从 Mel 刻度换算到对数 Mel 频谱

Transformers 音频特征提取工具库 audio_utils 全解析:从 Mel 刻度换算到对数 Mel 频谱

2026/9/28 2:15:29

Transformers 音频特征提取工具库 audio_utils 全解析:从 Mel 刻度换算到对数 Mel 频谱 【免费下载链接】transformers 🤗 Transformers: the model-definition framework for state-of-the-art machine learning models in text, vision, audio, and mu…

RustFS 多节点集群重启与滚动升级实战:Readiness、Quorum 与 Degraded 模式完全指南

RustFS 多节点集群重启与滚动升级实战:Readiness、Quorum 与 Degraded 模式完全指南

2026/9/28 3:14:54

RustFS 多节点集群重启与滚动升级实战:Readiness、Quorum 与 Degraded 模式完全指南 【免费下载链接】rustfs 🚀2.3x faster than MinIO for 4KB object payloads. RustFS is an open-source, S3-compatible high-performance object storage system sup…

Java Integer缓存揭秘:128陷阱原理、避坑与面试全解

Java Integer缓存揭秘:128陷阱原理、避坑与面试全解

2026/9/28 3:58:00

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

RustFS Scanner 数据用量发布权威性决策:配额准入如何获得可用的权威依据

RustFS Scanner 数据用量发布权威性决策:配额准入如何获得可用的权威依据

2026/9/28 3:47:14

RustFS Scanner 数据用量发布权威性决策:配额准入如何获得可用的权威依据 【免费下载链接】rustfs 🚀2.3x faster than MinIO for 4KB object payloads. RustFS is an open-source, S3-compatible high-performance object storage system supporting mi…

远程协作的工作台整理

远程协作的工作台整理

2026/9/28 16:01:48

远程协作的工作台整理远程协作的核心不是再加一个工具,而是让交接信息足够完整。异步任务要写明目标、输入位置、完成标准和需要决策的人。 工作台的最小配置 将日程、待办、代码和沟通入口收拢到少数固定位置;通知按紧急程度分层。工作台不需要模仿办公…

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

2026/9/28 5:05:21

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

2026/9/28 16:01:48

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…