昇腾社区首页
中文
注册
开发者
下载

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
    AspbStatus asdFftExecC2CSeparated(asdFftHandle handle, const aclTensor *inputReal, const aclTensor *inputImag,const aclTensor *outputReal, const aclTensor *outputImag)

    参数名称

    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