Towards a Domain-Specific Language for Patterns-Oriented Parallel Programming

  • Dalvan Griebler
  • Luiz Gustavo Fernandes
Part of the Lecture Notes in Computer Science book series (LNCS, volume 8129)


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.


Code Block Pipeline Stage Parallel Pattern Parallel Code Shared Memory System 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Mattson, G.T., Sanders, A.B., Massingill, L.B.: Patterns for Parallel Programming. Addison-Wesley, Boston (2005)Google Scholar
  2. 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. 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. 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. 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
  6. 6.
    Cole, M.: Algorithmic Skeletons: Structured Management of Parallel Computation. MIT Press, Cambridge (1989)zbMATHGoogle Scholar
  7. 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
  8. 8.
    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)CrossRefGoogle Scholar
  9. 9.
    Benoit, A., Cole, M., Gilmore, S., Hillston, J.: Flexible Skeletal Programming with eSkel. In: Cunha, J.C., Medeiros, P.D. (eds.) Euro-Par 2005. LNCS, vol. 3648, pp. 761–770. Springer, Heidelberg (2005)CrossRefGoogle Scholar
  10. 10.
    Aldinucci, M., Danelutto, M., Teti, P.: An Advanced Environment Supporting Structured Parallel Programming in Java. Future Gener. Comput. Syst. 19(5), 611–626 (2003)CrossRefGoogle Scholar
  11. 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
  12. 12.
    Bacci, B., Danelutto, M., Orlando, S., Pelagatti, S., Vanneschi, M.: P3L: A Structured High-Level Parallel Language, and its Structured Support. Concurrency: Practice and Experience 7(3), 225–255 (1995)CrossRefGoogle Scholar
  13. 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. 14.
    Gamma, E., Helm, R., Jonhson, R., Vlissides, J.: Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley, Boston (2002)Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2013

Authors and Affiliations

  • Dalvan Griebler
    • 1
  • Luiz Gustavo Fernandes
    • 1
  1. 1.GMAP Research Group (FACIN/PPGCC), BrazilPontifícia Universidade Católica do Rio Grande do Sul (PUCRS)Porto AlegreBrazil

Personalised recommendations