文件最后提交记录最后更新时间
7 小时前
17 天前
17 天前
3 天前
17 天前
17 天前
17 天前
17 天前
17 天前
1 个月前
1 个月前
README

ScatterElements

产品支持情况

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

功能说明

  • 算子功能: 将tensor updates中的值按指定的轴和方向以及对应的位置关系逐个替换/累加/累乘至输出tensor中,输出tensor非更新位置的值和输入tensor一致。

  • 示例: 对于一个3D tensor,输出会按照如下的规则进行更新:

    y[indices[i][j][k]][j][k] += updates[i][j][k] # 如果dim == 0 && reduction == 1
    y[i][indices[i][j][k]][k] *= updates[i][j][k] # 如果dim == 1 && reduction == 2
    y[i][j][indices[i][j][k]] = updates[i][j][k]  # 如果dim == 2 && reduction == 0
    

    在计算时需要满足以下要求:

    • data、indices和updates的维度数量必须相同。
    • 对于每一个维度d,有indices.size(d) <= updates.size(d)的限制。
    • 对于每一个维度d,如果d != dim,有indices.size(d) <= data.size(d)的限制。
    • dim的值的大小必须在 [-data的维度数量, data的维度数量-1] 之间。
    • data的维度数应该小于等于8。
    • indices的值大小必须在[0, data.size(dim)-1]之间。

参数说明

参数名 输入/输出/属性 描述 数据类型 数据格式
data 输入 公式中的`data`,Device侧的aclTensor。 COMPLEX128, COMPLEX64, DOUBLE, FLOAT32, FLOAT16, INT16, INT32, INT64, INT8, QINT32, QINT8, QUINT8, UINT16, UINT32, UINT64, UINT8, BFLOAT16, COMPLEX32 ND
dim 输入 用来scatter的维度,数据类型为INT64。 int64_t -
indices 输入 公式中的`indices`,Device侧的aclTensor。 INT32、INT64。 ND
updates 输入 公式中的`updates`,Device侧的aclTensor。 COMPLEX128, COMPLEX64, DOUBLE, FLOAT32, FLOAT16, INT16, INT32, INT64, INT8, QINT32, QINT8, QUINT8, UINT16, UINT32, UINT64, UINT8, BFLOAT16, COMPLEX32 ND
reduction 输入 Host侧的字符串,选择应用的reduction操作。 string -
out 输出 公式中的输出。 COMPLEX128, COMPLEX64, DOUBLE, FLOAT32, FLOAT16, INT16, INT32, INT64, INT8, QINT32, QINT8, QUINT8, UINT16, UINT32, UINT64, UINT8, BFLOAT16, COMPLEX32 ND

约束说明

调用说明

调用方式 样例代码 说明
图模式调用 test_geir_scatter_elements 通过算子IR构图方式调用ScatterElements算子。