AudioMathematics

Use your NVIDIA GPU as a DSP chip

I have been working on a jack client that uses the GPU to process audio. The benefit of this is that it lightens the load off the CPU to process audio. I used the NVIDIA CUDA toolchain to create a jack-cuda client. Currently I have made a gain plugin that uses 256 parallel threads to amplify a jack audio stream in realtime. There is a bit of overhead because it copies the stream to video ram first, then processes the audio and copies it back to main ram, but the PCI-e bus is pretty fast so it’s still overall pretty fast.

Feel free to try out my jack-cuda client here.

New version here with working makefile for Cuda 5.0.

15 thoughts on “Use your NVIDIA GPU as a DSP chip

  1. Good stuff. Any interest in implementing FIR filters in CUDA, perhaps a port of BruteFir that also implements active crossovers? I’m interested in setting up an ION netbook with a high end 8 channel USB audio interface to drive a custom PA system I’m building with pretensions to high fidelity.

  2. I didn’t know there were any 8 channel USB interfaces? Wouldn’t the bandwidth of USB 2.0 restrict the number of channels to something lower than that?

  3. Crossover calculation on GPU thanks to CUDA is great.
    But for me the best would implementing a port or something so that BruteFIR calculations run on CUDA GPU ! BruteFIR is great and JACK also and GPU are massive for floatingpoint, combining all these with CUDA as a way to run BruteFIR on the nvidia GPU : THAT would be awesome for me ! Anybody please reply ?

  4. Hi

    I have tested jack-cuda. But it stops at compile. At least is jack.h missing.
    Or I am something doing wrong ?

    regards,
    Andrej

  5. Hi

    Succeeded to compile on Fedora 17 using :
    sh ‘cuda_5.0.35_linux_64_fedora16-1.run’ -override compiler

    However when I connect my application to jack-dsp in jack server, I get no sound, any idea?
    Thanx

  6. Can you explain how to use this?
    I started jack server and gpujacktest, but don’t know what should happend after.

  7. AMDs new APUs(accelerated processing units) have a gpu in the CPUs chipset. This allows you to do “zero copy” and point to data in memory rather than copying it or streaming it over the PCIe bus. However AMD doesn’t support CUDA, though it does support OpenCL which is very similar.

  8. tsturzl: Yes this is exciting stuff, I have not had a chance to look at AMD’s new hardware yet, but I have heard great things about OpenCL.

  9. I’ve been recording 32 tracks at 48kHz / 24-bit via USB 2.0 using Ardour and Behringer X32 digital mixing console buit-in audio interface. No problem!

  10. Hi Damien,
    it’s been a while since you made the jack-cuda client. I just want to add that today (2019), one can get Nvidia Jetson Nano with a GPU that delivers almost 500 GFLOPS with 128 cores. I think it’s pretty interesting to test how it can be used for audio tasks.

Leave a Reply

Your email address will not be published. Required fields are marked *