On 05/11/2016 03:09 PM, Federico Larroca wrote:
Hello everyone,
We are on the stage of optimizing our project (gr-isdbt). One of the
most consuming blocks is OFDM synchronization, and in particular the
equalization phase. This is simply the division between the input
signal and the estimated channel gains (two modestly big arrays of
~5000 complexes for each OFDM symbol).
Until now, this was performed by a for loop, so my plan was to change
it for a volk function. However, there is no complex division in VOLK.
So I've done a rather indirect operation using the property that a/b =
a*conj(b)/|b|^2, resulting in six lines of code (a multiply conjugate,
a magnitude squared, a deinterleave, a couple of float divisions and
an interleave). Obviously the performance gain (measured with the
Performance Monitor) is marginal (to be optimistic)...
Does anyone has a better idea? Implementing a new kernel is simply out
of my knowledge scope.
Best
Federico
_______________________________________________
Discuss-gnuradio mailing list
Discuss-gnuradio@gnu.org
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
VOLK does have a floating-point pow operator, so first raise your
divisors to -1.0, then multiply?
_______________________________________________
Discuss-gnuradio mailing list
Discuss-gnuradio@gnu.org
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio