昇腾社区首页
中文
注册
开发者
下载

aclnnQuantMatmulAlltoAll

产品支持情况

[object Object]undefined

功能说明

  • 接口功能:完成量化的Matmul计算、Permute(保证通信后地址连续)和AlltoAll通信的融合,先计算后通信,支持K-C
  • 计算公式:假设x1的shape为(BS, H1),x2的shape为(H1, H2),rankSize为NPU卡数。
    • K-C量化模式:

      computeOut=(x1@x2+bias)x1Scalex2ScalepermutedOut=computeOut.view(BS,rankSize,H2/rankSize).permute(1,0,2)output=AlltoAll(permutedOut).view(rankSizeBS,H2/rankSize)computeOut = (x1 @ x2 + bias) * x1Scale * x2Scale \\ permutedOut = computeOut.view(BS, rankSize, H2 / rankSize).permute(1, 0, 2) \\ output = AlltoAll(permutedOut).view(rankSize * BS, H2 / rankSize)
    • K-C量化模式后加bias:

      computeOut=(x1@x2)x1Scalex2Scale+biaspermutedOut=computeOut.view(BS,rankSize,H2/rankSize).permute(1,0,2)output=AlltoAll(permutedOut).view(rankSizeBS,H2/rankSize)computeOut = (x1 @ x2) * x1Scale * x2Scale + bias \\ permutedOut = computeOut.view(BS, rankSize, H2 / rankSize).permute(1, 0, 2) \\ output = AlltoAll(permutedOut).view(rankSize * BS, H2 / rankSize)

函数原型

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

[object Object]
[object Object]

aclnnQuantMatmulAlltoAllGetWorkspaceSize

  • 参数说明​:

    [object Object]

    x1QuantMode、x2QuantMode、commQuantMode的枚举值跟关系如下:

    • 0: 不量化
    • 1: pertensor
    • 2: perchannel
    • 3: pertoken
    • 4: pergroup
    • 5: perblock
    • 6: mx量化
    • 7: pertoken动态量化
  • 返回值

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

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

    [object Object]

aclnnQuantMatmulAlltoAll

  • 参数说明:

    [object Object]
  • 返回值:

    返回aclnnStatus状态码,具体参见

约束说明

  • 默认支持确定性计算。
  • NPU卡数(rankSize),根据设备型号有不同限制:
    • [object Object]Atlas A2 训练系列产品/Atlas A2 推理系列产品[object Object]:支持2、4、8卡。
  • 参数说明中shape使用的变量H2必须整除NPU卡数。
  • H1范围仅支持[1, 65535]。
  • BS * rankSize和H2的值不得超过2147483647(INT32_MAX)。
  • 目前仅支持左矩阵perToken量化,x1QuantMode=3;右矩阵perChannel量化,x2QuantMode=2。
  • 不支持空tensor。
  • [object Object]Atlas A2 训练系列产品/Atlas A2 推理系列产品[object Object]不支持x2为非连续tensor。
  • 传入的x1、x2、x1Scale、x2Scale与output均不为空指针,且
    • [object Object]Atlas A2 训练系列产品/Atlas A2 推理系列产品[object Object]:biasOptional不支持传入空指针。
  • x1、x2和biasOptional计算输入的数据类型根据不同设备型号有不同的限制:
    • [object Object]Atlas A2 训练系列产品/Atlas A2 推理系列产品[object Object]:支持K-C量化模式后加bias,x1、x2计算输入的数据类型必须为INT8;output计算输出的数据类型为BFLOAT16时,biasOptional的数据类型为FLOAT32或BFLOAT16;output的数据类型为FLOAT16时,biasOptional的数据类型为FLOAT16。
  • 通算融合算子不支持并发调用,不同的通算融合算子也不支持并发调用。
  • 不支持跨超节点通信,只支持超节点内。

调用示例

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

说明:本示例代码调用了部分HCCL集合通信库接口:HcclGetCommName、HcclCommInitAll、HcclCommDestroy,请参考

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

    [object Object]