Related packages¶
Other recommended NUFFT libraries¶
NFFT3: well-supported and multi-featured C++ library using FFTW. Has MATLAB MEX interface. However, NFFT is significantly slower and/or more memory-intensive than FINUFFT (see reference [FIN], and our migration guide). NFFT3 has more general abilities, eg, inverse NUFFTs.
DUCC: Reinecke’s amazing C++ package contains NUFFT code, developed for radio-astronomy, that in some regimes is faster than ours (due to the use of variable upsampling factor; we are catching up, with his help).
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 our v2.4.1. Has a great benchmarks page comparing (cu)FINUFFT at 6-digit accuracy, CPU and GPU. Marco has now incorporated his ideas into output-driven type 1 on GPU (available as
gpu_method=3in master, to be released in v2.5.0).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. The MRI-NUFFT Neurospin Paris team also did a benchmark comparison of some codes in 2024, see https://github.com/mind-inria/mri-nufft-benchmark/