Quaff: efficient C++ design for parallel skeletons

We present QUAFF, a new skeleton-based parallel programming library. Its main originality is to rely on C++ template meta-programming techniques to achieve high efficiency. In particular, by performing most of skeleton instantiation and optimization at compile-time, QUAFF can keep the overhead traditionally associated to object-oriented implementations of skeleton-based parallel programming libraries very small. This is not done at the expense of expressivity. This is demonstrated in this paper by several applications, including a full-fledged, realistic real-time vision application.

[1]  Christopher G. Harris,et al.  A Combined Corner and Edge Detector , 1988, Alvey Vision Conference.

[2]  Thierry Chateau,et al.  Real Time Parallel Implementation of a Particle Filter Based Visual Tracking , 2006 .

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

[4]  Emanuele Trucco,et al.  A compact algorithm for rectification of stereo pairs , 2000, Machine Vision and Applications.

[5]  Bernhard P. Wrobel,et al.  Multiple View Geometry in Computer Vision , 2001 .

[6]  Frédéric Loulergue Implementation of a Functional Bulk Synchronous Parallel Programming Library , 2002, IASTED PDCS.

[7]  Andrew Zisserman,et al.  Multiple view geometry in computer visiond , 2001 .

[8]  Kevin Hammond,et al.  Research Directions in Parallel Functional Programming , 1999, Springer London.

[10]  Andrei Alexandrescu,et al.  Modern C++ design: generic programming and design patterns applied , 2001 .

[11]  Keith Baker,et al.  5th Alvey vision Conference , 1990, Image Vis. Comput..

[12]  Herbert Kuchen,et al.  A Skeleton Library , 2002, Euro-Par.

[13]  Herbert Kuchen,et al.  Higher-order functions and partial applications for a C++ skeleton library , 2002, JGI '02.

[14]  Murray Cole,et al.  Bringing skeletons out of the closet: a pragmatic manifesto for skeletal parallel programming , 2004, Parallel Comput..

[15]  Salvatore Orlando,et al.  P3 L: A structured high-level parallel language, and its structured support , 1995, Concurr. Pract. Exp..

[16]  Marco Danelutto,et al.  An advanced environment supporting structured parallel programming in Java , 2003, Future Gener. Comput. Syst..

[17]  Marco Danelutto,et al.  Lithium: A Structured Parallel Programming Environment in Java , 2002, International Conference on Computational Science.

[18]  Todd L. Veldhuizen,et al.  Expression templates , 1996 .

[19]  Dennis Gannon,et al.  Active Libraries: Rethinking the roles of compilers and libraries , 1998, ArXiv.

[20]  Susumu Horiguchi,et al.  Parallel Standard ML with Skeletons , 2001, Scalable Comput. Pract. Exp..

[21]  Stephen Gilmore,et al.  Using eSkel to Implement the Multiple Baseline Stereo Application , 2005, PARCO.

[22]  Katta G. Murty,et al.  On KΔ , 1986, Discret. Appl. Math..

[23]  Todd L. Veldhuizen Five compilation models for C++ templates , 2000 .