离散傅里叶变换 (cupy.fft)#
提示
NumPy API 参考:离散傅里叶变换 (numpy.fft) <https://numpy.org/doc/stable/reference/routines.fft.html>`_
标准 FFT#
|
计算一维快速傅里叶变换。 |
|
计算一维逆FFT。 |
|
计算二维快速傅里叶变换。 |
|
计算二维逆快速傅里叶变换。 |
|
计算 N 维傅里叶变换。 |
|
计算 N 维逆 FFT。 |
实数快速傅里叶变换#
|
计算实输入的一维快速傅里叶变换。 |
|
计算实数输入的一维逆FFT。 |
|
计算实数输入的二维快速傅里叶变换。 |
|
计算实数输入的二维逆FFT。 |
|
计算实数输入的 N 维 FFT。 |
|
计算实数输入的N维逆FFT。 |
Hermitian FFTs#
|
计算具有厄米特对称性的信号的FFT。 |
|
计算具有厄米特对称性的信号的FFT。 |
辅助例程#
|
返回 FFT 采样频率。 |
|
返回实数输入的FFT采样频率。 |
|
将零频分量移到频谱中心。 |
|
与 |
CuPy 特定的 API#
详情请参见下面的描述。
用于设置加载和/或存储回调的上下文管理器。 |
|
|
设置在多GPU FFT中使用的GPU。 |
获取每个线程、每个设备的计划缓存,如果不存在则创建一个。 |
|
显示此线程上所有计划缓存的信息。 |
标准化#
默认的归一化方式(norm 为 "backward" 或 None)使得正向变换不进行缩放,而逆向变换则按 \(1/n\) 进行缩放。如果关键字参数 norm 为 "forward",则与 "backward" 完全相反:正向变换按 \(1/n\) 进行缩放,而逆向变换不进行缩放。最后,如果关键字参数 norm 为 "ortho",则正向和逆向变换均按 \(1/\sqrt{n}\) 进行缩放。
代码兼容性特性#
NumPy 的 FFT 函数总是返回类型为 numpy.complex128 或 numpy.float64 的 numpy.ndarray。CuPy 函数不遵循此行为,如果输入的类型是 numpy.float16、numpy.float32 或 numpy.complex64,它们将返回 numpy.complex64 或 numpy.float32。
在内部,cupy.fft 总是生成一个 *cuFFT 计划*(详见 cuFFT 文档),对应于所需的变换。如果可能,将使用 n 维计划,而不是对每个要变换的轴应用单独的 1D 计划。使用 n 维计划可以为多维变换提供更好的性能,但比可分离的 1D 计划需要更多的 GPU 内存。用户可以通过设置 cupy.fft.config.enable_nd_planning = False 来禁用 n 维计划。这种调整计划类型的能力是与 NumPy API 的一个偏差,后者不使用预计算的 FFT 计划。
此外,可以通过使用 cupyx.scipy.fftpack.get_fft_plan() 返回的现有计划作为上下文管理器来抑制自动计划生成。这再次偏离了 NumPy。
最后,当使用上述类似 NumPy 的高级 FFT API 时,内部会缓存 cuFFT 计划以供可能的重用。可以通过 get_plan_cache() 获取计划缓存,并通过 show_plan_cache_info() 查询其当前状态。对于更精细的计划缓存控制,请参阅 PlanCache。
多GPU快速傅里叶变换#
cupy.fft 可以使用多个GPU。要启用(禁用)此功能,请将 cupy.fft.config.use_multi_gpus 设置为 True (False)。接下来,要设置GPU的数量或参与的GPU ID,请使用函数 cupy.fft.config.set_cufft_gpus()。cuFFT文档 中列出的所有限制在此处均适用。特别是,使用多个GPU并不保证性能更好。