[asterisk-dev] OpenCL for improved performance transcoding and conferencing

Chris Coleman chris at espacenetworks.com
Wed Sep 22 18:03:16 CDT 2010


>
> >  You probably already know very well about OpenCL -- Apple's open
> >  standard OpenComputeLanguage that lets you use any supported
> >  general-purpose GPU for much faster math computing....
>    
>  Sometimes faster. Often slower. It depends how well the problem fits the
>  hardware.

Agreed.  I'm citing the wikipedia article on GPGPU.  It states one of the (approx 30) suitable problems for GPGPU to solve is Audio Signal Processing.

One type it says it's been used for is Audio Speech Processing.

http://en.wikipedia.org/wiki/GPGPU




> >  Dual-core Atom D510 mini-ITX motherboards with the OpenCL-compatible GPU
> >  Nvidia G210 (ION) are available for slight cost increase over boards
> >  without the ION.  For example : the Jetway NC98
> >
> >  Theoretically the GPU is 10x more efficient in doing transcoding math,
> >  than the CPU... so we could get up to 10x as many transcoded and
> >  conferenced channels...
> >
> >  ....resulting in lower energy consumption, and higher number of
> >  transcoded + conferenced channels, per PBX server, before hitting the
> >  limit of CPU math processing horsepower.
>    
>  CUDA is far more mature than OpenCL right now. Have a lot around the
>  internet at attempts to use CUDA to accelerate audio and speech codecs.
>  The results aren't good. I have only seem one attempt - a poor
>  performing MP3 encoder - where the developers didn't get disheartened
>  and abandon work before completion.

I don't doubt CUDA is ahead of OpenCL: OpenCL wraps CUDA (Nvidia's GP-GPU libraries that works ONLY for their GPU's) AND ATI Stream (ATI's GP-GPU libraries that work ONLY on ATI's GPU's).

Nvidia has BILLIONS of dollars of incentives to lock as many users into CUDA as possible, and not be compatible with ATI. So they are trying to innovate and not interoperate.

Us in Linux world however, are trying to interop to the MAX.  This is why I suggested OpenCL.

OpenCL should currently have all needed functionality to accelerate the relatively simple (compared to 3D grapics) Audio and Speech Processing.



> >  Does anyone else think it'd be brilliant of the * developers to update
> >  the transcoding and conferencing code for 2010, to use OpenCL (which
> >  uses any available, compatible GPU) for absolutely awesome performance ??
> >
> >
>    
>  Awesome? Really? You have supporting evidence?

The "evidence" I have is from general knowledge and experience.

High ratio audio compression (such as the G.729, as well as mp3 and mp4-AAC) uses statistics to intelligently drop some of the audio information.

And to run those stats, the algorithm has to do floating point vector math : something called a FFT, Fast Fourier Transfer function, on the incoming raw audio stream.

With 40, 56, 128, and 192 stream processing cores, a GP-GPU is going to be able to get that done a LOT quicker, on a LOT more simultaneous channels, than the simple onboard floating point unit built into the Atom processor, which can handle only a couple of math calculations per clock cycle per core.


>  The nVidia Fermi may change things quite a bit, as it is a more general
>  purpose compute engine than the earlier GPUs. I still haven't seen
>  anything impressive for any computation in the ballpark of a speech
>  codec, though. I bought a GTX460 card a couple of week ago to do some
>  experiments, but I'm struggling to find the time to work on it.

While youre GTX460 is a totally butt kicking card from today, General Purpose GPU computing is available going back a few years now, I think it started truly with the DirectX 10.1 cards.

>  The Toshiba SpursEngine card from Leadtek is certainly capable of
>  accelerating speech codecs. The now defunct HowlerTech company was using
>  them. Not too expensive. Fairly low power. The snag is they seem to be a
>  dead end. Leadtek supply a 32bit Linux SDK, but say a 64 bit SDK will
>  not appear. To me, that says abandonware.

>  Steve


The reason I suggested GP-GPU and not an add-on card, is because it's available in all the mini-ITX motherboards with a cheap DirectX 10.1 or higher graphics chip : Nvidia ION, and soon to come: ATI Fusion.

No extra PCI slot required (many mini-ITX boards dont even have one), same power consumption.

Basically, everyone who buys that simple motherboard or better, and it's available now, they can use it.

It's the simplest, cheapest and, best bang for the buck.

Plus, servers rarely need fancy graphics, so it's not like you're taking the GPU power from something else that needs it.

Also, add-on graphics cards are available in PCIe 1x format ... this GT210 for example... for about 30.00






More information about the asterisk-dev mailing list