Skip to main content
Log in

Legacy code and parallel computing: updating and parallelizing a numerical model

  • Published:
The Journal of Supercomputing Aims and scope Submit manuscript

Abstract

In this paper, we present several important details in the process of legacy code parallelization, mostly related to the problem of maintaining numerical output of a legacy code while obtaining a balanced workload for parallel processing. Since we maintained the non-uniform mesh imposed by the original finite element code, we have to develop a specially designed data distribution among processors so that data restrictions are met in the finite element method. In particular, we introduce a data distribution method that is initially used in shared memory parallel processing and obtain better performance than the previous parallel program version. Besides, this method can be extended to other parallel platforms such as distributed memory parallel computers. We present results including several problems related to performance profiling on different (development and production) parallel platforms. The use of new and old parallel computing architectures leads to different behavior of the same code, which in all cases provides better performance in multiprocessor hardware.

This is a preview of subscription content, log in via an institution to check access.

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Fig. 1
Fig. 2
Fig. 3
Fig. 4
Fig. 5
Fig. 6

Similar content being viewed by others

References

  1. Ansari SU, Hussain M, Mazhar S, Manzoor T, Siddiqui KJ, Abid M, Jamal H (2017) Mesh partitioning and efficient equation solving techniques by distributed finite element methods: a survey. Arch Comput Methods Eng 26(1):1–16

    Article  MathSciNet  Google Scholar 

  2. Bermúdez A, López X, Vázquez-Cendón ME (2017) Finite volume methods for multi-component Euler equations with source terms. Comput Fluids 156:113–134

    Article  MathSciNet  Google Scholar 

  3. Brainerd WS (2015) Guide to Fortran 2008 Programming, 2nd edn. Springer, Berlin

    Book  Google Scholar 

  4. Feng D, Tsolakis C, Chernikov AN, Chrisochoides NP (2017) Scalable 3D hybrid parallel Delaunay image-to-mesh conversion algorithm for distributed shared memory architecture. Comput Aided Des 85:10–19

    Article  Google Scholar 

  5. Flynn MJ (1972) Some computer organizations and their effectiveness. IEEE Trans Comput C 21(9):948–960. https://doi.org/10.1109/TC.1972.5009071

    Article  MATH  Google Scholar 

  6. Hussain M, Abid M, Ahmad M, Hussain SF (2013) A parallel 2D stabilized finite element method for Darcy flow on distributed systems. World Appl Sci J 27(9):1119–1125

    Google Scholar 

  7. ISO, ISO/IEC 1539-1:2018 Information technology - Programming languages - Fortran - Part 1: Base language

  8. Kirk DB, Wen-Mei WH (2012) Programming massively parallel processors: a hands-on approach, 2nd edn. Morgan Kaufmann, Burlington (ISBN 978-0-12-415992-1)

    Google Scholar 

  9. Kong F, Stogner RH, Gaston DR, Peterson JW, Permann CJ, Slaughter AE, Martineau RC (2018) A general-purpose hierarchical mesh partitioning method with node balancing strategies for large-scale numerical simulations. In: 9th Workshop on Latest Advances in Scalable Algorithms for Large-Scale Systems, the International Conference for High Performance Computing, Networking, Storage, and Analysis, SC 18, Nov. 11–16, Kay Bailey Hutchison Convention Center, Dallas, TX, USA

  10. Krommydas K, Sathre P, Sasanka R, Feng W (2018) A framework for auto-parallelization and code generation: an integrative case study with legacy FORTRAN codes. In: Proceedings of the 47th International Conference on Parallel Processing, ICPP 2018, Eugene, OR, USA. https://doi.org/10.1145/3225058.3225143

  11. Larwood BG, Weatherill NP, Hassan O, Morgan K (2003) Domain Decomposition approach for parallel unstructured mesh generation. Int J Numer Methods Eng 58(2):177–188

    Article  Google Scholar 

  12. LaSalle D, Karypis G (2013) Multi-threaded graph partitioning. In: 27th IEEE International Parallel and Distributed Processing Symposium (IPDPS), Boston. MA, United States. https://doi.org/10.1109/IPDPS.2013.50

  13. Li X, Yu W, Liu C (2017) Geometry-aware partitioning of complex domains for parallel quad meshing. Comput Aided Des 85:20–33

    Article  Google Scholar 

  14. Message Passing Interface Forum, MPI: A Message-Passing Interface Standard Version 3.1, 2015

  15. Metcalf M, Reid J, Cohen M (2004) Fortran 95/2003 explained. Oxford University Press, Oxford

    MATH  Google Scholar 

  16. Nguyen C, Rhodes PJ (2018) TIPP: parallel Delaunay triangulation for large-scale datasets. In: SSDBM ’18 Proceedings of the 30th International Conference on Scientific and Statistical Database Management, Bozen-Bolzano, Italy. https://doi.org/10.1145/3221269.3223034

  17. OpenMP Architecture Review Board, OpenMP Application Programming Interface, Version 5.0, Nov. 2018. https://www.openmp.org/specifications/. Accessed Jan 2020

  18. Pacheco P (2011) An introduction to parallel programming. Morgan Kaufmann, Burlington

    Google Scholar 

  19. Roig B (2007) One-step Taylor Galerkin methods for convection diffusion problems. Comput Appl Math 204:95–101

    Article  MathSciNet  Google Scholar 

  20. Shang Z (2013) Performance analysis of large scale parallel CFD computing based on Code Saturne. Comput Phys Commun 184:381–386

    Article  Google Scholar 

  21. Shang Z (2014) Impact of mesh portioning methods in CFD for large scale parallel computing. Comput Fluids 103:1–5

    Article  Google Scholar 

  22. Soumendra NK, Kiran P (2008) Finite volume model for shallow water equations with improved treatment of source terms. J Hydraul Eng 134:231–242

    Article  Google Scholar 

  23. Sprenger S, Zeuch S, Leser U (2018) Exploiting automatic vectorization to employ SPMD on SIMD registers. In: 2018 IEEE 34th International Conference on Data Engineering Workshops (ICDEW), Paris, pp 90–95, https://doi.org/10.1109/ICDEW.2018.00022

  24. Tinetti FG, Méndez M, De Giusti A (2013) Restructuring Fortran legacy applications for parallel computing in multiprocessors. J Supercomput 64(2):638–659. https://doi.org/10.1007/s11227-012-0863-x

    Article  Google Scholar 

  25. Tinetti FG, Perez MJ, Fraidenraich A, Altenberg AE (2018) Experiences in parallelizing a numerical model. In: International Conference on Parallel and Distributed Processing Techniques and Applications, PDPTA’18, Las Vegas, NV, July 30–Aug. 2, ISBN: 1-60132-487-1, CSREA Press, pp 152–157

  26. Zienkiewicz OC, Taylor RL (2005) The finite element method, vol 3, 6th edn. Butterworth-Heinemann, Oxford

    MATH  Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Fernando G. Tinetti.

Additional information

Publisher's Note

Springer Nature remains neutral with regard to jurisdictional claims in published maps and institutional affiliations.

Rights and permissions

Reprints and permissions

About this article

Check for updates. Verify currency and authenticity via CrossMark

Cite this article

Tinetti, F.G., Perez, M.J., Fraidenraich, A. et al. Legacy code and parallel computing: updating and parallelizing a numerical model. J Supercomput 76, 5636–5654 (2020). https://doi.org/10.1007/s11227-020-03172-7

Download citation

  • Published:

  • Issue Date:

  • DOI: https://doi.org/10.1007/s11227-020-03172-7

Keywords

Navigation