尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

CANN/AscendC MmadMx矩阵计算API

CANN/AscendC MmadMx矩阵计算API
📅 发布时间:2026/7/16 11:31:45

# MmadMx

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

产品支持情况

不传入bias的原型

  • Ascend 950PR/Ascend 950DT:支持
  • Atlas A3 训练系列产品/Atlas A3 推理系列产品:不支持
  • Atlas A2 训练系列产品/Atlas A2 推理系列产品:不支持
  • Atlas 200I/500 A2 推理产品:不支持
  • Atlas 推理系列产品AI Core:不支持
  • Atlas 推理系列产品Vector Core:不支持
  • Atlas 训练系列产品:不支持
  • Kirin X90:不支持
  • Kirin 9030:不支持

传入bias的原型

  • Ascend 950PR/Ascend 950DT:支持
  • Atlas A3 训练系列产品/Atlas A3 推理系列产品:不支持
  • Atlas A2 训练系列产品/Atlas A2 推理系列产品:不支持
  • Atlas 200I/500 A2 推理产品:不支持
  • Atlas 推理系列产品AI Core:不支持
  • Atlas 推理系列产品Vector Core:不支持
  • Atlas 训练系列产品:不支持
  • Kirin X90:不支持
  • Kirin 9030:不支持

功能说明

头文件路径为:basic_api/kernel_operator_mm_intf.h。

MmadMx(全称Microscaling Mmad)为带有量化系数的矩阵乘法,即左矩阵和右矩阵均有对应的量化系数矩阵,左量化系数矩阵scaleA和右量化系数矩阵scaleB。MmadMx场景中,左量化系数矩阵与左矩阵乘积,右量化系数矩阵与右矩阵乘积,对两个乘积的结果做矩阵乘法。

MmadMx的计算公式为:C=(scaleA⊗A)*(scaleB⊗B)+Bias,“⊗”表示广播乘法,左/右矩阵与左/右量化系数矩阵做乘积时,K方向上每32个元素共享一个量化因子,如图1所示(其中以AB矩阵均为fp4x2_e2m1_t数据类型为例)。

  • A、scaleA、B、scaleB为源操作数。A为左矩阵,形状为[M,K];scaleA为左量化系数矩阵,形状为[M,K/32];B为右矩阵,形状为[K,N];scaleB为右量化系数矩阵,形状为[K/32,N]。
  • C为目的操作数,存放矩阵乘结果的矩阵,形状为[M,N]。
  • Bias为矩阵乘偏置,形状为[1,N]。对(scaleA⊗A)*(scaleB⊗B)结果矩阵的每一行都采用该Bias进行偏置。

图1MmadMx接口矩阵乘分形示意图 ![MmadMx接口矩阵乘分形示意图](https://raw.gitcode.com/cann/asc-devkit/raw/1cd1d1192e01ae4a8684cd07552c35e13e5c4bdf/docs/zh/api/figures/mxmmad_demo_a5.png "MmadMx接口矩阵乘分形示意图"?utm_source=gitcode_repo_files)

表1矩阵计算矩阵A、B、C解释说明

矩阵计算逻辑矩阵计算物理位置维度输入/输出数据格式数据类型
AL0A BufferM x K[Nz]数据类型
scaleAL0A_MX BufferM x K/32[大Z小z]小z shape为(2,16)
BL0B BufferK x N[Zn]
scaleBL0B_MX BufferK/32 x N[大N小n]小n shape为(2,16)
CL0C BufferM x N,可支持使用偏置矩阵Bias进行初始化,维度为1 x N[Nz]

函数原型

  • 不传入bias

    template <typename T, typename U, typename S> __aicore__ inline void MmadMx(const LocalTensor<T>& dst, const LocalTensor<U>& fm, const LocalTensor<S>& filter, const MmadParams& mmadParams)
  • 传入bias

    template <typename T, typename U, typename S, typename V> __aicore__ inline void MmadMx(const LocalTensor<T>& dst, const LocalTensor<U>& fm, const LocalTensor<S>& filter, const LocalTensor<V>& bias, const MmadParams& mmadParams)

参数说明

表2参数说明

参数名称输入/输出含义
dst输出目的操作数,结果矩阵C,类型为LocalTensor,支持的物理存储位置为L0C Buffer(TPosition:CO1)。
LocalTensor的起始地址需要按照1024字节对齐。
fm输入源操作数,左矩阵A,类型为LocalTensor,支持的物理存储位置为L0A Buffer(TPosition:A2)。
左矩阵A对应的scale矩阵起始地址为:A矩阵起始对应地址/16。
对于fp4场景LocalTensor的起始地址需要按照512字节对齐。对于fp8场景LocalTensor的起始地址需要按照1024字节对齐。
filter输入源操作数,右矩阵B,类型为LocalTensor,支持的物理存储位置为L0B Buffer(TPosition:B2)。
右矩阵B对应的scale矩阵起始地址为:B矩阵起始对应地址/16。
对于fp4场景LocalTensor的起始地址需要按照512字节对齐。对于fp8场景LocalTensor的起始地址需要按照1024字节对齐。
bias输入源操作数,Bias矩阵,类型为LocalTensor,支持的物理存储位置为BT Buffer(TPosition:C2)。
LocalTensor的起始地址需要按照64字节对齐。
mmadParams输入矩阵乘相关参数。
该参数类型的具体定义请参考${INSTALL_DIR}/asc/include/basic_api/interface/kernel_struct_mm.h,${INSTALL_DIR}请替换为CANN软件安装后文件存储路径。
MmadParams参数说明请参考MmadParams结构体内参数说明。

数据类型

表3MmadMx接口左矩阵、右矩阵、Scale矩阵、Bias矩阵、结果矩阵支持的精度类型组合(Ascend 950PR/Ascend 950DT)

左矩阵fm右矩阵filterScale矩阵偏置Bias结果矩阵dst
fp4x2_e1m2_tfp4x2_e1m2_tfp8_e8m0_tfloatfloat
fp4x2_e2m1_tfp4x2_e1m2_tfp8_e8m0_tfloatfloat
fp4x2_e1m2_tfp4x2_e2m1_tfp8_e8m0_tfloatfloat
fp4x2_e2m1_tfp4x2_e2m1_tfp8_e8m0_tfloatfloat
fp8_e4m3fn_tfp8_e4m3fn_tfp8_e8m0_tfloatfloat
fp8_e4m3fn_tfp8_e5m2_tfp8_e8m0_tfloatfloat
fp8_e5m2_tfp8_e4m3fn_tfp8_e8m0_tfloatfloat
fp8_e5m2_tfp8_e5m2_tfp8_e8m0_tfloatfloat

返回值说明

无

约束说明

  • 不同矩阵对于存储位置的约束:
    • 结果矩阵C只支持位于物理存储位置为L0C Buffer(TPosition:CO1),大小256KB。
    • 左矩阵A只支持位于物理存储位置为L0A Buffer(TPosition:A2),大小64KB。
    • 右矩阵B只支持位于物理存储位置为L0B Buffer(TPosition:B2),大小64KB。
    • Bias矩阵只支持位于物理存储位置为BT Buffer(TPosition:C2),大小4KB。
  • 地址约束说明请参考表2。
  • 当M、K、N中的任意一个值为0时,表示指令不会执行,该接口将被视为NOP(空操作)。
  • K需要是64的倍数。
  • 对于fp4场景A/B矩阵的起始地址需要按照512字节对齐,对于fp8场景A/B矩阵的起始地址需要按照1024字节对齐。
  • 左矩阵A/B对应的scale矩阵起始地址为:A/B矩阵起始对应地址/16。
  • 其他特殊场景约束可参考Mmad接口约束说明。

调用示例

完整使用样例请参考MmadMx最佳实践。

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

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

相关新闻

  • 城通网盘解析工具:轻松获取高速直连地址的完整指南
  • CUDA ABI 兼容性断层:OpenClaw 部署失败的底层根因
  • DLL文件原理与故障排查全指南

最新新闻

  • Kafka Java客户端开发实战与性能优化指南
  • 终极MVP模式实战:TLint中Presenter与View层通信机制深度剖析
  • 《杀戮尖塔2》机器人十大流派玩法深度解析与实战指南
  • 基于空间的架构实战:构建高并发Android系统的完整解决方案
  • GESP C++三级真题深度解析:从算法思维到实战技巧
  • 商丘卖黄金 5 大渠道对比!连锁门店 / 金店 / 银行哪个划算?6 家靠谱实体店整理好 - 不晚生活号

日新闻

  • Toon Boom Harmony 高效工作流:从节点视图到镜头标记的实战技巧
  • 真力时售后维修电话,为您提供专业腕表保养与故障修复服务权威公示(2026年7月最新) - 亨得利官方服务中心
  • 【C++】类和对象--构造函数进阶(初始化列表与explicit)

周新闻

  • IX9104 PCIe5.0 高速交换芯片@ACP#完整规格 + 应用场景总结
  • Unity游戏集成Coze智能体:实现NPC智能对话与知识库联动
  • SAP EPIC 建行回单查询:从标准类CL_EPIC_EXAMPLE_CN_CCB_GHTD到Z类的5处关键修改

月新闻

  • 2026年6月公司网站搭建最新热门渠道测评:四大低成本/零代码平台对比+避坑
  • 【Linux】Linux arm 编译QT程序,出现expected “}“报错
  • 【MATLAB例程】四基站二维AOA定位与距离辅助增强对比仿真。基于角度观测和测距修正的固定目标平面定位精度分析

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号