Abstract
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.
Similar content being viewed by others
Notes
References
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–12
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, Wiley
Allan BA, Armstrong RC et al (2002) The CCA core specification in a distributed memory SPMD framework. Concurr Comput 14(5):323–345
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)
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:28
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:27
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–9
Bernholdt DE, Allan BA et al (2006) A component architecture for high-performance scientific computing. Int J High Perform Comput Appl 20(2):163–202
Berzins M (2012) Status of release of the Uintah computational framework. Technical Report, Scientific Computing and Imaging Institute, University of Utah
Borkar S, Chien AA (2011) The future of microprocessors. Commun ACM 54(5):67–77
Bosilca G, Bouteiller A et al (2012) DAGuE: A generic distributed DAG engine for high performance computing. Parallel Comput 38(1–2):37–51
Buis S, Piacentini A et al (2006) Palm: a computational framework for assembling high-performance computing applications. Concurr Comput 18(2):231–245
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)
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:11
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–10
Dongarra J, van der Steen A (2012) High-performance computing systems. Acta Numerica 21:379–474
Dos Reis G, Järvi J (2005) What is generic programming? In: Proceedings of the 1st international workshop on library-centric software design (LCSD)
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–227
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–21
Hager G, Wellein G (2010) Introduction to high performance computing for scientists and engineers, CRC Press, Boca Raton, FL
Hill C, DeLuca C et al (2004) The architecture of the earth system modeling framework. Comput Sci Eng 6(1):18–28
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 dynamics
Keyes D, McInnes LC et al (2011) Multiphysics simulation. Technical Report ANL/MCS-TM-321, Argonne National Laboratory
Kharrat D, Quadri S (2005) Self-registering plug-ins. In: Proceedings of the 18th Canadian conference on electrical and computer engineering (CCECE), pp 1324 –1327
Kwok YK, Ahmad I (1999) Static scheduling algorithms for allocating directed task graphs to multiprocessors. ACM Comput Surv 31(4)
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–538
Logg A, Mardal KA et al (2012) Automated solution of differential equations by the finite element method, Lecture Notes in Computational Science and Engineering, Springer
Magoules F (2008) Mesh partitioning techniques and domain decomposition methods, Saxe-Coburg Publications, UK
Miczo A (2003) Digital logic testing and simulation, Wiley, New York
Miller A (2010) The task graph pattern. In: Proceedings of the 2nd workshop on parallel programming patterns (ParaPLoP), pp 8:1–8:7
Philip B, Clarno KT et al (2010) Software design document for the AMP nuclear fuel performance code. Technical Report, Oak Ridge National Laboratory
Quintino T (2008) A component environment for high-performance scientific computing, PhD thesis, Katholieke Universiteit Leuven
Siek JG, Lee LQ et al (2001) The Boost Graph Library. Addison-Wesley Professional, Reading, MA
Stroustrup B (2012) Software development for infrastructure. Computer 45(1):47–58
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)
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)
Wesseling P (2001) Principles of computational fluid dynamics, Springer, Berlin
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–79
Acknowledgments
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.
Author information
Authors and Affiliations
Corresponding author
Rights and permissions
About this article
Cite this article
Weinbub, J., Rupp, K. & Selberherr, S. ViennaX: a parallel plugin execution framework for scientific computing. Engineering with Computers 30, 651–668 (2014). https://doi.org/10.1007/s00366-013-0314-1
Received:
Accepted:
Published:
Issue Date:
DOI: https://doi.org/10.1007/s00366-013-0314-1