2010-11-19 121 views
8

是否有任何通用FFT库可用于使用OpenCL在GPU上运行?据我所知,苹果示例代码是两个幂的OpenCL FFT是唯一可用的代码?用于GPU的OpenCL FFT库?

对于非幂次幂变换大小是否存在这样的库?如果不是,修改Apple OpenCL示例有多简单或困难?

我正在研究图像处理应用程序,使用非功率为2的变换尺寸,我将不得不做一大堆FFT,一个批量的FFT。

回答

2

我知道目前正在开发的OpenCL FFT库, 但他们不打算在第一版中具有非幂次幂变换大小。

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

+0

你会分享哪些图书馆是这样吗? – rotoglup 2013-09-13 19:14:48

+0

@rotoglup我上面的评论是指AMD的clAmdFft库。几年前,我参与了1.0版本的发布,它不支持2的非功率,但是我看到随后的发布增加了一些其他主要因素。 http://developer.amd.com/tools-and-sdks/heterogeneous-computing/amd-accelerated-parallel-processing-math-libraries/ – 2013-09-16 13:19:36

2

您可以从SHOC benchmark suite下载一些OpenCL代码示例,包括FFT。

+0

python绑定,但是这仅仅是维FFT,电源的两...,但仍然非常有用,感谢 – Neo 2010-11-22 02:23:26

+0

尼斯!我自己编写了这些库中的一个。很高兴在巨人的肩膀上:) – 2010-11-30 01:33:02

+0

到目前为止任何运气?? .... – Neo 2010-12-08 04:56:49

1

OpenMM(https://simtk.org/home/openmm)包含OpenCL的3D FFT。它可能不适用于您,因为它是为特定情况设计的:3D FFT,其中每个维度都足够小以存储在本地内存(例如100x100x100网格)中。但它确实支持非二次幂的大小(基数2,3,4和5),所以你可能会适应它。

0

看看APPML-FFT库。虽然它仍然是两次变革的权力。

2

可以使用空填充使任意长度的数据适合二次幂的FFT算法。考虑一下,如果这将适合你的应用程序。 增加采样数减少了输出域的“步长”,这意味着更高的输出分辨率。

1

VexCL为OpenCL提供了FFT的实现,它接受任意向量表达式作为输入,允许执行多维变换(任意维数),并支持任意大小的向量。以下是自述文件相关部分的link