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

aclnnBaddbmm&aclnnInplaceBaddbmm

产品支持情况

[object Object]undefined

功能说明

  • 接口功能: 计算α与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。)

  • 计算公式:

    out=βself+α(batch1@batch2)out = βself+α(batch1@batch2)

    注意:如果β为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计算,当输入为其他数据类型时不做处理。
  • 返回值:

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

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

    [object Object]

aclnnBaddbmm

  • 参数说明:

    [object Object]
  • 返回值:

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

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计算,当输入为其他数据类型时不支持该选项。
  • 返回值:

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

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

    [object Object]

aclnnInplaceBaddbmm

  • 参数说明:

    [object Object]
  • 返回值:

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

约束说明

  • 确定性说明:
    • [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]