news 2026/4/16 15:04:50

华为算子中的数据排布格式(Format)在张量在内存中的物理存储顺序和读取方式

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
华为算子中的数据排布格式(Format)在张量在内存中的物理存储顺序和读取方式

华为算子中的数据排布格式(Format)指的是张量在内存中的物理存储顺序和读取方式,它定义了多维数据(如特征图或权重)的维度排列,以优化硬件计算效率。

具体来说:

  • 基本定义:Format决定了数据在内存中的线性排布,例如支持1D、2D、3D、4D或5D等多维格式,常见于深度学习算子(如卷积、全连接)的输入/输出处理。
  • 常见格式示例:在华为昇腾AI处理器(如CANN框架)中,典型的数据排布格式包括:
    • NCHW:批量大小(N)、通道数(C)、高度(H)、宽度(W),常用于Caffe等框架。
    • NHWC:批量大小(N)、高度(H)、宽度(W)、通道数(C),常见于TensorFlow。
    • NC1HWC0、FRACTAL_Z、FRACTAL_NZ:华为自研的优化格式,针对达芬奇架构硬件进行数据分块和重排,以提升内存访问效率和计算吞吐量。
  • 作用与重要性:正确的Format选择能减少内存碎片、加速数据搬运,并适配算子融合(如Conv+ReLU融合),从而提升模型推理性能。 在算子开发中,Format需与硬件指令集匹配,例如昇腾AI处理器通过FRACTAL格式对数据进行Z型分块,以优化缓存利用率。

开发者需根据算子类型和硬件特性指定Format,华为CANN工具链提供了自动格式转换和优化功能,以简化开发流程。


NC1HWC0

Kirin AI处理器中,为了提高通用矩阵乘法(GEMM)运算数据块的访问效率,所有张量数据统一采用NC1HWC0的五维数据格式。其中C0与微架构强相关,等于AI Core中矩阵计算单元的大小。

C1=(C+C0-1)/C0。如果结果不整除,向上取整。

NHWC/NCHW -> NC1HWC0的转换过程为:将数据在C维度进行分割,变成C1份NHWC0/NC0HW,再将C1份NHWC0/NC0HW在内存中连续排列成NC1HWC0,其格式转换示意图如下图所示。

NHWC -> NC1HWC0的转换公式如下。

Tensor.reshape([N,H,W,C1,C0]).transpose([0,3,1,2,4])

NCHW -> NC1HWC0的转换公式如下。

Tensor.reshape([N,C1,C0,H,W]).transpose([0,1,3,4,2])

在昇腾AI处理器中,为了提高数据的访问效率,张量数据采用NC1HWC0的五维格式。其中C0与微架构强相关,等于AI Core中矩阵计算单元的大小,这部分数据需要连续存储;C1是将C维度按照C0进行拆分后的数目,即C1=C/C0。如果不整除,最后一份数据需要补齐以对齐C0。


AI 编译器布局转换算法

首先,我们转换数据布局的目的是将将内部数据布局转化为后端设备(硬件)友好的形式,我们需要做的是尝试找到在计算图中存储张量的最佳数据布局,然后将布局转换节点插入到图中。

但其中有个需要十分注意的地方,布局转换也是需要很大的开销的,一旦涉及布局转换,就会有 I/O 操作,其产生的代价能否比的上数据格式转换后带来的性能优化也是需要我们重点考虑的部分。

具体地来说,比如 NCHW 格式操作在 GPU 上通常运行得更快,所以在 GPU 上转换为 NCHW 格式是较为有效的操作。

一些 AI 编译器依赖于特定于硬件的库来实现更高的性能,而这些库可能需要特定的布局,比如华为昇腾的 AI 编译器就依赖于 CANN 库,其中的特定布局我们在上文中已经提到。

同时也有许多设备需要配备异构计算单元,比如手机,其 SOC 中有丰富的 IP,arm 端侧的 GPU 还有 ISP 以及 DPU 等一系列不同计算单元。不同的单元可能需要不同的数据布局以更好地利用数据,这就需要 AI 编译器提供一种跨各种硬件执行布局转换的方法。

下面我们来看看数据转换具体是如何操作的。如下图所示,这两个都是数据转换的算子,数据转换我们在这里用 CASTDATA 算子来表示,左侧输入的数据格式为 NHWC,输出的数据格式为 NCHW,那么就需要一个数据转换算子节点来将数据格式由 NHWC 转换为 NCHW,右侧则相反过来,此处不再赘述。


华为CANN算子开发的核心在于张量结构理解 + 数据排布优化。从基础的张量形状和轴,到高阶分形格式及卷积权重格式,每一种设计都是为了充分利用AI Core硬件的并行计算能力。在实际开发中:

  • 理解张量的shape和axis有助于正确实现算子逻辑
  • 熟悉数据排布格式能够有效优化内存访问
  • 分形格式(NZ、ZZ、ZN、Z)和卷积权重格式(NC1HWC0、FRACTAL_Z_3D)是高性能计算的关键
  • Matmul高阶API格式则保证了复杂矩阵乘运算在多场景下的高效执行

昇腾训练营报名链接:
https://www.hiascend.com/developer/activities/cann20252#cann-camp-2502-intro

训练营简介:2025年昇腾CANN训练营第二季,基于CANN开源开放全场景,推出0基础入门系列、码力全开特辑、开发者案例等专题课程,助力不同阶段开发者快速提升算子开发技能。获得Ascend C算子中级认证,即可领取精美证书,完成社区任务更有机会赢取华为手机,平板、开发板等大奖

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

解放私域运营双手,这个管理系统让你告别账号切换噩梦

还在为多台设备间来回切换账号而手忙脚乱吗?你是否知道,许多私域团队每月因账号管理混乱,导致客户响应延迟、线索遗漏,白白损失大量潜在客源?如果你也深耕私域运营,那么这款专为高效管理而生的私域系统&…

作者头像 李华
网站建设 2026/4/9 14:55:30

Xinference中Qwen3-Reranker模型GPU部署终极指南:从显存异常到性能优化

在AI模型部署的实践中,Qwen3-Reranker系列模型因其出色的重排序能力而备受关注。然而,许多开发者在Xinference框架下进行GPU部署时,常常会遇到模型运行在CPU上或显存占用异常高的问题。本文将为您提供一套完整的解决方案,帮助您轻…

作者头像 李华
网站建设 2026/4/13 12:31:42

Langchain-Chatchat能否支持视频音频转文字问答?扩展思路

Langchain-Chatchat能否支持视频音频转文字问答?扩展思路 在企业知识管理的日常实践中,一个常见的痛点逐渐浮现:大量关键信息被“锁”在会议录音、培训录像和客户访谈视频中。这些音视频资料承载着丰富的语义内容,却因缺乏有效的…

作者头像 李华
网站建设 2026/4/16 14:32:29

嵌入式Web服务器性能突破:Mongoose如何在10KB内存下实现万级并发

嵌入式Web服务器性能突破:Mongoose如何在10KB内存下实现万级并发 【免费下载链接】mongoose Embedded Web Server 项目地址: https://gitcode.com/gh_mirrors/mon/mongoose 当你的嵌入式设备需要处理海量网络请求时,是否曾因内存不足而束手无策&a…

作者头像 李华
网站建设 2026/4/16 12:58:45

HBase在医疗大数据中的应用:病例存储

HBase在医疗大数据中的应用:病例存储关键词:HBase、医疗大数据、病例存储、分布式数据库、时间序列数据、数据建模、高吞吐量摘要: 在医疗信息化快速发展的背景下,病例数据呈现爆发式增长,传统关系型数据库难以应对海量…

作者头像 李华
网站建设 2026/4/15 17:47:39

vue3+nodejs开发的敬老院养老院管理系统31218852

文章目录具体实现截图主要技术与实现手段关于我本系统开发思路java类核心代码部分展示结论源码lw获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!具体实现截图 同行可拿货,招校园代理 vu额Nodejs218852 开发的敬老院养老院管理系统 主要…

作者头像 李华