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.
Product's homepage
What's New in This Release: [ read full changelog ]
· This release marks the first porting onto the Windows OS.
· It has been tested on Windows 7 on the x86_64 architecture with Visual Studio 10.
· More examples were added.
· Many improvements were made to the allocator, such as deferred reclamation and memory alignment.
· A new mapping API was added.
· Multi-push, multi-producers/multi-consumers queue, Posix_memalign in the allocator, and Ticket-spinlock were implemented.
· The ff_queue implementation of a SPSC queue was added.
· Several bugs were fixed.