Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Faster FFT implementation #353

Closed
carlthome opened this issue May 12, 2016 · 2 comments
Closed

Faster FFT implementation #353

carlthome opened this issue May 12, 2016 · 2 comments

Comments

@carlthome
Copy link
Contributor

carlthome commented May 12, 2016

I saw that you've thought about this already (#39), @bmcfee, but I hope you'd reconsider, especially for the upcoming ICQT. A key issue with the original MATLAB CQT Toolbox is performance, and librosa could gain traction by providing a high-performing alternative.

Proposal

Preferably all uses (constantq.py, spectrum.py, audio.py) of FFT/IFFT should go through a fourier.py interface, that:

  1. Uses cufft if CUDA is available, via scikit-cuda.
  2. Then tries to import pyfftw if there's no CUDA.
  3. Before finally falling back on scipy.fftpack if there's no libfftw3.

I'm short on time at the moment, but I could turn in a proposal pr in a couple of weeks if no one else has the time.

@bmcfee
Copy link
Member

bmcfee commented May 12, 2016

I'm open to the idea, if it can be done cleanly without making the dependency chain unduly complicated.

In the next major revision, I'm trying to pare down the optional/dynamic dependencies (scikits.samplerate and seaborn). I'm not totally keen on the idea of adding more dynamic dependencies back in. Maybe it could all be multiplexed out by a separate library ala audioread?

@carlthome
Copy link
Contributor Author

carlthome commented May 16, 2016

I get the ambition to keep librosa clean and portable. I'll ask pyFFTW to add GPU support. pyFFTW/pyFFTW#107 and if that goes through perhaps librosa could exchange scipy.fftpack for pyFFTW (assuming pyFFTW could fall back on numpy or scipy, also, so that libfftw3 remains optional).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

No branches or pull requests

2 participants