适用于GPU的OpenCL FFT库?

8

是否有通用的FFT库可在使用OpenCL的GPU上运行?据我所知,苹果样例代码用于2的幂次方OpenCL FFT是唯一可用的代码。

是否存在用于非2的幂次方变换大小的库?如果没有,修改苹果OpenCL样例有多容易或困难?

我正在研究图像处理应用程序,使用非2的幂次方变换大小,并且我将不得不执行大量的FFT,批量FFT。

7个回答

3

不错,现在它还支持基数为7、11和13。 - marcin

2

但这只是一维FFT,而且要求长度为2的幂次方...但尽管如此非常有用,谢谢。 - Neo
不错!我自己也在编写这些库之一。很高兴能在巨人的肩膀上构建 :) - Chad Brewbaker

2

我知道一款正在开发中的OpenCL FFT库,但是他们计划在第一个版本中不支持非2的幂级数变换大小。

你能提供关于你的应用程序的任何信息吗?如果这是许多人可以使用的功能,那么提高该功能的优先级可能会有所帮助。


你能分享一下这个库的名称吗? - rotoglup
@rotoglup 我上面的评论是指AMD的clAmdFft库。几年前我参与了1.0版本的发布,当时它不支持非2的幂,但我看到后续版本已经添加了一些其他的质数因子。http://developer.amd.com/tools-and-sdks/heterogeneous-computing/amd-accelerated-parallel-processing-math-libraries/ - Die in Sente

2

使用空白填充可以使任意长度的数据适用于二次幂FFT算法。请考虑是否适用于您的应用程序。 增加样本数量会减小输出域中的“步长”,这意味着更高的输出分辨率。


1
OpenMM(https://simtk.org/home/openmm)包含一个用于OpenCL的3D FFT。它可能无法直接适用于您,因为它专为特定情况而设计:每个维度都足够小,可以存储在本地内存中的3D FFT(例如,100x100x100网格)。但是它支持非2的幂大小(基数2、3、4和5),因此您可能可以进行适应。

1

VexCL提供了一个OpenCL的FFT实现,可以接受任意向量表达式作为输入,允许进行任意维度的多维变换,支持任意大小的向量。这里是其README相关部分的链接


0

看看APPML-FFT库。虽然它仍然适用于二的幂次方变换。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接