参数列表
成员名称  | 
类型  | 
默认值  | 
取值范围  | 
描述  | 
|---|---|---|---|---|
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  | 
矩阵乘功能类型。 
  | 
quantMode  | 
QuantMode  | 
QUANT_UNDEFINED  | 
QUANT_UNDEFINED PER_CHANNEL PER_TOKEN  | 
Linear的量化类型。 
  | 
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的对称量化场景。