FastFlow is a C/C++ programming framework supporting the development of pattern-based parallel programs on multi/many-core and distributed platforms.
Workflow Automation Software Free
• Parallel patterns
Small (<50 employees), Medium (50 to 1000 employees), Enterprise (>1001 employees)
• Parallel patterns
• Skeleton (pipeline, farm, map, reduce)
• Non-blocking algorithms
• Distributed programming
FastFlow is a usable, efficient, flexible and parallel programming framework written in C/C++ promoting pattern based parallel programming which has a distributed run-time for targeting cluster of workstations and for programming heterogeneous multi or many-cores platforms.
FastFlow offers features such as image filtering, block-based matrix multiplication, mandelbrot set computation, dot product, Pattern and algorithmic skeleton, stream-based parallel patterns like pipe, farm, pattern modifier like feedback, Data-parallel patterns like map, stencil-reduce and Task-parallel pattern like async function execution, macro-data-flow and D&C. FastFlow comes as a C++ template library designed as a stack of layers (threefold: portability, extensibility, and performance) that progressively abstracts out the programming of parallel applications.
FastFlow has a run-time support which uses non-blocking multi-threading with lock-less synchronizations, zero-copy network messaging (via 0MQ/TCP and RDMA/Infiniband) and asynchronous data feeding for accelerator offloading to efficiently support fine grain parallelism (and very high frequency streaming).
The Fastflow offloading feature is concerned with abstracting over auxiliary hardware or software accelerators (e.g. GPGPUs or set-of-cores) where it allows the model to be heterogeneous over the hardware in that code that is to be executed on a CPU which makes use of this layer may be partially offloaded onto accelerators and provides the programmer with one (untyped) streaming input channel and one (untyped) streaming output channel that can be dynamically created (and destroyed) from a C++ code (either sequential or multi-threaded) as a C++ object. SPSC FastFlow queue has an unbound version which can dynamically and automatically grow and shrink to match actual size requirements.