CUDA with VST plugins for Cubase or Logic using CUDA as a wrapper for audio plugin

Does anyone know a good process for using CUDA software and hardware for accelerating VST plugins for audio programs. The idea would be to have the digital audio workstation, such as Cubase or Logic, have a plugin that would act as a wrapper and allow other already developed VST plugins to use multicore acceleration. Everything would still run on Windows or possibly OSX in the future, but the wrapper would send the plugins through CUDA programming.

My concern is that VST plugins are coded for Windows or Mac OSX to run through Cubase. I’m wondering if there is a way, since the VST architechture is open source, that one can develop the wrapper to send data through the CUDA hardware, but not have to redesign each VST under CUDA programming.

I know this may seem a little far fetched, but I’d figure I’d ask.

Cheers,
Jeremy

I don’t think there’s any way to implement a generic VST runtime that translates everything to run using CUDA, simply because that would assume that either every VST plugin will work well if it were written in CUDA or that there is a compiler that can automatically identify and port regions to CUDA. I’m pretty sure neither is true, so I can’t imagine this happening.

But, I’m curious–what kind of VST plugins are you looking for in CUDA the most? I’ve actually spent a little time looking at VST, although I haven’t had a chance to write any sample CUDA plugins yet (but it is on my long-term agenda).

Well, for me, the ones I would like to see on CUDA the most would have to be the processor intensive plugins, like most convolution reverbs (voxengo, waves, SIR, Altiverb). Waves and Native Instruments have a lot of plugins that would work a lot better if they had help with processor acceleration, but most of these other plugins work well without help. Really the only plugins that are still hard to run are the convolution reverbs. SIR is a free plugin and would probably give you their code if you told them what you were to do with it.

As for VSTs in general, a good site to look at is www.kvraudio.com, but CUDA would be a great competitor to TDM plugins, that run natively on TDM card which allow similar processor acceleration.

So, tell me this, how easy would it be to take a plugin written for VST in a C language and convert it over to CUDA? I’ve heard of people using plugins with photoshop, but I’m also wondering if that could also be used with premiere as well.

Anyway, this platform really opens up a bunch of possibilities.

Thanks

Depends greatly on the algorithm used in that VST plugin.

Some algorithms are almost ready to port to CUDA “out of the box” and converting them will be quite easy. Optimizing them to run at peak performance - that might be a tougher nut, but in most cases you can expect fine-grained parallel code to run considerably faster on GPU than CPU even with relatively naive optimization. So it’s worth a try.

Some algorithms are not suited for parallel processing at all. If they are sequential in nature, you will have a harder time.

Here are a few “rules of thumb” to judge if your problem fits CUDA.

  • does the algorithm spend a lot of time doing lots of similar (or identical) operations over a big set of data?

  • are those operations more or less independent from each other? Can they be done in parallel?

If the answers are positive, your problem/algorithm is likely a good candidate to port to GPU.

The bottom line is: if you have a fitting algorithm in C, the coding related with porting it to CUDA will be easy. You can learn that in a couple hours*. The non-trivial parts are:

  • understanding the algorithm and how does it project to fine-grained parallelism,

  • optimizing the code (can make a 10x difference in speed)

As you are talking about CUDA for VST plugins, you might check out this thread, because I develop a convolution reverb for CUDA.

It can be downloaded and testet already, althoug it’s still in an early stage.

http://www.kvraudio.com/forum/viewtopic.php?t=222978