开发者
下载
[object Object][object Object][object Object]
  • Ascend 950PR/Ascend 950DT:支持
[object Object][object Object]
  • Atlas A3 训练系列产品/Atlas A3 推理系列产品:支持
[object Object][object Object]
  • Atlas A2 训练系列产品/Atlas A2 推理系列产品:支持
[object Object][object Object]

以offsets指定的dst索引位置为基准,将输入Tensor src以原子(Atomic)方式累加到输出Tensor dst的对应区域。以2维为例,计算公式如下:

dst[offsets[0]:offsets[0]+src.shape[0], offsets[1]:offsets[1]+src.shape[1]] +=srcdst\left[ offsets\left[0\right] : offsets\left[0\right] + src.shape\left[0\right],\ offsets\left[1\right] : offsets\left[1\right] + src.shape\left[1\right] \right]\ += src

其他维度以此类推。

[object Object]
[object Object]
[object Object][object Object]undefined
[object Object]

无返回值,结果直接写入dst(inplace操作)。

[object Object]
  1. 输出Tensor dst的valid shape需由用户在调用atomic_add前确保正确,该接口不会自动推导。

  2. offsets的长度需等于src/dst的维度数,即 len(offsets)==src.dim==dst.dimlen(offsets) == src.dim == dst.dim,否则会产生编译报错。

  3. 在调用atomic_add前,需保证dst对应区域的数据已有效,否则会导致未定义行为。

  4. 为保证写入区域不越界,对任意维度 ii 需满足 offsets[i]+src.shape[i]dst.shape[i]offsets[i] + src.shape[i] \le dst.shape[i],否则会导致未定义行为。

  5. 当多个核并发对dst的重叠区域执行atomic_add时,各次累加的执行顺序不确定。

[object Object]
[object Object]

结果示例如下:

[object Object]