Abstract
Scientific applications are getting increasingly complex, e.g., to improve their accuracy by taking into account more phenomena. Meanwhile, computing infrastructures are continuing their fast evolution. Thus, software engineering is becoming a major issue to offer ease of development, portability and maintainability while achieving high performance. Component based software engineering offers a promising approach that enables the manipulation of the software architecture of applications. However, existing models do not provide an adequate support for performance portability of HPC applications. This paper proposes a low level component model (L\(^2\)C) that supports inter-component interactions for typical scenarios of high performance computing, such as process-local shared memory and function invocation (C++ and Fortran), MPI, and Corba. To study the benefits of using L\(^2\)C, this paper walks through an example of stencil computation, i.e. a structured mesh Jacobi implementation of the 2D heat equation parallelized through domain decomposition. The experimental results obtained on the Grid’5000 testbed and on the Curie supercomputer show that L\(^2\)C can achieve performance similar to that of native implementations, while easing performance portability.
Similar content being viewed by others
Explore related subjects
Discover the latest articles, news and stories from top researchers in related subjects.References
Szyperski C (2002) Component software: beyond object-oriented programming. Addison-Wesley, Boston
Barbara C, Gabriele J, van der Ruud P (2007) Using OpenMP: portable shared memory parallel programming (scientific and engineering computation). MIT Press, Cambridge
Wienke S, Paul Springer P, Terboven C, An May D (2012) OpenACC—first experiences with real-world applications. Euro-Par (2012) Parallel Processing, Rhodes Island, Greece
Kale LV, Bohm E et al (2008) Programming Petascale applications with charm++ and AMPI. Petascale computing: algorithms and applications. Chapman & Hall CRC Press, Boca Raton
Coarfa C, Dotsenko Y, Mellor-Crummey J, Cantonnet F, El-Ghazawi T, Mohanti A, Yao Y, Chavarra-Miranda D (2005) An evaluation of global address space languages: co-array fortran and unified parallel C. In: Proc. of the 10\(^{th}\) ACM SIGPLAN symposium on principles and practice of parallel programming (PPoPP’05). ACM, New York, pp 36–47
Du P, Weber R, Luszczek P, Tomov S, Peterson G, Dongarra J (2012) From CUDA to OpenCL: towards a performance-portable solution for multi-platform GPU programming. Parallel Comput 8:391–407
Augonnet C, Thibault S, Namyst R, Wacrenier P-A (2011) StarPU: a unified platform for task scheduling on heterogeneous multicore architectures. Concurr Comput Pract Exp Spec Iss Euro-Par 2009 23:187–198
Benkner S, Pllana S, Larsson J (2011) PEPPHER: efficient and productive usage of hybrid computing systems. IEEE Micro 31(5):28–41
Gamma E, Helm R, Johnson R, Vlissides J (1995) Design patterns: elements of reusable object-oriented software. Addison-Wesley, Boston
Object Management Group (2008) Common object request broker architecture specification, version 3.1, part 3: CORBA component model
Baude F, Caromel D, Dalmasso C, Danelutto M, Getov V, Henrio L, Pérez C (2009) GCM: a grid extension to FRACTAL for autonomous distributed components. Spec Issue Ann Telecommun Softw Compon Fract Initiat 64(1):5
Allan BA, Armstrong R, Bernholdt DE, Bertrand F, Chiu K, Dahlgren TL, Damevski K, Elwasif WR, Epperly TGW, Govindaraju M, Katz DS, Kohl JA, Krishnan M, Kumfert G, Larson JW, Lefantzi S, Lewis MJ, Malony AD, Mclnnes LC, Nieplocha J, Norris B, Parker SG, Ray J, Shende S, Windus TL, Zhou S (2006) A Component Architecture for High-Performance Scientific Computing. Int J High Perform Comput Appl 20(2):163–202
Bigot J, Pérez C (2011) High Performance Composition Operators in Component Models, vol. 11, pp. 182–201. doi:10.3233/978-1-60750-803-8-182
Bigot J, Pérez C (2010) Enabling connectors in hierarchical component models. INRIA, RR-7204
McCabe TJ (1976) A complexity measure. IEEE Trans Softw Eng 4:308–320
Acknowledgments
This work has been supported by the PRACE-2IP project of the European Community’s Seventh Framework Programme (FP7/2007–2013), with grant agreement n\(^\circ \)RI-283493, in particular to access the Curie supercomputer. This work has also used the French Grid’5000 experimental testbed, being developed under the INRIA ALADDIN development action with support from CNRS, RENATER, several Universities, and other funding bodies (see https://www.grid5000.fr).
Author information
Authors and Affiliations
Corresponding author
Rights and permissions
About this article
Cite this article
Bigot, J., Hou, Z., Pérez, C. et al. A low level component model easing performance portability of HPC applications. Computing 96, 1115–1130 (2014). https://doi.org/10.1007/s00607-013-0368-3
Received:
Accepted:
Published:
Issue Date:
DOI: https://doi.org/10.1007/s00607-013-0368-3