FastFlow (斋戒流) is a parallel programming framework for multi-core platforms based upon non-blocking lock-free/fence-free synchronization mechanisms. The framework is composed of a stack of layers that progressively abstracts out the programming of shared-memory parallel applications. The goal of the stack is twofold: to ease the development of applications and make them very fast and scalable. FastFlow is particularly targeted to the development of streaming applications.
Vanilla or other flavours. In FastFlow, different layers are targeted to support different kinds of programmer. FastFlow can be directly used to set up an arbitrary network of parallel activities (low-level programming layer); at this level, similar to what happens when programming with POSIX threads, any orchestration of parallel activities can be expressed. However, as for POSIX threads, writing a correct and efficient program is a non-trivial activity. As shown in [ADM09], FastFlow synchronizations are usually faster than POSIX ones. At the next layer up (high-level programming layer), FastFlow provides programmers with a number of pre-defined parametric programming patterns (i.e. skeletons); at this level, similar to what happens when programming with Intel TBB, some orchestration of parallel activities can be expressed: programs are composed by configuring and combining patterns (skeletons), which have an optimised implementation. Writing a correct and efficient program is relatively easy (also see tutorial page). As shown in [AMT09], FastFlow-based applications have a speed edge on TBB-based ones.
The FastFlow high-level
skeletal layer can be further abstracted (using skeletons as
object factories) to define Problem Solving Environments
(PSEs), which are programming frameworks designed to ease
the development of efficient parallel applications in a specific
domain. As an example, we are currently working on the following PSEs:
The three described layers are intended for three kinds of user, respectively: FastFlow designers, skilled programmers (with some knowledge of parallel programming), and casual programmers (e.g. application domain experts). See architecture page for further information. Completed PSEs can be found in the project SVN (not the release tarball), whereas documentation is still incomplete and will appear soon on this site.
FastFlow is fast. We experimentally demonstrate that FastFlow is as fast as or in some case faster than state-of-the-art multi-core programming frameworks like Cilk TBB and OpenMP.
License. FastFlow is implemented as a C++ template library, which is open source and released under LGPLv3
Last stable version of FastFlow can be downloaded from sourceforge at Download, beta releases are available via sourceforge SVN server. FastFlow 2.0 is now available
News and releases are announced on the sourceforge developer forum; important news are recap on this page.
Questions and comments can be posted on FastFlow mailing list fastflow[AT]di.unito.it. Interested users can subscribe to it (very low traffic, moderated).
Three months internship available with HiPEAC EU NoE support for HiPEAC affiliated members (5000 Euro). Deadline May 1st, 2013. Write to Marco Aldinucci (aldinuc@di.unito.it)
FastFlow has been initially designed by:
Several other people contributed to the design, development, and application development. Among them:
Would you like to join us? Just write us and tell us your ideas and skills (aldinuc AT di.unito.it, torquati AT di.unipi.it). Master thesis on FastFlow are available at University of Pisa, Torino, and wherever you are
| [ADK11b] Marco Aldinucci, Marco Danelutto, Peter Kilpatrick, and Massimo Torquati. 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, 2013. bib | |
| [ACD13] Marco Aldinucci, Sonia Campa, Marco Danelutto, Peter Kilpatrick, and Massimo Torquati. Targeting distributed systems in fastflow. In Euro-Par 2012 Workshops, Proc. of the CoreGrid Workshop on Grids, Clouds and P2P Computing, LNCS. Springer, 2013. To appear. | |
| [ADK12b] Marco Aldinucci, Marco Danelutto, Peter Kilpatrick, Massimiliano Meneghin, and Massimo Torquati. An Efficient Unbounded Lock-Free Queue for Multi-Core Systems, in: Proc. of Euro-Par 2012, Rhodes Island, Greece. LNCS. Aug 2012. To appear. bib | |
| [AAD12] Marco Aldinucci, Lorenzo Anardu, Marco Danelutto, and Massimo Torquati. Parallel patterns + Macro Data Flow for multi-core programming, in: Proc. of Intl. Euromicro PDP 2012: Parallel Distributed and network-based Processing. IEEE. February 2012. bib | |
| [ADK12a] Marco Aldinucci, Marco Danelutto, Peter Kilpatrick, and Massimo Torquati. Targeting heterogeneous architectures via macro data flow, Parallel Processing Letters, 22(2), June 2012. | |
| [ADK11a] Marco Aldinucci, Marco Danelutto, Peter Kilpatrick, Massimiliano Meneghin, and Massimo Torquati. Accelerating code on multi-cores with FastFlow, in: Proc. of Euro-Par 2011, Bordeaux, France. September 2011. (30% acceptance rate) bib | |
| [ASD12] Marco Aldinucci, Concetto Spampinato, Maurizio Drocco, Massimo Torquati, and Simone Palazzo. A Parallel Edge Preserving Algorithm for Salt and Pepper Image Denoising, in: Proc. of Intl. Conference on Image Processing Theory, Tools and Applications (IPTA). IEEE. Oct 2012. To appear. | |
| [DDD11] Marco Danelutto, Luca Deri, Daniele De Sensi. Network Monitoring on Multicores with Algorithmic Skeletons, in: Proc. of Intl. Parallel Computing (PARCO), September 2011. | |
| [ACD11b] Marco Aldinucci, Mario Coppo, Ferruccio Damiani, Maurizio Drocco, Eva Sciacca, Salvatore Spinella, Massimo Torquati, and Angelo Troina. On Parallelizing On-Line Statistics for Stochastic Biological Simulations, in: Proc. of the 2nd Workshop on High Performance Bioinformatics and Biomedicine (HiBB, in conjunction with Euro-Par 2011), LNCS, Bordeaux, France, September 2011. Springer. bib | |
| [ART11] Marco Aldinucci, Salvatore Ruggieri, and Massimo Torquati. Porting decision tree building and pruning algorithms to multicore using FastFlow, Università di Pisa, Dipartimento di Informatica, Italy, number TR-11-06, March 2011. bib | |
| [ACD11a] Marco Aldinucci, Mario Coppo, Ferruccio Damiani, Maurizio Drocco, Massimo Torquati, and Angelo Troina. On Designing Multicore-aware Simulators for Biological Systems, in: Proc. of Intl. Euromicro PDP 2011: Parallel Distributed and network-based Processing. IEEE. February 2011. bib | |
| [ART10] Marco Aldinucci, Salvatore Ruggieri, and Massimo Torquati. Porting Decision Tree Algorithms to Multicore using FastFlow, in: Proc. of European Conference in Machine Learning and Knowledge Discovery in Databases (ECML PKDD), volume 6321 of LNCS, pages 7–23, Barcelona, Spain, September 2010. Springer. (18% acceptance rate)bib | |
| [ABL10] Marco Aldinucci, Andrea Bracciali, Pietro Lio'. Formal Synthetic Immunology, Ercim News 82:40–41, July 2010. bib | |
| [ABL10] Marco Aldinucci, Andrea Bracciali, Pietro Lio', Anil Sorathiya, and Massimo Torquati. StochKit-FF: Efficient Systems Biology on Multicore Architectures, in: Proc. of the 1st Workshop on High Performance Bioinformatics and Biomedicine (HiBB, in conjunction with Euro-Par 2010), volume 6586 of LNCS, pages 167–175, Ischia, Italy, September 2010. Springer. bib | |
| [AMT09] Marco Aldinucci, Massimiliano Meneghin, and Massimo Torquati. Efficient Smith-Waterman on multi-core with FastFlow, in: Proc. of Intl. Euromicro PDP 2010: Parallel Distributed and network-based Processing. IEEE. February 2010.bib | |
| [ADM09] Marco Aldinucci, Marco Danelutto, Massimiliano Meneghin, Peter Kilpatrick, and Massimo Torquati. Efficient streaming applications on multi-core with FastFlow: the biosequence alignment test-bed, in: Proc. of Intl. Parallel Computing (PARCO), September 2009. bib |
Would like to know more about FastFlow? Invite us for a talk at your university or company!
| FastFlow: high-level programming patterns with non-blocking lock-free run-time support. Politecnico di Milano, Dipartimento di Elettronica ed informazione, Milano, Italy, December 2012. | |
| A Parallel Edge Preserving Algorithm for Salt and Pepper Image Denoising. Intl. Conference on Image Processing Theory Tools and Applications (IPTA), Istambul, Turkey, October 2012. | |
| Turning Big data into knowledge: Techniques and Tools for Parallel Computing on Online Data Streams in Systems Biology and Epidemiology. Invited talk given at BioIt World conference, Vienna, Austria. October 2012. | |
| FastFlow: high-level programming patterns with non-blocking lock-free run-time support. Invited talk given at UPMARC Workshop on Task-Based Parallel Programming, Uppsala, Sweden. September 2012. | |
| An efficient Unbounded Lock-Free Queue for Multi-Core Systems. Talk given at Euro-Par 2012, Rhodes Island, Greece. August 2012. | |
| Targeting distributed systems in FastFlow. Talk given at CoreGrid Symposium (co-located with Euro-Par 2012), August 2012. | |
| Pattern-based Parallel Edge Preserving Algorithm for Salt-and-Pepper Image Denoising. Talk given at HPC Advisory Council Swiss Workshop, March 2012. Video of the talk from InsideHPC (including several comments on theory of synchronization in the shared memory) | |
| Accelerating code on multi-cores with FastFlow. Talk given at Euro-Par 2011, Bordeaux, France. September 2011. | |
| On Parallelizing On-Line Statistics for Stochastic Biological Simulations. Talk given at HiBB 2011: High Performance Bioinformatics and Biomedicine, Bordeaux, France. September 2011. | |
| On Designing Multicore-Aware Simulators for Biological Systems. Talk given at IEEE PDP 2011: Parallel Distributed and network-based Processing, Ayia Napa, Ciprus. February 2011. | |
| Skeletons from grids to multicores. Invited talk at Vrije University, Amsterdam, The Netherlands. October 2010. | |
| Porting Decision Tree Algorithms to Multicore Using FastFlow. Extended version of the slides presented at ECML-PKDD 2010, Barcelona, Spain. September 2010. | |
| FastFlow: a pattern-based programming framework for multicores. Dagstuhl seminar 10191, Schloss Dagstuhl, Germany. May 2010. Invited. Slides available on-demand. | |
| FastFlow: why we need yet another programming framework. Guest lecture, Computer science Dept. Queen’s University Belfast, UK. March 2010. Invited within Master Course CSC4005. Slides available on-demand. | |
| Efficient Smith-Waterman on multi-core with FastFlow. Talk given at IEEE PDP 2010: Parallel Distributed and network-based Processing, Pisa, Italy. February 2010. | |
| Efficient streaming applications on multi-core with FastFlow: the biosequence alignment test-bed. Talk given at ParCo 2009, Lyon, France. September 2009. | |
Papers from people not directly involved in FastFlow design. The listing is not meant to be neither complete not always up to date.
At April 2011, after 1 year and half of life, the FastFlow website has been visited by about 20000 visitors; the project counts about 2400 downloads of the 1.0 stable build, and about 2000 downloads of the beta version from the sourceforge svn. Many of these people encouraged us to go on. We thanks all of them.