Flatiron Institute Nonuniform Fast Fourier Transform library: FINUFFT
Principal author Alex H. Barnett,
main co-developers Jeremy F. Magland,
Ludvig af Klinteberg, Yu-hsuan "Melody" Shih, Andrea Malleo, Libin Lu,
and Joakim AndΓ©n;
see docs/ackn.rst
for full list of contributors.
β
This is a lightweight CPU library to compute the three standard types of nonuniform FFT to a specified precision, in one, two, or three dimensions. It is written in C++ with interfaces to C, Fortran, MATLAB/octave, Python, and (in a separate repository) Julia. It now contains the GPU CUDA library cuFINUFFT.
Please see the online documentation which can also be downloaded as a PDF manual.
You will also want to see example codes in the directories
examples
, test
, fortran
, matlab/test
, and python/test
.
If you cannot compile, or pip install
, try our rather outdated precompiled binaries.
If you prefer to read text files, the source to generate the above documentation is in human-readable (mostly .rst) files as follows:
docs/install.rst
: installation and compilation instructionsdocs/install_gpu.rst
: installation and compilation for GPU (CUDA)docs/dirs.rst
: explanation of directories and files in the packagedocs/math.rst
: mathematical definitionsdocs/cex.rst
: example usage from C++/Cdocs/c.rst
: documentation of C++/C function APIdocs/c_gpu.rst
: documentation of C++/C function API for GPU librarydocs/opts.rst
: optional parametersdocs/error.rst
: error codesdocs/trouble.rst
: troubleshootingdocs/tut.rst
anddocs/tutorial/*
: tutorial application examplesdocs/fortran.rst
: usage examples from Fortran, documentation of interfacedocs/matlab.rst
anddocs/matlabhelp.raw
: using the MATLAB/Octave interfacedocs/python.rst
andpython/*/_interfaces.py
: using the Python interfacedocs/python_gpu.rst
: Python interface to GPU librarydocs/julia.rst
: using the Julia interfacedocs/devnotes.rst
: notes/guide for developersdocs/related.rst
: other recommended NUFFT packagesdocs/users.rst
: users of FINUFFT and dependent packagesdocs/ackn.rst
: authors and acknowledgmentsdocs/refs.rst
: journal article references (ours and others)
If you find (cu)FINUFFT useful in your work, please cite this repository and the following. For FINUFFT (CPU library):
A parallel non-uniform fast Fourier transform library based on an ``exponential of semicircle'' kernel. A. H. Barnett, J. F. Magland, and L. af Klinteberg. SIAM J. Sci. Comput. 41(5), C479-C504 (2019).
For cuFINUFFT (GPU library):
cuFINUFFT: a load-balanced GPU library for general-purpose nonuniform FFTs, Yu-hsuan Shih, Garrett Wright, Joakim AndΓ©n, Johannes Blaschke, Alex H. Barnett, PDSEC2021 workshop of the IPDPS2021 conference. https://arxiv.org/abs/2102.08463