Task-Parallel versus Data-Parallel Library-Based Programming in Multicore Systems

Multicore machines are becoming common. There are many languages, language extensions and libraries devoted to improve the programmability and performance of these machines. In this paper we compare two libraries, that face the problem of programming multicores from two different perspectives, task parallelism and data parallelism. The Intel Threading Building Blocks (TBB) library separates logical task patterns, which are easy to understand, from physical threads, and delegates the scheduling of the tasks to the system. On the other hand, Hierarchically Tiled Arrays (HTAs) are data structures that facilitate locality and parallelism of array intensive computations with a block-recursive nature following a data-parallel paradigm.Our comparison considers both ease of programming and the performance obtained using both approaches. In our experience, HTA programs tend to be smaller or as long as TBB programs, while performance of both approaches is very similar.

[1]  Katherine Yelick,et al.  Introduction to UPC and Language Specification , 2000 .

[2]  Edward G. Coffman,et al.  Organizing matrices and matrix operations for paged memory systems , 1969, Commun. ACM.

[3]  James Reinders,et al.  Intel threading building blocks - outfitting C++ for multi-core processor parallelism , 2007 .

[4]  David R. Butenhof Programming with POSIX threads , 1993 .

[5]  Piyush Mehrotra,et al.  Vienna Fortran—a Fortran language extension for distributed memory multiprocessors , 1992 .

[6]  Bradford L. Chamberlain,et al.  The case for high-level parallel programming in ZPL , 1998 .

[7]  Rohit Chandra,et al.  Parallel programming in openMP , 2000 .

[8]  Robert W. Numrich,et al.  Co-array Fortran for parallel programming , 1998, FORF.

[9]  Monica S. Lam,et al.  A data locality optimizing algorithm , 1991, PLDI '91.

[10]  Richard M. Brown,et al.  The ILLIAC IV Computer , 1968, IEEE Transactions on Computers.

[11]  Robert C. Armstrong POET (Parallel Object-Oriented Environment and Toolkit) and frameworks for scientific distributed computing , 1997, Proceedings of the Thirtieth Hawaii International Conference on System Sciences.

[12]  David A. Padua,et al.  Programming for parallelism and locality with hierarchically tiled arrays , 2006, PPoPP '06.

[13]  Lawrence Rauchwerger,et al.  Design and Use of htalib - A Library for Hierarchically Tiled Arrays , 2006, LCPC.

[14]  Vivek Sarkar,et al.  X10: an object-oriented approach to non-uniform cluster computing , 2005, OOPSLA '05.

[15]  Monica S. Lam,et al.  A data locality optimizing algorithm (with retrospective) , 1991 .