昇腾社区首页
中文
注册

aclnnQuantMatmulV5

支持的产品型号

  • [object Object]Atlas A2 训练系列产品/Atlas 800I A2 推理产品/A200I A2 Box 异构组件[object Object]
  • [object Object]Atlas A3 训练系列产品/Atlas A3 推理系列产品[object Object]

功能说明

  • 算子功能:兼容aclnnQuantMatmulV3、aclnnQuantMatmulV4接口功能,在其基础上新增支持pergroup和perblock等特性,新增x1,x2输入支持dtype为FLOAT8_E4M3FN、FLOAT8_E5M2、HIFLOAT8、FLOAT4_E2M1、FLOAT4_E1M2。完成量化的矩阵乘计算,最小支持输入维度为2维,最大支持输入维度为6维。相似接口有aclnnMm(仅支持2维Tensor作为输入的矩阵乘)和aclnnBatchMatMul(仅支持三维的矩阵乘,其中第一维是Batch维度)。

  • 计算公式:

    • x1为INT8,x2为INT32,x1Scale为FLOAT32,x2Scale为UINT64,yOffset为FLOAT32,out为FLOAT16/BFLOAT16:

      out=((x1@(x2x2scale))+yoffset)x1scaleout = ((x1 @ (x2*x2scale)) + yoffset) * x1scale
    • x1,x2为INT8,无x1Scale,x2Scale为INT64/UINT64,可选参数x2Offset的dtype为FLOAT32,可选参数bias的dtype为INT32,out为INT8:

      out=(x1@x2+bias)x2Scale+x2Offsetout = (x1@x2 + bias) * x2Scale + x2Offset
    • x1,x2为INT8,无x1Scale,x2Scale为INT64/UINT64,无x2Offset,可选参数bias的dtype为INT32,out为FLOAT16/BFLOAT16:

      out=(x1@x2+bias)x2Scaleout = (x1@x2 + bias) * x2Scale
    • x1,x2为FLOAT8_E4M3FN/FLOAT8_E5M2/HIFLOAT8,无x1Scale,x2Scale为INT64/UINT64,无x2Offset,可选参数bias的dtype为FLOAT32,out为FLOAT8_E4M3FN/HIFLOAT8/FLOAT16/BFLOAT16/FLOAT32:

      out=(x1@x2+bias)x2Scaleout = (x1@x2 + bias) * x2Scale
    • x1,x2为INT8,无x1Scale,x2Scale为BFLOAT16/FLOAT32,无x2Offset,可选参数bias的dtype为BFLOAT16/FLOAT32,out为BFLOAT16:

      out=x1@x2x2Scale+biasout = x1@x2 * x2Scale + bias
    • x1,x2为FLOAT4_E2M1/FLOAT4_E1M2/FLOAT8_E4M3FN/FLOAT8_E5M2,x1Scale为FLOAT8_E8M0,x2Scale为FLOAT8_E8M0,无x2Offset,可选参数bias的dtype为FLOAT32:

      out=(x1x1Scale)@(x2x2Scale)+biasout = (x1* x1Scale)@(x2* x2Scale) + bias
    • x1,x2为INT8,x1Scale为FLOAT32,x2Scale为BFLOAT16/FLOAT32,无x2Offset,可选参数bias的dtype为INT32:

      out=(x1@x2+bias)x2Scalex1Scaleout = (x1@x2 + bias) * x2Scale * x1Scale
    • x1,x2为INT8,x1Scale为FLOAT32,x2Scale为BFLOAT16/FLOAT32,无x2Offset,可选参数bias的dtype为BFLOAT16/FLOAT32,out为BFLOAT16:

      out=x1@x2x2Scalex1Scale+biasout = x1@x2 * x2Scale * x1Scale + bias
    • x1,x2为INT8,x1Scale为FLOAT32,x2Scale为FLOAT32,无x2Offset,可选参数bias的dtype为FLOAT16/FLOAT32,out为FLOAT16:

      out=x1@x2x2Scalex1Scale+biasout = x1@x2 * x2Scale * x1Scale + bias
    • x1,x2为FLOAT8_E4M3FN/FLOAT8_E5M2/HIFLOAT8,x1Scale为FLOAT32,x2Scale为FLOAT32,无x2Offset,可选参数bias的dtype为FLOAT32:

      out=(x1@x2+bias)x2Scalex1Scaleout = (x1@x2 + bias) * x2Scale * x1Scale
    • x1,x2为FLOAT8_E4M3FN/FLOAT8_E5M2/HIFLOAT8,x1Scale为FLOAT32,x2Scale为FLOAT32,无x2Offset,无bias,当x1为(a0, a1),x2为(b0, b1)时,x1Scale为(ceil(a0, 128), ceil(a1, 128))或(a0, ceil(a1, 128)),x2Scale为(ceil(b0, 128), ceil(b1, 128)):

      outpq=0kblockSize(x1pr@x2rq(x1Scaleprx2Scalerq))out_{pq} = \sum_{0}^{\left \lfloor \frac{k}{blockSize} \right \rfloor} (x1_{pr}@x2_{rq}*(x1Scale_{pr}*x2Scale_{rq}))
    • x1为FLOAT8_E4M3FN,x2为FLOAT4_E2M1,x1Scale为FLOAT8_E8M0,x2Scale为FLOAT8_E8M0,无x1Offset,无x2Offset,可选参数bias的dtype为BFLOAT16,out为BFLOAT16:

      out=(x1x1Scale)@(x2x2Scale)+biasout = (x1 * x1Scale)@(x2 * x2Scale) + bias
    • x1为FLOAT8_E4M3FN,x2为FLOAT4_E2M1,无x1Scale,x2Scale为BFLOAT16,无x1Offset,无x2Offset,无bias, yScale为UINT64,out为BFLOAT16:

      out=(x1@(x2x2Scale))yScaleout = (x1@(x2 * x2Scale)) * yScale

函数原型

每个算子分为,必须先调用“aclnnQuantMatmulV5GetWorkspaceSize”接口获取计算所需workspace大小以及包含了算子计算流程的执行器,再调用“aclnnQuantMatmulV5”接口执行计算。

  • aclnnStatus aclnnQuantMatmulV5GetWorkspaceSize(const aclTensor *x1, const aclTensor *x2, const aclTensor *x1Scale, const aclTensor *x2Scale, const aclTensor *yScale, const aclTensor *x1Offset, const aclTensor *x2Offset, const aclTensor *yOffset, const aclTensor *bias, bool transposeX1, bool transposeX2, int64_t groupSize, aclTensor *out, uint64_t *workspaceSize, aclOpExecutor **executor)

  • aclnnStatus aclnnQuantMatmulV5(void *workspace, uint64_t workspaceSize, aclOpExecutor *executor, aclrtStream stream)

aclnnQuantMatmulV5GetWorkspaceSize

  • 参数说明:

    • x1(aclTensor*,计算输入):公式中的输入x1,device侧的aclTensor,数据格式支持ND,shape支持26维,在transposeX1为false情况下,形状为(batch, m, k);在transposeX1为true情况下,形状为(batch, k, m),其中batch代表前04维,0维表示bacth不存在。仅最后m和k轴转置情况下支持,其他轴方向不支持非连续的Tensor。数据类型支持INT8、FLOAT8_E4M3FN、FLOAT8_E5M2、HIFLOAT8、FLOAT4_E2M1、FLOAT4_E1M2。当x2Scale数据类型为FLOAT8_E8M0时,仅支持transposeX1为false的情况,维度表示:(batch, m, k),batch可不存在,当x1数据类型为FLOAT4_E2M1、FLOAT4_E1M2时要求k为偶数。
      • 当x1为FLOAT8_E4M3FN,x2为FLOAT4_E2M1时,仅支持k是64的倍数,transposeX1为false,不支持batch轴。
      • 当x1为INT8,x2为INT32时,仅支持k是256的倍数,transposeX1为false,不支持batch轴。
    • x2(aclTensor*,计算输入):公式中的输入x2,device侧的aclTensor。仅n和k轴转置情况下支持,其他轴方向不支持非连续的Tensor。数据格式支持ND,shape支持26维,在transposeX2为false情况下各个维度表示:(batch, k, n),在transposeX2为true情况下各个维度表示:(batch, n, k),其中batch代表前04维,0维表示bacth不存在,其中k与x1的shape中的k一致。数据类型支持INT4、INT8、FLOAT8_E4M3FN、FLOAT8_E5M2、HIFLOAT8、FLOAT4_E2M1、FLOAT4_E1M2,仅支持ND格式。当x2Scale数据类型为FLOAT8_E8M0时,仅支持transposeX2为true的情况,维度表示:(batch, n, k),其中batch代表前0~4维,0维表示bacth不存在,当x2数据类型为FLOAT4_E2M1、FLOAT4_E1M2时要求k为偶数。当x1为FLOAT8_E4M3FN,x2为FLOAT4_E2M1时,仅支持k是64的倍数。
      • 当x1为FLOAT8_E4M3FN,x2为FLOAT4_E2M1时,仅支持k是64的倍数,transposeX2为true,不支持batch轴。
      • 当x1为INT8,x2为INT32时,仅支持k是256的倍数,transposeX2为false,不支持batch轴。
    • x1Scale(aclTensor*,计算输入):公式中的输入x1Scale,device侧的aclTensor。可选的量化参数,支持传入nullptr。数据类型支持FLOAT32、FLOAT8_E8M0,支持ND。
      • 当x1为FLOAT8_E4M3FN,x2为FLOAT4_E2M1时,区分mx和per-group的量化模式。
        • mx量化模式:数据类型支持FLOAT8_E8M0。shape支持2维,shape为(m, ceil(k, groupSize))。
        • per-group量化模式:预留参数,当前版本不支持,需要传入nullptr。
      • 当x1Scale数据类型为FLOAT32时,shape可为1维或多维。
        • shape可以为1维, 当输入为FLOAT8_E4M3FN、FLOAT8_E5M2、HIFLOAT8时,shape可为(1, )或(m, ),当输入为INT8时,shape为(m, 1),其中m与x1的m一致;
        • 当x2scale维度大于1时, x1Scale为2到6维, 即(batch, t, d), batch可不存在且与x1的batch保持一致。 transposeX1为false时t = ceil(m, 128)或 t = m, d = ceil(k, 128), transposeX1为true时t = ceil(k, 128), d = ceil(m, 128)或 d = m, 其中m与x1的m一致, k与x1的k一致。
      • 当x1Scale数据类型为FLOAT8_E8M0时, shape是2维, 即(t, d), t = m, d = ceil(k, 32), 其中m与x1的m一致, k与x1的k一致, d必须为偶数。
    • x2Scale(aclTensor*,计算输入):表示量化参数,公式中的输入x2Scale,device侧的aclTensor。数据类型支持UINT64、FLOAT32、BFLOAT16、FLOAT8_E8M0,支持ND。当原始输入类型不满足中组合时,需提前调用aclnnTransQuantParamV2接口来将scale转成INT64、UINT64数据类型。
      • 当x1为FLOAT8_E4M3FN,x2为FLOAT4_E2M1时,区分mx和per-group的量化模式。
        • mx量化模式:数据类型支持FLOAT8_E8M0。
        • per-group量化模式:数据类型支持BFLOAT16。
      • 当x2Scale数据类型为UINT64时,区分两种情况。
        • 当x1为INT8,x2为INT32时,shape是2维, 即(k / groupSize, n),其中n与x2的n一致;
        • 其他情况:shape是1维, 即(1, )或(n, ),其中n与x2的n一致;
      • 当x2Scale数据类型为BFLOAT16时,shape是1维或2维, 即(1, )或(n, )或(n, ceil(k, groupSize)),其中n与x2的n一致;
      • 当x2Scale数据类型为FLOAT8_E8M0时, shape是2维, 即(t, d), t = n, d = ceil(k, 32), 其中n与x2的n一致, k与x2的k一致, d必须为偶数。
      • 当x2Scale数据类型为FLOAT32时, shape可维1维或多维。
        • 当x1的m大于1且x1Scale的shape为(1, ),x2Scale的shape为(1, );
        • 当x1Scale输入nullptr或x1Scale的shape是1维(m, )其中m与x1的m一致,x2Scale的shape是1维(1, )或(n, )其中n与x2的n一致;
        • 当x1Scale的维度大于1时,x2Scale的维度也大于1为2到6维(batch, t, d),其中batch可不存在,与x2的batch保持一致,transposeX2为false时t = ceil(k, 128),d = ceil(n, 128),transposeX2为true时t = ceil(n, 128),d = ceil(k, 128),其中n与x2的n一致, k与x2的k一致。
      • 当x1的类型为FLOAT8_E4M3FN、FLOAT8_E5M2, x1Scale的类型为FLOAT8_E8M0,并且x2的类型为FLOAT4_E2M1、FLOAT4_E1M2,x2Scale的类型为FLOAT8_E8M0时,x2Scale的数值会由量化工具放大64倍进行偏差补偿,再传入算子进行计算。
    • yScale(aclTensor*,计算输入):输出y的反量化scale参数。不支持非连续的Tensor。仅当x1为FLOAT8_E4M3FN,x2为FLOAT4_E2M1时支持。其他场景暂不支持。
      • 当x1为FLOAT8_E4M3FN,x2为FLOAT4_E2M1时,区分mx和per-group的量化模式。
        • mx量化模式:预留参数,当前版本不支持,需要传入nullptr。
        • per-group量化模式:数据类型支持UINT64,支持ND,shape支持2维, shape表示为(1,n)。当原始输入类型不满足约束和限制中的数据类型组合时, 需要提前调用TransQuantParamV2算子的aclnn接口来将其转成UINT64数据类型。
    • x1Offset(aclTensor*,计算输入):预留参数,当前版本不支持,需要传入nullptr或空tensor。
    • x2Offset(aclTensor*,计算输入):公式中的输入offset,device侧的aclTensor。可选量化参数,支持传入nullptr。数据类型支持FLOAT32,支持ND,shape是1维(t, ),t = 1或n,其中n与x2的n一致。当x1,x2数据类型为INT8,且out数据类型为INT8时,x2Offset可以存在,其他输入类型需要传入nullptr。
    • yOffset(aclTensor*,计算输入):
      • [object Object]Atlas A2 训练系列产品/Atlas 800I A2 推理产品/A200I A2 Box 异构组件[object Object]、[object Object]Atlas A3 训练系列产品/Atlas A3 推理系列产品[object Object]:公式中的输入yOffset,device侧的aclTensor。支持ND。shape支持1维(n)。数据类型支持FLOAT32。值要求为8*x2*x2Scale。
    • bias(aclTensor*,计算输入):公式中的输入bias,device侧的aclTensor。可选参数,支持传入nullptr。支持ND。shape支持1维(n, )、2维(1, n)或3维(batch, 1, n),n与x2的n一致。当out的shape为2、4、5、6维时,bias的shape支持1维(n, )。数据类型支持INT32,FLOAT32、BFLOAT16、FLOAT16。
      • 当x1为FLOAT8_E4M3FN,x2为FLOAT4_E2M1时,区分mx和per-group的量化模式。
        • mx量化模式:可选参数。数据类型支持BFLOAT16, 支持ND, shape支持2维,shape表示(1,n)。如不需要使用该参数,传入nullptr。
        • per-group量化模式:预留参数,当前版本不支持,需要传入nullptr。
    • transposeX1(bool,计算输入):
      • [object Object]Atlas A2 训练系列产品/Atlas 800I A2 推理产品/A200I A2 Box 异构组件[object Object]、[object Object]Atlas A3 训练系列产品/Atlas A3 推理系列产品[object Object]:表示x1的输入shape是否包含transpose。在transposeX1为false情况下各个维度表示:(m, k),在transposeX1为true情况下各个维度表示:(k, m)。
    • transposeX2(bool,计算输入):表示x2的输入shape是否包含transpose。
      • [object Object]Atlas A2 训练系列产品/Atlas 800I A2 推理产品/A200I A2 Box 异构组件[object Object]、[object Object]Atlas A3 训练系列产品/Atlas A3 推理系列产品[object Object]:ND格式下,在transposeX2为false情况下各个维度表示:(k, n),在transposeX2为true情况下各个维度表示:(n, k),其中k与x1的shape中的k一致。
    • groupSize(int64_t,计算输入):用于表示反量化中x1Scale/x2Scale输入的一个数在其所在的对应维度方向上可以用于该方向x1/x2输入的多少个数的反量化。groupSize输入由3个方向的groupSizeM,groupSizeN,groupSizeK三个值拼接组成,每个值占16位,共占用int64_t类型groupSize的低48位(groupSize中的高16位的数值无效),计算公式为:groupSize = groupSizeK | groupSizeN << 16 | groupSizeM << 32。
      • 只有当x1Scale和x2Scale输入都是2维及以上数据时,groupSize取值有效,其他场景需传入0。
      • 传入的groupSize内部会按公式分解得到groupSizeM、groupSizeN、groupSizeK,当其中有1个或多个为0,会根据x1/x2/x1Scale/x2Scale输入shape重新设置groupSizeM、groupSizeN、groupSizeK用于计算。原理:假设groupSizeM=0,表示m方向量化分组值由接口推断,推断公式为groupSizeM = m / scaleM(需保证m能被scaleM整除), 其中m与x1 shape中的m一致,scaleM与x1Scale shape中的m一致。
      • 最终得到的groupSizeM、groupSizeN、groupSizeK取值接口会进行校验,如不满足,进程会报错退出:
        • 当x1Scale/x2Scale输入都是2维及以上数据,且数据类型都为FLOAT32时,[groupSizeM,groupSizeN,groupSizeK]取值组合仅支持[1, 128, 128]和[128, 128, 128]。
        • 当x1Scale/x2Scale输入都是2维及以上数据,且数据类型都为FLOAT8_E8M0时,[groupSizeM,groupSizeN,groupSizeK]取值组合仅支持[1, 1, 32]
        • 当x1是FLOAT8_E4M3FN,x2是FLOAT4_E2M1时,[groupSizeM,groupSizeN,groupSizeK]取值组合仅支持[0, 0, 32]
        • 当x1为INT8且x2为INT32时,groupSize只支持[0,0,256]
    • out(aclTensor*,计算输出):公式中的输出out,device侧的aclTensor。支持ND。支持,shape支持2~6维,(batch, m, n),batch可不存在,支持x1与x2的batch维度broadcast,输出batch与broadcast之后的batch一致,m与x1的m一致,n与x2的n一致。数据类型支持INT8、HIFLOAT8、FLOAT8_E4M3FN、FLOAT16、BFLOAT16、FLOAT32。
      • 当x1为FLOAT8_E4M3FN,x2为FLOAT4_E2M1时,数据类型支持BFLOAT16。
    • workspaceSize(uint64_t*,出参):返回需要在Device侧申请的workspace大小。
    • executor(aclOpExecutor**,出参):返回op执行器,包含了算子计算流程。
  • 返回值:

    aclnnStatus:返回状态码,具体参见

    [object Object]

aclnnQuantMatmulV5

  • 参数说明:

    • workspace(void*, 入参):在Device侧申请的workspace内存地址。
    • workspaceSize(uint64_t, 入参):在Device侧申请的workspace大小,由第一段接口aclnnQuantMatmulV5GetWorkspaceSize获取。
    • executor(aclOpExecutor*, 入参):op执行器,包含了算子计算流程。
    • stream(aclrtStream, 入参):指定执行任务的AscendCL Stream流。
  • 返回值:

    aclnnStatus:返回状态码,具体参见

约束说明

输入和输出支持以下数据类型组合:

x1 x2 x1Scale x2Scale x2Offset yScale bias out
INT8 INT8 null UINT64/INT64 null null null/INT32 FLOAT16/BFLOAT16
INT8 INT8 null UINT64/INT64 null/FLOAT32 null null/INT32 INT8
INT8 INT8 null/FLOAT32 FLOAT32/BFLOAT16 null null null/INT32/FLOAT32/BFLOAT16 BFLOAT16
INT8 INT8 FLOAT32 FLOAT32 null null null/INT32/FLOAT32/FLOAT16 FLOAT16
FLOAT8_E4M3FN/FLOAT8_E5M2 FLOAT8_E4M3FN/FLOAT8_E5M2 null UINT64/INT64 null null null/FLOAT32 FLOAT8_E4M3FN/FLOAT16/BFLOAT16/FLOAT32
HIFLOAT8 HIFLOAT8 null UINT64/INT64 null null null/FLOAT32 HIFLOAT8/FLOAT16/BFLOAT16/FLOAT32
FLOAT8_E4M3FN/FLOAT8_E5M2 FLOAT8_E4M3FN/FLOAT8_E5M2 FLOAT32 FLOAT32 null null null/FLOAT32 FLOAT16/BFLOAT16/FLOAT32
HIFLOAT8 HIFLOAT8 FLOAT32 FLOAT32 null null null/FLOAT32 FLOAT16/BFLOAT16/FLOAT32
FLOAT4_E2M1/FLOAT4_E1M2 FLOAT4_E2M1/FLOAT4_E1M2 FLOAT8_E8M0 FLOAT8_E8M0 null null null/FLOAT32 FLOAT16/BFLOAT16/FLOAT32
FLOAT8_E4M3FN/FLOAT8_E5M2 FLOAT8_E4M3FN/FLOAT8_E5M2 FLOAT8_E8M0 FLOAT8_E8M0 null null null/FLOAT32 FLOAT16/BFLOAT16/FLOAT32
FLOAT8_E4M3FN FLOAT4_E2M1 FLOAT8_E8M0 FLOAT8_E8M0 null null null/BFLOAT16 BFLOAT16
FLOAT8_E4M3FN FLOAT4_E2M1 null BFLOAT16 null UINT64 null BFLOAT16
INT8 INT32 FLOAT32 UINT64 null null null FLOAT16/BFLOAT16

x1,x2,x1Scale,x2Scale和groupSize在不同量化场景下dtype,shape,取值等方面相互影响,关系如下:

x1数据类型 x2数据类型 x1Scale数据类型 x2Scale数据类型 x1 shape x2 shape x1Scale shape x2Scale shape yScale shape [groupSizeM,groupSizeN,groupSizeK]取值
FLOAT8_E4M3FN/FLOAT8_E5M2 FLOAT8_E4M3FN/FLOAT8_E5M2 FLOAT32 FLOAT32 (batch, m, k)/(batch, k, m) (batch, n, k)/(batch, k, n) (batch, ceil(m, 128), ceil(k, 128))/(batch, ceil(k, 128), ceil(m, 128)) (batch, ceil(n, 128), ceil(k, 128))/(batch, ceil(k, 128), ceil(n, 128)) null [128, 128, 128]
HIFLOAT8 HIFLOAT8 FLOAT32 FLOAT32 (batch, m, k)/(batch, k, m) (batch, n, k)/(batch, k, n) (batch, ceil(m, 128), ceil(k, 128))/(batch, ceil(k, 128), ceil(m, 128)) (batch, ceil(n, 128), ceil(k, 128))/(batch, ceil(k, 128), ceil(n, 128)) null [128, 128, 128]
FLOAT8_E4M3FN/FLOAT8_E5M2 FLOAT8_E4M3FN/FLOAT8_E5M2 FLOAT32 FLOAT32 (batch, m, k)/(batch, k, m) (batch, n, k)/(batch, k, n) (batch, m, ceil(k, 128))/(batch, ceil(k, 128), m) (batch, ceil(n, 128), ceil(k, 128))/(batch, ceil(k, 128), ceil(n, 128)) null [1, 128, 128]
HIFLOAT8 HIFLOAT8 FLOAT32 FLOAT32 (batch, m, k)/(batch, k, m) (batch, n, k)/(batch, k, n) (batch, m, ceil(k, 128))/(batch, ceil(k, 128), m) (batch, ceil(n, 128), ceil(k, 128))/(batch, ceil(k, 128), ceil(n, 128)) null [1, 128, 128]
FLOAT8_E4M3FN/FLOAT8_E5M2 FLOAT8_E4M3FN/FLOAT8_E5M2 FLOAT8_E8M0 FLOAT8_E8M0 (batch, m, k) (batch, n, k) (batch, m, ceil(k, 32)) (batch, n, ceil(k, 32)) null [1, 1, 32]
FLOAT4_E2M1/FLOAT4_E1M2 FLOAT4_E2M1/FLOAT4_E1M2 FLOAT8_E8M0 FLOAT8_E8M0 (batch, m, k) (batch, n, k) (batch, m, ceil(k, 32)) (batch, n, ceil(k, 32)) null [1, 1, 32]
FLOAT8_E4M3FN FLOAT4_E2M1 FLOAT8_E8M0 FLOAT8_E8M0 (m, k) (n, k) (m, ceil(k, 32)) (n, ceil(k, 32)) null [0, 0, 32]
FLOAT8_E4M3FN FLOAT4_E2M1 null BFLOAT16 (m, k) (n, k) (m, ceil(k, 32)) (n, ceil(k, 32)) (1, n) [0, 0, 32]
INT8 INT32 FLOAT32 UINT64 (m, k) (k, n // 8) (m, 1) ((k // 256),n) null [0, 0, 256]

调用示例

示例代码如下,仅供参考,具体编译和执行过程请参考

[object Object]

x1,x2为FLOAT8_E4M3FN,x1Scale为FLOAT32,x2Scale为FLOAT32,无x2Offset,bias为FLOAT32的示例代码如下,仅供参考,具体编译和执行过程请参考

[object Object]
  • [object Object]Atlas A2 训练系列产品/Atlas 800I A2 推理产品/A200I A2 Box 异构组件[object Object]、[object Object]Atlas A3 训练系列产品/Atlas A3 推理系列产品[object Object]: x1为INT8,x2为INT32,x1Scale为FLOAT32,x2Scale为UINT64,的示例代码如下,仅供参考,具体编译和执行过程请参考编译与运行样例。

    [object Object]