International Journal of Parallel Programming

, Volume 42, Issue 6, pp 1012–1031 | Cite as

Design patterns percolating to parallel programming framework implementation

  • M. Aldinucci
  • S. Campa
  • M. Danelutto
  • P. Kilpatrick
  • M. Torquati


Structured parallel programming is recognised as a viable and effective means of tackling parallel programming problems. Recently, a set of simple and powerful parallel building blocks (\(\mathsf{RISC\text{- }pb^2l}\)) has been proposed to support modelling and implementation of parallel frameworks. In this work we demonstrate how that same parallel building block set may be used to model both general purpose parallel programming abstractions, not usually listed in classical skeleton sets, and more specialized domain specific parallel patterns. We show how an implementation of \(\mathsf{RISC\text{- }pb^2l}\) can be realised via the FastFlow framework and present experimental evidence of the feasibility and efficiency of the approach.


Algorithmic skeleton Parallel design patterns  Programming frameworks \(\mathsf{RISC\text{- }pb^2l}\) Parallel building blocks 


  1. 1.
    Alba, E., Luque, G., Garcia-Nieto, J., Ordonez, G., Leguizamon, G.: MALLBA a software library to design efficient optimisation algorithms. Int. J. Innov. Comput. Appl. 1(1), 74–85 (2007)CrossRefGoogle Scholar
  2. 2.
    Aldinucci, M., Campa, S., Danelutto, M., Kilpatrick, P., Torquati, M.: Targeting distributed systems in FastFlow. In: Euro-Par 2012 workshops, Proceedings of the CoreGrid workshop on grids, clouds and P2P computing, volume 7640 of LNCS, pp. 47–56. Springer (2013)Google Scholar
  3. 3.
    Aldinucci, M., Danelutto, M., Kilpatrick, P., Meneghin, M., Torquati, M.: Accelerating code on multi-cores with FastFlow. In: Proceedings of the 17th International Euro-Par 2011 parallel processing, volume 6853 of LNCS, pp. 170–181. Springer, Bordeaux, France, Aug 2011Google Scholar
  4. 4.
    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, chapter 13. Wiley, Jan 2013Google Scholar
  5. 5.
    Aldinucci, M., Meneghin, M., Torquati, M.: Efficient Smith-Waterman on multi-core with FastFlow. In: Proceedings of the international Euromicro PDP 2010: parallel distributed and network-based processing, , IEEE, Pisa, Italy, Feb 2010Google Scholar
  6. 6.
    Asanovic, K., Bodik, R., Catanzaro, B. C., Gebis, J. J., Husbands, P., Keutzer, K., Patterson, D. A., Plishker, W. L., Shalf, J., Williams, S. W., Yelick, K. A.: The landscape of parallel computing research: a view from Berkeley. Technical Report UCB/EECS-2006-183, EECS Department, University of California, Berkeley, Dec 2006Google Scholar
  7. 7.
    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)CrossRefzbMATHMathSciNetGoogle Scholar
  8. 8.
    Buono, D., Danelutto, M., Lametti, S.: Map, reduce and mapreduce, the skeleton way. Procedia CS 1(1), 2095–2103 (2010)Google Scholar
  9. 9.
    Ciechanowicz, P., Kuchen, H.: Enhancing muesli’s data parallel skeletons for multi-core computer architectures. In: HPCC, IEEE, pp. 108–113 (2010)Google Scholar
  10. 10.
    Cole, M.: Bringing skeletons out of the closet: a pragmatic manifesto for skeletal parallel programming. Parallel Comput. 30(3), 389–406 (2004)CrossRefGoogle Scholar
  11. 11.
    Danelutto, M.: QoS in parallel programming through application managers. In Proceedings of the International Euromicro PDP: parallel distributed and network-based processing, pp. 282–289. IEEE, Lugano, Switzerland, Feb 2005Google Scholar
  12. 12.
    Danelutto, M., Torquati, M.: A RISC building block set for structured parallel programming. In: Euromicro International Conference on parallel, distributed and network-based processing PDP-2013. IEEE, Computer, pp. 46–50 (2013)Google Scholar
  13. 13.
    Dean, J., Ghemawat, S.: MapReduce: simplified data processing on large clusters. CACM 51(1), 107–113 (2008)Google Scholar
  14. 14.
    Enmyren, J., Kessler, C. W.: Skepu: a multi-backend skeleton programming library for multi-gpu systems. In: Proceedings of the 4th International workshop on high-level parallel programming and applications, HLPP ’10, New York, NY, USA (2010)Google Scholar
  15. 15.
    Ernsting, S., Kuchen, H.: Algorithmic skeletons for multi-core, multi-gpu systems and clusters. Int. J. High Perform. Comput. Netw. 7(2), 129–138 (2012)CrossRefGoogle Scholar
  16. 16.
    FastFlow project website, 2013.
  17. 17.
    Grelck, C., Scholz, S.B., Shafarenko, A.: Asynchronous stream processing with s-net. Int. J. Parallel Progr. 38(1), 38–67 (2010)CrossRefzbMATHGoogle Scholar
  18. 18.
    Hammond, K., Zain, A.A., Cooperman, G., Petcu, D., Trinder, P.: Symgrid: a framework for symbolic computation on the grid. In: Euro-Par 2007 parallel processing, volume 4641 of Lecture Notes in Computer Science, pp. 457–466 (2007)Google Scholar
  19. 19.
    Intel TBB for Open Source, 2012.
  20. 20.
    Javed, N., Loulergue, F.: Osl: optimized bulk synchronous parallel skeletons on distributed arrays. In: APPT, volume 5737 of Lecture Notes in Computer Science, pp. 436–451. Springer (2009)Google Scholar
  21. 21.
    Khronos Group. The OpenCL Specification, Sept. 2010Google Scholar
  22. 22.
    Leyton, M., Piquer, J. M.: Skandium: multi-core programming with algorithmic skeletons. In: PDP, pp. 289–296. IEEE Computer Society (2010)Google Scholar
  23. 23.
    Massingill, B.L., Mattson, T.G., Sanders, B.A.: Parallel programming with a pattern language. STTT 3(2), 217–234 (2001)zbMATHGoogle Scholar
  24. 24.
    Matsuzaki, K., Iwasaki, H., Emoto, K., Hu, Z.: A library of constructive skeletons for sequential style of parallel programming. In: Infoscale, volume 152 of ACM International Conference Proceeding Series, p. 13. ACM (2006)Google Scholar
  25. 25.
    Mattson, T., Sanders, B., Massingill, B.: Patterns for parallel programming. Addison-Wesley Professional, first edition (2004)Google Scholar
  26. 26.
    Nowostawski, M., Poli, R.: Parallel genetic algorithm taxonomy. In: Proceedings of the Third International, pp. 88–92. IEEE (1999)Google Scholar
  27. 27.
    Pacheco, P.S.: Parallel Programming with MPI. Morgan Kaufmann Publishers Inc., San Francisco (1996)Google Scholar
  28. 28.
    PLASMA library website, 2013.
  29. 29.
    Ranger, C., Raghuraman, R., Penmetsa, A., Bradski, G., Kozyrakis, C.: Evaluating mapreduce for multi-core and multiprocessor systems. In: Proceedings of the 2007 IEEE 13th International Symposium on High Performance Computer Architecture, HPCA ’07, pp. 13–24. IEEE Computer Society, Washington, DC, USA (2007)Google Scholar
  30. 30.
    SCIEnce deliverable series. Deliverable D5.13 (JRA 1.6)—Report on multilevel parallelism, Jan 2012Google Scholar
  31. 31.
    Task parallel library home page, 2012.
  32. 32.
    Valiant, L.G.: A bridging model for parallel computation. Commun. ACM 33(8), 103–111 (1990)CrossRefGoogle Scholar

Copyright information

© Springer Science+Business Media New York 2013

Authors and Affiliations

  • M. Aldinucci
    • 3
  • S. Campa
    • 1
  • M. Danelutto
    • 1
  • P. Kilpatrick
    • 2
  • M. Torquati
    • 1
  1. 1.Department of Computer ScienceUniversity of PisaPisaItaly
  2. 2.Queen’s University BelfastBelfastUK
  3. 3.University of TorinoTurinItaly

Personalised recommendations