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, GPGPUs, and clusters of them. 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 comparable or 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 CUDA OpenCL|
Release Notes: A major redesign of implementation layers, new patterns, a partial migration to C++11, support for GPGPUs (CUDA and OpenCL), and native support (zero-copy) for Infiniband networks and TCP/IP.
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.