Towards a Domain-Specific Language for Patterns-Oriented Parallel Programming
Pattern-oriented programming has been used in parallel code development for many years now. During this time, several tools (mainly frameworks and libraries) proposed the use of patterns based on programming primitives or templates. The implementation of patterns using those tools usually requires human expertise to correctly set up communication/synchronization among processes. In this work, we propose the use of a Domain Specific Language to create pattern-oriented parallel programs (DSL-POPP). This approach has the advantage of offering a higher programming abstraction level in which communication/synchronization among processes is hidden from programmers. We compensate the reduction in programming flexibility offering the possibility to use combined and/or nested parallel patterns (i.e., parallelism in levels), allowing the design of more complex parallel applications. We conclude this work presenting an experiment in which we develop a parallel application exploiting combined and nested parallel patterns in order to demonstrate the main properties of DSL-POPP.
KeywordsCode Block Pipeline Stage Parallel Pattern Parallel Code Shared Memory System
Unable to display preview. Download preview PDF.
- 1.Mattson, G.T., Sanders, A.B., Massingill, L.B.: Patterns for Parallel Programming. Addison-Wesley, Boston (2005)Google Scholar
- 2.Aldinucci, M., Danelutto, M., Kilpatrick, P., Torquati, M.: FastFlow: High-Level and Efficient Streaming on Multi-core. In: Programming Multi-Core and Many-Core Computing Systems. Parallel and Distributed Computing, ch. 13. Wiley, Boston (2013)Google Scholar
- 3.Ciechanowicz, P., Kuchen, H.: Enhancing Muesli’s Data Parallel Skeletons for Multi-core Computer Architectures. In: 2010 12th IEEE International Conference on High Performance Computing and Communications (HPCC), Melbourne, Australia, pp. 108–113 (September 2010)Google Scholar
- 4.Karasawa, Y., Iwasaki, H.: A Parallel Skeleton Library for Multi-core Clusters. In: International Conference on Parallel Processing (ICPP 2009), Vienna, Austria, pp. 84–91 (September 2009)Google Scholar
- 5.Leyton, M., Piquer, J.M.: Skandium: Multi-core Programming with Algorithmic Skeletons. In: 2010 18th Euromicro International Conference on Parallel, Distributed and Network-Based Processing (PDP), Pisa, Italy, pp. 289–296 (February 2010)Google Scholar
- 7.Intel Mccool, D.M.: Structured Parallel Programming with Deterministic Patterns. In: HotPar-2nd USENIX Workshop on Hot Topics in Parallelism, Berkeley, CA, pp. 1–6 (June 2010)Google Scholar
- 11.Aldinucci, M., Danelutto, M., Kilpatrick, P.: Skeletons for Multi/Many-core Systems. In: Proc. of the Parallel Computing: From Multicores and GPU’s to Petascale (Proc. of PARCO 2009), Lyon, France, pp. 265–272 (September 2009)Google Scholar
- 13.Botorog, G.H., Kuchen, H.: Skil: An Imperative Language with Algorithmic Skeletons for Efficient Distributed Programming. In: Proceedings of 5th IEEE International Symposium on High Performance Distributed Computing, Syracuse, NY, USA, pp. 243–252 (August 1996)Google Scholar
- 14.Gamma, E., Helm, R., Jonhson, R., Vlissides, J.: Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley, Boston (2002)Google Scholar