中文
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助

MatMul

接口功能

执行两个矩阵的乘法运算。

函数原型

1
int Matmul(T *blockA, T *blockB, T *output, MatMulParams<T> &M);
  • 该接口只接受一维张量作为输入。
  • 模板类型T:支持float,double。

  • 指针有效长度由用户决定。
  • 保证输入指针的有效空间相互不重叠。

参数说明

表1 参数说明

参数

输入/输出

说明

约束

blockA

输入

矩阵用于乘法运算。

指针不为空,且只接受一维张量。矩阵中不含有nan或者inf,需用户保障,防止计算结果未定义

blockB

输入

矩阵用于乘法运算。

指针不为空,且只接受一维张量。矩阵中不含有nan或者inf,需用户保障,防止计算结果未定义

output

输入

用于存储计算结果,构成的张量,作为输出。

指针不为空,且只接受一维张量。

M

输入

用于乘法运算的参数结构体,包括:

  • order:矩阵存储顺序(行优先或列优先)
  • transA:A矩阵是否转置
  • transB:B矩阵是否转置
  • m:A矩阵的行数
  • n:B矩阵的列数
  • k:A矩阵的列数或B矩阵的行数
  • alpha:alpha参数
  • lda:A矩阵存储步长
  • ldb:B矩阵存储步长
  • beta:beta参数
  • ldc:C矩阵存储步长
  • m,n,k均大于0。
  • order为行优先时,

    若transA为未转置,则lda=k,若transA为转置,则lda=m;同理,若transB为未转置,则ldb=n,若transB为转置,则ldb=k;

    ldc=n。

  • order为列优先时,

    若transA为未转置,则lda=m,若transA为转置,则lda=k;同理,若transB为未转置,则ldb=k,若transB为转置,则ldb=n;

    ldc=m。

  • alpha与beta不为nan或者inf,需用户保障,防止计算结果未定义