Projects / FastFlow


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.

Operating Systems

Recent releases

  •  02 Apr 2014 16:30

    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.

    •  09 Dec 2012 11:31

      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.

      •  26 Apr 2011 09:29

        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).

        •  03 Apr 2011 14:14

          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.

          •  02 Sep 2010 09:13

            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.

            Recent comments

            23 Mar 2010 00:41 aldinuc

            Release 1.0-rc2 now available:

            - introduced the ubuffer.hpp file containing a new and fast unbounded buffer implementation based on the SWSR_Ptr_Buffer
            - introduced the possibility to choose at compile time between 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
            - minor cosmetic changes

            03 Feb 2010 22:25 aldinuc

            Release 1.0 now available (with several new features).


            Project Spotlight


            A Fluent OpenStack client API for Java.


            Project Spotlight

            TurnKey TWiki Appliance

            A TWiki appliance that is easy to use and lightweight.