A Generic Approach to Efficiently Parallelize Legacy Sequential Software
Multi-core processing units have been the answer to ever increasing demand of computational power of modern software. One of the main issues with the adoption of new hardware is portability of legacy software. In this specific case, in order for legacy sequential software to maximize the exploitation of the computational benefits brought by multi-core processors, it has to undergo a parallelization effort. Although there is a common agreement and well-specified support for parallelizing sequential algorithms, there is still a lack in supporting software engineers in identifying and assessing parallelization potentials in a legacy sequential application. In this work we provide a generic parallelization approach which supports the engineering in maximizing performance gain through parallelization while minimizing the cost of the parallelization effort. We evaluate the approach on an industrial use-case at ABB Robotics.
KeywordsParallelization Legacy CUDA OpenMP
This research is partially supported by the Knowledge Foundation through the MOMENTUM project (http://www.es.mdh.se/projects/458-MOMENTUM).
- 1.E. Chovancova, J. Mihal’ov, Load balancing strategy for multicore systems, in Proceedings of ICETA (2015), pp. 1–6Google Scholar
- 2.M.A. Kiefer, K. Molitorisz, J. Bieler, W.F. Tichy, Parallelizing a real-time audio application – a case study in multithreaded software engineering, in Proceedings of IPDPS (2015), pp. 405–414Google Scholar
- 3.L. Bass, P. Clements, R. Kazman, Software Architecture in Practice, 3rd edn. (Addison-Wesley Professional, Reading, 2012)Google Scholar
- 4.H. Vandierendonck, T. Mens, Techniques and tools for parallelizing software. IEEE Softw. 29, 22–25 (2012)Google Scholar
- 5.Intel, Threading Methodology: Principles and Practices (Intel Corporation, Mountain View, 2003)Google Scholar
- 6.V. Tovinkere, A methodology for threading serial applications. Intel White paper (2006)Google Scholar
- 7.B. Jun-feng, Application development methods based on multi-core systems, in 2012 International Conference on Industrial Control and Electronics Engineering (2012), pp. 858–862Google Scholar
- 8.C. Christmann, J. Falkner, A. Weisbecker, A methodology for porting sequential software to the multicore platform considering technical and economical aspects of software parallelization, in Proceedings of ICSOFT-EA (2014), pp. 551–559Google Scholar
- 9.Nvidia, CUDA C best practices guide. DG-05603-001_v8.0 (2017)Google Scholar
- 12.G.M. Amdahl, Validity of the single processor approach to achieving large scale computing capabilities, in Readings in Computer Architecture (Morgan Kaufmann, San Francisco, 2000), pp. 79–81Google Scholar