[asterisk-dev] GPU Audio Codec Transcoding within Asterisk PBX

Steve Underwood steveu at coppice.org
Fri Jan 2 12:38:17 CST 2009

Stelios Koroneos wrote:
> Good work.
> I do think that CUDA has a good potential for increasing transcoding
> capacities in an asterisk server.
> I have been working a bit on EC (OSLEC mainly) and G729 on CUDA and the
> main stumbling block i found is the above, when trying to use CUDA from
> within asterisk.
> The rest of the issues you mention are because (as with SIMD) most of
> algorithms/code need to be re-written in certain places mainly due to
> that fact that you need to "align" data and processes to make use of the
> max bw available (and CUDA's way of doing things).
> In general i tend to think of the GPU's as a very "large" SIMD
> co-processor. 
> For the EC there is an added problem that you need to access the CUDA
> API from kernel space but haven't figure how to do that yet.
> (OLSEC is rather easy to test on user-space)
> The best solution i found is to have a daemon like process that accepts
> transcoding requests coming from asterisk (or elsewere) and let it
> handle all scheduling to/from the CUDA API, creating process packages
> that are tailored to the GPU(s) you have.
> There is a "break-even point" i.e the overhead you added by the daemon
> +CUDA API is rather large if you have to handle a small number of
> channels but as channels increase it gets much better.
I think latency will make CUDA impractical for echo cancellation. You 
need to keep the adaption loop really tight for most forms of EC adaption.


More information about the asterisk-dev mailing list