---
title: swapLast2Axes
description: "| 硬件型号 | 支持情况 |"
url: https://www.hiascend.com/document/detail/zh/canncommercial/latest/API/SiP/SIP_API_0004.html
sourcePath: /source/zh/canncommercial/900/API/SiP/SIP_API_0004.html
indexId: dcc312ae0d57875d3cdb7f85309750ca3171b84cb6bd35a96ed1a33ba7ee06c155
---
# swapLast2Axes

#### 产品支持情况

| 硬件型号 | 支持情况 |
| --- | --- |
| Atlas 200I/500 A2 推理产品 | 不支持 |
| Atlas 推理系列产品 | 不支持 |
| Atlas 训练系列产品 | 不支持 |
| Atlas A2 训练系列产品 / Atlas A2 推理系列产品 | 支持 |
| Atlas A3 推理系列产品 / Atlas A3 训练系列产品 | 支持 |


#### 功能说明

接口功能

- swapLast2AxesGetWorkspaceSize：计算swapLast2Axes算子所需的workspace大小。
  若需使用“swapLast2Axes”算子，需先调用“swapLast2AxesGetWorkspaceSize”接口获取计算所需workspace大小以及包含了算子计算流程的执行器，再调用“swapLast2Axes”接口执行计算。

- swapLast2Axes：交换Tensor的最后两维。


计算公式：

- swapLast2Axes的计算公式：，其中：b为数据的批次号，i为输入数据的行号， j为输入数据的列号。
- 示例：

  - 示例一：
    输入“inTensor”为：

```
[[1.+0.j, 2.+0.j, 3.+0.j]]
```


    调用swapLast2Axes算子后，

    输出“outTensor”为：

```
[[1.+0.j], [2.+0.j], [3.+0.j]].
```


  - 示例二：
    输入“inTensor”为：

```
[[[ 0.+0.j, 1.+0.j, 2.+0.j],
[ 3.+0.j, 4.+0.j, 5.+0.j]],
[[ 6.+0.j, 7.+0.j, 8.+0.j],
[ 9.+0.j, 10.+0.j, 11.+0.j]]],
```


    调用swapLast2Axes算子后，

    输出“outTensor”为：

```
[[[ 0.+0.j, 3.+0.j],
[ 1.+0.j, 4.+0.j],
[ 2.+0.j, 5.+0.j]],
[[ 6.+0.j, 9.+0.j],
[ 7.+0.j, 10.+0.j],
[ 8.+0.j, 11.+0.j]]].
```


#### 函数原型

- AsdSip::AspbStatus swapLast2AxesGetWorkspaceSize(size_t *size)
- AsdSip::AspbStatus swapLast2Axes(const aclTensor *inTensor, aclTensor *outTensor, void *stream,void *workspace = nullptr)


#### 参数说明

- swapLast2AxesGetWorkspaceSize| 参数名称 | Input/Output | 类型 | 描述 |
| --- | --- | --- | --- |
| size | Input | size\_t \* | swapLast2Axes算子所需要的workspace。 |


- swapLast2Axes| 参数名称 | Input/Output | 类型 | 描述 |
| --- | --- | --- | --- |
| inTensor | Input | const aclTensor \* | 公式中的inTensor，Device侧的Tensor，输入dim限制为2或3，输入的最大元素数为3600000000，数据类型仅支持COMPLEX64，数据格式支持ND。 |
| outTensor | Output | aclTensor \* | 公式中的outTensor，Device侧的Tensor，数据类型仅支持COMPLEX64，如果inTensor的shape为[k，x，y]，outTensor的shape为[k，y，x]，数据类型需要与inTensor的数据类型一致，数据格式支持ND。 |
| stream | Input | void\* | npu执行流。 |
| workspaceSize | Input | void \* | swapLast2Axes算子所需要的workspace。 |


#### 返回值说明

返回值相关说明参见返回值。


#### 约束说明

- swapLast2AxesGetWorkspaceSize：无。
- swapLast2Axes

  - 输入的最大元素数为3600000000 ([60000, 60000]以内)。

  - 算子输入shape若为[k，x，y]，则算子输出shape为[k，y，x]。
  - 算子实际计算时，不支持ND高维度运算（不支持维度>3的运算）。


#### 调用示例

算子的调用示例参见swapLast2Axes。
