Accuracy

pyfftw), using pyfftw long-double precision as a reference.

Example results for 1D transforms (radix 2,3,5 and 7) using a Titan V:

https://raw.githubusercontent.com/vincefn/pyvkfft/master/doc/accuracy-1DFFT-TITAN_V.png

Analysis:

  • in single precision on the nVidia Titan V card, the VkFFT computed accuracy is about 3 times larger (worse) than pyfftw (also computed in single precision), e.g. 6e-7 vs 2e-7, which can be pretty negligible for most applications. However when using a lookup-table (LUT) for trigonometric values instead of hardware functions (useLUT=1 in VkFFTApp), the accuracy is identical to pyfftw, and better than cuFFT.

  • accuracy is the same for cuda and opencl, though this can depend on the card and drivers used (e.g. it's different on a GTX 1080)

You can easily test a transform using the pyvkfft-test command line script, e.g.:

pyvkfft-test --systematic --backend pycuda --nproc 8 --range 2 4500 --radix  --ndim 2

Use pyvkfft-test --help to list available options.

You can use the pyvkfft-test-suite script to run the comprehensive test suite which is used to evaluate pyvkfft before a new release. Several options are available to target specific (C2C, R2C..) transforms or even run a random subset of transform sizes for fast detection of issues.