当前位置: 首页 > news >正文

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),仅供参考

http://www.cnnetsun.cn/news/3426074.html

相关文章:

  • Palworld存档编辑终极指南:3步实现游戏数据可视化修改
  • Windows 11终极精简方案:如何选择最适合你的系统镜像制作工具
  • 5分钟快速上手:GBFR Logs让《碧蓝幻想Relink》伤害统计一目了然
  • 超越想象的图像理解能力:Ornith-1.0-9B-OptiQ-4bit视觉功能全解析
  • 小程序毕设项目:托管学生档案管理系统的设计与实现 基于 SpringBoot + 微信小程序的小学托管日常巡查系统 (源码+文档,讲解、调试运行,定制等)
  • Windows 11系统安装与开发环境配置全指南
  • 阿里云ECS部署Hermes Agent与OpenClaw实战指南
  • 5步彻底解决ComfyUI ControlNet Aux模型下载失败:深度解析与实战指南
  • 如何用Python实现贝叶斯分析?PyMC3与ArviZ实战指南
  • 3DSident架构升级:从用户模式到系统级集成的技术实现与性能优化
  • 如何一键找回被遗忘的QQ空间记忆:GetQzonehistory完整指南
  • 车辆视角路面锥形桶交通导流锥路障识别分割数据集labelme格式3417张3类别
  • Xournal++:你的跨平台数字笔记革命,重新定义手写与PDF批注体验
  • Ubuntu国内镜像源配置指南与优化实践
  • 监管/审计防火墙QA:AI系统治理的19个标准回答
  • 设计标记工作流:从概念到实践的深度探索
  • 解决B站日常任务繁琐问题:基于.NET的BiliBiliToolPro自动化管理方案
  • 法律专家专版:AI系统绝不越界的法律红线
  • 智能音频处理方案:实现高效语音转文本的完整技术路径
  • C语言结构体对齐与函数指针:内存管理与架构设计实战
  • 5分钟快速上手Translumo:Windows平台终极实时屏幕翻译工具完全指南
  • 从AI到Agent:技术演进与应用实践全解析
  • a-03 Codex Commands 实战指南:从入门到精通的Slash命令工作流
  • B站用户信息爬虫实战:C++分布式架构与亿级数据挑战
  • 3大AI图像生成质量瓶颈及其采样策略优化解决方案
  • TCAS:OpenEuler信任集群认证服务器的完整指南
  • Kimi K2.7 Code + Claude Code:打造零跳转AI开发工作流
  • isula-build 多格式镜像支持:Docker 与 OCI 格式的完整对比指南
  • 优质技术教程专题的构建与学习实践指南
  • Qt 5.14.2 Android开发环境配置全攻略:从零到真机部署