昇腾社区首页
中文
注册

参数列表

成员名称

类型

默认值

取值范围

描述

transposeA

bool

false

false/true

是否需要对A矩阵进行行列转置。取值为true时进行转置,否则不转置。

transposeB

bool

true

false/true

是否需要对B矩阵进行行列转置。取值为true时进行转置,否则不转置。

hasBias

bool

true

false/true

是否叠加偏置。取值为true时叠加偏置,否则不叠加。

outDataType

aclDataType

ACL_DT_UNDEFINED

ACL_DT_UNDEFINED/ACL_FLOAT16/ACL_BF16

指定输出tensor的数据类型。

enAccum

bool

false

false/true

是否使能累加,即matmul+inplace add融合场景。

rsv[23]

uint8_t

{0}

-

预留参数。

详细说明

transposeA和transposeB

  • 根据transposeA和transposeB的配置,转置后的A矩阵和B矩阵shape需满足矩阵乘维度关系;
  • transposeA和transposeB的取值在部分功能中存在约束;
  • transposeA和transposeB可用于提升特殊场景下算子性能,收益根据shape动态变化。以常规矩阵乘为例,假设A矩阵和B矩阵的shape分别为[m, k]和[k, n]:
    • 当m为256的整数倍且k不为256的整数倍时,配置transposeA为true,将A矩阵进行行列转置,可提升性能,此时A矩阵shape为[k, m];
    • 当k为256的整数倍且n不为256的整数倍时,配置transposeB为true,将B矩阵进行行列转置,可提升性能,此时B矩阵shape为[n, k]。
  • 后文进行功能描述时,默认为transposeA与transposeB取值均为false的情况,维度对应关系如下表:

    A矩阵原维度

    transposeA为true时A矩阵维度

    [m, k]

    [k, m]

    [batch, m, k]

    [batch, k, m]

    B矩阵原维度

    transposeB为true时B矩阵维度

    [k, n]

    [n, k]

    [batch, k, n]

    [batch, n, k]

    [1, n / 16, k, 16]

    [1, k / 16, n, 16]

    [batch, n / 16, k, 16]

    [batch, k / 16, n, 16]

    [1, n / 32, k, 32]

    [1, k / 32, n, 32]

    [batch, n / 32, k, 32]

    [batch, k / 32, n, 32]

hasBias

  • 当enAccum配置为true时,hasBias仅支持配置为false;
  • hasBias的取值在部分功能中存在约束。

outDataType

在反量化场景中,配置为输出tensor的数据类型,目前支持ACL_FLOAT16/ACL_BF16;否则,在其他场景中,配置为默认值ACL_DT_UNDEFINED。

enAccum

  • 当hasBias配置为true时,enAccum仅支持配置为false;
  • 该参数配置为true时,触发matmul + inplaceAdd融合功能,该功能具体设计与约束参考matmul与inplaceAdd融合