FastFlow is multi-core programming framework that implements lock-free MPMC FIFO queues specifically designed to support the development of high-level programming frameworks on cache-coherent multi-core. FastFlow is faster than TBB, OpenMP and Cilk. FastFlow is specifically targeted to support the development of efficient streaming applications on cache-coherent multi-core platforms. It is realised as a C++ template library.
Vanilla or other flavours
Fastflow could be directly used to develop efficient multithreaded applications in a TBB fashion. However, it has been designed to support the design and development of high-level programming frameworks on multi-core platforms. They include Problem Solving Environment and general-purpose toolkits. As an example, we are currently developing a FastFlow-based frameworks to support
* Parallel Monte Carlo simulations;
* Parallel macro data-flow interpretation with automatic parallelization feature supporting skeletal programming;
* An extension of Intel TBB supporting general streaming networks;
* A (blazing fast) parallel memory allocator.
FastFlow is fast
We experimentally demonstrate that FastFlow is always more efficient than state-of-the-art multi-core programming frameworks in a set of micro-benchmarks and on a real world application; the speedup edge of FastFlow over other solutions might be bold for fine grain tasks, as an example +35% on OpenMP, +226% on Cilk, +96% on TBB for the alignment of protein P01111 against UniProt DB using Smith-Waterman algorithm.
FastFlow is open source under GPL.
What's New in This Release: [ read full changelog ]
· More programming patterns (map/for_all, reduce).
· Doxygen class documentation.
· Automatic thread mapping and pinning.
· Major performance improvements.
· Several new lock-free algorithms (e.g. fast unbound queue, and several others from other authors).
· A parallel memory allocator.
· A distributed version.
· Examples of GPGPUs usage.