FastFlow is a pattern-based programming framework targeting streaming applications. It implements pipeline, farm, divide and conquer, and their composition, as well as generic streaming networks. It is specifically designed to support the development and the seamless porting of existing applications on multi-core. The layered template-based C++ design ensures flexibility and extendibility. Its lock-free/fence-free run-time support minimizes cache invalidation traffic and enforces the development of high-performance (high-throughput, low-latency) scalable applications. It has been proven faster than TBB, OpenMP, and Cilk on several micro-benchmarcks and real-world applications, especially when dealing with fine-grained parallelism and high-throughput applications.
|Tags||multi-core Patterns parallel programming Programming C++ Library Multithreading multithreaded Parallel Computing Parallel processing Parallelization parallel allocator Programming - Tools Programming - Components and Libraries lock-free|
|Operating Systems||Linux Mac OS X Windows (32 and 64bit)|
|Implementation||C++ Assembly C cmake|
Release Notes: 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.
Release Notes: This version has been tested on Linux, Mac OS (32- and 64-bit, 10.3 or later), and Windows XP and 7 (32- and 64-bit). Michael and Scott's queue was reworked and tested. It now requires only CAS (instead of DoubleWord-CAS) and it works on both 32-bit and 64-bit architectures. Some performance problems on Windows platforms were fixed. A Quicksort example implementation was added, which uses MPMC queue (both in the blocking version and the non-blocking version).
Release Notes: 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.
Release Notes: Unbounded SWSR queue was improved. A list-based dynamic queue was added. The directory structure was changed. cmake compilation support was added. Some bugs in ffStats and a memory leak were fixed. Multiple stream management was added. Compilation warnings were fixed. The accelerator was improved.
Release Notes: This release introduces the ubuffer.hpp file, which contains a new and fast unbounded buffer implementation based on the SWSR_Ptr_Buffer. It introduces the ability to choose at compile time between a bounded and unbounded buffer in the implementation of the point-to-point channel (SWSR_Ptr_Buffer vs uSWSR_Ptr_Buffer). The allocator has been revisited and improved. There are minor cosmetic changes.