昇腾社区首页
中文
注册

SetValueOperation

产品支持情况

硬件型号

是否支持

特殊说明

Atlas A3 推理系列产品/Atlas A3 训练系列产品

-

Atlas A2 训练系列产品/Atlas 800I A2 推理产品

-

Atlas 训练系列产品

-

Atlas 推理系列产品

不支持bf16数据类型。

Atlas 200I/500 A2 推理产品

-

功能说明

将输入源张量中的内容拷贝到输入目标张量指定位置中。

该拷贝为原地拷贝,最终结果修改在输入目标张量中。

例如:

输入目标张量dst: (a,b,c),输入源张量src: (d,e,f)

dst[starts[0]: ends[0], starts[1]: ends[1], starts[2]: ends[2]] = src

其中,starts[0]: ends[0]长度为src第0维的维度大小,starts[1]: ends[1]长度为src第1维的维度大小,starts[2]: ends[2]长度为src第2维的维度大小。

算子上下文

定义

1
2
3
4
5
6
struct SetValueParam {
     SVector<int64_t> starts;
     SVector<int64_t> ends;
     SVector<int64_t> strides;
     uint8_t rsv[8] = {0};
};

成员

成员名称

类型

默认值

描述

starts

SVector<int64_t>

-

每一维拷贝起始位置。

ends

SVector<int64_t>

-

每一维拷贝结束位置后一个位置,拷贝到该位置前一个位置为止。

strides

SVector<int64_t>

-

每一维拷贝步长,当前仅支持strides为全1。

rsv[8]

uint8_t

{0}

预留参数。

输入

参数

维度

数据类型

格式

描述

dst

[dim_0,dim_1,...,dim_n]

float16/float/int32/int64/bf16

ND

输入tensor1。

src

src的所有维度都小于等于dst对应的维度

与dst一致

ND

输入tensor2。

输出

参数

维度

数据类型

格式

描述

dst

[dim_0,dim_1,...,dim_n]

与src一致

ND

输出tensor。

注:输出dst与同名输入指向同一地址,即进行原地修改。

约束说明

  • 输入src和输入dst的维数、数据类型须相同。
  • 输入src的各维度大小要求小于或等于输入dst对应维度大小。
  • 输入src和输入dst的各维度要求有一个或两个维度不相同,且需要满足:
    • 如果有一个维度不相同,则这个维度不能是最高维(第0维)。
    • 如果有两个维度不相同,则其中一个不同的维度必须是最高维(第0维)。

接口调用示例

输入:
starts = {1,2}
ends = {4,4}
strides = {1,1}
dst=[[ 14,  -2,   2, -10, -12],
     [-11,   3,   2, -18,   6],
     [  1, -18, -12,   9,  -6],
     [ 16, -11,   6,  -6,   3],
     [ 12,  18,  14,  10,   9]]
src=[[  1,   0],
     [ -4,   7],
     [  9, -18]]
输出:
dst=[[ 14,  -2,   2, -10, -12],
     [-11,   3,   1,   0,   6],
     [  1, -18,  -4,   7,  -6],
     [ 16, -11,   9, -18,   3],
     [ 12,  18,  14,  10,   9]]