Formalised Composition and Interaction for Heterogeneous Structured Parallelism

Deployed through skeleton frameworks, structured parallelism yields a clear and consistent structure across platforms by distinctly decoupling computations from the structure in a parallel programme. Structured programming is a viable and effective means of providing the separation of concerns, as it subdivides a system into building blocks (modules, skids or components) that can be independently created, and then used in different systems to drive multiple functionalities. Depending on its defined semantic, each building block wraps a unit of computing function, where the valid assembly of these building blocks forms a high-level structural parallel programming model. This paper proposes a grammar to build block components to execute computational functions in heterogeneous multi-core architectures. The grammar is validated against three different families of computing models: skeleton-based, general purpose, and domain-specific. In conjunction with the protocol, the grammar produces fully instrumented code for an application suite using the skeletal framework FastFlow.

[1]  Dana Petcu,et al.  SymGrid: A Framework for Symbolic Computation on the Grid , 2007, Euro-Par.

[2]  John W. Backus,et al.  Can programming be liberated from the von Neumann style?: a functional style and its algebra of programs , 1978, CACM.

[3]  Enrique Alba,et al.  Efficient parallel LAN/WAN algorithms for optimization. The mallba project , 2006, Parallel Comput..

[4]  Murray Cole,et al.  Algorithmic Skeletons: Structured Management of Parallel Computation , 1989 .

[5]  Peter Kilpatrick,et al.  Behavioural Skeletons for Component Autonomic Management on Grids , 2007, CoreGRID Workshop - Making Grids Work.

[6]  Peter Kilpatrick,et al.  Accelerating Code on Multi-cores with FastFlow , 2011, Euro-Par.

[7]  Arch D. Robison,et al.  Structured Parallel Programming: Patterns for Efficient Computation , 2012 .

[8]  Kevin Hammond SymGrid: A Framework for Symbolic Computations on the Grid , 2007, Ninth International Symposium on Symbolic and Numeric Algorithms for Scientific Computing (SYNASC 2007).

[9]  Lindsay Bassett Introduction to JavaScript Object Notation: A To-the-Point Guide to JSON , 2015 .

[10]  Sanjay Ghemawat,et al.  MapReduce: Simplified Data Processing on Large Clusters , 2004, OSDI.

[11]  John A. W. McCall,et al.  Mapping parallel programs to heterogeneous CPU/GPU architectures using a Monte Carlo Tree Search , 2013, 2013 IEEE Congress on Evolutionary Computation.

[12]  Peter Kilpatrick,et al.  Behavioural Skeletons in GCM: Autonomic Management of Grid Components , 2008, 16th Euromicro Conference on Parallel, Distributed and Network-Based Processing (PDP 2008).

[13]  Horacio González-Vélez,et al.  Streaming Dynamic Coarse-Grained CPU/GPU Workloads with Heterogeneous Pipelines in FastFlow , 2012, 2012 IEEE 14th International Conference on High Performance Computing and Communication & 2012 IEEE 9th International Conference on Embedded Software and Systems.

[14]  Peter Kilpatrick,et al.  Autonomic management of non-functional concerns in distributed & parallel application programming , 2009, 2009 IEEE International Symposium on Parallel & Distributed Processing.

[15]  Peter Kilpatrick,et al.  Semi-formal Models to Support Program Development: Autonomic Management within Component Based Parallel and Distributed Programming , 2008, FMCO.

[16]  Riccardo Poli,et al.  Parallel genetic algorithm taxonomy , 1999, 1999 Third International Conference on Knowledge-Based Intelligent Information Engineering Systems. Proceedings (Cat. No.99TH8410).

[17]  Mehdi Goli,et al.  Autonomic behavioural framework for structural parallelism over heterogeneous multi-core systems , 2015 .

[18]  Horacio González-Vélez,et al.  Autonomic Coordination of Skeleton-Based Applications Over CPU/GPU Multi-Core Architectures , 2017, International Journal of Parallel Programming.

[19]  Peter Kilpatrick,et al.  Design patterns percolating to parallel programming framework implementation , 2014, International Journal of Parallel Programming.

[20]  Marco Danelutto,et al.  A RISC Building Block Set for Structured Parallel Programming , 2013, 2013 21st Euromicro International Conference on Parallel, Distributed, and Network-Based Processing.

[21]  Leslie G. Valiant,et al.  A bridging model for parallel computation , 1990, CACM.

[22]  Christoforos E. Kozyrakis,et al.  Evaluating MapReduce for Multi-core and Multiprocessor Systems , 2007, 2007 IEEE 13th International Symposium on High Performance Computer Architecture.

[23]  Carlo Tree Search Mapping Parallel Programs to Heterogeneous CPU/GPU Architectures using a Monte Carlo Tree Search , 2013 .

[24]  Horacio González-Vélez,et al.  N‐body computations using skeletal frameworks on multicore CPU/graphics processing unit architectures: an empirical performance evaluation , 2014, Concurr. Comput. Pract. Exp..

[25]  Horacio González-Vélez,et al.  Asymptotic Peak utilisation in Heterogeneous Parallel CPU/GPU Pipelines: a Decentralised Queue Monitoring Strategy , 2012, Parallel Process. Lett..