接口功能:将src tensor中的值按指定的轴方向和index tensor中的位置关系逐个填入self tensor中,若有多于一个src值被填入到self的同一位置,那么这些值将会在这一位置上进行累加。
用例: 对于一个3D tensor,self会按照如下的规则进行更新:
[object Object]在计算时需要满足以下要求:
- self、index和src的维度数量必须相同。
- 对于每一个维度d,有index.size(d) <= src.size(d)。
- 对于每一个维度d,如果有d != dim,有index.size(d) <= self.size(d)。
- dim取值范围为[-self.dim(), self.dim() - 1]。
示例:
输入tensor , 索引tensor , dim = 1, 源tensor , 输出tensor
dim = 1 表示scatter_add根据在tensor的列上进行累加。
= 1 + 10,
= 2 + 12,
= 3 + 11,
= 4 + 13 + 14,
= 5 + 15,
= 6,
= 7,
= 8,
= 9。
其中,、、的维度数量均为2,每个维度大小{2,3}都不大于的对应维度大小{2,3},在dim != 1的维度上(dim = 0),的维度大小{2}不大于的对应维度大小{3},中的最大值{2},小于在dim = 1维度的大小{3}。
每个算子分为,必须先调用“aclnnScatterAddGetWorkspaceSize”接口获取计算所需workspace大小以及包含了算子计算流程的执行器,再调用“aclnnScatterAdd”接口执行计算。
[object Object]
[object Object]
- 确定性计算:
- aclnnScatterAdd默认确定性实现。
[object Object]