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

aclnnGroupedMatMulAllReduce

该接口后续版本会废弃,请不要使用该接口。

产品支持情况

[object Object]undefined

功能说明

  • 算子功能:在grouped_matmul的基础上实现多卡并行AllReduce功能,实现分组矩阵乘计算,每组矩阵乘的维度大小可以不同。根据x、weight、y的Tensor数量支持如下4种场景:

    • x、weight、y的Tensor数量等于组数,即每组的数据对应的Tensor是独立的。
    • x的Tensor数量为1,weight/y的Tensor数量等于组数,此时需要通过可选参数group_list说明x在行上的分组情况,如group_list[0]=10说明x的前10行参与第一组矩阵乘计算。
    • x、weight的Tensor数量等于组数,y的Tensor数量为1,此时每组矩阵乘的结果放在同一个Tensor中连续存放。
    • x、y的Tensor数量为1,weight数量等于组数,属于前两种情况的组合。
  • 计算公式:

    非量化场景:

    yi=xi×weighti+biasiy_i=x_i\times weight_i + bias_i

函数原型

每个算子分为,必须先调用“aclnnGroupedMatMulAllReduceGetWorkspaceSize”接口获取入参并根据计算流程计算所需workspace大小,再调用“aclnnGroupedMatMulAllReduce”接口执行计算。

[object Object]
[object Object]

aclnnGroupedMatMulAllReduceGetWorkspaceSize

  • 参数说明

    [object Object]
  • 返回值

    返回aclnnStatus状态码,具体参见

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

    [object Object]

aclnnGroupedMatMulAllReduce

  • 参数说明

    [object Object]
  • 返回值

    返回aclnnStatus状态码,具体参见

约束说明

  • 确定性计算:

    • aclnnGroupedMatMulAllReduce默认确定性实现。
  • 数据类型组合约束:x、weight、bias支持的数据类型组合为:

    • “x-FLOAT16、weight-FLOAT16、bias-FLOAT16”
    • “x-BFLOAT16、weight-BFLOAT16、bias-FLOAT32”
  • 维度约束:

    • 当splitItem为0时,x支持2-6维,y支持2-6维;
    • 当splitItem为1/2/3时,x支持2维,y支持2维;
    • 无论splitItem取值如何,weight均支持2维。
  • 设备数量约束:支持2、4、8卡部署。

  • 张量维度大小约束:

    • x和weight中每一组tensor的最后一维大小都应小于65536(x的最后一维:transpose_x为false时指K轴,为true时指M轴;weight的最后一维:transpose_weight为false时指N轴,为true时指K轴)。
    • x和weight中每一组tensor的每一维大小在32字节对齐后都应小于int32最大值(2147483647)。

调用示例

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

[object Object]