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

#### 产品支持情况

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


#### 功能描述

接口功能

- asdFftMakePlan3D：初始化三维FFT配置。

- asdFftExecC2C：执行复数到复数的FFT变换。
- asdFftExecC2R：执行复数到实数的FFT变换。

- asdFftExecR2C：执行实数到复数的FFT变换。
- asdFftExecC2CSeparated：执行复数到复数的FFT变换，支持实部、虚部分开输入和输出。

计算公式：

设有一个三维离散信号：


它的三维离散傅里叶变换定义为：


其中：


#### 函数原型

- AspbStatus asdFftMakePlan3D(asdFftHandle handle, int64_t fftSizeX, int64_t fftSizeY, int64_t fftSizeZ, asdFftType fftType, asdFftDirection direction, int32_t batchSize)
- AspbStatus asdFftExecC2C(asdFftHandle handle, const aclTensor *input, const aclTensor *output)
- AspbStatus asdFftExecC2R(asdFftHandle handle, const aclTensor *input, const aclTensor *output)
- AspbStatus asdFftExecR2C(asdFftHandle handle, const aclTensor *input, const aclTensor *output)
- AspbStatus asdFftExecC2CSeparated(asdFftHandle handle, const aclTensor *inputReal, const aclTensor *inputImag,const aclTensor *outputReal, const aclTensor *outputImag)


#### 参数说明

- asdFftMakePlan3D| 参数名称 | Input/Output | 类型 | 描述 |
| --- | --- | --- | --- |
| handle | Input | asdFftHandle | FFT算子的句柄，需要手动申请创建asdFftHandle对象。 |
| fftSizeX | Input | int64\_t | 公式中的M，FFT信号长度（第一维）。 |
| fftSizeY | Input | int64\_t | 公式中的N，FFT信号长度（第二维）。 |
| fftSizeZ | Input | int64\_t | 公式中的N，FFT信号长度（第三维）。 |
| fftType | Input | asdFftType | FFT变换类型，全部如下： \- ASCEND\_FFT\_C2C \- ASCEND\_FFT\_C2R \- ASCEND\_FFT\_R2C \- ASCEND\_FFT\_C2C\_SEP |
| direction | Input | asdFftDirection | 选择FFT执行正向变换或反向变换： \- ASCEND\_FFT\_FORWARD \- ASCEND\_FFT\_INVERSE |
| batchSize | Input | int32\_t | FFT变换批处理操作中的数据批次数量。 |


- asdFftExecC2C| 参数名称 | Input/Output | 类型 | 描述 |
| --- | --- | --- | --- |
| handle | Input | asdFftHandle | FFT算子的句柄，需要手动申请创建asdFftHandle对象。 |
| inData | Input | const aclTensor \* | 公式中的x，Device侧的Tensor，数据类型仅支持COMPELX64，数据格式支持ND，输入的shape为（batchSize，fftSizeX，fftSizeY，fftSizeZ）。 |
| outData | Output | aclTensor \* | 公式中的y，Device侧的Tensor，数据类型仅支持COMPELX64，数据格式支持ND，输入的shape为（batchSize，fftSizeX，fftSizeY，fftSizeZ）。 |


- asdFftExecC2R| 参数名称 | Input/Output | 类型 | 描述 |
| --- | --- | --- | --- |
| handle | Input | asdFftHandle | FFT算子的句柄，需要手动申请创建asdFftHandle对象。 |
| inData | Input | const aclTensor \* | 公式中的x，Device侧的Tensor，数据类型仅支持COMPELX64，数据格式支持ND，输入的shape为（batchSize，fftSizeX，fftSizeY，fftSizeZ/2+1）。 |
| outData | Output | aclTensor \* | 公式中的y，Device侧的Tensor，数据类型仅支持FLOAT32，数据格式支持ND，输入的shape为（batchSize，fftSizeX，fftSizeY，fftSizeZ）。 |


- asdFftExecR2C| 参数名称 | Input/Output | 类型 | 描述 |
| --- | --- | --- | --- |
| handle | Input | asdFftHandle | FFT算子的句柄，需要手动申请创建asdFftHandle对象。 |
| inData | Input | const aclTensor \* | 公式中的x，Device侧的Tensor，数据类型仅支持FLOAT32，数据格式支持ND，输入的shape为（batchSize，fftSizeX，fftSizeY，fftSizeZ）。 |
| outData | Output | aclTensor \* | 公式中的y，Device侧的Tensor，数据类型仅支持COMPELX64，数据格式支持ND，输入的shape为（batchSize，fftSizeX，fftSizeY，fftSizeZ/2+1）。 |


- asdFftExecC2CSeparated| 参数名称 | Input/Output | 类型 | 描述 |
| --- | --- | --- | --- |
| handle | Input | asdFftHandle | FFT算子的句柄，需要手动申请创建asdFftHandle对象。 |
| inputReal | Input | const aclTensor \* | 公式中的x的实部，输入的实部，数据类型仅支持FLOAT32，数据格式支持ND，输入的shape为（batchSize，fftSize）。 |
| inputImag | Input | const aclTensor \* | 公式中的x的虚部，输入的虚部，数据类型仅支持FLOAT32，数据格式支持ND，输入的shape为（batchSize，fftSize）。 |
| outputReal | Output | const aclTensor \* | 公式中的y的实部，输出的实部，数据类型仅支持FLOAT32，数据格式支持ND，输入的shape为（batchSize，fftSize）。 |
| outputImag | Output | const aclTensor \* | 公式中的y的虚部，输出的虚部，数据类型仅支持FLOAT32，数据格式支持ND，输入的shape为（batchSize，fftSize）。 |


#### 返回值说明

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


#### 约束说明

FFT_3D均不支持本地更新，即不允许输入tensor和输出tensor是同一个tensor。

- asdFftMakePlan3D

  - fftSizeX、fftSizeY、fftSizeZ需保证不超过2^27且分解质因数后不包含超过199的质因子。
  - batchSize在存储允许范围内应无额外约束;

  - 输入的元素个数理论支持[1，2^30]。
  - 输入的元素不支持inf、-inf和nan，如果输入中包含这些值, 那么结果为未定义。
- asdFftExecC2C
  无。

- asdFftExecC2R
  无。

- asdFftExecR2C
  无。

- asdFftExecC2CSeparated
  信号长度范围[2, 256]。


#### 调用示例

算子的调用示例参见FFT_3D。
