UPMARC Workshop on Task-Based Parallel Programming
FastFlow: high-level programming patterns with non-blocking lock-free run-time support
Marco Aldinucci, Computer Science Dept., University of Torino, Italy
Abstract. Achieving peak performance on modern multi-core architectures is hard and may require substantial programming effort. The synchronisation of many processes accessing shared memory has been a fundamental problem of parallel computing for years, and many solutions have been proposed to address this issue. Non-blocking synchronisation and transactional primitives have been envisaged as a way to reduce synchronisation overhead. Despite sometimes being effective (and garnering much attention in the research community), they are only one facet of the problem, as their exploitation also requires non-trivial programming skills.
FastFlow aims to bridge these two facets by providing C++ programmers with high-level streaming patterns (in a STL style) on top of a lock-free non-blocking run-time support. On the one hand, the programmer can design applications while reasoning in a traditional Object-Oriented style without dealing with synchronisation complexity. On the other hand, the FastFlow run-time supports the approach with very-low-latency synchronisation support (20-50 clock-cycles/msg core-to-core) thus reducing parallelisation overhead and extending the range of scalable applications toward fine-grained high-frequency applications (e.g. hundreds of ns per task).
FastFlow home page: http://di.unito.it/fastflow