Skip to main content
Log in

A low level component model easing performance portability of HPC applications

  • Published:
Computing Aims and scope Submit manuscript

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.

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
Fig. 8
Fig. 9
Fig. 10
Fig. 11

Similar content being viewed by others

References

  1. Szyperski C (2002) Component software: beyond object-oriented programming. Addison-Wesley, Boston

    Google Scholar 

  2. Barbara C, Gabriele J, van der Ruud P (2007) Using OpenMP: portable shared memory parallel programming (scientific and engineering computation). MIT Press, Cambridge

    Google Scholar 

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

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

    Google Scholar 

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

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

    Article  Google Scholar 

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

    Google Scholar 

  8. Benkner S, Pllana S, Larsson J (2011) PEPPHER: efficient and productive usage of hybrid computing systems. IEEE Micro 31(5):28–41

    Article  Google Scholar 

  9. Gamma E, Helm R, Johnson R, Vlissides J (1995) Design patterns: elements of reusable object-oriented software. Addison-Wesley, Boston

    Google Scholar 

  10. Object Management Group (2008) Common object request broker architecture specification, version 3.1, part 3: CORBA component model

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

    Google Scholar 

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

    Google Scholar 

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

  14. Bigot J, Pérez C (2010) Enabling connectors in hierarchical component models. INRIA, RR-7204

  15. McCabe TJ (1976) A complexity measure. IEEE Trans Softw Eng 4:308–320

    Article  MathSciNet  Google Scholar 

Download references

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

Authors

Corresponding author

Correspondence to Christian Pérez.

Rights and permissions

Reprints 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

Download citation

  • Received:

  • Accepted:

  • Published:

  • Issue Date:

  • DOI: https://doi.org/10.1007/s00607-013-0368-3

Keywords

Mathematics Subject Classification

Navigation