# GSoC2014 Turbo Equalizer

**URL:** <https://www.ruby-forum.com/t/gsoc2014-turbo-equalizer/239419>\
**Category:** GNU Radio\
**Created:** [February 25, 2014, 4:40pm UTC](https://www.ruby-forum.com/t/gsoc2014-turbo-equalizer/239419 "2014-02-25T16:40:55Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![musicdenotation](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/ea666f/32.png) [@musicdenotation](https://www.ruby-forum.com/u/musicdenotation)\
**Post date:** [February 25, 2014, 4:40pm UTC](https://www.ruby-forum.com/t/gsoc2014-turbo-equalizer/239419/1 "2014-02-25T16:40:55Z")

</div>

Just FYI, the gr-trellis has implementations of all these components you  
suggested.

One interesting project is to take the core algorithms of gr-trellis  
(Viterbi and SISO) and make them threaded for multi-core  
(eg, by parallelizing forward/backward recursions, or by parallelizing  
using overlapping subblocks, etc)

best  
Achilleas

---

<div class="post-metadata">

**Author:** ![Achilleas\_A](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/74df32/32.png) [@Achilleas\_A](https://www.ruby-forum.com/u/Achilleas_A)\
**Post date:** [February 25, 2014, 4:48pm UTC](https://www.ruby-forum.com/t/gsoc2014-turbo-equalizer/239419/2 "2014-02-25T16:48:34Z")

</div>

On Tue, Feb 25, 2014 at 10:39 AM, Achilleas A.  
[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> Just FYI, the gr-trellis has implementations of all these components you  
> suggested.
> 
> One interesting project is to take the core algorithms of gr-trellis  
> (Viterbi and SISO) and make them threaded for multi-core  
> (eg, by parallelizing forward/backward recursions, or by parallelizing using  
> overlapping subblocks, etc)
> 
> best  
> Achilleas

Also using VOLK inside gr-trellis blocks should provide significant  
speedup there.

Tom

---

<div class="post-metadata">

**Author:** ![Achilleas\_A](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/74df32/32.png) [@Achilleas\_A](https://www.ruby-forum.com/u/Achilleas_A)\
**Post date:** [February 25, 2014, 7:10pm UTC](https://www.ruby-forum.com/t/gsoc2014-turbo-equalizer/239419/3 "2014-02-25T19:10:31Z")

</div>

On 02/25/2014 04:39 PM, Achilleas A. wrote:

> Just FYI, the gr-trellis has implementations of all these components you  
> suggested.
> 
> One interesting project is to take the core algorithms of gr-trellis  
> (Viterbi and SISO) and make them threaded for multi-core  
> (eg, by parallelizing forward/backward recursions, or by parallelizing  
> using overlapping subblocks, etc)

Jan,

gr-trellis would be a good place to start looking, but there’s still  
enough to do between gr-trellis and a fully working, optimized,  
real-time capable Parallel log-map-siso turbo equalizer. When you write  
a proposal, make sure you’ve had a look at gr-trellis beforehand.

M

---

<div class="post-metadata">

**Author:** ![Achilleas\_A](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/74df32/32.png) [@Achilleas\_A](https://www.ruby-forum.com/u/Achilleas_A)\
**Post date:** [February 25, 2014, 5:03pm UTC](https://www.ruby-forum.com/t/gsoc2014-turbo-equalizer/239419/4 "2014-02-25T17:03:53Z")

</div>

Yes, I agree with Tom.  
A good starting point is the three or four core algorithms in  
gr-trellis/lib/core\_algorithms.cc

viterbi\_algorithm,  
siso\_algorithm,  
sccc\_decoder  
pccc\_decoder  
(and their “\_combined” versions)

Jan, let me know if you decide to work on these; I can provide  
some ideas if you are interested.

best,  
Achilleas

---

<div class="post-metadata">

**Author:** ![Achilleas\_A](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/74df32/32.png) [@Achilleas\_A](https://www.ruby-forum.com/u/Achilleas_A)\
**Post date:** [February 25, 2014, 7:37pm UTC](https://www.ruby-forum.com/t/gsoc2014-turbo-equalizer/239419/5 "2014-02-25T19:37:00Z")

</div>

I know I could look to Google / do an internet search, but maybe asking  
here would be better. What is/are the -seminal- paper/s on “parallel  
log-map-siso decoding”?

I implemented the non-parallel version of the log-map algorithm -way-  
back in 2001 on whatever the portable Mac was at the time (5300ce,  
IIRC). I stripped all of the crap out, and made it -really- fast for  
non-parallel / non-intrinsics / non-Altivec / non-SIMD / non-accelerated  
(beyond whatever the compiler did). I thought a lot about how to  
parallelize the algorithm, but since this was for a class & all I needed  
was the fastest (which it was) my thoughts ended in May with graduation.  
I have no idea if I still have this code around, but I keep up with  
channel coding research to some degree since it’s been an interest for  
years.

Hence, my question. Thanks! - MLD

---

<div class="post-metadata">

**Author:** ![Achilleas\_A](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/74df32/32.png) [@Achilleas\_A](https://www.ruby-forum.com/u/Achilleas_A)\
**Post date:** [February 26, 2014, 9:39am UTC](https://www.ruby-forum.com/t/gsoc2014-turbo-equalizer/239419/6 "2014-02-26T09:39:39Z")

</div>

On 25.02.2014 19:09, Martin B. wrote:

> gr-trellis would be a good place to start looking, but there’s still  
> enough to do between gr-trellis and a fully working, optimized,  
> real-time capable Parallel log-map-siso turbo equalizer. When you write  
> a proposal, make sure you’ve had a look at gr-trellis beforehand.
> 
> M  
> Hi,

Thanks to all for their input. I will have a look at gr-trellis but this  
definitely sounds like something I’d like to work on!  
Achilleas, I’d be happy to exchange ideas about parallelizing the SiSo  
and Viterbi algorithms in gr-trellis.

Jan
