<div dir="ltr">Hi Tom,<br><br>Thank you for explainations!<br><br>> Potential Viterbi optimization using SIMD methods is substantial as I<br>> demonstrated many years ago. The implementation does require<br>> separation of puncturing and Viterbi. Unfortunately, the has code<br>> experienced code rot since then. Admittedly, I accept much of that<br>> blame.<br><br>I think it would be really good to have/use your Viterbi implementation<br>inside the libosmocoding. Regarding to some remarks to your code, I am<br>ready to fix them (such as malloc -> talloc).<br><br>Moreover, recently I had a conversation with Alexander Chemeris. He also<br>mentioned your implementation, which would be better to use in embedded<br>platforms (such as UmSITE) due to performance reasons.<br><br>> In summary, my concern is about the implementation and not the API.<br>> Perhaps we could pull the puncturing into the library as Max suggests.<br>> Then, separately, consider performance changes to the internal<br>> puncturing and Viterbi implementations.<br><br>So, my suggestion is to:<br><br>1) Extend your code with encoding capabilities.<br>2) Merge Viterbi transcoder with the libosmocoding.<br>3) Merge libosmocoding into libosmocore as a sub-library<br>   or spawn a separate repository.<br><br>Any opinions?<br><br></div><div class="gmail_extra"><br clear="all"><div><div class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div>With best regards,<br></div><div>Vadim Yanitskiy.<br></div></div></div></div></div></div>
<br><div class="gmail_quote">2016-10-13 1:54 GMT+07:00 Tom Tsou <span dir="ltr"><<a href="mailto:tom@tsou.cc" target="_blank">tom@tsou.cc</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">On Wed, Oct 12, 2016 at 10:58 AM, Max <<a href="mailto:msuraev@sysmocom.de">msuraev@sysmocom.de</a>> wrote:<br>
> Is there some microbenchmark available? Perhaps we can use it to improve<br>
> generated code?<br>
<br>
</span>Potential Viterbi optimization using SIMD methods is substantial as I<br>
demonstrated many years ago. The implementation does require<br>
separation of puncturing and Viterbi. Unfortunately, the has code<br>
experienced code rot since then. Admittedly, I accept much of that<br>
blame.<br>
<br>
==============================<wbr>===================<br>
[+] Testing: GSM TCH/AFS 6.7<br>
[.] Specs: (N=4, K=5, recursive, flushed, punctured)<br>
[.] Input length  : ret = 140  exp = 140 -> OK<br>
[.] Output length : ret = 448  exp = 448 -> OK<br>
<br>
[.] Performance benchmark:<br>
[..] Encoding / Decoding 800000 bursts on 8 thread(s):<br>
[..] Testing base:<br>
[..] Elapsed time....................... 4.320001 secs<br>
[..] Rate..........................<wbr>..... 25.925920 Mbps<br>
[..] Testing SIMD:<br>
[..] Elapsed time....................... 0.458272 secs<br>
[..] Rate..........................<wbr>..... 244.396341 Mbps<br>
[..] Speedup.......................<wbr>..... 9.426718<br>
<br>
<a href="http://lists.osmocom.org/pipermail/openbsc/2014-April/007365.html" rel="noreferrer" target="_blank">http://lists.osmocom.org/<wbr>pipermail/openbsc/2014-April/<wbr>007365.html</a><br>
<span class="HOEnZb"><font color="#888888"><br>
  -TT<br>
</font></span></blockquote></div><br></div>