开发者
资源
[object Object]

[object Object][object Object]undefined
[object Object]
  • 接口功能:完成量化的矩阵乘计算。

    • [object Object]Atlas A2 训练系列产品/Atlas A2 推理系列产品[object Object]、[object Object]Atlas A3 训练系列产品/Atlas A3 推理系列产品[object Object]:

      兼容aclnnQuantMatmulV3、aclnnQuantMatmulV4接口功能。完成量化的矩阵乘计算,最小支持输入维度为1维,最大支持输入维度为2维。相似接口有aclnnMm(仅支持2维Tensor作为输入的矩阵乘)。

    • Atlas 350 加速卡:

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

  • 计算公式:

    • [object Object]Atlas A2 训练系列产品/Atlas A2 推理系列产品[object Object]、[object Object]Atlas A3 训练系列产品/Atlas A3 推理系列产品[object Object]:

      支持K-C && K-T、T-C && T-T、G-B、K-G,不同量化模式对应的输入输出数据类型组合参见

      [object Object][object Object]
      • x1为INT8,x2为INT32,x1Scale为FLOAT32,x2Scale为UINT64,yOffset为FLOAT32:

        out=((x1@(x2x2Scale))+yOffset)x1Scaleout = ((x1 @ (x2*x2Scale)) + yOffset) * x1Scale
      • x1,x2为INT4,x1Scale,x2Scale为FLOAT32,x2Offset为FLOAT16,out为FLOAT16/BFLOAT16 (pertoken-pergroup非对称量化):

        out=x1Scalex2Scale@(x1@x2x1@x2Offset)out = x1Scale * x2Scale @ (x1 @ x2 - x1 @ x2Offset)
      [object Object][object Object][object Object]
      • x1Scale无bias:

        out=x1@x2x2Scalex1Scaleout = x1@x2 * x2Scale * x1Scale
      • x1Scale,bias INT32(此场景无offset):

        out=(x1@x2+bias)x2Scalex1Scaleout = (x1@x2 + bias) * x2Scale * x1Scale
      • x1Scale,bias BFLOAT16/FLOAT16/FLOAT32(此场景无offset):

        out=x1@x2x2Scalex1Scale+biasout = x1@x2 * x2Scale * x1Scale + bias
      [object Object][object Object][object Object]
      • 无x1Scale无bias:

        out=x1@x2x2Scale+x2Offsetout = x1@x2 * x2Scale + x2Offset
      • bias INT32:

        out=(x1@x2+bias)x2Scale+x2Offsetout = (x1@x2 + bias) * x2Scale + x2Offset
      • bias BFLOAT16/FLOAT32(此场景无offset):

        out=x1@x2x2Scale+biasout = x1@x2 * x2Scale + bias
      [object Object][object Object][object Object]
      • x1,x2为INT8,x1Scale,x2Scale为FLOAT32,bias为FLOAT32,out为FLOAT16/BFLOAT16 (pergroup-perblock量化):out=(x1@x2)x1Scalex2Scale+biasout = (x1 @ x2) * x1Scale * x2Scale + bias
      [object Object]
    • Atlas 350 加速卡:

      支持T-C && T-T、K-C && K-T、G-B 、B-B 、mx、T-CG,不同量化模式对应的输入输出数据类型组合参见

      [object Object][object Object]
      • x1,x2为INT8,无x1Scale,x2Scale为INT64/UINT64,可选参数x2Offset为FLOAT32,可选参数bias为INT32:

        out=(x1@x2+bias)x2Scale+x2Offsetout = (x1@x2 + bias) * x2Scale + x2Offset
      • x1,x2为INT8,无x1Scale,x2Scale为INT64/UINT64,可选参数bias为INT32; 或x1,x2为FLOAT8_E4M3FN/FLOAT8_E5M2/HIFLOAT8,无x1Scale,x2Scale为INT64/UINT64,可选参数bias为FLOAT32:

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

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

        out=(x1@x2+bias)x2Scalex1Scaleout = (x1@x2 + bias) * x2Scale * x1Scale
      [object Object][object Object][object Object]
      • x1,x2为INT8,x1Scale为FLOAT32,x2Scale为BFLOAT16/FLOAT32,可选参数bias为INT32; 或x1,x2为FLOAT8_E4M3FN/FLOAT8_E5M2/HIFLOAT8,x1Scale为FLOAT32,x2Scale为FLOAT32,可选参数bias为FLOAT32:

        out=(x1@x2+bias)x2Scalex1Scaleout = (x1@x2 + bias) * x2Scale * x1Scale
      • x1,x2为INT8,x1Scale为FLOAT32,x2Scale为BFLOAT16/FLOAT32,可选参数bias为BFLOAT16/FLOAT32; 或x1,x2为INT8,x1Scale为FLOAT32,x2Scale为FLOAT32,可选参数bias为FLOAT16/FLOAT32:

        out=x1@x2x2Scalex1Scale+biasout = x1@x2 * x2Scale * x1Scale + bias
      [object Object][object Object][object Object]out[m,n]=j=0kLoops1((k=0gsK1(x1Slicex2Slice))(x1Scale[m/gsM,j]x2Scale[j,n/gsN]))+bias[n]out[m,n] = \sum_{j=0}^{kLoops-1} ((\sum_{k=0}^{gsK-1} (x1Slice * x2Slice))* (x1Scale[m/gsM, j] * x2Scale[j, n/gsN]))+bias[n]

      其中,gsM,gsN和gsK分别代表groupSizeM,groupSizeN和groupSizeK;x1Slice代表x1第m行长度为groupSizeK的向量,x2Slice代表x2第n列长度为groupSizeK的向量;K轴均从j*groupSizeK起始切片,j的取值范围[0, kLoops),kLoops = ceil(K / groupSizeK),K为K轴长度,支持最后的切片长度不足groupSizeK。仅mx量化模式下包含bias。对于G-B,B-B和mx量化模式,[groupSizeM,groupSizeN,groupSizeK]取值组合仅分别支持[1,128,128],[128,128,128]和[1,1,32]。

      [object Object][object Object][object Object]out=(x1@(x2x2Scale))yScaleout = (x1@(x2 * x2Scale)) * yScale [object Object]
[object Object]

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

[object Object]
[object Object]
[object Object]
  • 参数说明

    [object Object]
    • 注:可选输入是指可选的量化参数,支持传入nullptr。

    • Atlas 350 加速卡:

      • 上表数据类型列中的角标“1”代表该系列不支持的数据类型。
      • 输入参数x1、x2均不支持INT4、INT32类型。
      • x2为ND格式时,当输入参数x1为m=0的空tensor或x2为n=0的空tensor时,输出为空tensor;x2为FRACTAL_NZ格式时,当输入参数x1中m=0的空tensor时,输出为空tensor。
    • [object Object]Atlas A2 训练系列产品/Atlas A2 推理系列产品[object Object]、[object Object]Atlas A3 训练系列产品/Atlas A3 推理系列产品[object Object]:

      • 上表数据类型列中的角标“2”代表该系列不支持的数据类型。
    • 计算公式:[object Object][object Object]

      groupSize=groupSizeKgroupSizeN<<16groupSizeM<<32groupSize = groupSizeK | groupSizeN << 16 | groupSizeM << 32
  • 返回值

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

    第一段接口完成入参校验,出现以下场景时报错:

    [object Object]
[object Object]
  • 参数说明

    [object Object]
  • 返回值

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

[object Object]
  • 确定性计算:
    • aclnnQuantMatmulV5默认确定性实现。
[object Object][object Object]
  • 公共约束: [object Object][object Object]

    • transposeX1为false情况下X1各个维度表示:(batch, m, k)。transposeX1为true情况下X1各个维度表示:(batch, k, m),batch可不存在。
    • transposeX2的约束如下:
      • ND格式下,为false时X2维度为:(batch,k,n),为true时维度为:(batch,n,k),batch可不存在,其中k与x1的shape中的k一致。
      • NZ格式下:
        • 为true时X2维度为:(batch,k1,n1,n0,k0),batch可不存在,其中k0 = 32,n0 = 16,x1 shape中的k和x2 shape中的k1需要满足以下关系:ceil(k / 32) = k1。
        • 为false时X2维度为:(batch,n1,k1,k0,n0),batch可不存在,其中k0 = 16,n0 = 32,x1 shape中的k和x2 shape中的k1需要满足以下关系:ceil(k / 16) = k1。
        • 可使用aclnnCalculateMatmulWeightSizeV2接口以及aclnnTransMatmulWeight接口完成输入Format从ND到NZ格式的转换。
    • 当前版本不支持yScale,需要传入nullptr。
    • out的shape支持2~6维,(batch,m,n),batch可不存在。数据类型支持FLOAT16、INT8、BFLOAT16、INT32。
    • x1,x2为INT8,out为INT32,bias为INT32或nullptr时,各scale实际不参与计算,计算公式如下:
      • bias INT32

        out=x1@x2+biasout = x1@x2 + bias
      • 无bias

        out=x1@x2out = x1@x2
    [object Object][object Object]
    • 输入和输出支持以下数据类型组合:

    [object Object][object Object]

    [object Object]undefined
    • x1 shape、x2 shape、x1Scale shape、x2Scale shape、bias shape和groupSize的取值关系:

      [object Object]undefined
    • 注:上表中gsM、gsK和gsN分别表示groupSizeM、groupSizeK和groupSizeN。

    • x1的约束:目前n需与256对齐, k与128对齐且为4 * 128的倍数, transposeX1为false。

    • x2的约束:目前n需与256对齐,k与128对齐且为4 * 128的倍数,transposeX2为true。

    [object Object][object Object][object Object]
    • 输入和输出支持以下数据类型组合:

    [object Object][object Object]

    [object Object]undefined
    • x1的约束:
      • 当数据类型为INT4时,transposeX1为false。维度为:(m,k),要求k为偶数。
      • 当数据类型为INT32时,transposeX1为false。每个INT32数据存放8个INT4数据,对应维度表示:(m,ceil(k / 8)),要求k为8的倍数。
      • 当数据类型为INT8时,且x2的数据类型为INT32时,transposeX1为false。维度为:(m,k),要求k为偶数。
    • x2的约束:
      • 数据类型为INT4时:
        • 当前仅支持2维ND格式。
        • transposeX2为true时维度为:(n,k),要求k为偶数。
        • transposeX2为false时维度为:(k,n),要求n为偶数。
      • 数据类型为INT32时,每个INT32数据存放8个INT4数据,
        • 当前仅支持2维ND格式。
        • transposeX2为true时维度为:(n,ceil(k / 8)),要求k为8的倍数。
        • transposeX2为false时维度为:(k,ceil(n / 8)),要求n为8的倍数。
        • 可使用aclnnConvertWeightToINT4Pack接口完成x2从INT32(1个int32在0~3bit位存储1个int4)到INT32(1个int32存储8个int4)或INT4(1个int4表示1个int4)的数据格式转换,具体参见
    • x1Scale的约束:数据格式支持ND,shape是1维(t,),t = m,其中m与x1的m一致。
    • x2Scale的约束:数据格式支持ND,shape是1维(t,),t = 1或n,其中n与x2的n一致。
    • x2Offset的约束:数据格式支持ND,shape是1维(t,),t = 1或n,其中n与x2的n一致。
    • bias的约束:
      • 数据格式支持ND。shape支持1维(n,)或3维(batch,1,n),n与x2的n一致。
      • 当x1和x2为INT32、INT4时,bias的shape只支持1维(n,)。
      • 当out的shape为2、4、5、6维时,bias的shape只支持1维(n,)。
    • yOffset的约束:shape支持1维(n)。为计算过程中离线计算的辅助结果,值要求为8 * x2 * x2Scale,并在第1维累加。
    [object Object][object Object][object Object]
    • 输入和输出支持以下数据类型组合:

    [object Object][object Object] | x1 | x2 | x1Scale | x2Scale | x2Offset | yScale | bias | yOffset | out | | ------------------------- | ------------------------- | ----------- | ----------- | ----------- | ------- | ------------ | -----------| -------------------------------------- | | INT8 | INT32 | FLOAT32 | UINT64 | null | null | null | FLOAT32 | FLOAT16/BFLOAT16 | | INT4 | INT4 | FLOAT32 | FLOAT32 | FLOAT16 | null | null | null | BFLOAT16 |

    • x1、x2、x1Scale、x2Scale和groupSize的取值关系:[object Object]undefined
    • x1的约束:
      • 当数据类型为INT8时,k需与256对齐,并小于18432。transposeX1为false。
      • 当数据类型为INT4时,k需与1024对齐。transposeX1为false。
    • x2的约束:
      • 当数据类型为INT32时,k需与256对齐。transposeX2为false。
      • 当数据类型为INT4时,k需与1024对称,n需与256对齐。transposeX2为true,
    • x2Scale的约束:
      • 当数据类型为UINT64时,由于TransQuantParamV2只支持1维,需要将x2Scale view成一维(k / groupSize * n),再调用TransQuantParamV2算子的aclnn接口来将x2Scale转成UINT64数据类型,再将输出view成二维(k / groupSize, n),groupSize值为256。
      • 当x1、x2为INT4时,x2Scale的shape为(ceil(k / 256), n)。
    [object Object]
[object Object][object Object][object Object]
  • 公共约束: [object Object][object Object]

    • transposeX1为false时x1的shape:(batch, m, k)。transposeX1为true时x1的shape:(batch, k, m)。其中batch代表前0~4维,0维表示bacth不存在。

    • transposeX2为false时x2的shape:(batch, k, n)。transposeX2为true时x2的shape:(batch, n, k)。其中batch代表前0~4维,0维表示bacth不存在。k与x1的shape中的k一致。

    • 当x2Scale的原始输入类型不满足量化场景约束中组合时,需提前调用aclnnTransQuantParamV2接口来将scale转成INT64、UINT64数据类型。

    • yScale仅当x1为FLOAT8_E4M3FN,x2为FLOAT4_E2M1时支持,其他场景暂不支持。shape是2维(1, n),其中n与x2的n一致。

    • x2Offset仅当x1,x2数据类型为INT8,且out数据类型为INT8时支持,其他输入类型需要传入nullptr。shape是1维(t, ),t = 1或n,其中n与x2的n一致。

    • yOffset为预留参数,当前版本不支持,需要传入nullptr或空tensor。

    • bias相关约束:

      • 可选参数,支持传入nullptr。
      • 当out的shape为2、4、5、6维时,bias的shape支持1维(n,)或2维(1, n)。
      • 当out的shape为3维时,bias的shape支持1维(n,)或3维(batch, 1, n)。
    • groupSize相关约束:

      • 仅在mx、G-B、B-B、T-CG中生效。
      • 只有当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一致。
      groupSize=groupSizeKgroupSizeN<<16groupSizeM<<32groupSize = groupSizeK | groupSizeN << 16 | groupSizeM << 32
    • out的shape支持2~6维,(batch, m, n),batch可不存在,支持x1与x2的batch维度broadcast,输出batch与broadcast之后的batch一致,m与x1的m一致,n与x2的n一致。

    • x1,x2为INT8,out为INT32,bias为INT32或nullptr时,各scale实际不参与计算,计算公式如下:

      • bias INT32

        out=x1@x2+biasout = x1@x2 + bias
      • 无bias

        out=x1@x2out = x1@x2
    [object Object][object Object]
    • 输入和输出支持以下数据类型组合:

    [object Object][object Object] | 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/ BFLOAT16 | null | null | null/INT32/FLOAT32/ BFLOAT16 | BFLOAT16 | | INT8 | INT8 | null | FLOAT32/ BFLOAT16| null | null | null/INT32 | INT32 | | FLOAT8_E4M3FN/ FLOAT8_E5M2 | FLOAT8_E4M3FN/ FLOAT8_E5M2 | null | UINT64/ INT64 | null | null | null/FLOAT32 | FLOAT16/BFLOAT16/FLOAT32 | | HIFLOAT8 | HIFLOAT8 | null | UINT64/ INT64 | null | null | null/FLOAT32 | 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 |

    • T-T量化场景下,x1Scale的shape为(1,)或nullptr,x2Scale的shape为(1,)。
    • T-C量化场景下,x1Scale的shape为(1,)或nullptr,x2Scale的shape为(n,),其中n与x2的n一致。
    • x1/x2的数据类型为FLOAT8_E4M3FN/FLOAT8_E5M2/HIFLOAT8时,区分静态量化和动态量化。静态量化时x2Scale数据类型为UINT64/ INT64,动态量化时x2Scale数据类型为FLOAT32;x1/x2数据类型为INT8时,不支持动态T-C或动态T-T量化。
    • 动态T-C量化场景下,不支持bias。
    [object Object][object Object][object Object]
    • 输入和输出支持以下数据类型组合:

    [object Object][object Object] | x1 | x2 | x1Scale | x2Scale | x2Offset | yScale | bias | out | | ------------------------- | ------------------------- | ----------- | ----------- | -------- | -------| ------- | -------------------------------------- | | INT8 | INT8 | 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 | FLOAT32 | FLOAT32 | null | null | null/FLOAT32 | FLOAT16/BFLOAT16/FLOAT32 | | HIFLOAT8 | HIFLOAT8 | FLOAT32 | FLOAT32 | null | null | null/FLOAT32 | FLOAT16/BFLOAT16/FLOAT32 |

    • K-C量化场景下,x1Scale的shape为(m,),x2Scale的shape为(n,),其中m与x1的m一致,n与x2的n一致;
    • K-T量化场景下,x1Scale的shape为(m,),x2Scale的shape为(1,),其中m与x1的m一致。
    [object Object][object Object][object Object]
    • 输入和输出支持以下数据类型组合:

    [object Object][object Object] | x1 | x2 | x1Scale | x2Scale | x2Offset | yScale | bias | out | | ------------------------- | ------------------------- | ----------- | ----------- | -------- | -------| ------- | -------------------------------------- | | FLOAT8_E4M3FN/ FLOAT8_E5M2 | FLOAT8_E4M3FN/ FLOAT8_E5M2 | FLOAT32 | FLOAT32 | null | null | null | FLOAT16/BFLOAT16/ FLOAT32 | | HIFLOAT8 | HIFLOAT8 | FLOAT32 | FLOAT32 | null | null | null | FLOAT16/BFLOAT16/ FLOAT32 | | INT8 |INT8 | FLOAT32 | FLOAT32 | null | null | FLOAT32 |BFLOAT16 |

    • x1、x2、x1Scale、x2Scale和groupSize的取值关系:[object Object]undefined
    • 注:上表中gsM、gsK和gsN分别表示groupSizeM、groupSizeK和groupSizeN。
    • G-B量化和B-B量化场景下,x1和x1Scale的转置属性需要保持一致,x2和x2Scale的转置属性需要保持一致。
    • G-B量化场景下,仅INT8输入支持bias,其余场景不支持bias。
    • B-B量化场景下,不支持int8输入,且不支持bias。
    [object Object][object Object][object Object]
    • 输入和输出支持以下数据类型组合:

    [object Object][object Object] |量化类型| x1 | x2 | x1Scale | x2Scale | x2Offset | yScale | bias | out | |-------| ------------------------- | ------------------------- | ----------- | ----------- | -------- | -------| ------- | -------------------------------------- | |mx 全量化| FLOAT8_E4M3FN/ FLOAT8_E5M2 | FLOAT8_E4M3FN/ FLOAT8_E5M2 | FLOAT8_E8M0 | FLOAT8_E8M0 | null | null | null/FLOAT32 | FLOAT16/BFLOAT16/FLOAT32 | |mx 全量化| FLOAT4_E2M1 | FLOAT4_E2M1 | FLOAT8_E8M0 | FLOAT8_E8M0 | null | null | null/FLOAT32 | FLOAT16/BFLOAT16/FLOAT32 | |mx 伪量化| FLOAT8_E4M3FN | FLOAT4_E2M1 | FLOAT8_E8M0 | FLOAT8_E8M0 | null | null | null/BFLOAT16| BFLOAT16 |

    • x1数据类型、x2数据类型、x1、x2、x1Scale、x2Scale和groupSize的取值关系:

      [object Object]undefined
    • mx全量化场景下,当x2数据类型为FLOAT8_E4M3FN/FLOAT8_E5M2时,x1和x1Scale的转置属性需要保持一致,x2和x2Scale的转置属性需要保持一致。

    • mx全量化场景下,当x2数据类型为FLOAT4_E2M1时,仅支持transposeX1为false且transposeX2为true,要求k为偶数且ceil(k / 32)为偶数。

    • mx伪量化场景下,当x2数据类型为FLOAT4_E2M1时,transposeX1为false且transposeX2为true,不支持batch轴。数据格式支持ND和AI处理器亲和数据排布格式。当数据格式为ND格式时,要求支持k是64的倍数。当数据格式为AI处理器亲和数据排布格式时,要求k,n都是64的倍数。

    • mx伪量化场景下,bias为可选参数。数据类型支持BFLOAT16,数据格式支持ND,shape支持2维,shape表示(1,n)。如不需要使用该参数,传入nullptr。

    • mx伪量化场景下,[groupSizeM,groupSizeN,groupSizeK]取值组合支持[0, 0, 32]和[1, 1, 32],对应的groupSize值分别为32和4295032864。

    [object Object][object Object][object Object]
    • 输入和输出支持以下数据类型组合:

    [object Object][object Object] | x1 | x2 | x1Scale | x2Scale | x2Offset | yScale | bias | out | | ------------------------- | ------------------------- | ----------- | ----------- | -------- | -------| ------- | -------------------------------------- | | FLOAT8_E4M3FN | FLOAT4_E2M1 | null | BFLOAT16 | null | INT64/UINT64 | null | BFLOAT16 |

    • x1、x2、x1Scale、x2Scale和groupSize的取值关系:[object Object]undefined
    • T-CG量化模式下,yScale数据类型支持INT64和UINT64,数据格式支持ND,shape支持2维,shape表示为(1, n)。当原始输入类型不满足约束和限制中的数据类型组合时,需要提前调用TransQuantParamV2算子的aclnn接口来将其转成UINT64数据类型。当输入数据类型是INT64时,内部会把INT64当成UINT64处理。
    • T-CG量化模式下,bias是预留参数,当前版本不支持,需要传入nullptr。
    • T-CG量化模式下,transposeX1为false。数据格式支持ND和AI处理器亲和数据排布格式。当数据格式为ND格式时,要求支持k是64的倍数,transposeX2为true。当数据格式为AI处理器亲和数据排布格式时,要求k,n都是64的倍数,transposeX2为false。
    • T-CG量化模式下,[groupSizeM,groupSizeN,groupSizeK]取值组合支持[0, 0, 32]和[1, 1, 32],对应的groupSize值分别为32和4295032864。
    [object Object]
[object Object][object Object]

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

  • Atlas 350 加速卡: x1为FLOAT8_E4M3FN,x2为FLOAT4_E2M1,x2Scale为BFLOAT16,yScale为UINT64。

    [object Object]
  • Atlas 350 加速卡: x1为INT8,x2为INT8,x1Scale为FLOAT32,x2Scale为FLOAT32,bias为INT32。

    [object Object]
  • Atlas 350 加速卡: x1,x2为FLOAT8_E4M3FN,x1Scale为FLOAT32,x2Scale为FLOAT32,无x2Offset,bias为FLOAT32。

    [object Object]
  • [object Object]Atlas A2 训练系列产品/Atlas A2 推理系列产品[object Object]、[object Object]Atlas A3 训练系列产品/Atlas A3 推理系列产品[object Object]: x1为INT8,x2为INT32,x1Scale为FLOAT32,x2Scale为UINT64。

    [object Object]