---
title: SetValueOperation
description: "| 硬件型号 | 是否支持 | 特殊说明 |"
url: https://www.hiascend.com/document/detail/zh/canncommercial/latest/API/ascendtb/ascendtb_01_0077.html
sourcePath: /source/zh/canncommercial/900/API/ascendtb/ascendtb_01_0077.html
indexId: 57d12ddbc50fd432bdf6b84df3d4db8e66dd207af3648c47a31c4bdf7ea63bc764
---
# SetValueOperation

#### 产品支持情况

| 硬件型号 | 是否支持 | 特殊说明 |
| --- | --- | --- |
| Atlas 350 加速卡 | x | \- |
| Atlas A3 推理系列产品 / Atlas A3 训练系列产品 | √ | \- |
| Atlas A2 训练系列产品 / Atlas 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]长度是ends[0] - starts[0]，starts[1]:ends[1]长度是ends[1] - starts[1]，starts[2]:ends[2]长度是ends[2] - starts[2]。


#### 算子上下文


#### 定义

```
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]]
```
