Live data from Hacker News

VkFFT – Vulkan Fast Fourier Transform Library

github.com

101–110 of 132 posts

Re: VkFFT – Vulkan Fast Fourier Transform Library

#101
post #39
post #27

Earlier quoted context omitted.

Paragraph 5 of the LGPL version 2.1 states: A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License.

I am confused with that paragraph. So if I statically compiled a project with Qt without any modification, does it fall outside the scope of LGPL as well?

[deleted]

Re: VkFFT – Vulkan Fast Fourier Transform Library

#102
post #100
post #99

Earlier quoted context omitted.

Thanks for the further clarification! If you ran this several times, you could calculate standard deviations or confidence intervals. It would be nice if you could report one such measure, so it's clearer that the differences are not just some random fluctuations. E.g. you could include them as error bars in your plots. You could also run a statistical test (in this case, a t-test is very easy to do) and report the p…

GPU is a very consistent device, so the purpose of such big sample sizes and multiple launches with averaging is to reduce all the deviations almost to zero. The error is <1% in this case and showing it on the plot will not really change it. The values, however, change when I update the code and improve it, so this is by no means the final way the benchmark will look like. I will think on how to adress this better in…

> GPU is a very consistent device.

You'd think that, but I found all GPUs I'm using here to exhibit multimodal distribution of execution times in the FFT (this is for the cuFFT codepath). The GTX980 (not shown in the plot) and the Titan-X even have very prominent outliers. This is a figure that's going to be in the paper I'm currently writing:

https://dl.datenwolf.net/gpu_oct_benchmark_plots.pdf

I'm comparing the OCT processing execution times (with HOT caches, mind you) between a Titan-X and a GTX1080. The difference also shows up very prominently when looking at the kernel scheduling order as reported by NVPP.

Re: VkFFT – Vulkan Fast Fourier Transform Library

#103
post #93
post #89

Earlier quoted context omitted.

Likely any HPC application that has an FFT somewhere in its pipeline and is otherwise amenable to being run on a GPU. Fluid flow, heat transfer, and other such physical phenomena that you might want to simulate. Phase correlation in image processing is another example. ( https://en.wikipedia.org/wiki/Phase_correlation ) MD simulations rely on FFT but I'm not sure how much is typically (or can be) done on the GPU. For…

Machine learning uses CNNs, which are directly based on FFTs.

How are CNNs directly based on FFTs? Sure you can use CNNs with FFT features, but in my experience this is not common.

Re: VkFFT – Vulkan Fast Fourier Transform Library

#104
post #93

Earlier quoted context omitted.

Machine learning uses CNNs, which are directly based on FFTs.

How are CNNs directly based on FFTs? Sure you can use CNNs with FFT features, but in my experience this is not common.

Convolutions are typically computed using FFTs.

https://en.wikipedia.org/wiki/Convolution_theorem

Re: VkFFT – Vulkan Fast Fourier Transform Library

#105
post #88

Earlier quoted context omitted.

I couldn't find any details about the migration on either links but it looks like they make massive use of Nvidia-specific features, so even with exactly the same performances it would make total sense to use Cuda just because the tooling is more mature.

The video presentation at GTC clearly discusses it. They moved into Optix 7 as backend.

The video being almost two hours long, I'm not surprised I missed it when skimming. Do you know by chance at which point of the video it is discussed?

Re: VkFFT – Vulkan Fast Fourier Transform Library

#106
post #100

Earlier quoted context omitted.

GPU is a very consistent device, so the purpose of such big sample sizes and multiple launches with averaging is to reduce all the deviations almost to zero. The error is <1% in this case and showing it on the plot will not really change it. The values, however, change when I update the code and improve it, so this is by no means the final way the benchmark will look like. I will think on how to adress this better in…

> GPU is a very consistent device. You'd think that, but I found all GPUs I'm using here to exhibit multimodal distribution of execution times in the FFT (this is for the cuFFT codepath). The GTX980 (not shown in the plot) and the Titan-X even have very prominent outliers. This is a figure that's going to be in the paper I'm currently writing: https://dl.datenwolf.net/gpu_oct_benchmark_plots.pdf I'm comparing the OCT…

I use the averaged data of 1000 merged launches and then average the end result over a number of runs. Merging FFT calls is actually the way how I use VkFFT in Vulkan Spirit (with some other shaders between), so this benchmark is fairly close to the real life application use case. My benchmark most likely averages out multimodal distribution effects by design.

Re: VkFFT – Vulkan Fast Fourier Transform Library

#107

Earlier quoted context omitted.

How are CNNs directly based on FFTs? Sure you can use CNNs with FFT features, but in my experience this is not common.

Convolutions are typically computed using FFTs. https://en.wikipedia.org/wiki/Convolution_theorem

He is not wrong, convolutions between an image and a small kernel can be done faster by direct multiplication than by padding the kernel and performing FFT + iFFT. This is what tensor cores are aiming to do really fast. However, doing a convolution betwen an image and a kernel with the similar size is the general use case for the convolution theorem and is the thing that is currently implemented in VkFFT.

Re: VkFFT – Vulkan Fast Fourier Transform Library

#108
post #106

Earlier quoted context omitted.

> GPU is a very consistent device. You'd think that, but I found all GPUs I'm using here to exhibit multimodal distribution of execution times in the FFT (this is for the cuFFT codepath). The GTX980 (not shown in the plot) and the Titan-X even have very prominent outliers. This is a figure that's going to be in the paper I'm currently writing: https://dl.datenwolf.net/gpu_oct_benchmark_plots.pdf I'm comparing the OCT…

I use the averaged data of 1000 merged launches and then average the end result over a number of runs. Merging FFT calls is actually the way how I use VkFFT in Vulkan Spirit (with some other shaders between), so this benchmark is fairly close to the real life application use case. My benchmark most likely averages out multimodal distribution effects by design.

The OCT data we process comes in at about 4GSamples/s and my benchmark is for ~5ms of capture data, in the considered dataset 1D-FFT with a length of 2048 points and a block size of 128. It is not a synthetic benchmark, I'm measuring the real life application behavior here (and to eliminate the runtime behavior effects of the other parts I can flip a flag skipping over the DAQ codepath, working on allocated, but uninitialized buffers).
Post reply on HN