Skip to main content

Structured Parallel Programming with “core” FastFlow

  • Chapter
  • First Online:
Central European Functional Programming School (CEFP 2013)

Part of the book series: Lecture Notes in Computer Science ((LNTCS,volume 8606))

Included in the following conference series:

Abstract

FastFlow is an open source, structured parallel programming framework originally conceived to support highly efficient stream parallel computation while targeting shared memory multi cores. Its efficiency mainly comes from the optimized implementation of the base communication mechanisms and from its layered design. FastFlow eventually provides the parallel applications programmers with a set of ready-to-use, parametric algorithmic skeletons modeling the most common parallelism exploitation patterns. The algorithmic skeleton provided by FastFlow may be freely nested to model more and more complex parallelism exploitation patterns. This tutorial describes the “core” FastFlow, that is the set of skeletons supported since version 1.0 in FastFlow, and outlines the recent advances aimed at (i) introducing new, higher level skeletons and (ii) targeting networked multi cores, possibly equipped with GPUs, in addition to single multi/many core processing elements.

This work has been partially supported by FP7 STREP project “ParaPhrase” (www.paraphrase-ict.eu).

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 39.99
Price excludes VAT (USA)
  • Available as EPUB and PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Notes

  1. 1.

    See also the FastFlow home page at http://mc-fastflow.sourceforge.net.

  2. 2.

    We only detail instructions needed to install FastFlow on Linux/Unix/BSD machines here. A Windows port of FastFlow exist, that requires slightly different steps for the installation.

  3. 3.

    We use the term svc as a shortcut for “service”.

  4. 4.

    And depending on the actual number of cores of your machine and on the kind of scheduler used in the operating system, the sequence may vary a little bit.

  5. 5.

    The class ff_pipe is a wrapper of the class ff_pipeline.

  6. 6.

    We currently use the zeroMQ library to support the distributed channels ().

  7. 7.

    The map itself works on a single input task to produce a single output result, by default.

  8. 8.

    \(\varDelta \) represents any skeleton composition, in this case.

  9. 9.

    http://www.paraphrase-ict.eu.

  10. 10.

    http://www.repara-project.eu/#!.

  11. 11.

    http://sourceforge.net/projects/mc-fastflow/.

References

  1. FastFlow home page (2012). http://mc-fastflow.sourceforge.net

  2. Aldinucci, M., Campa, S., Danelutto, M., Kilpatrick, P., Torquati, M.: Design patterns percolating to parallel programming framework implementation. Int. J. Parallel Program. (2013). doi:10.1007/s10766-013-0273-6

  3. Aldinucci, M., Anardu, L., Danelutto, M., Torquati, M., Kilpatrick, P.: Parallel patterns + macro data flow for multi-core programming. In: Proceedings of International Euromicro PDP 2012: Parallel Distributed and network-based Processing, Garching, Germany. IEEE, February 2012

    Google Scholar 

  4. Aldinucci, M., Bracciali, A., Liò, P., Sorathiya, A., Torquati, M.: StochKit-FF: efficient systems biology on multicore architectures. In: Guarracino, M.R., et al. (eds.) Euro-Par-Workshop 2010. LNCS, vol. 6586, pp. 167–175. Springer, Heidelberg (2011)

    Chapter  Google Scholar 

  5. Aldinucci, M., Campa, S., Danelutto, M., Kilpatrick, P., Torquati, M.: Targeting distributed systems in \({\sf {FastFlow}}\). In: Caragiannis, I., et al. (eds.) Euro-Par Workshops 2012. LNCS, vol. 7640, pp. 47–56. Springer, Heidelberg (2013)

    Chapter  Google Scholar 

  6. Aldinucci, M., Danelutto, M.: Stream parallel skeleton optimization. In: Proceedings of PDCS: International Conference on Parallel and Distributed Computing and Systems, pp. 955–962. IASTED, ACTA Press, Cambridge, Massachusetts (1999)

    Google Scholar 

  7. Aldinucci, M., Danelutto, M., Kilpatrick, P., Meneghin, M., Torquati, M.: Accelerating sequential programs using FastFlow and self-offloading. Technical report TR-10-03, Universitá di Pisa, Dipartimento di Informatica, Italy, February 2010

    Google Scholar 

  8. Aldinucci, M., Danelutto, M., Kilpatrick, P., Meneghin, M., Torquati, M.: Accelerating code on multi-cores with FastFlow. In: Jeannot, E., Namyst, R., Roman, J. (eds.) Euro-Par 2011, Part II. LNCS, vol. 6853, pp. 170–181. Springer, Heidelberg (2011)

    Chapter  Google Scholar 

  9. Aldinucci, M., Danelutto, M., Kilpatrick, P., Meneghin, M., Torquati, M.: An efficient unbounded lock-free queue for multi-core systems. In: Kaklamanis, C., Papatheodorou, T., Spirakis, P.G. (eds.) Euro-Par 2012. LNCS, vol. 7484, pp. 662–673. Springer, Heidelberg (2012)

    Chapter  Google Scholar 

  10. Aldinucci, M., Danelutto, M., Kilpatrick, P., Torquati, M.: Targeting heterogeneous architectures via macro data flow. Parallel Process. Lett. 22(2) (2012)

    Google Scholar 

  11. Aldinucci, M., Danelutto, M., Kilpatrick, P., Torquati, M.: Fastflow: high-level and efficient streaming on multi-core. In: Pllana, S., Xhafa, F. (eds.) Programming Multi-core and Many-core Computing Systems, Parallel and Distributed Computing, chap. 13. Wiley (2014)

    Google Scholar 

  12. Aldinucci, M., Danelutto, M., Meneghin, M., Kilpatrick, P., Torquati, M.: Efficient streaming applications on multi-core with FastFlow: the biosequence alignment test-bed. In: Chapman, B., Desprez, F., Joubert, G.R., Lichnewsky, A., Priol, T., Peters, F.J. (eds.) Parallel Computing: From Multicores and GPU’s to Petascale (Proceedings of PARCO 2009, Lyon, France). Advances in Parallel Computing, vol. 19, pp. 273–280, Lyon, France. IOS Press, September 2009

    Google Scholar 

  13. Aldinucci, M., Drocco, M., Tordini, F., Coppo, M., Torquati, M.: Parallel stochastic simulators in system biology: the evolution of the species. In: 16th Euromicro Conference on Parallel, Distributed and Network-Based Processing (PDP 2008), pp. 410–419 (2013)

    Google Scholar 

  14. Aldinucci, M., Meneghin, M., Torquati, M.: Efficient Smith-Waterman on multi-core with FastFlow. In Danelutto, M., Gross, T., Bourgeois, J. (eds.) Proceedings of International Euromicro PDP 2010: Parallel Distributed and network-based Processing, Pisa, Italy. IEEE, February 2010

    Google Scholar 

  15. Aldinucci, M., Ruggieri, S., Torquati, M.: Decision tree building on multi-core using fastflow. Concurr. Comput. Practi. Experien. 26(3), 800–820 (2014)

    Article  Google Scholar 

  16. Aldinucci, M., Torquati, M., Meneghin, M.: FastFlow: efficient parallel streaming applications on multi-core. Technical report TR-09-12, Universitá di Pisa, Dipartimento di Informatica, Italy, September 2009

    Google Scholar 

  17. Boob, S., González-Vélez, H., Popescu, A.M.: Automated instantiation of heterogeneous FastFlow CPU/GPU parallel pattern applications in clouds. In: Proceedings of International Euromicro PDP 2014: Parallel Distributed and network-based Processing. IEEE Press (2014)

    Google Scholar 

  18. Campa, S., Danelutto, M., Torquati, M., González-Vélez, H., Popescu, A.: Towards the deployment of fastflow on distributed virtual architectures. In: Rekdalsbakken, W., Bye, R.T., Zhang, H. (eds.) ECMS, pp. 518–524. European Council for Modeling and Simulation (2013)

    Google Scholar 

  19. Cole, M.: Algorithmic Skeletons: Structured Management of Parallel Computation. MIT Press, Cambridge (1991)

    Google Scholar 

  20. Cole, M.: Bringing skeletons out of the closet: a pragmatic manifesto for skeletal parallel programming. Parallel Comput. 30(3), 389–406 (2004)

    Article  Google Scholar 

  21. Collins, A., Fensch, C., Leather, H.: Optimization space exploration of the FastFlow parallel skeleton framework (2012). HLPGPU 2012, http://homepages.inf.ed.ac.uk/s1050857/collins-hlpgpu12.pdf

  22. M. Danelutto, L. Deri, and D. De Sensi.: Network Monitoring on Multicores with Algorithmic Skeletons. In Volume 22: Applications, Tools and Techniques on the Road to Exascale Computing, Advances in Parallel Computing, pages 519–526. IOS Press, 2012. 2011, DOI: 10.3233/978-1-61499-041-3-519, Proc. of Intl. Parallel Computing (PARCO)

    Google Scholar 

  23. Danelutto, M., Torquati, M.: A RISC building block set for structured parallel programming. In: 21st Euromicro International Conference on Parallel, Distributed, and Network-Based Processing, PDP 2013, Belfast, United Kingdom, 27 February– 1 March, pp. 46–50. IEEE Computer Society (2013)

    Google Scholar 

  24. Dastgeer, U., Li, L., Kessler, C.: Adaptive implementation selection in the skepu skeleton programming library. In: Wu, C., Cohen, A. (eds.) APPT 2013. LNCS, vol. 8299, pp. 170–183. Springer, Heidelberg (2013)

    Chapter  Google Scholar 

  25. Ernsting, S., Kuchen, H.: Algorithmic skeletons for multi-core, multi-gpu systems and clusters. IJHPCN 7(2), 129–138 (2012)

    Article  Google Scholar 

  26. Goli, M., González-Vélez, H.: Heterogeneous algorithmic skeletons for fast flow with seamless coordination over hybrid architectures. In: 21st Euromicro International Conference on Parallel, Distributed, and Network-Based Processing, PDP 2013, Belfast, United Kingdom, 27 February–1 March, pp. 148–156. IEEE Computer Society (2013)

    Google Scholar 

  27. 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. Practi. Experien. 26(4), 972–986 (2014)

    Article  Google Scholar 

  28. 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)

    Article  Google Scholar 

  29. Legaux, J., Loulergue, F., Jubertie, S.: OSL: an algorithmic skeleton library with exceptions. In: Alexandrov, V.N., Lees, M., Krzhizhanovskaya, V.V., Dongarra, J., Sloot, P.M.A. (eds.) ICCS. Procedia Computer Science, vol. 18, pp. 260–269. Elsevier (2013)

    Google Scholar 

  30. Leyton, M., Piquer, J.M.: Skandium: multi-core programming with algorithmic skeletons. In: Danelutto, M., Bourgeois, J., Gross, T. (eds.) PDP, pp. 289–296. IEEE Computer Society (2010)

    Google Scholar 

  31. Matsuzaki, K., Kakehi, K., Iwasaki, H., Hu, Z., Akashi, Y.: A fusion-embedded skeleton library. In: Danelutto, M., Vanneschi, M., Laforenza, D. (eds.) Euro-Par 2004. LNCS, vol. 3149, pp. 644–653. Springer, Heidelberg (2004)

    Chapter  Google Scholar 

  32. ParaPhrase. Final Pattern Definition Report (2013). http://www.paraphrase-ict.eu/Deliverables

  33. ParaPhrase. Heterogeneous Implementation of Initial Generic Patterns (2013). http://www.paraphrase-ict.eu/Deliverables

  34. ParaPhrase. Initial Implementation of Application-Specific Patterns (2013). http://www.paraphrase-ict.eu/Deliverables

  35. ParaPhrase. Refactoring User Interfaces (2013). http://www.paraphrase-ict.eu/Deliverables

  36. Planas, J., Badia, R.M., Ayguadé, E., Labarta, J.: Hierarchical task-based programming with starss. IJHPCA 23(3), 284–299 (2009)

    Google Scholar 

  37. Planas, J., Badia, R.M., Ayguadé, E., Labarta, J.: Self-adaptive ompss tasks in heterogeneous environments. In: IPDPS, pp. 138–149. IEEE Computer Society (2013)

    Google Scholar 

  38. Serban, T., Danelutto, M., Kilpatrick, P.: Autonomic scheduling of tasks from data parallel patterns to cpu/gpu core mixes. In: HPCS, pp. 72–79. IEEE (2013)

    Google Scholar 

  39. Szűgyi, Z., Pataki, N.: Generative version of the fastflow multicore library. Electr. Notes Theor. Comput. Sci. 279(3), 73–84 (2011)

    Article  Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Marco Danelutto .

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2015 Springer International Publishing Switzerland

About this chapter

Cite this chapter

Danelutto, M., Torquati, M. (2015). Structured Parallel Programming with “core” FastFlow. In: Zsók, V., Horváth, Z., Csató, L. (eds) Central European Functional Programming School. CEFP 2013. Lecture Notes in Computer Science(), vol 8606. Springer, Cham. https://doi.org/10.1007/978-3-319-15940-9_2

Download citation

  • DOI: https://doi.org/10.1007/978-3-319-15940-9_2

  • Published:

  • Publisher Name: Springer, Cham

  • Print ISBN: 978-3-319-15939-3

  • Online ISBN: 978-3-319-15940-9

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics