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