昇腾社区首页
中文
注册

aclnnAddcdiv&aclnnInplaceAddcdiv

支持的产品型号

  • Atlas 训练系列产品。
  • Atlas A2训练系列产品。

接口原型

  • aclnnAddcdiv和aclnnInplaceAddcdiv实现相同的功能,使用区别如下,请根据自身实际场景选择合适的算子。

    • aclnnAddcdiv:需新建一个输出张量对象存储计算结果。
    • aclnnInplaceAddcdiv:无需新建输出张量对象,直接在输入张量的内存中存储计算结果。
  • 每个算子分为,必须先调用 “aclnnAddcdivGetWorkspaceSize” 或者 “aclnnInplaceAddcdivGetWorkspaceSize” 接口获取入参并根据计算流程计算所需workspace大小,再调用 “aclnnAddcdiv” 或者 “aclnnInplaceAddcdiv” 接口执行计算。

    • aclnnStatus aclnnAddcdivGetWorkspaceSize(const aclTensor *self, const aclTensor *tensor1, const aclTensor *tensor2, const aclScalar *value, const aclTensor *out, uint64_t *workspaceSize, aclOpExecutor **executor)
    • aclnnStatus aclnnAddcdiv(void *workspace, uint64_t workspaceSize, aclOpExecutor *executor, aclrtStream stream)
    • aclnnStatus aclnnInplaceAddcdivGetWorkspaceSize(const aclTensor *selfRef, const aclTensor *tensor1, const aclTensor *tensor2, const aclScalar *value, uint64_t *workspaceSize, aclOpExecutor **executor)
    • aclnnStatus aclnnInplaceAddcdiv(void *workspace, uint64_t workspaceSize, aclOpExecutor *executor, aclrtStream stream)

功能描述

  • 算子功能:执行 tensor1 除以 tensor2 的元素除法,将结果乘以标量 value 并将其添加到 self

  • 计算公式:

outi=selfi+value×tensor1itensor2iout_i = self_i + value \times {tensor1_i \over tensor2_i}

aclnnAddcdivGetWorkspaceSize

  • 参数说明:

    • self:需要累加的张量,Device侧的aclTensor,数据类型支持BFLOAT16(仅Atlas A2训练系列产品支持)、FLOAT16、FLOAT、DOUBLE、INT64,数据类型要和tensor1、tensor2支持可推导关系,shape要与tensor1、tensor2除过之后的tensor满足,支持支持ND。
    • tensor1:分子张量,Device侧的aclTensor,数据类型支持BFLOAT16(仅Atlas A2训练系列产品支持)、FLOAT16、FLOAT、DOUBLE、INT64,数据类型要和self、tensor2支持可推导关系,shape要与tensor2满足,支持支持ND。
    • tensor2:分母张量,Device侧的aclTensor,数据类型支持BFLOAT16(仅Atlas A2训练系列产品支持)、FLOAT16、FLOAT、DOUBLE、INT64, 数据类型要和self、tensor1支持可推导关系,shape要与tensor1满足,支持支持ND。
    • value:host侧的aclScalar,数据类型与self、tensor1、tensor2数据类型保持一致,不一致时需要强转成一致。
    • out:输出张量,Device侧的aclTensor,数据类型支持BFLOAT16(仅Atlas A2训练系列产品支持)、FLOAT16、FLOAT、DOUBLE、INT64,数据类型要满足和self、tensor1、tensor2推导关系,shape是self、tensor1、tensor2 broadcast之后的shape,支持支持ND。
    • workspaceSize:返回用户需要在Device侧申请的workspace大小。
    • executor:返回op执行器,包含了算子计算流程。
  • 返回值:

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

    [object Object]

aclnnAddcdiv

  • 参数说明:

    • workspace:在Device侧申请的workspace内存地址。
    • workspaceSize:在Device侧申请的workspace大小,由第一段接口aclnnAddcdivGetWorkspaceSize获取。
    • executor:op执行器,包含了算子计算流程。
    • stream:指定执行任务的 AscendCL Stream流。
  • 返回值:

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

aclnnInplaceAddcdivGetWorkspaceSize

  • 参数说明:

    • selfRef:需要累加的张量,Device侧的aclTensor,数据类型支持BFLOAT16(仅Atlas A2训练系列产品支持)、FLOAT16、FLOAT、DOUBLE、INT64,数据类型要和tensor1、tensor2支持可推导关系,shape要与tensor1、tensor2除过之后的tensor满足,支持支持ND。
    • tensor1:分子张量,Device侧的aclTensor,数据类型支持BFLOAT16(仅Atlas A2训练系列产品支持)、FLOAT16、FLOAT、DOUBLE、INT64,数据类型要和selfRef、tensor2支持可推导关系,shape要与tensor2满足,支持支持ND。
    • tensor2:分母张量,Device侧的aclTensor,数据类型支持BFLOAT16(仅Atlas A2训练系列产品支持)、FLOAT16、FLOAT、DOUBLE、INT64, 数据类型要和selfRef、tensor1支持可推导关系,shape要与tensor1满足,支持支持ND。
    • value:host侧的aclScalar,数据类型与selfRef、tensor1、tensor2数据类型保持一致,不一致时需要强转成一致。
    • workspaceSize:返回用户需要在Device侧申请的workspace大小。
    • executor:返回op执行器,包含了算子计算流程。
  • 返回值:

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

    [object Object]

aclnnInplaceAddcdiv

  • 参数说明:

    • workspace:在Device侧申请的workspace内存地址。
    • workspaceSize:在Device侧申请的workspace大小,由第一段接口aclnnInplaceAddcdivGetWorkspaceSize获取。
    • executor:op执行器,包含了算子计算流程。
    • stream:指定执行任务的 AscendCL Stream流。
  • 返回值:

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

约束与限制

调用示例

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

[object Object]