Convolution Reverb for NVidia and ATI GPUs - saving CPU time

VST, AU, etc. plug-in Virtual Effects discussion
KrzysiekK
KVRist
363 posts since 3 Sep, 2004

Post Fri Aug 22, 2008 12:24 am

Ideas from people that have knowlege about low-latency
convolution are welcome :) I'm sure with a good algorithm,
a GPU could run hundereds of instances, it's a damn fast
co-processor!
Check freeverb3 impulser sourcecode (http://freeverb3.sourceforge.net/). This convolution processor works fine for me with lowlatency.

MelodyMan
KVRian
974 posts since 10 May, 2003

Post Fri Aug 22, 2008 12:38 am

cYrus wrote:
MelodyMan wrote:
hill_matthew wrote:
jupiter8 wrote:Just tried with the Live demo as well. The file browser came up in no time but unfortunatly the plugin crashed Live as well. An unhandeled wxception has occured. Still running a 8600GT with driver 177.83. I wonder if that's the problem since it seems to be working for other guys in Live.
Did you try copying the cuda dlls installed in the Nils directory under your vst folder to your system32 folder?

My nvidia control panel says I am running forceware 177.35 which seems to be different to yours.
I'm also running the Forceware-driver and i get the same cuda-related error-message. The plugin does show up, but doesn't recognize the GPU. I'm running a Geforce 8500 GT by the way.
i would try to install the CUDA toolkit: http://www.nvidia.com/object/cuda_get.html
Thanks, i'll try that when i get home.
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.

mystran
KVRAF
5034 posts since 12 Feb, 2006 from Helsinki, Finland

Post Fri Aug 22, 2008 1:24 am

http://www.music.miami.edu/programs/mue ... apter2.htm at least has some ideas about how to do zero-latency convolution... basically you buy yourself the first block by running brute-force FIR (you'd want that on CPU) and then convolve rest of the tail with progressively larger FFT blocks, with the main nasty part of the algorithm being the scheduling (you'll need to split the processing of the large blocks into many small parts to get constant load). Anyway, as suggested before, it probably makes sense to do the head of the impulse with the CPU, and only use GPU for the long tail.

As for your plugin, unfortunately I'm unable to test it, as all the computers I could try it on happen to be running ATI cards. :P

User avatar
jupiter8
KVRAF
9375 posts since 17 Sep, 2002 from Gothenburg Sweden

Post Fri Aug 22, 2008 1:35 am

Just installed pretty much everything CUDA related i could find and still get a crash. Don't mean to be a PITA. Just telling about me experience as a good beta tester should do. :)

hill_matthew
KVRist
112 posts since 20 Mar, 2004 from UK

Post Fri Aug 22, 2008 12:06 pm

mystran wrote:Anyway, as suggested before, it probably makes sense to do the head of the impulse with the CPU, and only use GPU for the long tail.
One of the problems with that approach will be that getting to zero latency is the part that uses the biggest ammount of CPU in a zero latency solution because doing lots of FFTs on small blocks isn't very efficient. The long tail (say where blocks are getting to >~10000 samples, usually the vast majority of the IR) is actually extremely efficient in a zero latency solution because the FFTs get so big (amongst other reasons) and can be done very well by a modern cpu, this reduces the benefit of combining it with a fixed block length algorithm on a gpu in the first place.

I'm not saying it's not worth a try though, just the cpu load might be higher than envisaged and at that point pushing all the work to the cpu may not actually increase processor usage that much. Working towards lowering the gpu latency using some degree of non uniform partitioning might be better.
Matt

Pi is exactly three

User avatar
dimitar
KVRAF
1976 posts since 13 Dec, 2003 from Bulgaria

Post Fri Aug 22, 2008 12:19 pm

Can't see it in Cubase 4 . NiVidia 8500.
Product Specialist for Kuassa http://www.nalbantov.com
http://www.kuassa.com

MelodyMan
KVRian
974 posts since 10 May, 2003

Post Fri Aug 22, 2008 12:51 pm

MelodyMan wrote:
cYrus wrote:
MelodyMan wrote:
hill_matthew wrote:
jupiter8 wrote:Just tried with the Live demo as well. The file browser came up in no time but unfortunatly the plugin crashed Live as well. An unhandeled wxception has occured. Still running a 8600GT with driver 177.83. I wonder if that's the problem since it seems to be working for other guys in Live.
Did you try copying the cuda dlls installed in the Nils directory under your vst folder to your system32 folder?

My nvidia control panel says I am running forceware 177.35 which seems to be different to yours.
I'm also running the Forceware-driver and i get the same cuda-related error-message. The plugin does show up, but doesn't recognize the GPU. I'm running a Geforce 8500 GT by the way.
i would try to install the CUDA toolkit: http://www.nvidia.com/object/cuda_get.html
Thanks, i'll try that when i get home.
Works like a charm now. 3% GPU-use with an EMT250 impulse. Awesome stuff and thanks for this!

EDIT: It crashes while loading certain impulses. Some work, some won't, but i don't know the difference between them.
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.

mystran
KVRAF
5034 posts since 12 Feb, 2006 from Helsinki, Finland

Post Fri Aug 22, 2008 1:25 pm

hill_matthew wrote: I'm not saying it's not worth a try though, just the cpu load might be higher than envisaged and at that point pushing all the work to the cpu may not actually increase processor usage that much. Working towards lowering the gpu latency using some degree of non uniform partitioning might be better.
Well, I have to admit you too have a point. :)

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

Post Sat Aug 23, 2008 3:33 am

MelodyMan wrote: EDIT: It crashes while loading certain impulses. Some work, some won't, but i don't know the difference between them.
Can you send me an impulse response that crashes? (If they're free of course).
jupiter8 wrote: There's no CUDA dlls in my Nils directory
This is right, as the CUDA dlls are copied to the windows system directory while installing.

The dlls can't be found when I copy them to the install directory, as the working directory of the host is at a different location when loading my VST.
http://www.nilsschneider.de
http://gpuimpulsereverb.de - Use your ATI/NVIDIA GPU as reverberation DSP!
http://heatvst.com - Android Synthesizer with full VST integration

cYrus
KVRist
382 posts since 6 Jan, 2004 from Switzerland

Post Sat Aug 23, 2008 3:36 am

i've one which just crashed cubase 4 here.

http://www.solarproject.ch/linked/l960large_church.wav

User avatar
jupiter8
KVRAF
9375 posts since 17 Sep, 2002 from Gothenburg Sweden

Post Sat Aug 23, 2008 3:40 am

cYrus wrote:i've one which just crashed cubase 4 here.

http://www.solarproject.ch/linked/l960large_church.wav
Funny, it was the 960 Large Vocal chamber that crashed mine.
http://www.box.net/shared/uqtj4urqfj

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

Post Sat Aug 23, 2008 3:55 am

It's a 24 bit wave file, that crashes here too. I'm just fixing it...
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 Sun Aug 24, 2008 3:16 am

I've uploaded a new version with fixes.

http://www.nilsschneider.de/files/nsGPU ... TSetup.exe

FIX: Loading of 24 bit WAV files is now supported

FIX: Fixed crash if loading an unsupported WAV file
http://www.nilsschneider.de
http://gpuimpulsereverb.de - Use your ATI/NVIDIA GPU as reverberation DSP!
http://heatvst.com - Android Synthesizer with full VST integration

User avatar
jupiter8
KVRAF
9375 posts since 17 Sep, 2002 from Gothenburg Sweden

Post Sun Aug 24, 2008 3:18 am

Cool,thanks. Will try it out later.
EDIT: First impression: slow as molasses in Reaper but works fine. The loading browser takes like 10 seconds to open.
In Live 7 the browser open instantly but unfortunatly the plugin crashes Live.
Note i only tested this once so it might be user error.

MelodyMan
KVRian
974 posts since 10 May, 2003

Post Sun Aug 24, 2008 4:40 am

Yes, it works now with the new version. Thanks!
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.

Return to “Effects”