I just tested out using convolution based effects on music production with CUDA and an 8800 GPU. Man that thing is a HUGE number cruncher! A reverb that usually takes around 20% of my dualcore CPU eats less than 1% of the GPU.. I could load up dozens(maybe hundreds?) of them at the same time. That is definetly the the future path for audio processing. Not sure tho how other algorithms will sit on such GPUs, but even if their theoretical maximum speed can't be reached they will still be a good addition to the CPU. Running only convolution/fft stuff on them is also a huge benefit as it's ofcourse a huge reduction to the main CPU load.
Now that those old 8800(or 8600 etc) GPU's are dirt cheap i can see a huge market for VST's utilizing their power
![;)](./images/smilies/icon_wink.gif)
BUT: Zero latency mode is not supported by the GPU Edition due to a combination of factors including the mechanisms involved with transferring data to and from the GPU being much more efficient with larger blocks, a current requirement to run CUDA VST plug-ins in a separate thread (making larger block processing more efficient) and the lack of coherency in buffering schemes used by various different VST hosts complicating the above issues. It may become more practical to implement this feature in future using newer GPU architectures.
![:-?](./images/smilies/icon_confused.gif)
I think the odds of me porting to CUDA are about zero.
The reason for this: GPUs are geared towards massively parallel processing. This is the sort of thing that you see in images, which are essentially NxM arrays of data. Image processing tends to be feedforward, and not reliant on previous outputs of the filters.
Most of the audio processes I work on are based on delays, feedback processes and filters, that sort of thing. This doesn't work well in massively parallel systems. I process audio in parallel whenever I can get away with it, for efficiency, but the fact is that delay lines of different lengths are inherently difficult to parallelize. Feedback doesn't work well with massively parallel systems, unless you have feedback with pretty big blocks, and that tends to lose a lot of the cool aspects of feedback.
Convolution processing (including Nebula) works well with massively parallel processing. Beyond that, I could see GPUs used for other things that work well with lots of parallelism, like modal synthesis. For general audio applications, I don't think that GPUs will prove that useful. I wouldn't mind being proven wrong, as there is a LOT of power in the GPU.