The Journal of Supercomputing

, Volume 64, Issue 2, pp 638–659 | Cite as

Restructuring Fortran legacy applications for parallel computing in multiprocessors

  • Fernando G. Tinetti
  • Mariano Méndez
  • Armando De Giusti


As it is widely known, multi-core computers are broadly used these days, and automatic parallelization of sequential programs is still a challenge. In this context, we propose a set of code transformations to be applied automatically by a tool in order to transform sequential legacy systems into their parallel version. We implement these transformations by applying a lightweight source code analysis based on rewritable AST (Abstract Syntax Tree). Since it is not always possible to automatically parallelize the code, we also implemented some specific analyses in order to report possible changes that would allow specific parallelization. Additionally, we present some examples in which these transformations were conducted and the corresponding performance experiments.


High performance computing Parallel computing Legacy applications Software restructuring Fortran 


  1. 1.
    American National Standards Institute, X3. 9-1966 (1996) American National Standards Institute Incorporated, New York Google Scholar
  2. 2.
    American National Standards Institute, X3. 9-1978 (1978) American National Standards Institute, New York Google Scholar
  3. 3.
    American National Standards Institute (1992) American national standard for programming language, FORTRAN—extended: ANSI X3.198-1992: ISO/IEC 1539: 1991. American National Standards Institute Google Scholar
  4. 4.
    Arnold RS (1989) Software restructuring. Proc IEEE 77(4):607–617 CrossRefGoogle Scholar
  5. 5.
    Backus J (1954) The IBM 701 speedcoding system. J ACM 1(1) Google Scholar
  6. 6.
    Backus J (1978) The history of Fortran I, II, and III. ACM SIGPLAN Not 13(8) Google Scholar
  7. 7.
    Baliś B, Bubak MT, Wegiel M (2008) LGF: a flexible framework for exposing legacy codes as services. Future Gener Comput Syst 24(7) Google Scholar
  8. 8.
    Banerjee U (1997) Dependence analysis. Kluwer Academic, Dordrecht MATHGoogle Scholar
  9. 9.
    Bennett KH, Rajlich VT (2000) Software maintenance and evolution: a roadmap. In: Proceedings of the conference on the future of software engineering, Limerick, Ireland. June 2000 Google Scholar
  10. 10.
    Brooks FP (1987) No silver bullet: essence and accidents of software engineering. IEEE Comput 20(4):10–19 MathSciNetCrossRefGoogle Scholar
  11. 11.
    Chikofsky EJ, Cross JH II (1990) Reverse engineering and design recovery: a taxonomy. IEEE Softw 7(1):13–17 CrossRefGoogle Scholar
  12. 12.
    Cooper KD, Torczon L (2005) Engineering a compiler. Morgan Kaufmann, San Mateo Google Scholar
  13. 13.
    Decyk VK, Norton CD, Gardner HJ (2007) Why Fortran? Comput Sci Eng 9(4) Google Scholar
  14. 14.
    Deng Y, Wang F (2011) LAG: achieving transparent access to legacy data by leveraging grid environment. Future Gener Comput Syst 27(1) Google Scholar
  15. 15.
    Everaars CTH, Arbab F, Burger FJ (1996) Restructuring sequential Fortran code into a parallel/distributed application. In: Proc of the 1996 international conference on software maintenance. IEEE Comp Society, Los Alamitos Google Scholar
  16. 16.
    Greenough C, Worth D (2004) The transformation of legacy software: some tools and a process. RAL technical report TR-2003 012 Google Scholar
  17. 17.
    ISO, ANSI/ISO/IEC 1539-1:1997 (1997) Information technology–programming languages—Fortran. Part 1. Base language. American National Standards Institute Google Scholar
  18. 18.
    ISO, ANSI/ISO/IEC 1539-1:2004 (2004) Information technology—programming languages—Fortran. Part 1. Base language. International Organization for Standardization Google Scholar
  19. 19.
    ISO, ISO/IEC JTC 1/SC 22/WG 5/N1830 (2010) International Standard ISO/IEC DIS 1539-1, Information technology—programming languages—Fortran. Part 1. Base language, 3rd edn Google Scholar
  20. 20.
    Loh E (2010) The ideal HPC programming language. Maybe it’s Fortran. Or maybe it just doesn’t matter. Queue 8(6) Google Scholar
  21. 21.
    Maydan DE, Amarasinghe SP, Lam MS (1993) Array-data flow analysis and its use in array privatization. In: Proceedings of the 20th ACM SIGPLAN-SIGACT symp on principles of programming languages, Charleston, South Carolina, USA, March 1993, pp 2–15. CrossRefGoogle Scholar
  22. 22.
    Méndez M, Tinetti FG (2011) First steps towards a tool for legacy systems. In: XVII congreso Argentino de ciencias de la computación, UNLP, La Plata, Argentina, Oct. 2011. Available at Google Scholar
  23. 23.
    Metcalf M (2011) The seven ages of Fortran. J Comput Sci Technol 11(1):1–8. MathSciNetGoogle Scholar
  24. 24.
    OpenMP Architecture Review Board (2011) OpenMP application program Interface—version 3.1. Available at
  25. 25.
    Overbey JL, Chen N (2009) Photran 6.0 developer’s guide, December Google Scholar
  26. 26.
    Sanders R, Kelly D (2008) Dealing with risk in scientific software development. Software, IEEE Press, New York 25(4) Google Scholar
  27. 27.
    Sutter H (2005) The free lunch is over: a fundamental turn toward concurrency in software. Dr Dobb’s J 30(3).
  28. 28.
    Tinetti FG, Méndez M, Lopez MA, Labraga JC, Cajaraville PG (2011) Update and restructure legacy code for (or before) parallel processing. In: Proceedings of the 2011 international conf on parallel and distributed processing techniques and applications, vol 1, Las Vegas, USA, July 2011. CSREA Press, Las Vegas, pp 652–658 ISBN:1-60132-193-7 Google Scholar
  29. 29.
    Mishchenko MI, Zakharova NT FORTRAN codes for the computation of the bidirectional reflection function for flat particulate layers and rough surfaces. Goddard Space Flight Center Sciences and Exploration Directorate, NASA.
  30. 30.
    Thiran P, Hainaut J, Houben G, Benslimane D (2006) Wrapper-based evolution of legacy information systems. ACM Trans Softw Eng Methodol 16(4) Google Scholar
  31. 31.
    Velasco E Prácticas de métodos computacionales en física de materia condensada. II. Facultad de Ciencias, Univ Autónoma de Madrid, Spain.
  32. 32.
    Computer methods in chemical engineering, Maxwell–Boltzmann distribution function.
  33. 33.
    Eclipse—the eclipse foundation open source comm. Website.
  34. 34.
    PHORTRAN—an integrated development environment and refactoring tool for Fortran.
  35. 35.
    GCC Wiki Automatic parallelization in GCC.
  36. 36.
    Intel Corporation Automatic parallelization with Intel compilers.
  37. 37.
    The Portland Group PGI | products | PGI workstation.

Copyright information

© Springer Science+Business Media New York 2013

Authors and Affiliations

  • Fernando G. Tinetti
    • 1
    • 2
  • Mariano Méndez
    • 1
  • Armando De Giusti
    • 1
  1. 1.III-LIDI, Facultad de InformáticaUNLPLa PlataArgentina
  2. 2.Comisión de Inv. Científicas de la Prov.Buenos AiresArgentina

Personalised recommendations