是否有任何通用 FFT 库可用于使用 OpenCL 在 GPU 上运行?据我所知,Apple 的二次幂 OpenCL FFT 示例代码是唯一可用的此类代码吗?
对于非二次幂变换大小,是否存在任何此类库?如果不是,修改 Apple OpenCL 示例的难易程度如何?
我正在研究具有非二次方变换大小的图像处理应用程序,我将不得不做一大堆 FFT,一个批处理 FFT。
试试 AMD 开发的 clFFT。它针对 AMD 显卡,但也适用于 nVidia GPU。它可以转换基数为 2、3 和 5(以及其中的组合)的数组。
https://github.com/clMathLibraries/clFFT
有可用的python绑定
您可以从SHOC 基准套件下载一些 OpenCL 代码示例,包括 FFT 。
我知道目前正在开发的 OpenCL FFT 库,但他们不打算在第一个版本中使用非二次方变换大小。
您能否提供有关您的申请的任何信息?如果很多人都可以使用它,那么提高该功能的优先级可能会有所帮助。
空填充可用于使任意长度的数据适合二次方 FFT 算法。考虑这是否适合您的应用程序。增加样本数量会减小输出域中的“步长”,这意味着更高的输出分辨率。
OpenMM (https://simtk.org/home/openmm) 包含用于 OpenCL 的 3D FFT。它可能无法直接为您工作,因为它是为特定情况设计的:3D FFT,其中每个维度都小到可以存储在本地内存中(例如 100x100x100 网格)。但它确实支持非二次幂大小(基数 2、3、4 和 5),因此您可能能够适应它。
看看APPML-FFT库。虽然它仍然是两个变换的力量。