Related packages¶
Other recommended NUFFT libraries¶
cuFINUFFT: Our GPU version of FINUFFT, for single precision in 2D and 3D, type 1 and 2. Still under development by Melody Shih (NYU) and others. Often achieves speeds around 10x the CPU version.
NFFT3: well-supported and multi-featured C++ library using FFTW. Has MATLAB MEX interface. However, significantly slower and/or more memory-intensive than FINUFFT (see reference [FIN]). Has many more general abilities, eg, inverse NUFFT. We are working on this too.
CMCL NUFFT: NYU single-threaded Fortran library using self-contained FFT, fast Gaussian gridding kernel. Has MATLAB MEX interface. Much (up to 50x even for one thread) slower than FINUFFT, but is very easy to compile.
MIRT Michigan Image Reconstruction Toolbox. Native MATLAB, single-threaded sparse mat-vec, prestores all kernel evaluations, thus is memory-intensive but surprisingly fast for a single-threaded implementation. However, slower than FINUFFT for all tolerances smaller than \(10^{-1}\).
PyNUFFT Python code supporting CPU and GPU operation. We have not compared against FINUFFT yet.
NonuniformFFTs.jl native Julia code for types 1 and 2 only (CPU and GPU via KernelAbstractions), by Juan Polanco, 2024. Close to our CPU performance, and can beat it in the case of real data via a custom real transform. On the GPU claims their shared-memory type 1 implementation beats ours; to be investigated further. Has a good benchmarks page comparing (cu)FINUFFT at 6-digit accuracy, CPU and GPU.
NFFT.jl native Julia implementation for type 1 and 2 only, by Tobias Knopp and coworkers, starting around 2022. See page on Julia.
A comparison of some library performances (as of 2019) was in our paper [FIN] in the references.