Abstract
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.
Similar content being viewed by others
Notes
A full working implementation of the SKIP framework, called PEI, is freely available as open-source software at: https://github.com/mehdi-goli/MC-FastFlow-PEI.
References
Alba, E., Almeida, F., Blesa, M.J., Cotta, C., Díaz, M., Dorta, I., Gabarró, J., León, C., Luque, G., Petit, J.: Efficient parallel LAN/WAN algorithms for optimization. The MALLBA project. Parallel Comput. 32(5–6), 415–440 (2006)
Aldinucci, M., Campa, S., Danelutto, M., Dazzi, P., Laforenza, D., Tonellotto, N., Kilpatrick, P.: Behavioural skeletons for component autonomic management on grids. In: Danelutto, M., Fragopoulou, P., Getov, V. (eds.) Making Grids Work, pp. 3–15. Springer, Berlin (2008)
Aldinucci, M., Campa, S., Danelutto, M., Kilpatrick, P., Torquati, M.: Design patterns percolating to parallel programming framework implementation. Int. J. Parallel Program. 42(6), 1012–1031 (2014)
Aldinucci, M., Campa, S., Danelutto, M., Vanneschi, M.: Behavioural skeletons in GCM: autonomic management of grid components. In: PDP 2008, Toulouse, pp. 54–63. IEEE, Washington (2008)
Aldinucci, M., Danelutto, M., Kilpatrick, P.: Autonomic management of non-functional concerns in distributed and parallel application programming. In: IPDPS 2009, Rome, pp. 1–12. IEEE, Washington (2009)
Aldinucci, M., Danelutto, M., Kilpatrick, P.: Semi-formal models to support program development autonomic management within component based parallel and distributed programming. In: de Boer, F.S., Bonsangue, M.M., Madelaine, E. (eds.) Formal methods for components and objects. Volume 5751 of LNCS, pp. 204–225. Springer, Berlin (2009).
Aldinucci, M., Danelutto, M., Kilpatrick, P., Meneghin, M., Torquati, M.: Accelerating code on multi-cores with FastFlow. In: Euro-Par 2011. Volume 6853 of LNCS, Bordeaux, pp. 170–181. Springer, Berlin (2011)
Backus, J.: Can programming be liberated from the von Neumann style? A functional style and its algebra of programs. Commun. ACM 21(8), 613–641 (1978)
Bassett, L.: Introduction to JavaScript Object Notation: A To-the-Point Guide to JSON. O’Reilly Media, Sebastopol (2015). ISBN 1491929480
Cole, M.: Algorithmic Skeletons: Structured Management of Parallel Computation. Research Monographs in Parallel and Distributed Computing. Pitman/MIT Press, London (1989)
Danelutto, M., Torquati, M.: A RISC building block set for structured parallel programming. In: PDP 2013, Belfast, pp. 46–50. IEEE, Washington (2013)
Dean, J., Ghemawat, S.: MapReduce: simplified data processing on large clusters. Commun. ACM 51(1), 107–113 (2008)
Garba, M.T., González-Vélez, H.: Asymptotic peak utilisation in heterogeneous parallel CPU/GPU pipelines: a decentralised queue monitoring strategy. Parallel Process. Lett. 22(2), 1240008 (2012)
Goli, M.: Autonomic behavioural framework for structural parallelism over heterogeneous multi-core systems. Ph.D. thesis, Robert Gordon University, Aberdeen (2015). http://hdl.handle.net/10059/1373
Goli, M., Garba, M.T., González-Vélez, H.: Streaming dynamic coarse-grained CPU/GPU workloads with heterogeneous pipelines in FastFlow. In: HPCC 2012, Liverpool, pp. 445–452. IEEE, Washington (2012)
Goli, M., González-Vélez, H.: N-body computations using skeletal frameworks on multicore CPU/graphics processing unit architectures: an empirical performance evaluation. Concurr. Comput. Pract. Exp. 26(4), 972–986 (2014)
Goli, M., González-Vélez, H.: Autonomic coordination of skeleton-based applications over CPU/GPU multi-core architectures. Int. J. Parallel Program. 45(2), 203–224 (2017)
Goli, M., McCall, J., Brown, C., Janjic, V., Hammond, K.: Mapping parallel programs to heterogeneous CPU/GPU architectures using a Monte Carlo tree search. In: 2013 IEEE Congress on Evolutionary Computation (CEC), pp. 2932–2939. IEEE, Washington (2013)
Hammond, K., Al Zain, A., Cooperman, G., Petcu, D., Trinder, P.: Symgrid: a framework for symbolic computation on the grid. In: Euro-Par 2007. Volume 4641 of LNCS, Rennes. pp. 457–466. Springer, Berlin (2007)
McCool, M., Reinders, J., Robison, A.: Structured Parallel Programming: Patterns for Efficient Computation. Morgan Kaufmann, Waltham (2012). ISBN 0124159931
Nowostawski, M., Poli, R.: Parallel genetic algorithm taxonomy. In: KES’99, Adelaide, pp. 88–92. IEEE, Washington (1999)
Ranger, C., Raghuraman, R., Penmetsa, A., Bradski, G., Kozyrakis, C.: Evaluating MapReduce for multi-core and multiprocessor systems. In: HPCA 2007, Scottsdale, pp. 13–24. IEEE, Washington (2007)
Valiant, L.G.: A bridging model for parallel computation. Commun. ACM 33(8), 103–111 (1990)
Author information
Authors and Affiliations
Corresponding author
Rights and permissions
About this article
Cite this article
Goli, M., González-Vélez, H. Formalised Composition and Interaction for Heterogeneous Structured Parallelism. Int J Parallel Prog 46, 120–151 (2018). https://doi.org/10.1007/s10766-017-0511-4
Received:
Accepted:
Published:
Issue Date:
DOI: https://doi.org/10.1007/s10766-017-0511-4