aclnnBaddbmm&aclnnInplaceBaddbmm
产品支持情况
功能说明
接口功能: 计算α与batch1、batch2的矩阵乘结果的乘积,再与β和self的乘积求和。 注意:batch1、batch2必须是三维Tensor,两个shape仅在aclnnBaddbmm支持做broadcast,两个shape在aclnnInplaceBaddbmm做broadcast则会被拦截; self必须要支持和batch1@batch2的结果做broadcast。(broadcast,广播机制,是指较小的shape扩展至较大的shape,使两者shape互相兼容,当前仅支持(1,n)的broadcast,即两个Tensor对应的每一维度必须相同或其中一个为1。)
计算公式:
注意:如果β为0,则self会被忽略,不参与计算。
示例:
self的shape是[1, M, K], batch1@batch2的shape是[A, M, 1],计算输出out的shape是[A, M, K]。每一维度的数字需要相同或其中一个为1。此处若self的shape是[2, M, K],则不满足broadcast条件,报错。
函数原型
- aclnnBaddbmm和aclnnInplaceBaddbmm实现相同的功能,使用区别如下,请根据自身实际场景选择合适的算子。
- aclnnBaddbmm:需新建一个输出张量对象存储计算结果。
- aclnnInplaceBaddbmm:无需新建输出张量对象,直接在输入张量的内存中存储计算结果。
- 每个算子分为,必须先调用“aclnnBaddbmmGetWorkspaceSize”接口获取入参并根据流程计算所需workspace大小,再调用“aclnnBaddbmm”接口执行计算。
[object Object]
[object Object]
[object Object]
[object Object]
aclnnBaddbmmGetWorkspaceSize
参数说明:
[object Object]- [object Object]Atlas 训练系列产品[object Object]、[object Object]Atlas 推理系列产品[object Object]:
- 不支持BFLOAT16数据类型;
- 当输入数据类型为FLOAT32时不支持cubeMathType=0;
- cubeMathType=1,当输入数据类型为FLOAT32时,会转换为FLOAT16计算,当输入为其他数据类型时不做处理;
- 不支持cubeMathType=3。
- [object Object]Atlas A2 训练系列产品/Atlas A2 推理系列产品[object Object]、[object Object]Atlas A3 训练系列产品/Atlas A3 推理系列产品[object Object]:
- cubeMathType=0,当输入数据类型为FLOAT16或BFLOAT16时,矩阵乘计算会使用FLOAT16 / BFLOAT16输入、FLOAT32输出的方式传递,当输入为其他数据类型时不做处理;
- cubeMathType=1,当输入数据类型为FLOAT32时,会转换为HFLOAT32计算,当输入为其他数据类型时不做处理;
- cubeMathType=2,当输入数据类型是FLOAT32时,会转换为FLOAT16计算,当输入为其他数据类型时不做处理;
- cubeMathType=3,当输入数据类型为FLOAT32时,会转换为HFLOAT32计算,当输入为其他数据类型时不做处理。
- [object Object]Atlas 训练系列产品[object Object]、[object Object]Atlas 推理系列产品[object Object]:
返回值:
第一段接口完成入参校验,出现以下场景时报错:
[object Object]
aclnnBaddbmm
aclnnInplaceBaddbmmGetWorkspaceSize
参数说明:
[object Object]- [object Object]Atlas 训练系列产品[object Object]、[object Object]Atlas 推理系列产品[object Object]:
- 不支持BFLOAT16数据类型;
- 当输入数据类型为FLOAT32时不支持cubeMathType=0;
- cubeMathType=1,当输入数据类型为FLOAT32时,会转换为FLOAT16计算,当输入为其他数据类型时不做处理;
- 不支持cubeMathType=3。
- [object Object]Atlas A2 训练系列产品/Atlas A2 推理系列产品[object Object]、[object Object]Atlas A3 训练系列产品/Atlas A3 推理系列产品[object Object]:
- cubeMathType=1,当输入数据类型为FLOAT32时,会转换为HFLOAT32计算,当输入为其他数据类型时不做处理;
- cubeMathType=2,当输入数据类型为BFLOAT16时不支持该选项;
- cubeMathType=3,当输入数据类型为FLOAT32时,会转换为HFLOAT32计算,当输入为其他数据类型时不支持该选项。
- [object Object]Atlas 训练系列产品[object Object]、[object Object]Atlas 推理系列产品[object Object]:
返回值:
第一段接口完成入参校验,出现以下场景时报错:
[object Object]
aclnnInplaceBaddbmm
约束说明
- 确定性说明:
- [object Object]Atlas 训练系列产品[object Object]、[object Object]Atlas 推理系列产品[object Object]:aclnnBaddbmm&aclnnInplaceBaddbmm默认确定性实现。
- [object Object]Atlas 训练系列产品[object Object]、[object Object]Atlas 推理系列产品[object Object]:Cube单元不支持FLOAT32计算。当输入为FLOAT32,可通过设置cubeMathType=1(ALLOW_FP32_DOWN_PRECISION)来允许接口内部cast到FLOAT16进行计算。
- [object Object]Atlas A2 训练系列产品/Atlas A2 推理系列产品[object Object]、[object Object]Atlas A3 训练系列产品/Atlas A3 推理系列产品[object Object]:不支持batch1和batch2两输入其中一个输入为BFLOAT16, 另一个输入为FLOAT或FLOAT16的数据类型推导。
调用示例
[object Object]