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.
References
CénitS: Extremadura Supercomputing, Technological Innovation and Research Center. http://www.cenits.es (2019)
The OpenMP Application Program Interface specification for parallel programming. http://openmp.org (2019)
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
GCC, the GNU compiler collection. https://gcc.gnu.org (2018)
Java Compiler Compiler (JavaCC). The Java parser generator. https://javacc.org (2018)
ISO. Syntactic metalanguage. Extended BNF. ISO (vol. ISOIEC 14977:1996, pp 12), International Organization for Standardization, Geneva, Switzerland (1996)
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
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
Agner Fog (2018) Optimizing software in C++: an optimization guide for Windows, Linux and Mac platforms. Copenhagen University College of Engineering
Goldthwaite Lois (2006) Technical report on C++ performance. ISO/IEC PDTR, 18015
Sloss Andrew, Symes Dominic, Wright Chris (2004) ARM system developer’s guide: designing and optimizing system software. Elsevier, Amsterdam
Guntheroth Kurt (2016) Optimized C++: proven techniques for heightened performance. O’Reilly Media Inc., Sebastopol
Malviya Neeta, Khunteta Ajay (2015) Code optimization using code purifier. Int J Comput Sci Inf Technol (IJCSIT) 6(5):4753–4757
Gupta Nitika, Seth Nistha, Verma Prabhat (2015) Optimal code compiling in C. Int J Comput Sci Inf Technol (IJCSIT) 6(3):2050–2057
Cooper Keith D, Mckinley Kathryn S, Torczon L (1998) Compiler-based code-improvement techniques
Lee Michael E (2018) Optimization of computer programs in C. http://leto.net/docs/C-optimization.php. Accessed Nov 2019
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
Isensee P (2018) C++ optimization strategies and techniques. http://www.tantalon.com/pete/cppopt/main.htm. Accessed Nov 2019
Kim D, Hong JE, Yoon I, Lee SH (2016) Code refactoring techniques for reducing energy consumption in embedded computing environment. In: Cluster computing
Park JJ, Hong JE, Lee SH (2014) Investigation for software power consumption of code refactoring techniques. In: SEKE, pp 717–722
Gottschalk M, Jelschen J, Winter A (2013) Energy-efficient code by refactoring. In: Softwaretechnik-Trends, vol 33, no 2
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
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
Tartara M, Crespi Reghizzi S (2013) Continuous learning of compiler heuristics. ACM Trans Archit Code Optim 9(4):1–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
NASA/Ames Research Center/NAS (United States). 32nd spot in TOP500 Supercomputer Sites, 54th edn. https://www.top500.org/site/48408. Nov 2019
Total Exploration Production (France). 41st spot in TOP500 Supercomputer Sites, 54th edn. https://www.top500.org/site/49546. Nov 2019
Government (United States). 62nd and 63rd spot in TOP500 Supercomputer Sites, 54th edn. https://www.top500.org/site/50046. Nov 2019
DOE/SC/Pacific Northwest National Laboratory (United States). 103rd spot in TOP500 Supercomputer Sites, 54th edn. https://www.top500.org/site/48611. Nov 2019
Air Force Research Laboratory (United States). 386th spot in TOP500 Supercomputer Sites, 54th edn. https://www.top500.org/site/49284. Nov 2019
Clemson University (United States). 392th spot in TOP500 Supercomputer Sites, 54th edn. https://www.top500.org/site/50100. Nov 2019
National Center for Atmospheric Research (NCAR) (United States). 439th spot in TOP500 Supercomputer Sites, 54th edn. https://www.top500.org/site/48418. Nov 2019
Service Provider T (China). 485th and 492nd spot in TOP500 Supercomputer Sites, 54th edn. https://www.top500.org/site/50329. Nov 2019
Top 500 Supercomputer Sites. https://www.top500.org (2018)
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
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
Corresponding author
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
About this article
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
Published:
Issue Date:
DOI: https://doi.org/10.1007/s11227-020-03382-z