The STAPL pList

We present the design and implementation of the staplpList, a parallel container that has the properties of a sequential list, but allows for scalable concurrent access when used in a parallel program. The Standard Template Adaptive Parallel Library (stapl) is a parallel programming library that extends C++ with support for parallelism. stapl provides a collection of distributed data structures (pContainers) and parallel algorithms (pAlgorithms) and a generic methodology for extending them to provide customized functionality. staplpContainers are thread-safe, concurrent objects, providing appropriate interfaces (e.g., views) that can be used by generic pAlgorithms. The pList provides stl equivalent methods, such as insert, erase, and splice, additional methods such as split, and efficient asynchronous (non-blocking) variants of some methods for improved parallel performance. We evaluate the performance of the staplpList on an IBM Power 5 cluster and on a CRAY XT4 massively parallel processing system. Although lists are generally not considered good data structures for parallel processing, we show that pList methods and pAlgorithms (p_generate and p_partial_sum) operating on pLists provide good scalability on more than 103 processors and that pList compares favorably with other dynamic data structures such as the pVector.

[1]  Lawrence Rauchwerger,et al.  ARMI: an adaptive, platform independent communication library , 2003, PPoPP '03.

[2]  Andrew Lumsdaine,et al.  Lifting sequential graph algorithms for distributed-memory parallel computation , 2005, OOPSLA '05.

[3]  Laxmikant V. Kalé,et al.  CHARM++: a portable concurrent object oriented system based on C++ , 1993, OOPSLA '93.

[4]  Nancy M. Amato,et al.  Associative Parallel Containers in STAPL , 2007, LCPC.

[5]  Nancy M. Amato,et al.  Design for Interoperability in stapl: pMatrices and Linear Algebra Algorithms , 2008, LCPC.

[6]  S. Sitharama Iyengar,et al.  Introduction to parallel algorithms , 1998, Wiley series on parallel and distributed computing.

[7]  Albert Chan,et al.  CGMgraph/CGMlib: Implementing and Testing CGM Graph Algorithms on PC Clusters , 2003, PVM/MPI.

[8]  Lawrence Rauchwerger,et al.  Armi: a High Level Communication Library for Stapl , 2006, Parallel Process. Lett..

[9]  Guy E. Blelloch,et al.  Vector Models for Data-Parallel Computing , 1990 .

[10]  Eric Ruppert,et al.  Lock-free linked lists and skip lists , 2004, PODC '04.

[11]  Maged M. Michael,et al.  High performance dynamic lock-free hash tables and list-based sets , 2002, SPAA '02.

[12]  William Pugh,et al.  Concurrent maintenance of skip lists , 1990 .

[13]  Timothy L. Harris,et al.  A Pragmatic Implementation of Non-blocking Linked-Lists , 2001, DISC.

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

[15]  Nancy M. Amato,et al.  A framework for adaptive algorithm selection in STAPL , 2005, PPoPP.

[16]  Nancy M. Amato,et al.  The STAPL pArray , 2007, MEDEA '07.

[17]  Nancy M. Amato,et al.  STAPL: A Standard Template Adaptive Parallel C++ Library , 2001 .

[18]  Guy E. Blelloch,et al.  NESL: A Nested Data-Parallel Language (Version 2.6) , 1993 .

[19]  John D. Valois Lock-free linked lists using compare-and-swap , 1995, PODC '95.

[20]  Maurice Herlihy,et al.  A methodology for implementing highly concurrent data objects , 1993, TOPL.

[21]  Guy E. Blelloch,et al.  NESL: A Nested Data-Parallel Language , 1992 .

[22]  Dennis Gannon,et al.  HPC++: experiments with the parallel standard template library , 1997, ICS '97.

[23]  Jack Dongarra,et al.  Recent Advances in Parallel Virtual Machine and Message Passing Interface, 15th European PVM/MPI Users' Group Meeting, Dublin, Ireland, September 7-10, 2008. Proceedings , 2008, PVM/MPI.

[24]  Bradford L. Chamberlain,et al.  The cascade high productivity language , 2004, Ninth International Workshop on High-Level Parallel Programming Models and Supportive Environments, 2004. Proceedings..