pypto.atomic_add【免费下载链接】pyptoPyPTO发音: pai p-t-oParallel Tensor/Tile Operation编程范式。项目地址: https://gitcode.com/cann/pypto产品支持情况Ascend 950PR支持Atlas A3 训练系列产品/Atlas A3 推理系列产品支持Atlas A2 训练系列产品/Atlas A2 推理系列产品支持功能说明以offsets指定的dst索引位置为基准将输入Tensor src以原子Atomic方式累加到输出Tensor dst的对应区域。以2维为例计算公式如下$$ dst\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 $$其他维度以此类推。函数原型atomic_add(src: Tensor, offsets: List[Union[int, SymbolicScalar]], dst: Tensor) - None参数说明参数名输入/输出说明src输入源操作数类型为Tensor。offsets输入src写入dst时各维度的起始偏移量, 元素类型为int或SymbolicScalar。dst输出目标操作数类型为Tensor。返回值说明无返回值结果直接写入dstinplace操作。约束说明输出Tensor dst的valid shape需由用户在调用atomic_add前确保正确该接口不会自动推导。offsets的长度需等于src/dst的维度数即 $len(offsets) src.dim dst.dim$否则会产生编译报错。在调用atomic_add前需保证dst对应区域的数据已有效否则会导致未定义行为。为保证写入区域不越界对任意维度 $i$ 需满足 $offsets[i] src.shape[i] \le dst.shape[i]$否则会导致未定义行为。当多个核并发对dst的重叠区域执行atomic_add时各次累加的执行顺序不确定。调用示例x pypto.tensor([2, 2], pypto.DT_FP32) out pypto.tensor([4, 4], pypto.DT_FP32) pypto.atomic_add(x, [0, 0], out)结果示例如下输入数据x: [[1, 1], [1, 1]] 输出数据out运算前: [[1, 1, 0, 0], [1, 1, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]] 输出数据out运算后: [[2, 2, 0, 0], [2, 2, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]【免费下载链接】pyptoPyPTO发音: pai p-t-oParallel Tensor/Tile Operation编程范式。项目地址: https://gitcode.com/cann/pypto创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考