Engineering with Computers

, Volume 30, Issue 4, pp 651–668 | Cite as

ViennaX: a parallel plugin execution framework for scientific computing

  • Josef Weinbub
  • Karl Rupp
  • Siegfried Selberherr
Original Article


We present the free open source plugin execution framework ViennaX for modularizing and parallelizing scientific simulations. In general, functionality is abstracted by the notion of a task, which is implemented as a plugin. The plugin system facilitates the utilization of both, already available functionality as well as new implementations. Each task can define arbitrary data dependencies which are used by ViennaX to build a task graph. The framework supports the execution of this dependence graph based on the message passing interface in either a serial or a parallel fashion. The applied modular approach allows for defining highly flexible simulations, as plugins can be easily exchanged. The framework’s general design as well as implementation details are discussed. Applications based on the Mandelbrot set and the solution of a partial differential equation are investigated, and performance results are shown.


Task graph Parallel execution Plugin system software reuse Framework 



This work has been supported by the European Research Council (ERC) through the grant #247056 MOSILSPIN. Additionally, this work has been partially supported by the HPC-EUROPA2 project (project number: 228398) with the support of the European Commission—Capacities Area—Research Infrastructures. This work made use of the facilities of HECToR, the UK’s national high-performance computing service, which is provided by UoE HPCx Ltd at the University of Edinburgh, Cray Inc and NAG Ltd, and funded by the Office of Science and Technology through EPSRC’s High End Computing Programme.


  1. 1.
    Agrawal K, Leiserson CE et al (2010) Executing task graphs using work-stealing. In: Proceedings of the 24th IEEE international symposium on parallel and distributed processing (IPDPS), pp 1–12Google Scholar
  2. 2.
    Aldinucci M, Danelutto M et al (2013) FastFlow: high-level and efficient streaming on multi-core. In: Programming multi-core and many-core computing systems, parallel and distributed computing, WileyGoogle Scholar
  3. 3.
    Allan BA, Armstrong RC et al (2002) The CCA core specification in a distributed memory SPMD framework. Concurr Comput 14(5):323–345CrossRefzbMATHGoogle Scholar
  4. 4.
    Armstrong R, Gannon D et al (1999) Toward a common component architecture for high-performance scientific computing. In: Proceedings of the 8th IEEE international symposium on high performance distributed computing (HPDC)Google Scholar
  5. 5.
    Bangerth W, Burstedde C et al (2011) Algorithms and data structures for massively parallel generic adaptive finite element codes. ACM Trans Math Softw 38(2):14:1–14:28MathSciNetCrossRefGoogle Scholar
  6. 6.
    Bangerth W, Hartmann R et al (2007) deal.II–a general-purpose object-oriented finite element library. ACM Trans Math Softw 33(4):24:1–24:27MathSciNetCrossRefGoogle Scholar
  7. 7.
    Bassetti F, Brown D et al (1998) Overture: an object-oriented framework for high performance scientific computing. In: Proceedings of the 1998 ACM/IEEE conference on supercomputing, pp 1–9Google Scholar
  8. 8.
    Bernholdt DE, Allan BA et al (2006) A component architecture for high-performance scientific computing. Int J High Perform Comput Appl 20(2):163–202CrossRefGoogle Scholar
  9. 9.
    Berzins M (2012) Status of release of the Uintah computational framework. Technical Report, Scientific Computing and Imaging Institute, University of UtahGoogle Scholar
  10. 10.
    Borkar S, Chien AA (2011) The future of microprocessors. Commun ACM 54(5):67–77CrossRefGoogle Scholar
  11. 11.
    Bosilca G, Bouteiller A et al (2012) DAGuE: A generic distributed DAG engine for high performance computing. Parallel Comput 38(1–2):37–51CrossRefGoogle Scholar
  12. 12.
    Buis S, Piacentini A et al (2006) Palm: a computational framework for assembling high-performance computing applications. Concurr Comput 18(2):231–245CrossRefGoogle Scholar
  13. 13.
    de St. Germain D, McCorquodale J et al (2000) Uintah: a massively parallel problem solving environment. In: Proceedings of the 9th IEEE international symposium on high performance distributed computing (HPDC)Google Scholar
  14. 14.
    Dinan J, Larkins DB et al (2009) Scalable work stealing. In: Proceedings of the conference on high performance computing networking, storage and analysis (SC), pp 53:1–53:11Google Scholar
  15. 15.
    Dios A, Asenjo R et al (2011) High-level template for the task-based parallel wavefront pattern. In: Proceedings of the 18th international conference on high performance computing (HiPC), pp 1–10Google Scholar
  16. 16.
    Dongarra J, van der Steen A (2012) High-performance computing systems. Acta Numerica 21:379–474MathSciNetCrossRefzbMATHGoogle Scholar
  17. 17.
    Dos Reis G, Järvi J (2005) What is generic programming? In: Proceedings of the 1st international workshop on library-centric software design (LCSD)Google Scholar
  18. 18.
    Goodale T, Allen G et al (2003) The Cactus framework and toolkit. In: High performance computing for computational science–VECPAR 2002, Lecture Notes in Computer Science, vol 2565, pp 197–227Google Scholar
  19. 19.
    Govindaraju M, Head MR et al (2005) XCAT-C++: design and performance of a distributed cca framework. In: Proceedings of the 12th annual IEEE international conference on high performance computing (HiPC), pp 18–21Google Scholar
  20. 20.
    Hager G, Wellein G (2010) Introduction to high performance computing for scientists and engineers, CRC Press, Boca Raton, FLCrossRefGoogle Scholar
  21. 21.
    Hill C, DeLuca C et al (2004) The architecture of the earth system modeling framework. Comput Sci Eng 6(1):18–28CrossRefGoogle Scholar
  22. 22.
    Jasak H, Jemcov A et al (2007) OpenFOAM: a C++ library for complex physics simulations. In: Proceedings of the international workshop on coupled methods in numerical dynamicsGoogle Scholar
  23. 23.
    Keyes D, McInnes LC et al (2011) Multiphysics simulation. Technical Report ANL/MCS-TM-321, Argonne National LaboratoryGoogle Scholar
  24. 24.
    Kharrat D, Quadri S (2005) Self-registering plug-ins. In: Proceedings of the 18th Canadian conference on electrical and computer engineering (CCECE), pp 1324 –1327Google Scholar
  25. 25.
    Kwok YK, Ahmad I (1999) Static scheduling algorithms for allocating directed task graphs to multiprocessors. ACM Comput Surv 31(4)Google Scholar
  26. 26.
    Lewis MJ, Ferrari AJ et al (2003) Support for extensibility and site autonomy in the Legion grid system object model. J Parallel Distrib Comput 63(5):525–538CrossRefzbMATHGoogle Scholar
  27. 27.
    Logg A, Mardal KA et al (2012) Automated solution of differential equations by the finite element method, Lecture Notes in Computational Science and Engineering, SpringerGoogle Scholar
  28. 28.
    Magoules F (2008) Mesh partitioning techniques and domain decomposition methods, Saxe-Coburg Publications, UKGoogle Scholar
  29. 29.
    Miczo A (2003) Digital logic testing and simulation, Wiley, New YorkCrossRefGoogle Scholar
  30. 30.
    Miller A (2010) The task graph pattern. In: Proceedings of the 2nd workshop on parallel programming patterns (ParaPLoP), pp 8:1–8:7Google Scholar
  31. 31.
    Philip B, Clarno KT et al (2010) Software design document for the AMP nuclear fuel performance code. Technical Report, Oak Ridge National LaboratoryGoogle Scholar
  32. 32.
    Quintino T (2008) A component environment for high-performance scientific computing, PhD thesis, Katholieke Universiteit LeuvenGoogle Scholar
  33. 33.
    Siek JG, Lee LQ et al (2001) The Boost Graph Library. Addison-Wesley Professional, Reading, MAGoogle Scholar
  34. 34.
    Stroustrup B (2012) Software development for infrastructure. Computer 45(1):47–58CrossRefGoogle Scholar
  35. 35.
    Weinbub J, Rupp K et al (2012a) A flexible execution framework for high-performance TCAD applications. In: Proceedings of the 17th international conference on simulation of semiconductor processes and devices (SISPAD)Google Scholar
  36. 36.
    Weinbub J, Rupp K et al (2012b) Towards a free open source process and device simulation framework. In: Proceedings of the 15th international workshop on computational electronics (IWCE)Google Scholar
  37. 37.
    Wesseling P (2001) Principles of computational fluid dynamics, Springer, BerlinCrossRefGoogle Scholar
  38. 38.
    Zhang K, Damevski K et al (2004) SCIRun2: a CCA framework for high performance computing. In: Proceedings of the 9th international workshop on high-level parallel programming models and supportive environments (HIPS), pp 72–79Google Scholar

Copyright information

© Springer-Verlag London 2013

Authors and Affiliations

  • Josef Weinbub
    • 1
  • Karl Rupp
    • 2
  • Siegfried Selberherr
    • 1
  1. 1.Institute for MicroelectronicsTechnische Universität WienViennaAustria
  2. 2.Mathematics and Computer Science DivisionArgonne National LaboratoryArgonneUSA

Personalised recommendations