aclnnGroupedMatMulAllReduce
该接口后续版本会废弃,请不要使用该接口。
产品支持情况
功能说明
算子功能:在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数量等于组数,属于前两种情况的组合。
计算公式:
非量化场景:
函数原型
每个算子分为,必须先调用“aclnnGroupedMatMulAllReduceGetWorkspaceSize”接口获取入参并根据计算流程计算所需workspace大小,再调用“aclnnGroupedMatMulAllReduce”接口执行计算。
[object Object]
[object Object]
aclnnGroupedMatMulAllReduceGetWorkspaceSize
aclnnGroupedMatMulAllReduce
约束说明
确定性计算:
- 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]