news 2026/7/16 13:21:40

CANN/asc-devkit矩阵计算数据搬入接口

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
CANN/asc-devkit矩阵计算数据搬入接口

# 总体说明

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

矩阵计算的搬入是Ascend C编程框架中用于数据搬运的一类核心接口,主要实现Global Memory到L0A Buffer/L0B Buffer之间的数据高效传输。该类接口提供了多种数据搬运模式,能够满足矩阵计算中左右矩阵等数据的搬运需求,通常与Mmad接口配合使用。

矩阵计算的搬入的接口支持多种数据搬运场景,包括但不限于二维格式数据搬运、三维格式转换、压缩数据解压、矩阵转置搬运以及稀疏化数据处理等。通过灵活配置不同的参数结构体,开发者可以精确控制数据的搬运路径、起始位置、搬运长度等关键信息,充分利用硬件的数据搬运能力,最大化算子的整体执行性能。

矩阵计算的搬入接口支持多种数据通路,每种通路对应特定的存储层级和访问特性。

表1数据通路和存储层级

源位置源地址对齐要求目的位置目的地址对齐要求典型应用场景
Global Memory1字节L1 Buffer(A1)32字节从全局内存加载左矩阵数据到L1 Buffer。
Global Memory1字节L1 Buffer(B1)32字节从全局内存加载右矩阵数据到L1 Buffer。
Global Memory1字节L0A Buffer(A2)512字节从全局内存加载左矩阵数据到L0A Buffer。
Global Memory1字节L0B Buffer(B2)512字节从全局内存加载右矩阵数据到L0B Buffer。
L1 Buffer(A1)32字节L0A Buffer(A2)512字节从L1 Buffer加载左矩阵数据到L0A Buffer。
L1 Buffer(B1)32字节L0B Buffer(B2)512字节从L1 Buffer加载右矩阵数据到L0B Buffer。
L1 Buffer32字节BiasTable Buffer64字节从L1 Buffer加载存储矩阵计算所需的Bias(偏置)数据到BiasTable Buffer。
L1 Buffer32字节Fixpipe Buffer128字节从L1 Buffer加载Fixpipe搬运过程中所需的量化参数等数据到Fixpipe Buffer。

[!NOTE]说明 Ascend 950PR/Ascend 950DT因硬件变更,删除GM到L0A Buffer、L0B Buffer的数据通路。产生的影响是原GM到L0A Buffer和L0B Buffer的数据搬运需要拆分为两步,即从GM到L1 Buffer的数据搬运和从L1 Buffer到L0A Buffer、L0B Buffer的数据搬运。

GM->L1 Buffer的接口分类与使用场景

表2GM->L1 Buffer接口

接口类别主要功能支持通路典型应用场景
GM->L1 Buffer连续数据搬运(DataCopy)将矩阵从Global Memory连续搬运至L1 Buffer,格式和内容保持不变。GM->L1 Buffer矩阵计算数据从片外搬入L1 Buffer。
GM->L1 Buffer高维切分数据搬运(DataCopy)从GM搬运至L1 Buffer,支持通过配置数据块个数、长度、地址间隔实现非连续搬运。GM->L1 Buffer矩阵分片、多通道数据的非连续搬运。
GM->L1 Buffer随路转换-ND2NZ搬运(DataCopy)从GM搬运至L1 Buffer,搬运同时完成ND到NZ分形格式的转换。GM->L1 Buffer矩阵计算前将ND格式特征图转为NZ分形格式。
GMToL1-2D矩阵搬运(LoadData)以512B数据分形为单位,将2D格式矩阵数据从GM搬运至L1 Buffer。GM->L1 Buffer普通矩阵计算所需的2D分形数据搬入L1 Buffer。

针对Ascend 950PR/Ascend 950DT,新增GM->L1 Buffer如下接口,请开发者参考表3。

表3GM->L1 Buffer接口

接口类别主要功能支持通路典型应用场景
GM->L1 Buffer随路转换DN2NZ搬运(DataCopy)从GM搬运至L1 Buffer,搬运同时完成DN到NZ格式的转换。GM->L1 BufferDN格式权重数据搬入L1 Buffer并转换为NZ格式。
GM->L1 Buffer非对齐数据搬运(DataCopyPad)将数据从GM非对齐搬运至L1 Buffer,支持在数据左/右侧自行填充。GM->L1 BufferGM中非对齐数据搬入L1 Buffer时进行补齐。
GMToL1-2D矩阵搬运V2(LoadData)使用2DV2指令以512B分形为单位搬运2D格式数据从GM到L1 Buffer。GM->L1 Buffer矩阵计算2D分形数据从GM搬入L1 Buffer。

UB->L1 Buffer的接口分类与使用场景

表4UB->L1 Buffer接口

接口类别主要功能支持通路典型应用场景
UB->L1 Buffer连续数据搬运(DataCopy)将数据从Unified Buffer连续搬运至L1 Buffer,格式和内容保持不变。UB->L1 Buffer矢量计算结果从UB传入L1 Buffer供矩阵计算使用。
UB->L1 Buffer高维切分数据搬运(DataCopy)从UB搬运至L1 Buffer,支持通过块参数配置实现非连续搬运。UB->L1 BufferUB中非连续排列数据搬入L1 Buffer。
UB->L1 Buffer随路转换ND2NZ搬运(DataCopy)从UB搬运至L1 Buffer,搬运同时完成ND到NZ分形格式转换。UB->L1 BufferUB中ND格式数据搬入L1 Buffer并转为NZ格式。
UB->L1 Buffer非对齐数据搬运(DataCopyPad)将数据从UB非对齐搬运至L1 Buffer,支持在数据左/右侧自行填充。UB->L1 BufferUB中非32B对齐边界数据的搬移与补齐。

L1 Buffer->L0A/B Buffer的接口分类与使用场景

表5L1 Buffer->L0A/B Buffer接口

接口类别主要功能支持通路典型应用场景
LoadData(2D矩阵搬运)以512B分形为单位搬运2D格式矩阵数据,支持L1 Buffer->L0A Buffer/L0B Buffer通路及分形转置。L1 Buffer->L0A Buffer、L1 Buffer->L0B Buffer矩阵计算数据从L1 Buffer搬入L0A Buffer/L0B Buffer计算缓冲区。
LoadData(卷积数据搬运)将NC1HWC0格式Feature Map完成Image to Column展开后,以512B分形为单位搬入L0A Buffer/L0B Buffer。L1 Buffer->L0A Buffer、L1 Buffer->L0B Buffer卷积的im2col展开与矩阵计算数据搬入。
LoadDataWithTranspose搬运2D格式数据并伴随转置操作,将多个分形拼接为方块矩阵后转置再拆分搬入L0A Buffer/L0B Buffer。L1 Buffer->L0A Buffer、L1 Buffer->L0B Buffer矩阵计算中需转置的A/B矩阵搬入L0 Buffer。
L1 Buffer->BiasTable Buffer数据搬运将矩阵计算的bias参数从L1 Buffer搬运至BiasTable Buffer。L1 Buffer->BiasTable Buffer矩阵乘后加偏置(bias add)参数搬入。
L1 Buffer->Fixpipe Buffer数据搬运将随路量化和随路ReLU参数从L1 Buffer搬运至Fixpipe Buffer。L1 Buffer->Fixpipe Buffer矩阵计算结果的随路量化、激活参数搬入。

[!NOTE]说明 针对Ascend 950PR/Ascend 950DT,LoadDataWithTranspose仅支持L1 Buffer->L0B Buffer通路,不支持L1 Buffer->L0A Buffer通路。

针对Atlas A2训练系列产品/Atlas A2推理系列产品和Atlas A3训练系列产品/Atlas A3推理系列产品,支持L1 Buffer->L0B Buffer如下接口,请开发者参考表6。

表6L1 Buffer->L0B Buffer接口

接口类别主要功能支持通路典型应用场景
LoadDataWithSparse搬运4选2结构化稀疏矩阵计算所需的稠密化权重矩阵和索引矩阵。L1 Buffer->L0B Buffer稀疏矩阵乘法计算数据搬入。

针对Ascend 950PR/Ascend 950DT,新增L1 Buffer->L0A/B Buffer如下接口,请开发者参考表7。

表7L1 Buffer->L0A/B Buffer接口

接口类别主要功能支持通路典型应用场景
LoadData(2D矩阵搬运V2)以512B分形为单位搬运2D格式矩阵数据,使用V2参数结构,支持更多数据类型。L1 Buffer->L0A Buffer、L1 Buffer->L0B Buffer矩阵计算数据搬入L0A Buffer/L0B Buffer,支持b4数据类型。
LoadData(BitMode2D矩阵搬运)LoadData(2D矩阵搬运V2)的bit模式变体,支持按位操作的数据搬运。L1 Buffer->L0A Buffer、L1 Buffer->L0B Buffer用于追求极致Scalar性能的普通矩阵数据搬运。
LoadData(MX矩阵搬运)LoadData(2D矩阵搬运V2)的MX格式扩展,支持MX格式矩阵数据搬运。L1 Buffer->L0A Buffer、L1 Buffer->L0B BufferMX浮点格式的矩阵数据搬入。
LoadData(BitMode卷积数据搬运)LoadData(卷积数据搬运)的bit模式变体,支持按位操作的3D数据搬运。L1 Buffer->L0A Buffer、L1 Buffer->L0B Buffer用于追求极致Scalar性能的卷积im2col展开与搬入。

辅助配置接口说明

表8辅助配置接口

接口名称功能说明配合使用的接口
Fill初始化设置L1 Buffer/L0A Buffer/L0B Buffer的值。-
SetFmatrix设置FeatureMap属性描述。LoadData(卷积数据搬运)
SetLoadDataBoundary设置L1 Buffer边界值。LoadData(卷积数据搬运)
SetLoadDataRepeat设置Repeat参数实现多迭代搬运。LoadData(卷积数据搬运)
SetLoadDataPaddingValue设置Padding填充值。LoadData(卷积数据搬运)
LoadDataUnzip将GM上的数据解压并搬运到L1 Buffer(A1/B1)或L0B Buffer(B2)上。LoadUnzipIndex
LoadImageToLocal将图像数据从Global Memory搬运到Local Memory。SetAippFunctions
LoadUnzipIndex加载GM上的压缩索引表到内部寄存器。-
SetAippFunctions设置图片预处理(AIPP,AI Core pre-process)相关参数。LoadImageToLocal

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

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

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

Palworld存档编辑终极指南:3步实现游戏数据可视化修改

Palworld存档编辑终极指南:3步实现游戏数据可视化修改 【免费下载链接】palworld-save-tools Tools for converting Palworld .sav files to JSON and back 项目地址: https://gitcode.com/gh_mirrors/pa/palworld-save-tools 你是否曾经想要调整帕鲁的属性&…

作者头像 李华
网站建设 2026/7/16 13:17:46

Windows 11终极精简方案:如何选择最适合你的系统镜像制作工具

Windows 11终极精简方案:如何选择最适合你的系统镜像制作工具 【免费下载链接】tiny11builder Scripts to build a trimmed-down Windows 11 image. 项目地址: https://gitcode.com/GitHub_Trending/ti/tiny11builder tiny11builder是一个开源项目&#xff0…

作者头像 李华
网站建设 2026/7/16 13:16:33

5分钟快速上手:GBFR Logs让《碧蓝幻想Relink》伤害统计一目了然

5分钟快速上手:GBFR Logs让《碧蓝幻想Relink》伤害统计一目了然 【免费下载链接】gbfr-logs GBFR Logs lets you track damage statistics with a nice overlay DPS meter for Granblue Fantasy: Relink. 项目地址: https://gitcode.com/gh_mirrors/gb/gbfr-logs …

作者头像 李华
网站建设 2026/7/16 13:15:37

超越想象的图像理解能力:Ornith-1.0-9B-OptiQ-4bit视觉功能全解析

超越想象的图像理解能力:Ornith-1.0-9B-OptiQ-4bit视觉功能全解析 【免费下载链接】Ornith-1.0-9B-OptiQ-4bit 项目地址: https://ai.gitcode.com/hf_mirrors/mlx-community/Ornith-1.0-9B-OptiQ-4bit Ornith-1.0-9B-OptiQ-4bit是一款基于Qwen3.5-9B架构构建…

作者头像 李华
网站建设 2026/7/16 13:14:33

小程序毕设项目:托管学生档案管理系统的设计与实现 基于 SpringBoot + 微信小程序的小学托管日常巡查系统 (源码+文档,讲解、调试运行,定制等)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2026/7/16 13:13:32

Windows 11系统安装与开发环境配置全指南

1. Windows系统入门指南作为一个从Windows 95时代就开始使用微软操作系统的老用户,我深知新手面对Windows系统时的困惑。Windows系统虽然界面越来越友好,但其中隐藏的功能和技巧仍然会让很多"小白"用户感到无所适从。这篇笔记将从最基础的Wind…

作者头像 李华