文件最后提交记录最后更新时间
25 天前
1 个月前
2 个月前
2 个月前
2 个月前
10 天前
1 个月前
27 天前
10 天前
25 天前
README

Scatter

产品支持情况

产品 是否支持
Ascend 950PR/Ascend 950DT √
Atlas A3 训练系列产品/Atlas A3 推理系列产品 √
Atlas A2 训练系列产品/Atlas A2 推理系列产品 √
Atlas 200I/500 A2 推理产品 ×
Atlas 推理系列产品 ×
Atlas 训练系列产品 ×

功能说明

  • 算子功能: 将tensor updates中的值按指定的轴axis和索引indices逐个更新tensor data中的值。

  • 示例: 该算子有3个输入和一个属性:data、updates、indices和axis,其中data是待更新的tensor,updates是存储更新数据的tensor,indices表示更新位置, axis是指定的更新维度。按indices为1维或2维划分,存在以下两种场景(indices为0维时等价于shape为(1)的1维场景,此时updates的0轴必须为1):

    场景一: indices为1维。indices的第i个元素对应updates的第i个batch(updates的0轴),表示该batch写入data的第i个batch时在axis维上的起始偏移; updates在axis维的大小s为每次写入的长度,需满足indices[i] + s不超过data在axis维的大小。

    样例输入:
    data:(a, b, c, d)
    if axis = -2: updates:(n, b, e, d), indices[i] + e <= c
    if axis = -1: updates:(n, b, c, e), indices[i] + e <= d
    indices:(n,), n <= a
    
    data[i][j][indices[i]+k][l] = updates[i][j][k][l] # if dim = -2
    data[i][j][k][indices[i]+l] = updates[i][j][k][l] # if dim = -1
    

    场景二: indices为2维,shape的1轴为2。indices的第i行对应updates的第i个batch:indices[i][0]指定该batch写入data的0轴位置(不同i可以写入data的不同batch), indices[i][1]指定在axis维上的起始偏移;updates在axis维的大小s为每次写入的长度,需满足indices[i][1] + s不超过data在axis维的大小。

    样例输入:
    data:(a, b, c, d)
    if axis = -2: updates:(n, b, e, d), indices[i][1] + e <= c
    if axis = -1: updates:(n, b, c, e), indices[i][1] + e <= d
    indices:(n, 2), indices[i][0] < a
    
    data[indices[i][0]][j][indices[i][1]+k][l] = updates[i][j][k][l] # if dim = -2
    data[indices[i][0]][j][k][indices[i][1]+l] = updates[i][j][k][l] # if dim = -1
    

约束说明

  • updates shape的0轴与indices shape的0轴一致。
  • indices为0维时,updates shape的0轴为1。
  • updates shape的0轴小于等于data shape的0轴。
  • updates与data的shape,除axis轴和0轴以外,其余轴的shape均相同。
  • 当indices shape为二维时,shape的1轴需要等于2。
  • indices数据类型为INT32时,DtypeSize=4,为INT64时,DtypeSize=8,IndicesShapeSize为indices的shape乘积,需要使用的ub = IndicesShapeSize * DtypeSize + 224,当ub大于对应可以获取到的AI处理器版本总ub大小时,不支持。
  • 当indices有重复时,重复位置的结果不保证。
  • 确定性计算:当indices存在重复值时,结果将是不确定的。若开启了确定性计算,可保证结果的确定性(仅Ascend 950PR/Ascend 950DT需要显式开启,其余支持型号默认确定性)。

调用说明

调用方式 样例代码 说明
aclnn接口 test_aclnn_inplace_scatter_update 通过aclnnInplaceScatterUpdate接口方式调用Scatter算子。