The Parallel BGL : A Generic Library for Distributed Graph Computations

This paper presents the Parallel BGL, a generic C ++ library for distributed graph computation. Like the sequential Boost Graph Library (BGL) upon which it is based, the Parallel BGL applies the paradigm of generic programming to the domain of graph computations. Emphasizing efficient generic algorithms and the use of concepts to specify the requirements on type parameters, the Parallel BGL also provides flexible supporting data structures such as distributed adjacency lists and external property maps. The generic programming approach simultaneously stresses flexibility and efficiency, resulting in a parallel graph library that can adapt to various data structures and communication models while retaining the efficiency of equivalent hand-coded programs. Performance data for selected algorithms are provided demonstrating the efficiency and scalability of the Parallel BGL.

[1]  Charles L. Lawson,et al.  Basic Linear Algebra Subprograms for Fortran Usage , 1979, TOMS.

[2]  Alexander A. Stepanov,et al.  Generic Programming , 1988, ISSAC.

[3]  Leslie G. Valiant,et al.  A bridging model for parallel computation , 1990, CACM.

[4]  Donald B. Johnson,et al.  A parallel algorithm for computing minimum spanning trees , 1992, SPAA '92.

[5]  Donald E. Knuth,et al.  The Stanford GraphBase - a platform for combinatorial computing , 1993 .

[6]  Andrew Rau-Chaplin,et al.  Scalable parallel geometric algorithms for coarse grained multicomputers , 1993, SCG '93.

[7]  Steve Goddard,et al.  Connected components algorithms for mesh-connected parallel computers , 1994, Parallel Algorithms.

[8]  David R. Oran,et al.  Proceedings of the conference on Applications, technologies, architectures, and protocols for computer communication , 1995, SIGCOMM 1995.

[9]  Kurt Mehlhorn,et al.  LEDA: a platform for combinatorial and geometric computing , 1997, CACM.

[10]  William Gropp,et al.  MPI-2: Extending the Message-Passing Interface , 1996, Euro-Par, Vol. I.

[11]  Michael J. Vilot,et al.  Standard template library , 1996 .

[12]  Robert A. van de Geijn,et al.  PLAPACK: Parallel Linear Algebra Package , 1997, PPSC.

[13]  James Demmel,et al.  ScaLAPACK: A Linear Algebra Library for Message-Passing Computers , 1997, PPSC.

[14]  Kurt Mehlhorn,et al.  The LEDA Platform of Combinatorial and Geometric Computing , 1997, ICALP.

[15]  Frank Dehne,et al.  Practical parallel algorithms for minimum spanning trees , 1998, Proceedings Seventeenth IEEE Symposium on Reliable Distributed Systems (Cat. No.98CB36281).

[16]  Ulrich Meyer,et al.  Delta-Stepping: A Parallel Single Source Shortest Path Algorithm , 1998, ESA.

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

[18]  Kurt Mehlhorn,et al.  A Parallelization of Dijkstra's Shortest Path Algorithm , 1998, MFCS.

[19]  Duncan J. Watts,et al.  Collective dynamics of ‘small-world’ networks , 1998, Nature.

[20]  Jeremy G. Siek,et al.  Generic Graph Algorithms for Sparse Matrix Ordering , 1999, ISCOPE.

[21]  FaloutsosMichalis,et al.  On power-law relationships of the Internet topology , 1999 .

[22]  Jeremy G. Siek,et al.  The generic graph component library , 1999, OOPSLA '99.

[23]  Albert,et al.  Emergence of scaling in random networks , 1999, Science.

[24]  Rajeev Motwani,et al.  The PageRank Citation Ranking : Bringing Order to the Web , 1999, WWW 1999.

[25]  Michalis Faloutsos,et al.  On power-law relationships of the Internet topology , 1999, SIGCOMM '99.

[26]  Christopher R. Palmer,et al.  Generating network topologies that obey power laws , 2000, Globecom '00 - IEEE. Global Telecommunications Conference. Conference Record (Cat. No.00CH37137).

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

[28]  David R. Musser,et al.  STL tutorial and reference guide , 2001 .

[29]  Pavel Tvrdík,et al.  A Parallel Algorithm for Connected Components on Distributed Memory Machines , 2001, PVM/MPI.

[30]  Greg Burns,et al.  LAM: An Open Cluster Environment for MPI , 2002 .

[31]  Jeremy G. Siek,et al.  The Boost Graph Library - User Guide and Reference Manual , 2001, C++ in-depth series.

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

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

[34]  Ümit V. Çatalyürek,et al.  A Scalable Parallel Graph Coloring Algorithm for Distributed Memory Computers , 2005, Euro-Par.

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

[36]  The Execution Instance Overloading Pattern , 2005 .

[37]  Alan M. Frieze,et al.  Random graphs , 2006, SODA '06.