Diva and GPU processing

Official support for: u-he.com
RELATED
PRODUCTS

Post

Hello Urs,

Great synth, this Diva. I've been playing with the demo and am saving up the funds to buy it. Have you considered offloading the processing required by Diva to the GPU? My ATI 6990 graphics card can perform about 800 million floating point ops/sec. vs. my Intel Core i7 which can only do around 18. Even the standard graphics option for a Mac Pro, an ATI 5770, which is not a very powerful graphics card, can do around 212.

Others have written VST proof of concepts that utilize GPU: http://www.kvraudio.com/forum/viewtopic.php?t=153073

I would be very interested to see if we could harness the power of our GPUs to run multiple instances of Diva in Divine mode with 64 voice polyphony!

Thanks for considering this feature request.

Post

maybe.

Post

My MFLOP/s numbers are incorrect - I based them on Bitcoin mining million hashes per second (MHASH/s). The ATI 5770 in a Mac Pro actually does 1.35 teraflops, but only 212 MHASH/s.

In any case, it is still an order of magnitude faster than a CPU at floating point processing.

Thanks!

Post

the GPU powered reverb i tested was interesting but if diva could offload some workload onto the GPU that would be quite impressing!

i'm sure its no simple task though! & low latency may be even harder or even just not possible

the idea of a GFX card acting as a high powered DSP card has always appealed to me! but as of yet has not really taken off at all!

one day i hope to be interested in a big boy GFX card! till then i will settle with my Nvidia GT9500GT lol

Subz

Post

Indeed, latency is a bit of a problem with GPGPU... But Urs is a magician :)

Post

djsubject wrote: the idea of a GFX card acting as a high powered DSP card has always appealed to me! but as of yet has not really taken off at all!
That is because even though they seem insanely fast on paper they are that just on a specific set of problems. Namely massively parallel ones and synths aren't that i'm afraid. (EDIT: Or maybe they are in a way i haven't thought of yet.)

Now i don't know of the inner workings of Diva and i'm sure Urs knows much more about this stuff than me so all is not lost. Just don't expect miracles (like for example several hundreds of Diva voices on divine quality). The filter "zero delay predict the future" thingie looks like it could be a good candidate for GPU processing.

Post

jupiter8 wrote:The filter "zero delay predict the future" thingie looks like it could be a good candidate for GPU processing.
That's exactly why we were thinking of it. However, we've tuned the prediction so that by far most of the times it hits at first attempt with 4-way parallel processing (SSE). The few oaccasions where we can't meet it at all are the problem (3-10 iterations), and in this I'm not sure if e.g. 1000x parallelism would help much.

Post

djsubject wrote:the idea of a GFX card acting as a high powered DSP card has always appealed to me! but as of yet has not really taken off at all!
Nonsense.. that is what UAD was. :hihi:

What we might want is a slightly-less proprietary standard that will work on a spread of videocards. Not just the one (singular) they hand picked.

Would be super if Steiny made a powered VST sdk that used a series of ATI or Nvidia cards (or both)


I suspect the largest issue is the sdk would have to accomdate a lot of different card designs ?? so they would have to certify specific cards.. that might get messy and tedious.

Post

Urs wrote:
jupiter8 wrote:The filter "zero delay predict the future" thingie looks like it could be a good candidate for GPU processing.
That's exactly why we were thinking of it.
Fine,i had a sinking feeling i just had a major case of the "talkoutofmyassitis" and were just about to have it delivered to me on a silver plate.

I have this vague idea you could do parallel processing by delaying it one sample IE one thread (or more) doing oscillator(s) then have one thread one sample behind doing the filtering and so on. Haven't thought it thru though if that's possible or if that's a dead end for whatever reason.

Post

VitaminD wrote:
djsubject wrote:the idea of a GFX card acting as a high powered DSP card has always appealed to me! but as of yet has not really taken off at all!
Nonsense.. that is what UAD was. :hihi:

What we might want is a slightly-less proprietary standard that will work on a spread of videocards. Not just the one (singular) they hand picked.

Would be super if Steiny made a powered VST sdk that used a series of ATI or Nvidia cards (or both)


I suspect the largest issue is the sdk would have to accomdate a lot of different card designs ?? so they would have to certify specific cards.. that might get messy and tedious.
I'm pretty sure that UAD cards are not a video card. They are an external DSP card and there have been a number of these. IIRC, they were a lot more popular before CPUs were powerful. Korg had their PCI Oaysis card for a while, TC had/has Powecore, and even the current EMU pice card has on board DSP to run effects.There have also been a few firewire boxes. Creamware also had similar solutions that were used for synthesizers.

I'm not an expert, but I've done some GPGPU work with Cuda (not music) and the latency is no joke. GPGPU works best when you can give the GPU a lot to do before you want the results back.

There are DSP pcie cards available, whether it's worth the effort or not is a different story.

It's more than just an SDK, each DSP family is a different architecture like x86. I'm not sure that there's a good business case for this sort of generic open DSP standard in the consumer market. What would Steinberg gain from it?

Post

VitaminD wrote: What we might want is a slightly-less proprietary standard that will work on a spread of videocards.
There is openCL, which is like nVidia's CUDA in the sense that it's been developed to address problems that parallelize well onto GPU-ish hardware. As you say the different capabilities of hardware complicate things, though. This turns out to be pretty problematic for novel uses. Outside of CUDA incentives to design GPU architectures that do much more than the standard graphics stuff are pretty infrequent. Earlier in the diagram Intel and others are doing more promising development (IMO) with streamlined hardware extensions like SSE.

There's a thread of very preliminary, unproven conjecture about hardware manufacturers reorganizing the typical hardware fabrication pipeline to something more dynamic, sort of a modular design of more general purpose processors. Similar things have failed in the past but I do think it's promising. GPUs could probably be seen as a rare success here, although they've been around long enough to sort of outdate the current incarnation of custom processor design futurisms.

The hypothetical would be, an outfit like Universal Audio might realistically be able to specify something like a version of an Intel CPU but with a lot of extra circuitry that's useful for DSP tasks. Maybe another way to think would be multi-core but with a hybrid nature - a lot of bad-ass, less general purpose cores. Ultimately that's an unsure and, for the hardware industry, exceptionally long term prospect, though. A good research problem but not necessarily a good business strategy.

Post

jupiter8 wrote: I have this vague idea you could do parallel processing by delaying it one sample IE one thread (or more) doing oscillator(s) then have one thread one sample behind doing the filtering and so on. Haven't thought it thru though if that's possible or if that's a dead end for whatever reason.
I think concurrency is the meta-problem for any multi-threading. Just a knee-jerk impression, but this sounds to me like it would require inter-thread concurrency in a way that just isn't plausible?

Post

xh3rv wrote:
jupiter8 wrote: I have this vague idea you could do parallel processing by delaying it one sample IE one thread (or more) doing oscillator(s) then have one thread one sample behind doing the filtering and so on. Haven't thought it thru though if that's possible or if that's a dead end for whatever reason.
I think concurrency is the meta-problem for any multi-threading. Just a knee-jerk impression, but this sounds to me like it would require inter-thread concurrency in a way that just isn't plausible?
Haven't thought about it much but i'm thinking some sort of producer/consumer queue. Maybe there's pitfalls i haven't thought of (on second though i'm positive there are). I think you would get at least a decent level of concurrency even though not a "perfect" one.

Post

ghettosynth wrote:
VitaminD wrote:
djsubject wrote:the idea of a GFX card acting as a high powered DSP card has always appealed to me! but as of yet has not really taken off at all!
Nonsense.. that is what UAD was. :hihi:

What we might want is a slightly-less proprietary standard that will work on a spread of videocards. Not just the one (singular) they hand picked.

Would be super if Steiny made a powered VST sdk that used a series of ATI or Nvidia cards (or both)


I suspect the largest issue is the sdk would have to accomdate a lot of different card designs ?? so they would have to certify specific cards.. that might get messy and tedious.
I'm pretty sure that UAD cards are not a video card. They are an external DSP card and there have been a number of these.
They used a Chromatic Research MPACT! card

It was primarily used to as a DVD Accelerator/MPEG decoder but seems it also had the ability to output VGA (terribly I believe)... which is why I suspect most just used it for DVD/MPEG duties.

Post

VitaminD wrote:
ghettosynth wrote:
I'm pretty sure that UAD cards are not a video card. They are an external DSP card and there have been a number of these.
They used a Chromatic Research MPACT! card

It was primarily used to as a DVD Accelerator/MPEG decoder but seems it also had the ability to output VGA (terribly I believe)... which is why I suspect most just used it for DVD/MPEG duties.
I didn't realize that they used an off the shelf consumer focused card, but, it's not a GPU in the modern sense, it is, in essence, a a DSP coprocessor that was designed for a slightly different purpose. Without knowing the architecture, it's hard to say what issues UAD faced. However, given that there has been significant interest in this for some time, I think that it's reasonable to conclude that they did not face the limitations of modern GPUs.

From wikipedia:
A media processor is a microprocessor-based system-on-a-chip which is designed to deal with digital streaming data in real-time (e.g. display refresh) rates. These devices can also be considered a class of digital signal processors (DSPs).
It is the architecture that matters.

http://www.steve-lacey.com/2006/05/audio_accelerat
What most people don't realize is that in the early days on Direct3D many of the 3D accelerators (or sometimes "decelerators"1) where in fact very general purpose DSPs. At that point in time (mid-1995) many of the hardware guys were very surprised at the rapid mindshare growth of consumer 3D hardware. We're talking people like Evans and Sutherland, SGI, etc…
Here's some discussion about some of the limitations.

http://www-sop.inria.fr/reves/projects/GPUAudio/


BTW: Whatever happend to BionicFX? NAMM 2005 came and went!

People have been talking about this for a long time. Here's a link for someone's jack driver for the GPU

http://www.zamaudio.com/?p=380

Post Reply

Return to “u-he”