Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

what is the fastest FFT library for iOS/Android ARM devices? [closed]

What is the fastest FFT library for iOS/Android ARM devices? And what library to people typically use on iOS/Android platforms? I'm guessing vDSP is the library most frequently used on iOS.

EDIT: my code is at http://anthonix.com/ffts and uses the BSD license. It runs on Android and iOS, and it is faster than libav, FFTW and vDSP.

EDIT2: if anyone can provide access to a POWER7 machine (or other machines) please email me. It would be much appreciated.

Cheers,

like image 800
Anthony Blake Avatar asked Nov 03 '11 22:11

Anthony Blake


2 Answers

Here is a page benchmarking different fft algorithms on ARM:

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

From that page the fastest FFT implementation is LibAv, which have a Neon optimized fft http://libav.org/

like image 128
Martin Mogensen Avatar answered Sep 19 '22 09:09

Martin Mogensen


I've compared many NEON optimized FFT libraries on ARM Cortex-A9, and "libav" is certainly the fastest FFT code, but it is: - single-threaded, - only supports 1D FFTs, - only supports power-of-2 dimensions, - and doesn't have various optimizations for real input/output (it is only a complex-to-complex FFT).

On the other hand, "FFTW" (either the official version or the Vesperix version) is multi-threaded, supports 2D FFTs, supports non-power-of-2 dimensions with very little penalty, and has full optimizations for real input/output instead of just complex input/output.

So depending on your FFT requirements, FFTW might be faster for your project due to the extra features, but if you only need the FFT that libav provides (or you write the extra features yourself using NEON and multi-threading), then libav is actually the fastest 1D Complex-to-Complex FFT code.

To give you an indication, it seems that the FFTW NEON optimizations were performed by a student of the guy who performed the libav NEON optimizations. So would you rather the code from the student or the mentor ;-)

Another issue is that libav uses an LGPL license whereas FFTW uses a GPL license so is more restrictive, unless if you are willing to pay a large sum of money to purchase a proper license for FFTW.

(Personally, I ended up writing my own 2D & real-data features using NEON & multi-threading on top of libav's 1D FFT, but it was a lot of effort since I wasn't an FFT expert!)

like image 29
Shervin Emami Avatar answered Sep 19 '22 09:09

Shervin Emami