昇腾社区首页
中文
注册

参数列表

成员名称

类型

默认值

取值范围

描述

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的数据类型。默认值表示根据输入tensors自动推导输出tensors数据类型。

enAccum

bool

false

false/true

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

matmulType

MatmulType

MATMUL_UNDEFINED

MATMUL_UNDEFINED/MATMUL_EIN_SUM

矩阵乘功能类型。

  • MATMUL_UNDEFINED:包含除了爱因斯坦乘的其他特性。
  • MATMUL_EIN_SUM:使能爱因斯坦乘。

quantMode

QuantMode

QUANT_UNDEFINED

QUANT_UNDEFINED

PER_CHANNEL

PER_TOKEN

Linear的量化类型。

  • QUANT_UNDEFINED:非量化场景下的默认值,量化场景下和PER_CHANNEL功能一致。
  • PER_CHANNEL:per_channel量化。
  • PER_TOKEN:per_token量化。

rsv[21]

uint8_t

{0}

[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融合

matmulType

  • 在爱因斯坦乘场景中,配置为MATMUL_EIN_SUM,在其他场景中配置为MATMUL_UNDEFINED。
  • 当matmulType配置为MATMUL_EIN_SUM时
    • transposeA仅支持配置为false。
    • hasBias仅支持配置为false。
    • enAccum仅支持配置为false。
    • outDataType仅支持配置为默认值ACL_DT_UNDEFINED。

quantMode

  • 当outDataType为ACL_DT_UNDEFINED时为非量化场景,仅支持输入值为QUANT_UNDEFINED。
  • 当outDataType为ACL_FLOAT16或ACL_BF16时为量化场景:
    • 输入值为QUANT_UNDEFINED和PER_CHANNEL时为per_channel量化场景,当hasBias为true时,为非对称量化,当hasBias为false时,为对称量化。
    • 输入值为PER_TOKEN时为per_token量化场景,此时仅支持hasBias为false的对称量化场景。