Design for Interoperability in stapl: pMatrices and Linear Algebra Algorithms

The Standard Template Adaptive Parallel Library ( stapl ) is a high-productivity parallel programming framework that extends C++ and stl with unified support for shared and distributed memory parallelism. stapl provides distributed data structures ( pContainers ) and parallel algorithms ( pAlgorithms ) and a generic methodology for extending them to provide customized functionality. To improve productivity and performance, it is essential for stapl to exploit third party libraries, including those developed in programming languages other than C++. In this paper we describe a methodology that enables third party libraries to be used with stapl . This methodology allows a developer to specify when these specialized libraries can correctly be used, and provides mechanisms to transparently invoke them when appropriate. It also provides support for using stapl pAlgorithms and pContainers in external codes. As a concrete example, we illustrate how third party libraries, namely BLAS and PBLAS, can be transparently embedded into stapl to provide efficient linear algebra algorithms for the stapl pMatrix , with negligible slowdown with respect to the optimized libraries themselves.

[1]  Douglas Gregor,et al.  Proposed Wording for Concepts , 2007 .

[2]  Denis Caromel,et al.  Computing in Object-Oriented Parallel Environments , 2002, Lecture Notes in Computer Science.

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

[4]  Joel H. Saltz,et al.  Interoperability of data parallel runtime libraries with meta-chaos , 1996 .

[5]  Jaakko Järvi,et al.  Library composition and adaptation using c++ concepts , 2007, GPCE '07.

[6]  Jaeyoung Choi,et al.  Design and Implementation of the ScaLAPACK LU, QR, and Cholesky Factorization Routines , 1994, Sci. Program..

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

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

[9]  Andrew Lumsdaine,et al.  Effecting parallel graph eigensolvers through library composition , 2006, Proceedings 20th IEEE International Parallel & Distributed Processing Symposium.

[10]  Ed Anderson,et al.  LAPACK Users' Guide , 1995 .

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

[12]  Todd L. Veldhuizen,et al.  Arrays in Blitz++ , 1998, ISCOPE.

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

[14]  James Demmel,et al.  Prospectus for the Next LAPACK and ScaLAPACK Libraries , 2006, PARA.

[15]  David S. Wise,et al.  Representation-transparent matrix algorithms with scalable performance , 2007, ICS '07.

[16]  Jack Dongarra,et al.  Applied Parallel Computing. State of the Art in Scientific Computing, 8th International Workshop, PARA 2006, Umeå, Sweden, June 18-21, 2006, Revised Selected Papers , 2007, PARA.

[17]  David R. Musser,et al.  STL tutorial and reference guide, second edition: C++ programming with the standard template library , 2001 .

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