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.
Similar content being viewed by others
Notes
This is actually a shortcut for the farmelim rule.
Delays added through active waiting.
This is a sort of cross validation of correctness of refactoring rules and of prototype code generation, actually.
References
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
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
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
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
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
Cole M (2004) Bringing skeletons out of the closet: a pragmatic manifesto for skeletal parallel programming. Parallel Comput 30(3):389–406
Danelutto M, Torquati M (2015) Structured parallel programming with “core” FastFlow. Springer, Cham, pp 29–75
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
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
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
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
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
Legaux J, Loulergue F, Jubertie S (2013) OSl: an algorithmic skeleton library with exceptions. Procedia Comput Sci 18(Complete):260–269
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
Mattson T, Sanders B, Massingill B (2004) Patterns for parallel programming, 1st edn. Addison-Wesley Professional, Boston
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
Corresponding author
Rights and permissions
About this article
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
Published:
Issue Date:
DOI: https://doi.org/10.1007/s11227-018-2448-9