An Efficient, Portable and Generic Library for Successive Cancellation Decoding of Polar Codes
Error Correction Code decoding algorithms for consumer products such as Internet of Things (IoT) devices are usually implemented as dedicated hardware circuits. As processors are becoming increasingly powerful and energy efficient, there is now a strong desire to perform this processing in software to reduce production costs and time to market. The recently introduced family of Successive Cancellation decoders for Polar codes has been shown in several research works to efficiently leverage the ubiquitous SIMD units in modern CPUs, while offering strong potentials for a wide range of optimizations. The P-EDGE environment introduced in this paper, combines a specialized skeleton generator and a building blocks library routines to provide a generic, extensible Polar code exploration workbench. It enables ECC code designers to easily experiments with combinations of existing and new optimizations, while delivering performance close to state-of-art decoders.
KeywordsError correction codes Polar codes Successive cancellation decoding Generic programming Code generation Domain specific language SIMDization
This study has been carried out with financial support from the French State, managed by the French National Research Agency (ANR) in the frame of the “Investments for the future” Programme IdEx Bordeaux - CPU (ANR-10-IDEX-03-02). The authors would also like to thank Guillaume Berhault for the helpful discussions.
- 3.Berrou, C., Glavieux, A., Thitimajshima, P.: Near shannon limit error-correcting coding and decoding: Turbo-codes. 1. In: IEEE International Conference on Communications, 1993. ICC 1993 Geneva. Technical Program, Conference Record, vol. 2, pp. 1064–1070, May 1993Google Scholar
- 4.Gallager, R.G.: Low-density parity-check codes (1963)Google Scholar
- 5.Giard, P., Sarkis, G., Thibeault, C., Gross, W.: Fast software polar decoders. In: 2014 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP), pp. 7555–7559, May 2014Google Scholar
- 7.Le Gal, B., Leroux, C., Jego, C.: Software polar decoder on an embedded processor. In: Proceedings of the IEEE International Workshop on Signal Processing Systems (SIPS 2014), pp. 1–6. Belfast, October 2014Google Scholar
- 9.MacKay, D.J.: Good error-correcting codes based on very sparse matrices (1999)Google Scholar
- 11.Sarkis, G., Giard, P., Thibeault, C., Gross, W.: Autogenerating software polar decoders. In: 2014 IEEE Global Conference on Signal and Information Processing (GlobalSIP), pp. 6–10 (2014)Google Scholar
- 14.Spampinato, D.G., Püschel, M.: A basic linear algebra compiler. In: Proceedings of Annual IEEE/ACM International Symposium on Code Generation and Optimization, pp. 23:23–23:32, CGO 2014. ACM, New York (2014). http://doi.acm.org/10.1145/2544137.2544155
- 15.Stroustrup, B.: The C++ Programming Language, 4th edn. Addison-Wesley Professional, Boston (2013)Google Scholar
- 16.Treibig, J., Hager, G.: Introducing a performance model for bandwidth-limited loop kernels. CoRR abs/0905.0792 (2009). http://arxiv.org/abs/0905.0792
- 17.Walter, J., Koch, M.: ublas. www.boost.org/libs/numeric
- 18.Whaley, R.C., Petitet, A., Dongarra, J.: Automated empirical optimizations of software and the atlas project 27(1–2), 3–35 (2001)Google Scholar
- 19.Williams, S., Waterman, A., Patterson, D.: Roofline: an insightful visual performance model for multicore architectures. Commun. 52(4), 65–76. ACM (2009). http://doi.acm.org/10.1145/1498765.1498785