> 1) Extend your code with encoding capabilities.

Ah, I just found it inside your repository.

With best regards,
Vadim Yanitskiy.

2016-10-14 17:40 GMT+07:00 Vadim Yanitskiy <axilirator@gmail.com>:
Hi Tom,

Thank you for explainations!

> Potential Viterbi optimization using SIMD methods is substantial as I
> demonstrated many years ago. The implementation does require
> separation of puncturing and Viterbi. Unfortunately, the has code
> experienced code rot since then. Admittedly, I accept much of that
> blame.

I think it would be really good to have/use your Viterbi implementation
inside the libosmocoding. Regarding to some remarks to your code, I am
ready to fix them (such as malloc -> talloc).

Moreover, recently I had a conversation with Alexander Chemeris. He also
mentioned your implementation, which would be better to use in embedded
platforms (such as UmSITE) due to performance reasons.

> In summary, my concern is about the implementation and not the API.
> Perhaps we could pull the puncturing into the library as Max suggests.
> Then, separately, consider performance changes to the internal
> puncturing and Viterbi implementations.

So, my suggestion is to:

1) Extend your code with encoding capabilities.
2) Merge Viterbi transcoder with the libosmocoding.
3) Merge libosmocoding into libosmocore as a sub-library
   or spawn a separate repository.

Any opinions?


With best regards,
Vadim Yanitskiy.

2016-10-13 1:54 GMT+07:00 Tom Tsou <tom@tsou.cc>:
On Wed, Oct 12, 2016 at 10:58 AM, Max <msuraev@sysmocom.de> wrote:
> Is there some microbenchmark available? Perhaps we can use it to improve
> generated code?

Potential Viterbi optimization using SIMD methods is substantial as I
demonstrated many years ago. The implementation does require
separation of puncturing and Viterbi. Unfortunately, the has code
experienced code rot since then. Admittedly, I accept much of that
blame.

=================================================
[+] Testing: GSM TCH/AFS 6.7
[.] Specs: (N=4, K=5, recursive, flushed, punctured)
[.] Input length  : ret = 140  exp = 140 -> OK
[.] Output length : ret = 448  exp = 448 -> OK

[.] Performance benchmark:
[..] Encoding / Decoding 800000 bursts on 8 thread(s):
[..] Testing base:
[..] Elapsed time....................... 4.320001 secs
[..] Rate............................... 25.925920 Mbps
[..] Testing SIMD:
[..] Elapsed time....................... 0.458272 secs
[..] Rate............................... 244.396341 Mbps
[..] Speedup............................ 9.426718

http://lists.osmocom.org/pipermail/openbsc/2014-April/007365.html

  -TT