finufft
finufft copied to clipboard
Support for `gpu_spreadinterponly`=1
Hi there,
Thank you again for the amazing work. We re-ran our MRI benchmark for different nufft suits, and we are pleased to announce that cufinufft is the fastest NUFFT in the west!, and by a wide margin. Below are our benchmark results:
2D:
3D:
However, a major reason not to use it (as discussed in the past in #295) was the lack of density compensation estimation, which needed only the spreader and interpolator.
We understand that it takes a lot of effort to maintain API ends for the spreader and interpolator for Julia, Python, and MATLAB, so my earlier PR was not taken up.
However, we recently saw an internal option in cufinufft opts, gpu_spreadinterponly,
and felt we could exploit it to allow density compensation estimators on our side.
This pull request implements just that (without exposing internal interfaces, unlike #308)
This could help the MR community forward in using cufinufft. We are open to discussing the implementation in detail and how we could further contribute to (cu)finufft.
To understand the advantage of using density compensation, please see our example (where we plan to add cufinufft eventually): https://mind-inria.github.io/mri-nufft/generated/autoexamples/GPU/example_density.html Feel free to see our other examples and notice how we use density compensation extensively.