Convolution Reverb for NVidia and ATI GPUs - saving CPU time

VST, AU, AAX, CLAP, etc. Plugin Virtual Effects Discussion
Post Reply New Topic
RELATED
PRODUCTS

Post

Nils Schneider wrote:
s_t wrote:I got it working ok with wavosaur.
Could you give me some details? How much CPU did the plugin use (I hope nearly nothing?). What GPU usage did you have and how long were the impulse responses that you used?

I've got 67% GPU usage for a 17 second IR, CPU usage below 1%
Hi, I made some tests with wavosaur and your plugin.

I used a 24.5 second IR and GPU usage was about 31%, CPU was something like 1%.

I'm not sure, but it seems that there is some kind of powersaving going on, as if I use only the plugin, I get higher gpu load, but if I open some 3d application at the same time, the gpu usage drops within the plugin.

Anyway, I'm looking for the future development with interest

cheers

Post

Cool idea..
I remember hearing something similar a while back..I think I heard it on the UAD forums..people were saying its about time Universal Audio brought out a new more powerful card to compete with the new CPU speeds and then the subject of GPU use came up..

I have a GT 8800 and I dont play many games so its sitting there going to waste really.. I'll be keeping an eye on this although I have a quadcore so Im not sure I would need it..

Post

Tested on:
GeForce 8600 GT (256 MB Ram) with 10 second 44.1k wav
Result:
29% GPU
13.6MB RAM
CPU hovering between 1-2%

Seemed to work as expected when loading 16 bit wav files but I think there may be an issue with 32-bit wav files (they're often a pain, try libsndfile it makes it all very easy). You probably don't care about that much at this stage anyway.

Regarding the high latency, you may like to try computing the first 8192 samples on the CPU and doing the rest on the GPU and just summing the two parts. I only say as I imagine when you start trying to push cuda down to small block sizes the cpu usage might start to jump up. (Guesswork.)

I did a little mock-up trial using a zero latency software convolution reverb with the first part of a file on one bus and your plug for the rest on another bus; seemed to work well. If you pick your block sizes real carefully with a uniform length partitioning algorithm you should be able to get 'zero' latency by synching with the vst block lengths (yeh I know you are not certain to get a pre-determined fixed number of samples in, but you almost always do and just handle it where you don't as a special case). If you're only running up to 8192 samples it shouldn't be too much load on the cpu.

That said, a good CPU based solution only uses a few percent with a similar impulse response on zero latency mode.

So, that only leaves you with sorting out the huge gpu usage. I'm sure you're aware this is a common problem with uniform partition length algorithms and long responses (when I did it on a CPU it was strikingly inefficient). Are you familiar with non-uniform length partitioning? If not, take a look at http://www.music.miami.edu/programs/mue ... apter2.htm (skip to the end) and you should see how it all works. It's not as easy as uniform length but still not really that hard and people (including me) have already done it well on a CPU.

It's a bit cheeky of me, but I would love to see some skeleton vst code to get data on/off the card, when I tried a while back (having got a 8600 for Christmas) I got irritated when I couldn't solve a dumb bug with getting the cppIntegration demo working in VST and passed on it (I quit it too quickly to be honest) to focus on cpu based work until a multiplatform system (like OpenCL) arrived. If I remember correctly, processReplacing couldn't properly access any memory in the cu functions unless I'd allocated it within processReplacing, obviously not what I really wanted to be doing. Maybe 7 months on the SDK is easier to use too.
Matt

Pi is exactly three

Post

I've uploaded a new version.

changes for version 0.20

IMP: algorithm has been improved by more than factor 2.5, results in
less GPU usage while allowing more instances

FIX: 32 bit and 8 bit impulse responses are supported

FIX: Wave loading routine had errors that could cause wave files to
be loaded incorrectly or not loaded at all

FIX: installer copied cudart.dll and cufft.dll to the wrong location
https://k1v.nilsschneider.de - Kawai K1 emulated as VSTi/AU
https://heatvst.com - Android Synthesizer with full VST integration
https://gpuimpulsereverb.de - Use your GPU as reverberation DSP

Post

Nils Schneider wrote:Hello there 8),



The program requires a NVidia graphics adapter with at least
a G80 gpu (Geforce 8 series or later) and the latest NVidia
ForceWare driver available to run properly.



Nils 8)
f**k ! Since that obscure Bionicfx disappeared i kept waiting for another
attempt...but i have 7 series gpu :( :( :( :(

Post

Tracktion3 won't recognize it. I'm on Vista SP1 and i have a NVidia Geforce 8500 GT.
Buy Darling Sister's new album "Rise and fall" now! Just send a pm or an email. Visit our myspace page on www.myspace.com/darlingsister for songsamples.

Post

Unfortunately version 0.20 doesn't work in any application.

Post

it works so far, had a crash with previous version. will check out the new version soon.

But it is a step into the right direction and there seems much potential for improving things additionally.

Lets think about being able to load hundrets of plug-ins onto one gpu.

hehe :) :D
Image

Post

I'll test as many hosts as I'm able to download today. I hope some hosts have some demos online or such....

I only use Cubase and VSTHost.
https://k1v.nilsschneider.de - Kawai K1 emulated as VSTi/AU
https://heatvst.com - Android Synthesizer with full VST integration
https://gpuimpulsereverb.de - Use your GPU as reverberation DSP

Post

s_t wrote:Unfortunately version 0.20 doesn't work in any application.
What do you mean by "doesn't work"? No sound? Plugin isn't listed? Crashes on load?
https://k1v.nilsschneider.de - Kawai K1 emulated as VSTi/AU
https://heatvst.com - Android Synthesizer with full VST integration
https://gpuimpulsereverb.de - Use your GPU as reverberation DSP

Post

Sorry for inadequate info.
I mean I can't get version 0.2 to load up into any software. Previous version worked ok at least in wavosaur. When I try to load ver. 0.2, I just get a strange popup saying "C:\VST Plugins\Nils Schneider\ nsGPUImpulseReverbVST.dll" and when I hit ok, the plugin doesn't appear.

Post

As I see, it's a free sequencer? Thats good so I can test it... I'll inform you soon.
https://k1v.nilsschneider.de - Kawai K1 emulated as VSTi/AU
https://heatvst.com - Android Synthesizer with full VST integration
https://gpuimpulsereverb.de - Use your GPU as reverberation DSP

Post

I tested Wavosaur.

When I select the VST rack and click "Load VST", select the DLL, it shows up without problems.
https://k1v.nilsschneider.de - Kawai K1 emulated as VSTi/AU
https://heatvst.com - Android Synthesizer with full VST integration
https://gpuimpulsereverb.de - Use your GPU as reverberation DSP

Post

Bummer, still not working here. Maybe it's moon phase or solar activity as usual..
It seems to be game over for me then :(
But thanks anyway

Post

New version doesn't work for me either, any idea what's wrong? Just doesn't show up in Live, usually a good sign it's crashing on startup.
Matt

Pi is exactly three

Post Reply

Return to “Effects”