Convolution Reverb for NVidia and ATI GPUs - saving CPU time

VST, AU, etc. plug-in Virtual Effects discussion
s_t
KVRist
243 posts since 24 Dec, 2004

Post Sun Jul 27, 2008 12:40 pm

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

User avatar
lotus2035
KVRAF
4074 posts since 5 May, 2005 from Stockholm, Sweden

Post Sun Jul 27, 2008 12:52 pm

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..

hill_matthew
KVRist
112 posts since 20 Mar, 2004 from UK

Post Sun Jul 27, 2008 3:11 pm

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/Research/jvandekieft/jvchapter2.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

Nils Schneider
KVRist
166 posts since 22 Oct, 2004 from Neuss, Germany

Post Tue Jul 29, 2008 11:49 am

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
http://www.nilsschneider.de
http://gpuimpulsereverb.de - Use your ATI/NVIDIA GPU as reverberation DSP!
http://heatvst.com - Android Synthesizer with full VST integration

Timbre
KVRist
206 posts since 24 Jun, 2003

Post Tue Jul 29, 2008 12:03 pm

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 :( :( :( :(

MelodyMan
KVRian
974 posts since 10 May, 2003

Post Tue Jul 29, 2008 1:54 pm

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.

s_t
KVRist
243 posts since 24 Dec, 2004

Post Tue Jul 29, 2008 2:04 pm

Unfortunately version 0.20 doesn't work in any application.

hifiboom
KVRian
1144 posts since 26 Sep, 2005 from Germany

Post Tue Jul 29, 2008 6:36 pm

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

Nils Schneider
KVRist
166 posts since 22 Oct, 2004 from Neuss, Germany

Post Wed Jul 30, 2008 12:25 am

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.
http://www.nilsschneider.de
http://gpuimpulsereverb.de - Use your ATI/NVIDIA GPU as reverberation DSP!
http://heatvst.com - Android Synthesizer with full VST integration

Nils Schneider
KVRist
166 posts since 22 Oct, 2004 from Neuss, Germany

Post Wed Jul 30, 2008 12:38 am

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?
http://www.nilsschneider.de
http://gpuimpulsereverb.de - Use your ATI/NVIDIA GPU as reverberation DSP!
http://heatvst.com - Android Synthesizer with full VST integration

s_t
KVRist
243 posts since 24 Dec, 2004

Post Wed Jul 30, 2008 2:11 am

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.

Nils Schneider
KVRist
166 posts since 22 Oct, 2004 from Neuss, Germany

Post Wed Jul 30, 2008 2:21 am

As I see, it's a free sequencer? Thats good so I can test it... I'll inform you soon.
http://www.nilsschneider.de
http://gpuimpulsereverb.de - Use your ATI/NVIDIA GPU as reverberation DSP!
http://heatvst.com - Android Synthesizer with full VST integration

Nils Schneider
KVRist
166 posts since 22 Oct, 2004 from Neuss, Germany

Post Wed Jul 30, 2008 11:25 am

I tested Wavosaur.

When I select the VST rack and click "Load VST", select the DLL, it shows up without problems.
http://www.nilsschneider.de
http://gpuimpulsereverb.de - Use your ATI/NVIDIA GPU as reverberation DSP!
http://heatvst.com - Android Synthesizer with full VST integration

s_t
KVRist
243 posts since 24 Dec, 2004

Post Wed Jul 30, 2008 11:45 am

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

hill_matthew
KVRist
112 posts since 20 Mar, 2004 from UK

Post Wed Aug 13, 2008 10:37 am

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

Return to “Effects”