Friday, April 7, 2017

FastFlow

"FastFlow (快速流) is a C++ parallel programming framework advocating high-level, pattern-based parallel programming. It chiefly supports streaming and data parallelism, targeting heterogenous platforms composed of clusters of shared-memory platforms, possibly equipped with computing accelerators such as NVidia GPGPUs, Xeon Phi, Tilera TILE64.

The main design philosophy of FastFlow is to provide application designers with key features for parallel programming (e.g. time-to-market, portability, efficiency and performance portability) via suitable parallel programming abstractions and a carefully designed run-time support.

FastFlow is a general-purpose C++ programming framework for heterogenous parallel platforms. Like other high-level programming frameworks, such as Intel TBB and OpenMP, it simplifies the design and engineering of portable parallel applications. However, it has a clear edge in terms of expressiveness and performance with respect to other parallel programming frameworks in specific application scenarios, including, inter alia:
  • fine-grain parallelism on cache-coherent shared-memory platforms;
  • streaming applications;
  • coupled usage of multi-core and accelerators.
In other cases FastFlow is typically comparable to (and is some cases slightly faster than) state-of-the-art parallel programming frameworks such as Intel TBB, OpenMP, Cilk, etc. More details may be found on the performance page. A number of both micro-benchmarks and real-world applications has been developed with FastFlow (or ported from other parallel libraries) in order to asses its usability and performance, among the others:
  • Bowtie2: fast and sensitive read alignment (multicore; porting of the original version developed with pthreads and spinlocks)
  • Two-phase video/image restoration for impulsive/Gaussian noise (multicore, GPGPUs, heterogeneous; original algorithm)
  • Block-based Cholesky & LU decomposition for dense matrices (multicore, original algorithms)
  • Yadt C4.5 classifier (multicore; original algorithm)
  • CWC Gillespie simulator for systems biology (multicore, distributed, GPGPUs; original algorithm)
  • SWPS3: vectorized Smith-Waterman local alignment software (multicore; porting of the original version developed with pthreads)
  • pbzip2: Parallel BZIP2 (multicore; porting of the original version developed with POSIX processes)
  • Fast networks Deep Packet Inspection (multicore; original algorithm)
  • Several standard algorithms, such as nqueens, fibonacci, QT-mandebrot, matrix block multiplication, … (multicore, GPGPUs, distributed, heterogeneous)
  • over 100 micro-benchmarks testing individual features and patterns (multicore, GPGPUs, distributed, heterogeneous)
The source code of (almost) all applications can be found in the FastFlow SVN repository under either LGPLv3 or GNU GPL license. The design of applications and their performance are described in research papers."

http://calvados.di.unipi.it/

https://sourceforge.net/p/mc-fastflow/code/HEAD/tree/

FastFlow Tutorial - https://arxiv.org/abs/1204.5402

FastFlow: Efficient Parallel Streaming Applications on Multi-core - https://arxiv.org/abs/0909.1187

No comments:

Post a Comment