Skip to main content
Log in

Efficient code development for improving execution performance in high-performance computing centers

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

Abstract

Thanks to high-performance computing (HPC), it is possible to solve all kinds of highly complex projects from multiple scientific disciplines that require computationally intensive tasks to be undertaken and which otherwise could not be addressed. Unfortunately, since the development of parallel codes requires highly specific knowledge, it can become a challenge for beginners and non-expert programmers, especially when it comes to making adequate and efficient use of the available computing resources. To this end, we developed a transcompiler for helping researchers and inexperienced users who do not have the necessary skills in the use of parallel programming, and aimed at improving the performance of their HPC routines and tasks. Current efforts are focused on an additional module for optimizing code fragments in order to reduce their running times. In order to achieve this, twenty-six software techniques were selected from the literature to be integrated into this new module, all of them aimed at improving execution times of HPC programs by directly writing efficient code. Their effectiveness is analyzed and discussed in the current manuscript through a complete set of tests designed and conducted to measure and evaluate benefits achieved when applying these techniques.

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
Fig. 7

References

  1. CénitS: Extremadura Supercomputing, Technological Innovation and Research Center. http://www.cenits.es (2019)

  2. The OpenMP Application Program Interface specification for parallel programming. http://openmp.org (2019)

  3. Corral-García J, González-Sánchez JL, Pérez-Toledano MA (2016) Towards automatic parallelization of sequential programs and efficient use of resources in HPC centers. In: International Conference on High Performance Computing Simulation (HPCS), pp 947–954

  4. GCC, the GNU compiler collection. https://gcc.gnu.org (2018)

  5. Java Compiler Compiler (JavaCC). The Java parser generator. https://javacc.org (2018)

  6. ISO. Syntactic metalanguage. Extended BNF. ISO (vol. ISOIEC 14977:1996, pp 12), International Organization for Standardization, Geneva, Switzerland (1996)

  7. Pereira R, Couto M, Ribeiro F, Rua R, Cunha J, Fernandes JP, Saraiva J (2017) Energy efficiency across programming languages: how do energy, time, and memory relate? In: Proceedings of the 10th ACM SIGPLAN International Conference on Software Language Engineering, SLE 2017. ACM, New York, pp 256–267

  8. Abdulsalam S, Lakomski D, Gu Q, Jin T, Zong Z (2014) Program energy efficiency: the impact of language, compiler and implementation choices. In: International Green Computing Conference, pp 1–6

  9. Agner Fog (2018) Optimizing software in C++: an optimization guide for Windows, Linux and Mac platforms. Copenhagen University College of Engineering

  10. Goldthwaite Lois (2006) Technical report on C++ performance. ISO/IEC PDTR, 18015

  11. Sloss Andrew, Symes Dominic, Wright Chris (2004) ARM system developer’s guide: designing and optimizing system software. Elsevier, Amsterdam

    Google Scholar 

  12. Guntheroth Kurt (2016) Optimized C++: proven techniques for heightened performance. O’Reilly Media Inc., Sebastopol

    Google Scholar 

  13. Malviya Neeta, Khunteta Ajay (2015) Code optimization using code purifier. Int J Comput Sci Inf Technol (IJCSIT) 6(5):4753–4757

    Google Scholar 

  14. Gupta Nitika, Seth Nistha, Verma Prabhat (2015) Optimal code compiling in C. Int J Comput Sci Inf Technol (IJCSIT) 6(3):2050–2057

    Google Scholar 

  15. Cooper Keith D, Mckinley Kathryn S, Torczon L (1998) Compiler-based code-improvement techniques

  16. Lee Michael E (2018) Optimization of computer programs in C. http://leto.net/docs/C-optimization.php. Accessed Nov 2019

  17. Ghosh K (2018) Writing efficient C and C code optimization. https://www.codeproject.com/Articles/6154/Writing-Efficient-C-and-C-Code-Optimization. Accessed Nov 2019

  18. Isensee P (2018) C++ optimization strategies and techniques. http://www.tantalon.com/pete/cppopt/main.htm. Accessed Nov 2019

  19. Kim D, Hong JE, Yoon I, Lee SH (2016) Code refactoring techniques for reducing energy consumption in embedded computing environment. In: Cluster computing

  20. Park JJ, Hong JE, Lee SH (2014) Investigation for software power consumption of code refactoring techniques. In: SEKE, pp 717–722

  21. Gottschalk M, Jelschen J, Winter A (2013) Energy-efficient code by refactoring. In: Softwaretechnik-Trends, vol 33, no 2

  22. Kulkarni S, Cavazos J (2012) Mitigating the compiler optimization phase-ordering problem using machine learning. In: Proceedings of the ACM International Conference on Object Oriented Programming Systems Languages and Applications, OOPSLA ’12. Association for Computing Machinery, New York, pp 147–162

  23. Cavazos J, Fursin G, Agakov F, Bonilla E, O’Boyle MFP, Temam O (2007) Rapidly selecting good compiler optimizations using performance counters. In: International Symposium on Code Generation and Optimization (CGO’07), pp 185–197

  24. Tartara M, Crespi Reghizzi S (2013) Continuous learning of compiler heuristics. ACM Trans Archit Code Optim 9(4):1–25

    Article  Google Scholar 

  25. Kelefouras Vasilios, Djemame Karim (2019) A methodology correlating code optimizations with data memory accesses, execution time and energy consumption. J Supercomput 75(10):6710–6745

    Article  Google Scholar 

  26. NASA/Ames Research Center/NAS (United States). 32nd spot in TOP500 Supercomputer Sites, 54th edn. https://www.top500.org/site/48408. Nov 2019

  27. Total Exploration Production (France). 41st spot in TOP500 Supercomputer Sites, 54th edn. https://www.top500.org/site/49546. Nov 2019

  28. Government (United States). 62nd and 63rd spot in TOP500 Supercomputer Sites, 54th edn. https://www.top500.org/site/50046. Nov 2019

  29. DOE/SC/Pacific Northwest National Laboratory (United States). 103rd spot in TOP500 Supercomputer Sites, 54th edn. https://www.top500.org/site/48611. Nov 2019

  30. Air Force Research Laboratory (United States). 386th spot in TOP500 Supercomputer Sites, 54th edn. https://www.top500.org/site/49284. Nov 2019

  31. Clemson University (United States). 392th spot in TOP500 Supercomputer Sites, 54th edn. https://www.top500.org/site/50100. Nov 2019

  32. National Center for Atmospheric Research (NCAR) (United States). 439th spot in TOP500 Supercomputer Sites, 54th edn. https://www.top500.org/site/48418. Nov 2019

  33. Service Provider T (China). 485th and 492nd spot in TOP500 Supercomputer Sites, 54th edn. https://www.top500.org/site/50329. Nov 2019

  34. Top 500 Supercomputer Sites. https://www.top500.org (2018)

  35. Yoo Andy B, Jette Morris A, Grondona M (2003) Slurm: simple linux utility for resource management. In: Workshop on Job Scheduling Strategies for Parallel Processing. Springer, Berlin, pp 44–60

Download references

Acknowledgements

This research is partly financed by the European Union through the European Regional Development Fund (ERDF) Programme: Extremadura Operational Programme 2014–2020, Thematic objective 1: Research and Innovation, and Thematic Objective 2: Information and communication technologies. Ref. 2018.14.02.332A.444.00, CultivData Project. This work was also supported in part by the European Regional Development Fund and the Regional Ministry of Economy, Science and Digital Agenda of the Junta of Extremadura under project GR18195. This work has also been partially subsidized by the Government of Spain (Ministry of Science, Innovation and Universities, RTI2018-094591-B-I00) with the contribution of the ERDF.

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Javier Corral-García.

Ethics declarations

Conflict of interest

The authors declare that they have no conflict of interest.

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

Corral-García, J., Lemus-Prieto, F. & Pérez-Toledano, MÁ. Efficient code development for improving execution performance in high-performance computing centers. J Supercomput 77, 3261–3288 (2021). https://doi.org/10.1007/s11227-020-03382-z

Download citation

  • Published:

  • Issue Date:

  • DOI: https://doi.org/10.1007/s11227-020-03382-z

Keywords

Navigation