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

CANN MXFP4量化矩阵乘算子

MXFP4量化矩阵乘算子

【免费下载链接】cann-samples算子领域高性能实战演进样例与体系化调优知识库项目地址: https://gitcode.com/cann/cann-samples

概述

本示例展示了MXFP4量化矩阵乘算子在昇腾AI处理器上的完整实现,包含基于SWAT模板的高性能优化方案。MXFP4是一种4位浮点数量化格式,通过GroupSize=32的分组量化策略,在兼顾模型精度的同时显著降低访存开销和计算成本,适用于大语言模型推理等场景。

当前目录提供以下能力:

  • quant_matmul_mxfp4_swat:基于SWAT模板、双L1缓冲(2-buffer)的实现。
  • quant_matmul_mxfp4_swat_4_buffer:四L1缓冲(4-buffer)的实现。
  • quant_matmul_mxfp4_a_full_load:A矩阵full load方案的实现。
  • gen_data.py:生成输入数据和CPU golden结果。
  • verify_result.py:校验NPU输出与CPU golden是否一致。
  • quant_matmul_mxfp4_algorithm_recommend.py:对当前目录下可执行算法进行兼容性筛选和耗时排序。

使用约束

当前样例支持以下场景:

  • 支持通过命令行参数transA/transB选择A/B矩阵转置。
  • FP4打包沿输入矩阵内轴进行,内轴长度必须为偶数:
    • A:transA=0时内轴为K(要求k为偶数);transA=1时内轴为M(要求m为偶数)。
    • B:transB=1时内轴为K(要求k为偶数);transB=0时内轴为N(要求n为偶数)。

支持架构

NPU ARCH 3510

性能优化指南

关于算子涉及的模板实现及优化策略,请参考MX量化矩阵乘算子性能优化指南

API参考

Ascend C API文档

参数说明

各可执行文件的命令行参数格式一致:

<program> m k n [transA transB]
  • m:矩阵A的行数。
  • k:矩阵A的列数,同时也是矩阵B的归约维。
  • n:矩阵B的行数,对应输出矩阵的列数。
  • transA(可选):A矩阵转置信息(0/1/true/false/t/f)。0/false/f表示非转置,shape为[M, K]1/true/t表示转置,shape为[K, M]。默认为非转置。
  • transB(可选):B矩阵转置信息(0/1/true/false/t/f)。0/false/f表示非转置,shape为[K, N]1/true/t表示转置,shape为[N, K]。默认为转置。

输出矩阵C的逻辑形状为[M, N]

数据与校验

gen_data.py会在当前目录下生成以下文件:

  • input/input_a.bin
  • input/input_b.bin
  • input/input_scaleA.bin
  • input/input_scaleB.bin
  • output/cpu_output.bin

样例执行完成后会额外生成:

  • output/npu_out.bin

各可执行文件在运行结束后都会自动调用verify_result.py,将NPU输出与CPU golden进行一致性校验。

一键运行(推荐)

仓库提供run.sh(位于matmul_recipes/examples/quant_matmul_mxfp4/scripts/),可一键串联构建 → 数据生成 → 算子执行 → 结果校验全流程。 推荐先进入样例目录再执行,命令更短:

cd Samples/2_Performance/matmul_story/matmul_recipes/examples/quant_matmul_mxfp4 # 自动构建 + 自动推荐最优算法 + 运行 bash scripts/run.sh 16 128 16384 0 1 # 指定目标可执行文件,跳过重新构建 bash scripts/run.sh \ --target quant_matmul_mxfp4_a_full_load --skip-build 16 128 16384 0 1 # 查看完整帮助 bash scripts/run.sh --help

run.sh参数说明

参数说明
m k n [transA transB]矩阵维度与转置参数。transA/transB可选,支持0/1/true/false/t/f;省略时默认transA=false(0)transB=true(1)。FP4打包约束:A/B的内轴长度须为偶数(由transA/transB决定是mkn)。
--target <name>指定要运行的可执行文件名(如quant_matmul_mxfp4_swatquant_matmul_mxfp4_swat_4_bufferquant_matmul_mxfp4_a_full_load)。省略时自动调用推荐脚本选择最优目标。
--skip-build跳过构建/安装阶段,复用已有build_out
-h, --help显示帮助信息。

如需查看完整算法推荐排名(含耗时表格),请在安装目录下直接运行quant_matmul_mxfp4_algorithm_recommend.py(见下文「手动构建与运行」)。

手动构建与运行

如需手动控制各步骤,可在仓库根目录下完成编译和安装后,进入当前样例目录:

cmake -S . -B build -DNPU_ARCH=dav-3510 cmake --build build --parallel cmake --install build --prefix ./build_out cd build_out/2_Performance/matmul_story/matmul_recipes/quant_matmul_mxfp4

1. 生成测试数据

python3 gen_data.py 16 128 16384 0 1

2. 运行单个算法样例

./quant_matmul_mxfp4_swat 16 128 16384 0 1

或:

./quant_matmul_mxfp4_swat_4_buffer 16 128 16384 0 1

或:

./quant_matmul_mxfp4_a_full_load 16 128 16384 0 1

3. 运行算法推荐脚本

python3 quant_matmul_mxfp4_algorithm_recommend.py 16 128 16384 0 1

下图为推荐脚本输出的结构示意(数值为虚构,仅说明版式):

[Profile Breakdown] +------------------------------------+----------+---------+----------+---------+---------+------------+--------------+ | candidate |kernel(us)| mac(us) |scalar(us)| mte1(us)| mte2(us)|fixpipe(us) |icache_miss(%)| +====================================+==========+=========+==========+=========+=========+============+==============+ | quant_matmul_mxfp4_swat | 12.345| 1.234 | 0.567| 0.123 | 0.456 | 0.789 | 0.100 | | quant_matmul_mxfp4_swat_4_buffer | 11.900| 1.200 | 0.550| 0.110 | 0.440 | 0.770 | 0.095 | | quant_matmul_mxfp4_a_full_load | 15.678| 2.100 | 0.800| 0.200 | 0.300 | 0.500 | 0.250 | +------------------------------------+----------+---------+----------+---------+---------+------------+--------------+

【免费下载链接】cann-samples算子领域高性能实战演进样例与体系化调优知识库项目地址: https://gitcode.com/cann/cann-samples

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

http://www.jsqmd.com/news/783380/

相关文章:

  • 体验Taotoken多模型聚合端点的低延迟与高稳定性连接
  • CANN/graph-autofusion SuperKernel开发指南
  • 图片翻译高精度软件有哪些?高精度的AI图片翻译工具盘点 - 三年美工五年设计
  • AI赋能复合材料声发射源定位:从物理模型到数据驱动的毫米级精度突破
  • 从簧下质量优化看极氪9X性能重构:碳陶制动系统的工程逻辑 - RF_RACER
  • 江西安羿环境科技:南昌灭蟑螂怎么联系 - LYL仔仔
  • CANN/ge GE架构文档
  • React 19 + TypeScript + Zod 构建现代化天气查询应用实战
  • AEC行业AI与机器人应用的九大伦理挑战与应对策略
  • 端边云协同空间大模型,镜像视界重构智慧港口感知新基座
  • VSCode配置全攻略:打造高效开发环境的瑞士军刀
  • 全温恒温摇床哪个品牌好?实验室采购必看:2026年全温摇床厂家横评与选购指南 - 品牌推荐大师1
  • 教育机构构建AI编程辅导平台时如何利用Taotoken聚合API
  • 从预测到理解:AI可解释性、因果推断与模型泛化的本质挑战
  • 基于LLM与Electron的CK3智能对话模组开发实战
  • 企业级多 Agent 规模化落地怎么做?群虾智能 AI 沙龙 PPT 限时领取
  • 网盘直链下载助手终极指南:三步告别限速,解锁九大网盘真实下载链接
  • 温州市方氏建材:龙湾靠谱的建材批发厂家有哪些 - LYL仔仔
  • AI神经影像异常检测:从实验室到临床的鸿沟与跨越
  • 如何在Windows上使用TMSpeech实现完全离线的实时语音识别与字幕生成
  • 2026届学术党必备的六大AI学术助手解析与推荐
  • 2026年4月聚氨酯保温管厂家口碑推荐,聚乙烯高密度保温管/聚氨酯地埋保温管,聚氨酯保温管源头厂家推荐 - 品牌推荐师
  • 快驴商品模块功能分析与数据库表结构设计文档(一)---升鲜宝生鲜配送供应链管理系统源代码服务(标准版、专业版)
  • ChatGPT如何重塑术语定义:从生成草稿到人机协同工作流
  • CONFIDERAI:融合规则模型与保形预测,为可解释AI注入统计可靠性
  • 非公理推理与操作条件反射:构建可解释AI的通用学习引擎
  • 基于MCP协议构建AI与Azure DevOps的自动化桥梁
  • CANN/pyasc AddRelu加法ReLU函数API
  • 【EI会议推荐 | IEEE、武汉理工大学联合主办】第八届能源系统与电气电力国际学术会议(ICESEP 2026) - 艾思科蓝AiScholar
  • 自然语言驱动芯片设计:NL2GDS框架解析与应用