Generalised GPU compute for audio - what's required?
-
- KVRian
- 608 posts since 23 Jun, 2005
Having a discussion with a friend about GPU compute for audio plugins, brought about by the release of the new Mac Pros... there's a lot of GPU processing power in there which is basically lost on audio applications at the moment, but we're discussing how/whether/when we will get to a point where GPU compute for audio is a reality.
So what's it gonna take? Some thoughts we came up with:
- GPU compute API(s) will have to be incorporated into plugin SDKs - mainly talking VST and AU I guess coz AAX has its own DSP thing going on...
- For AU, Apple could work with existing OS X APIs which support OpenCL, and/or do their own thing by creating a new OS-level API for GPU audio processing, and bake that into the AU API... but they could also restrict the API to plugins that are sold within their hypothetical App Store for plugins, which would also bring about other issues (sandboxing, possible incompatibility with anything other than Logic X)
- For VST, Steinberg would have to make it compatible with open, cross-platform standards like OpenCL wouldn't they? Or else surely they'd run into issues with cross-platform support... I guess it'd be a VST3.0+ thing too, since they're halting VST2 support, which means more hosts would have to implement VST3.0+ support to allow it...
Anyway, this is all speculation I guess, but these new Mac Pros might be the impetus to push for a generalised GPU audio plugin processing API...
So what's it gonna take? Some thoughts we came up with:
- GPU compute API(s) will have to be incorporated into plugin SDKs - mainly talking VST and AU I guess coz AAX has its own DSP thing going on...
- For AU, Apple could work with existing OS X APIs which support OpenCL, and/or do their own thing by creating a new OS-level API for GPU audio processing, and bake that into the AU API... but they could also restrict the API to plugins that are sold within their hypothetical App Store for plugins, which would also bring about other issues (sandboxing, possible incompatibility with anything other than Logic X)
- For VST, Steinberg would have to make it compatible with open, cross-platform standards like OpenCL wouldn't they? Or else surely they'd run into issues with cross-platform support... I guess it'd be a VST3.0+ thing too, since they're halting VST2 support, which means more hosts would have to implement VST3.0+ support to allow it...
Anyway, this is all speculation I guess, but these new Mac Pros might be the impetus to push for a generalised GPU audio plugin processing API...
-
- KVRian
- Topic Starter
- 608 posts since 23 Jun, 2005
Could it maybe be done at the DAW level as well, regardless of whether the plugin itself is capable of using the GPU in its own right?
- KVRAF
- 8505 posts since 12 Feb, 2006 from Helsinki, Finland
There are plugins that use GPU already (for a while now), so there's no reason to believe that any additional support from any plugin API is actually necessary.
- KVRAF
- 4030 posts since 7 Sep, 2002
- KVRAF
- 8505 posts since 12 Feb, 2006 from Helsinki, Finland
There's been some approaches where recursive algorithms are unrolled though; you essentially build a recursive algorithm on vectors of samples, such that you can process a larger block at a time to get the recursion overhead down. It still won't really work if you need to do iterative root-finding or something else that makes unrolling unfeasible, but for linear IIR filters it's a possibility, and there was some papers about it somewhere. The question though is whether it actually makes any sense in practice.Aleksey Vaneev wrote:Existing GPU architecture does not seemingly "support" recursive algorithms, so not much can be ported to GPU. 64-bit floating point is also not widely supported while it is required for high-res convolution.
But.. there's stuff that does FFT style processing, apparently with some amount of success.
- KVRAF
- 16867 posts since 8 Mar, 2005 from Utrecht, Holland
Afaik it's already reality for some years. The UAD card for instance was basically a graphics card without VGA output but just used for processing.mustgroove wrote:we're discussing how/whether/when we will get to a point where GPU compute for audio is a reality.
Experiments with VSTs doing the DSP on a generic GPU started some years ago, as early as 2008 I found:
http://www.kvraudio.com/forum/viewtopic ... hlight=gpu
http://www.kvraudio.com/forum/viewtopic ... hlight=gpu
http://www.kvraudio.com/forum/viewtopic ... hlight=gpu
http://www.kvraudio.com/forum/viewtopic ... 20&start=0
We are the KVR collective. Resistance is futile. You will be assimilated. 
My MusicCalc is served over https!!
My MusicCalc is served over https!!
-
- KVRist
- 95 posts since 25 Jul, 2007 from Finland
Check out AMD TrueAudio http://www.amd.com/us/products/technolo ... audio.aspx
it's targeted for game developers, but should be flexible enough for general audio DSP use. At least GPU assisted convolution should be possible. I haven't checked out the API yet, but the technology is supported by PS4 and XBox One, so it might gain some ground.
it's targeted for game developers, but should be flexible enough for general audio DSP use. At least GPU assisted convolution should be possible. I haven't checked out the API yet, but the technology is supported by PS4 and XBox One, so it might gain some ground.
-
- KVRAF
- 6323 posts since 30 Dec, 2004 from London uk
No mention of latency there. Thats the big problem with GPU audio.mr.bungle wrote:Check out AMD TrueAudio http://www.amd.com/us/products/technolo ... audio.aspx
it's targeted for game developers, but should be flexible enough for general audio DSP use. At least GPU assisted convolution should be possible. I haven't checked out the API yet, but the technology is supported by PS4 and XBox One, so it might gain some ground.
-
- KVRist
- 49 posts since 27 Dec, 2009 from Berlin
Very interesting topic and stuff like this is definetly a mid-term goal for the new audio engine in vvvv. I myself want this very bad, since i write shaders since over 10 years in my daily job. We have a shader editor for DX9 and DX11 shader models which works in real time. You can write your code and as soon as you press save the shader gets compiled and replaced in the graph. But its focused on 3d graphics of course.
Closing the gap from the new DX11 engine to the audio engine should be a matter of a few lines. I'll get back to you as soon as this happens. 2014ish i would say...
Closing the gap from the new DX11 engine to the audio engine should be a matter of a few lines. I'll get back to you as soon as this happens. 2014ish i would say...
-
HrastProgrammer HrastProgrammer https://www.kvraudio.com/forum/memberlist.php?mode=viewprofile&u=159519
- KVRist
- 64 posts since 10 Sep, 2007 from CPU
I developed 64-voice GPU additive engine with 4 additive oscillators per voice ... 240/480 harmonics and Kawai K5000-like 136-band formant filter per oscillator, each harmonic has its own 8-stage loopable envelope, etc. It is an external engine for my Tranzistow synthesizer. I wrote about it in this very forum just a month ago but this was mainly ignored so I decided to keep it for my own private use only.
