news 2026/8/28 13:37:58

华为算子中的数据排布格式(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/8/29 4:33:13

3D模型生成终极指南:腾讯Hunyuan3D-2mini轻量化技术深度解析

还在为复杂的3D建模软件发愁吗?专业建模师需要花费数小时完成的工作,现在普通人只需输入文字描述,30秒内就能获得完整的3D模型。腾讯最新开源的Hunyuan3D-2mini模型,以仅0.6B的参数规模,实现了前所未有的"轻量高速…

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

Kubernetes Dashboard可视化监控:从架构原理到生产实践

在Kubernetes集群运维中,命令行工具虽然功能强大但学习曲线陡峭,而Dashboard作为官方提供的Web管理界面,通过直观的可视化方式降低了操作门槛。本文将深入解析Dashboard的部署架构、安全认证机制和实际应用场景,帮助您构建可靠的可…

作者头像 李华
网站建设 2026/8/27 20:39:21

基于DWS MCP Server搭建数据分析Agent

本文分享自华为云社区《基于DWS MCP Server搭建数据分析Agent》 1. 前言 MCP(Model Context Protocol)是由Anthropic于2024年11月提出的开放协议标准,旨在解决大型语言模型与外部系统(如数据库、API)交互的碎片化问题。…

作者头像 李华
网站建设 2026/8/28 3:01:31

兰州失控车辆证明科技已偷走车辆的控制权,黑客入侵会如何?

兰州失控车辆以115公里时速狂奔4个多小时,直到燃油耗尽才将车辆停下,证明了电子控制系统的不可靠,那么那些已赋予智驾更多控制权的车辆呢?想想都觉得后背发凉,事实证明科技无法为人类提供足够的安全保障!在…

作者头像 李华
网站建设 2026/8/28 4:04:27

FaceFusion在虚拟演唱会中的粉丝形象互动应用

FaceFusion在虚拟演唱会中的粉丝形象互动应用如今,一场虚拟演唱会的后台正悄然上演着技术与情感的双重交响。大屏上,成千上万张面孔随着音乐节奏律动——那些不是预设的3D模型,而是真实粉丝的脸,被实时“搬”上了舞台。有人看到自…

作者头像 李华
网站建设 2026/8/29 0:04:59

【DC-AC】使用了H桥MOSFET进行开关,电感器作为滤波器,R和C作为负载目标是产生150V的双极输出和4安培(双极)的电流simulink实现

✅作者简介:热爱科研的Matlab仿真开发者,擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室🍊个人信条:格物致知,完整Matlab代码及仿真咨询…

作者头像 李华