How flatironinstitute/finufft works
FINUFFT is a C++ library for CPU and CUDA nonuniform Fourier transforms in 1–3 dimensions, exposed through C, Python, Fortran, and MATLAB interfaces. The principal workflow is to create a transform plan, supply nonuniform points, then execute a type 1, 2, or 3 transform to produce output. The graph shows documented and sampled interface-to-runtime relationships; some internal dispatch details and unsampled language bindings are represented only at subsystem level.
Main entry points: c_interface.cpp CPU C API · cufinufft_plan_t.hpp CUDA plan · execute.cpp Transform execution · makeplan.cpp Plan creation
Components 16
CPU runtime
- CPU C API
src/c_interface.cpp - Plan creation
src/makeplan.cpp - Point setup
src/setpts.cpp - Transform execution
src/execute.cpp - Spread and interpolate
src/spreadinterp.cpp - Kernel utilities
src/common/kernel.cpp - FFT planning
src/fft.cpp
CUDA runtime
- CUDA C API
src/cuda/c_interface.cpp - CUDA plan
include/cufinufft/cufinufft_plan_t.hpp - CUDA spread and interp
src/cuda/spreadinterp.cpp
Language interfaces
- Python API
python/finufft/finufft/_interfaces.py - Fortran API
fortran/finufftfort.cpp - MATLAB API
matlab/finufft.cpp
Compute dependencies
- cuFFT
Other components
- Transform caller
- Transform output
Connections 19
- Transform caller → Python API: calls
- Transform caller → Fortran API: calls
- Transform caller → MATLAB API: calls
- Transform caller → CPU C API: calls
- Transform caller → CUDA C API: calls
- Python API → CPU C API: calls native API
- Fortran API → CPU C API: calls
- MATLAB API → CPU C API: calls
- CPU C API → Plan creation: creates plan
- CPU C API → Point setup: sets points
- CPU C API → Transform execution: executes plan
- Plan creation → FFT planning: initializes FFT
- Transform execution → Spread and interpolate: runs spreading
- Spread and interpolate → Kernel utilities: uses kernels
- CUDA C API → CUDA plan: creates and runs plan
- CUDA plan → CUDA spread and interp: dispatches spreading
- CUDA plan → cuFFT: uses FFT
- Transform execution → Transform output: writes output
- CUDA plan → Transform output: writes output