, Volume 96, Issue 12, pp 1115–1130 | Cite as

A low level component model easing performance portability of HPC applications

  • Julien Bigot
  • Zhengxiong Hou
  • Christian Pérez
  • Vincent Pichon


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.


HPC Component models Performance portability  Curie supercomputer Grid’5000 

Mathematics Subject Classification

68N99 68W10 68M99 



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


  1. 1.
    Szyperski C (2002) Component software: beyond object-oriented programming. Addison-Wesley, BostonGoogle Scholar
  2. 2.
    Barbara C, Gabriele J, van der Ruud P (2007) Using OpenMP: portable shared memory parallel programming (scientific and engineering computation). MIT Press, CambridgeGoogle Scholar
  3. 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, GreeceGoogle Scholar
  4. 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 RatonGoogle Scholar
  5. 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–47Google Scholar
  6. 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–407CrossRefGoogle Scholar
  7. 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–198Google Scholar
  8. 8.
    Benkner S, Pllana S, Larsson J (2011) PEPPHER: efficient and productive usage of hybrid computing systems. IEEE Micro 31(5):28–41CrossRefGoogle Scholar
  9. 9.
    Gamma E, Helm R, Johnson R, Vlissides J (1995) Design patterns: elements of reusable object-oriented software. Addison-Wesley, BostonGoogle Scholar
  10. 10.
    Object Management Group (2008) Common object request broker architecture specification, version 3.1, part 3: CORBA component modelGoogle Scholar
  11. 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):5Google Scholar
  12. 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–202Google Scholar
  13. 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. 14.
    Bigot J, Pérez C (2010) Enabling connectors in hierarchical component models. INRIA, RR-7204Google Scholar
  15. 15.
    McCabe TJ (1976) A complexity measure. IEEE Trans Softw Eng 4:308–320CrossRefMathSciNetGoogle Scholar

Copyright information

© Springer-Verlag Wien 2013

Authors and Affiliations

  • Julien Bigot
    • 1
  • Zhengxiong Hou
    • 2
  • Christian Pérez
    • 2
  • Vincent Pichon
    • 2
  1. 1.CEA, Maison de la Simulation, USR 3441Gif-sur-Yvette CedexFrance
  2. 2.InriaLyon CedexFrance

Personalised recommendations