Re: MA (Memory Acceleration) and SR-DVB in Karlsruhe, @ WSR10

John and others,

For anyone who wants to take a crack at it, I have
committed a minor update on gr-trellis, where I have re-factored
the main Viterbi function on the file viterbi.cc
and made a template out of it.

Anyone who wants to attempt an optimization of the VA
using MA (or any other technique) can start from this code.
The critical code is the double loop:

%---------------------
for(int j=0;j<S;j++) { // for each next state do ACS
minm=INF;
minmi=0;
for(unsigned int i=0;i<PS[j].size();i++) {
if((mm=alpha[alphaiS+PS[j][i]]+in[kO+OS[PS[j][i]I+PI[j][i]]])<minm)
minm=mm,minmi=i;
}
trace[k
S+j]=minmi;
alpha[((alphai+1)%2)*S+j]=minm;
if(minm<norm) norm=minm;
}
%---------------------

where the Add-Compare-Select operations are performed.

In addition, the code that evaluates the branch metrics is in
the file calc_metric.cc which can also be accelerated with precomputed
and stored values.

Finally, using the fsm framework, radix-n solutions are readily
available (they are implemented as alternative constructors),
so they do not need to be hardcoded…

I would appreciate any suggestions for optimization, although it is not
one of my priorities at this point…

Achilleas