离散傅里叶变换 (cupy.fft
)#
标准 FFT#
|
计算一维 FFT。 |
|
计算一维逆 FFT。 |
|
计算二维 FFT。 |
|
计算二维逆 FFT。 |
|
计算 N 维 FFT。 |
|
计算 N 维逆 FFT。 |
实数 FFT#
|
计算实数输入的一维 FFT。 |
|
计算实数输入的一维逆 FFT。 |
|
计算实数输入的二维 FFT。 |
|
计算实数输入的二维逆 FFT。 |
|
计算实数输入的 N 维 FFT。 |
|
计算实数输入的 N 维逆 FFT。 |
厄米共轭 FFT#
|
计算具有厄米共轭对称性的信号的 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 维计划,而不是为每个要变换的轴应用单独的一维计划。使用 N 维计划可以为多维变换提供更好的性能,但比可分离的一维计划需要更多 GPU 显存。用户可以通过设置 cupy.fft.config.enable_nd_planning = False
来禁用 N 维计划。这种调整计划类型的能力与不使用预计算 FFT 计划的 NumPy API 不同。
此外,可以通过使用由 cupyx.scipy.fftpack.get_fft_plan()
返回的现有计划作为上下文管理器来抑制自动计划生成。这同样与 NumPy 不同。
最后,当使用上述高级的类似 NumPy 的 FFT API 时,内部会缓存 cuFFT 计划以供可能的重用。计划缓存可以通过 get_plan_cache()
获取,其当前状态可以通过 show_plan_cache_info()
查询。有关计划缓存的更精细控制,请参阅 PlanCache
。
多 GPU FFT#
cupy.fft
可以使用多个 GPU。要启用(禁用)此功能,请将 cupy.fft.config.use_multi_gpus
设置为 True
(False
)。接下来,要设置 GPU 数量或参与的 GPU ID,请使用函数 cupy.fft.config.set_cufft_gpus()
。此处适用 cuFFT 文档 中列出的所有限制。特别是,使用多个 GPU 并不能保证更好的性能。