什么是iOS / Android ARM设备最快的FFT库?

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

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

EDIT2:如果有人可以访问POWER7机器(或其他机器),请给我发电子邮件。 非常感谢。

干杯,

    Related of "什么是iOS / Android ARM设备最快的FFT库?"

    这是一个针对ARM的不同fft算法的页面:

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

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

    @Anthony:虽然NEON可以很好地处理打包格式的VLD指令,但它比VLDMIA慢。 因此,分割格式仍然是IMO的首选。 此外,你从哪里截取屏幕截图? 它是您自己的应用程序还是一些公共基准测试工具?

    @Brad:我认为加速框架没有得到很好的优化。 编写工作NEON代码相当简单,其代码已经比ARM快很多倍。 大多数NEON编码器都停在那里,因为进一步的优化需要更多的努力 – 无论他们是多么“知识渊博”。

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

    另一方面,“FFTW”(官方版本或Vesperix版本)是multithreading的,支持2D FFT,支持非2次幂的维度而且损失很小,并且对实际输入/输出具有完全优化而不仅仅是复杂的输入/输出。

    因此,根据您的FFT要求,由于额外的function,FFTW对您的项目可能更快,但如果您只需要libav提供的FFT(或者您使用NEON和multithreading自己编写额外的function),那么libav实际上是最快的1D复合到复合FFT代码。

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

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

    (就个人而言,我最终在libav的一维FFT上使用NEON和multithreading编写自己的2D和实际数据function,但由于我不是FFT专家,所以我付出了很多努力!)

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