15

iOS/Android ARM 设备最快的 FFT 库是什么?人们通常在 iOS/Android 平台上使用什么库?我猜 vDSP 是 iOS 上最常用的库。

编辑:我的代码位于http://anthonix.com/ffts并使用 BSD 许可证。它在 Android 和 iOS 上运行,比 libav、FFTW 和 vDSP 更快。

EDIT2:如果有人可以提供对 POWER7 机器(或其他机器)的访问权限,请给我发电子邮件。将不胜感激。

干杯,

4

3 回答 3

11

这是一个在 ARM 上对不同 fft 算法进行基准测试的页面:

http://pmeerw.dyndns.org/blog/programming/neon3.html

从该页面来看,最快的 FFT 实现是 LibAv,它具有 Neon 优化的 fft http://libav.org/

于 2011-11-25T13:19:10.600 回答
4

我在 ARM Cortex-A9 上比较了许多 NEON 优化的 FFT 库,“ libav ”当然是最快的 FFT 代码,但它是: - 单线程, - 仅支持 1D FFT, - 仅支持二维的幂, - 并且没有针对实际输入/输出的各种优化(它只是一个复杂到复杂的 FFT)。

另一方面,“FFTW”(无论是正式版还是 Vesperix 版)是多线程的,支持 2D FFT,支持非 2 次幂且惩罚很少,并且对真实输入/输出进行了全面优化而不仅仅是复杂的输入/输出。

因此,根据您的 FFT 要求,由于额外的功能,FFTW 对于您的项目可能会更快,但如果您只需要 libav 提供的 FFT(或者您自己使用 NEON 和多线程编写额外的功能),那么 libav 实际上是最快的一维复数到复数 FFT 码。

为了给你一个指示,似乎 FFTW NEON 优化是由执行 libav NEON 优化的那个人的学生执行的。所以你更喜欢学生或导师的代码;-)

另一个问题是 libav 使用 LGPL 许可证,而 FFTW 使用 GPL 许可证,因此限制性更强,除非您愿意支付大笔资金为 FFTW 购买适当的许可证。

(就个人而言,我最终在 libav 的 1D FFT 之上使用 NEON 和多线程编写了我自己的 2D 和真实数据功能,但由于我不是 FFT 专家,所以付出了很多努力!)

于 2012-11-18T12:55:08.170 回答
1

也试试Cricket FFT。它还具有 Neon 优化,并且具有非常宽松的许可证 - zlib。

于 2012-11-21T23:44:35.323 回答