Skip to main content
Log in

Supporting structured parallel program design, development and tuning in FastFlow

  • Published:
The Journal of Supercomputing Aims and scope Submit manuscript

Abstract

The design and tuning of parallel programs is known to be a hard and error-prone process. Structured parallel programming helps overcoming part of the related problems by properly and carefully ensuring separation of concerns in between application and system programmers. In this work, we describe the design and the implementation of ff-RPL, a shell supporting structured parallel programming development in FastFlow. The shell provides ways to explore the space of functionally equivalent, alternative parallel implementations of the same application with different non functional properties. It also provides ways to tune and optimize existing parallel applications standalone or while targeting particular hardware architectures. The tool is entirely written in C++. It has been designed in such a way it can be easily extended to take into account new non functional features, refactoring and optimization rules, as well as different parallel patterns. Experimental results are shown validating the general ff-RPL design as well as its FastFlow code generation features.

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

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Fig. 1
Fig. 2
Fig. 3
Fig. 4
Fig. 5
Fig. 6
Fig. 7
Fig. 8
Fig. 9
Fig. 10

Similar content being viewed by others

Notes

  1. calvados.di.unipi.it/fastflow.

  2. muesli.uni-muenster.de.

  3. sketo.ipl-lab.org.

  4. This is actually a shortcut for the farmelim rule.

  5. Delays added through active waiting.

  6. This is a sort of cross validation of correctness of refactoring rules and of prototype code generation, actually.

References

  1. Aldinucci M, Coppola M, Danelutto M (1998) Rewriting skeleton programs: how to evaluate the data-parallel stream-parallel tradeoff. In: Proceedings of International Workshop on Constructive Methods for Parallel Programming. Technical Report MIP-9805. University of Passau, Passau

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

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

  4. Aldinucci M, Danelutto M, Kilpatrick P, Torquati M (2014) Fastflow: high-level and efficient streaming on multi-core, Chapter 14. In: Pllana S, Xhafa F (eds) Programming multi-core and many-core computing systems, parallel and distributed computing. Wiley, New York

    Google Scholar 

  5. Caromel D, Leyton M (2007) Fine tuning algorithmic skeletons. In: Kermarrec A, Bougé L, Priol T (eds) Proceedings of 13th International Euro-Par Conference on Euro-Par 2007, Parallel Processing, Rennes, France, August 28–31, Volume 4641 of Lecture Notes in Computer Science. Springer, pp 72–81

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

    Article  Google Scholar 

  7. Danelutto M, Torquati M (2015) Structured parallel programming with “core” FastFlow. Springer, Cham, pp 29–75

    Google Scholar 

  8. Danelutto M, Torquati M, Kilpatrick P (2016) A DSL based toolchain for design space exploration in structured parallel programming. Procedia Comput Sci 80:1519–1530. International Conference on Computational Science 2016, ICCS 2016, 6–8 June 2016, San Diego, California, USA

  9. Gazzarri L, Danelutto M (2017) A tool to support FastFlow program design. In: Proceedings of ParCo 2017. IOS Press, 2017. RePara 2017 MiniSymposium: The 3rd International Workshop on Reengineering for Parallelism in Heterogeneous Parallel Platforms

  10. González-Vélez H, Leyton M (2010) A survey of algorithmic skeleton frameworks: high-level structured parallel programming enablers. Softw Pract Exper 40(12):1135–1160

    Article  Google Scholar 

  11. Janjic V, Brown C, Mackenzie K, Hammond K, Danelutto M, Aldinucci M, Garcia JD (2016) RPL: a domain-specific language for designing and implementing parallel C++ applications. In: 24th Euromicro International Conference on Parallel, Distributed, and Network-based Processing (PDP), IEEE, pp 288–295

  12. Kuchen H (2002) A skeleton library. In: Proceedings of the 8th International Euro-Par Conference on Parallel Processing, Euro-Par ’02. Springer, London, pp 620–629

  13. Legaux J, Loulergue F, Jubertie S (2013) OSl: an algorithmic skeleton library with exceptions. Procedia Comput Sci 18(Complete):260–269

    Article  Google Scholar 

  14. Matsuzaki K, Emoto K (2010) Implementing fusion-equipped parallel skeletons by expression templates. In: Proceedings of the 21st International Conference on Implementation and Application of Functional Languages, IFL’09. Springer, Berlin, pp 72–89

  15. Mattson T, Sanders B, Massingill B (2004) Patterns for parallel programming, 1st edn. Addison-Wesley Professional, Boston

    MATH  Google Scholar 

Download references

Acknowledgements

This work has been partially supported by EU H2020-ICT- 2014-1 Project REPHRASE (No. 644235) “REfactoring Parallel Heterogeneous Resource-aware Applications—a Software Engineering approach”.

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Marco Danelutto.

Rights and permissions

Reprints and permissions

About this article

Check for updates. Verify currency and authenticity via CrossMark

Cite this article

Gazzarri, L., Danelutto, M. Supporting structured parallel program design, development and tuning in FastFlow. J Supercomput 75, 4026–4041 (2019). https://doi.org/10.1007/s11227-018-2448-9

Download citation

  • Published:

  • Issue Date:

  • DOI: https://doi.org/10.1007/s11227-018-2448-9

Keywords

Navigation