Mmad

产品支持情况

产品 是否支持
Ascend 950PR/Ascend 950DT

功能说明

执行矩阵乘加(C += A * B或C = A * B + Bias)操作。支持MmadOperation操作,用于执行基本计算。

函数原型

template <typename Tp, const Tp& traits, typename T, typename... Params>
__aicore__ inline void Mmad(const MmadAtom<T>& atomMmad, const Params& ...params)

template <typename T, typename... Params>
__aicore__ inline void Mmad(const MmadAtom<T>& atomMmad, const Params& ...params)

参数说明

参数名 输入/输出 描述
atomMmad 输入 MmadAtom 对象,封装了具体的矩阵乘加操作和traits配置。
params 输入 矩阵乘加操作的参数,可变参数。通常包括:
- 目的张量C(计算结果矩阵,位于L0C)
- 源张量A(左矩阵,位于L0A)
- 源张量B(右矩阵,位于L0B)
- 参数(如defaultMmadParams)
- 可选:源张量Bias(偏置张量,位于L0C或者BiasTable Buffer)

返回值说明

约束说明

  • atomMmad必须是有效的MmadAtom对象;
  • params的数量和类型必须与矩阵乘加操作的要求匹配;
  • 源操作数和目的操作数必须位于支持的存储空间。

调用示例

using namespace AscendC::Te;
// 下面为接口3种调用方式的示例
// 调用方式1
Mmad(MmadAtom<MmadTraits<MmadOperation, MmadTraitDefault>>{}, l0CTensor, l0ATensor, l0BTensor, para);
// 调用方式2
MmadAtom<MmadTraits<MmadOperation, MmadTraitDefault>>{}.Call(l0CTensor, l0ATensor, l0BTensor, para);
// 调用方式3
auto atomMmad = MakeMmad(MmadOperation{}, MmadTraitDefault{});
atomMmad.Call(l0CTensor, l0ATensor, l0BTensor, para);

// 带Bias的调用方式
Mmad(MmadAtom<MmadTraits<MmadOperation, MmadTraitDefault>>{}, l0CTensor, l0ATensor, l0BTensor, biasTensor, para);

相关参考