Abstract
Having been designed as abstractions of common themes in object-oriented programming, patterns have been incorporated into parallel programming to allow an application programmer the freedom to generate parallel codes by parameterising a framework and adding the sequential parts. On the one hand, parallel programming patterns and their derived languages have maintained, arguably, the best adoption rate; however, they have become conglomerates of generic attributes for specific purposes, oriented towards code generation rather than the abstraction of structural attributes. On the other hand, algorithmic skeletons systematically abstract commonly-used structures of parallel computation, communication, and interaction. Although there are significant examples of relevant applications—mostly in academia—where they have been successfully deployed in an elegant manner, algorithmic skeletons have not been widely adopted as patterns have. However, the ICT industry expects graduates to be able to easily adapt to its best practices. Arguably, this entails the use of pattern-based programming, as it has been the case in sequential programming where the use of design patterns is widely considered the norm, as demonstrated by a myriad of citations to the seminal work of Gamma et al. [6] widely known as the Gang-of-Four. We contend that an algorithmic skeleton can be treated as a structural design pattern where the degree of parallelism and computational infrastructure are only defined at runtime. The purpose of this chapter is to explain how design patterns can be mapped into algorithmic skeletons. We illustrate our approach using a simple example using the visitor design pattern and the task farm algorithmic skeleton.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Similar content being viewed by others
References
Alexander, C., Ishikawa, S., Silverstein, M.: A Pattern Language: Towns, Buildings, Construction. Oxford University Press, New York (1977)
Asanovic, K., Bodik, R., Demmel, J., Keaveny, T., Keutzer, K., Kubiatowicz, J., Morgan, N., Patterson, D., Sen, K., Wawrzynek, J., Wessel, D., Yelick, K.: A view of the parallel computing landscape. Commun. ACM 52(10), 56–67 (2009)
Cole, M.: Algorithmic Skeletons: Structured Management of Parallel Computation, Research Monographs in Parallel and Distributed Computing. MIT Press/Pitman, London (1989)
Cole, M.: Bringing skeletons out of the closet: a pragmatic manifesto for skeletal parallel programming. Parallel Comput. 30(3), 389–406 (2004)
Gamma, E., Helm, R., Johnson, R., Vlissides, J.: Design patterns: Abstraction and reuse of object-oriented design. ECOOP’93. Lecture Notes in Computer Science, vol. 707, pp. 406–431. Springer, Kaiserslautern (1993)
Gamma, E., Helm, R., Johnson, R., Vlissides, J.: Design Patterns: Elements of Reusable Object-oriented Software. Addison-Wesley Longman, Boston (1995)
González-Vélez, H., Leyton, M.: A survey of algorithmic skeleton frameworks: high-level structured parallel programming enablers. Softw., Pract. Exper. 40(12), 1135–1160 (2010)
Goswami, D., Singh, A., Preiss, B.R.: From design patterns to parallel architectural skeletons. J. Parallel Distrib. Comput. 62(4), 669–695 (2002)
Hammond, K., Aldinucci, M., Brown, C., Cesarini, F., Danelutto, M., González-Vélez, H., Kilpatrick, P., Keller, R., Rossbory, M., Shainer, G.: The ParaPhrase Project: Parallel Patterns for Adaptive Heterogeneous Multicore Systems, Lecture Notes in Computer Science, vol. 7542, pp. 218–236. Springer, Torino (2013)
Mattson, T.G., Sanders, B., Massingill, B.: Patterns for Parallel Programming. Software Patterns Series. Addison-Wesley Professional, Boston (2004)
Mittal, S., Vetter, J.S.: A survey of CPU-GPU heterogeneous computing techniques. ACM Comput. Surv. 47(4), 69:1–69:35 (2015)
Rabhi, F.A., Gorlatch, S. (eds.): Patterns and Skeletons for Parallel and Distributed Computing. Springer, London (2003)
Acknowledgements
The authors would like to acknowledge the contribution of the ICT COST Action IC1406 “High-Performance Modelling and Simulation for Big Data Applications (cHiPSet)” http://chipset-cost.eu/.
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2018 Springer International Publishing AG
About this chapter
Cite this chapter
Chis, A.E., González–Vélez, H. (2018). Design Patterns and Algorithmic Skeletons: A Brief Concordance. In: Kołodziej, J., Pop, F., Dobre, C. (eds) Modeling and Simulation in HPC and Cloud Systems. Studies in Big Data, vol 36. Springer, Cham. https://doi.org/10.1007/978-3-319-73767-6_3
Download citation
DOI: https://doi.org/10.1007/978-3-319-73767-6_3
Published:
Publisher Name: Springer, Cham
Print ISBN: 978-3-319-73766-9
Online ISBN: 978-3-319-73767-6
eBook Packages: EngineeringEngineering (R0)