Generative Version of the FastFlow Multicore Library

Nowadays, one of the most important challenges in programming is the efficient usage of multicore processors. Many new programming languages and libraries support multicore programming.FastFlow is one of the most promising multicore C++ libraries. Unfortunately, a design problem occurs in the library. One of the most important methods is pure virtual function in a base class. This method supports the communication between different threads. Although, it cannot be template function because of the virtuality, hence, the threads pass and take argument as a void* pointer. The base class is not template neither. This is not typesafe approach. We make the library more efficient and safer with the help of generative technologies.

[1]  David Abrahams,et al.  C++ Template Metaprogramming: Concepts, Tools, and Techniques from Boost and Beyond (C++ In-Depth Series) , 2004 .

[2]  L. Dagum,et al.  OpenMP: an industry standard API for shared-memory programming , 1998 .

[3]  Krzysztof Czarnecki,et al.  Generative programming - methods, tools and applications , 2000 .

[4]  Norbert Pataki,et al.  C++ Metastring Library and Its Applications , 2009, GTTSE.

[5]  Bjarne Stroustrup,et al.  The C++ Programming Language: Special Edition , 2000 .

[6]  Massimo Torquati,et al.  Efficient Smith-Waterman on Multi-core with FastFlow , 2010, 2010 18th Euromicro Conference on Parallel, Distributed and Network-based Processing.

[7]  Akim Demaille,et al.  Design Patterns for Generic Programming in C++ , 2001, COOTS.

[8]  James Reinders,et al.  Intel® threading building blocks , 2008 .

[9]  Norbert Pataki,et al.  Multicore C++ Standard Template Library in a Generative Way , 2011, Electron. Notes Theor. Comput. Sci..

[10]  Torquati Massimo,et al.  Efficient streaming applications on multi-core with FastFlow: the biosequence alignment test-bed. , 2009 .

[11]  Andrei Alexandrescu,et al.  Modern C++ Design , 2001 .

[12]  Sergei Gorlatch,et al.  Generic Parallel Programming Using C++ Templates and Skeletons , 2003, Domain-Specific Program Generation.

[13]  Massimo Torquati,et al.  Porting Decision Tree Algorithms to Multicore using FastFlow , 2010, ECML/PKDD.

[14]  Chuck Pheatt,et al.  Intel® threading building blocks , 2008 .

[15]  Neil B. Harrison,et al.  The dynamics of changing dynamic memory allocation in a large-scale C++ application , 2006, OOPSLA '06.

[16]  Charles E. Leiserson,et al.  The Cilk++ concurrency platform , 2009, 2009 46th ACM/IEEE Design Automation Conference.