Abstract
The Standard Template Adaptive Parallel Library (STAPL) is a parallel library designed as a superset of the ANSI C++ Standard Template Library (STL). It is sequentially consistent for functions with the same name, and executes on uni- or multi-processor systems that utilize shared or distributed memory. STAPL is implemented using simple parallel extensions of C++ that currently provide a SPMD model of parallelism, and supports nested parallelism. The library is intended to be general purpose, but emphasizes irregular programs to allow the exploitation of parallelism for applications which use dynamically linked data structures such as particle transport calculations, molecular dynamics, geometric modeling, and graph algorithms. STAPL provides several different algorithms for some library routines, and selects among them adaptively at runtime. STAPL can replace STL automatically by invoking a preprocessing translation phase. In the applications studied, the performance of translated code was within 5% of the results obtained using STAPL directly. STAPL also provides functionality to allow the user to further optimize the code and achieve additional performance gains. We present results obtained using STAPL for a molecular dynamics code and a particle transport code.
This research supported in part by NSF CAREER Awards CCR-9624315 and CCR-9734471, NSF Grants ACI-9872126, EIA-9975018, EIA-0103742, and by the DOE ASCI ASAP program grant B347886.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
References
The CHARM++ Programming Language Manual. http://charm.cs.uiuc.edu, 2000.
N.M. Amato, J. Perdue, A. Pietracaprina, G. Pucci, and M. Mathis. Predicting performance on SMPs. a case study: The SGI Power Challenge. In Proc. International Parallel and Distributed Processing Symposium (IPDPS), pages 729–737, 2000.
N. M. Amato, A. Pietracaprina, G. Pucci, L. K. Dale, and J. Perdue. A cost model for communication on a symmetric multiprocessor. Technical Report 98-004, Dept. of Computer Science, Texas A&M University, 1998. A preliminary verson of this work was presented at the SPAA’98 Revue.
Ping An, Alin Jula, Silvius Rus, Steven Saunders, Tim Smith, Gabriel Tanase, Nathan Thomas, Nancy Amato, and Lawrence Rauchwerger. Stapl: An adaptive, generic parallel programming library for c++. Technical Report TR01-012, Dept. of Computer Science, Texas A&M University, June 2001.
Emery Berger, Kathryn McKinley, Robert Blumofe, and Paul Wilson. HOARD: A scalable memory allocator for multithreaded applications. In International Conference on Architectural Support for Programming Languages and Operatings Systems (ASPLOS), 2000.
Guy Blelloch. Vector Models for Data-Parallel Computing. MIT Press, 1990.
Guy Blelloch. NESL: A Nested Data-Parallel Language. Technical Report CMU-CS-93-129, Carnegie Mellon University, April 1993.
C. Chang, A. Sussman, and J. Saltz. Object-oriented runtime support for complex distributed data structures, 1995.
David Culler, Andrea Dusseau, Seth Copen Goldstein, Arvind Krishnamurthy, Steven Lumetta, Thorsten von Eicken, and Katherine Yelick. Parallel programming in Split-C. In International Conference on Supercomputing, November 1993.
Matteo Frigo, Charles Leiserson, and Keith Randall. The implementation of the Cilk-5 multithreaded language. In ACMSIGPLAN Conference on Programming Language Design and Implementation (PLDI), 1998.
Adolfy Hoisie, Olaf Lubeck, and Harvey Wasserman. Performance and scalability analysis of teraflop-scale parallel architectures using multidimensional wavefront applications. Technical Report LAUR-98-3316, Los Alamos National Laboratory, August 1998.
Adolfy Hoisie, Olaf Lubeck, and Harvey Wasserman. Scalability analysis of multidimensional wavefront algorithms on large-scale SMP clusters. In Proceedings of Frontiers’ 99: The 7th Symposium on the Frontiers of Massively Parallel Computation, pages 4–15, Annapolis, MD, February 1999. IEEE Computer Society.
International Standard ISO/IEC 14882. Programming Languages — C++, 1998. First Edition.
Elizabeth Johnson. Support for Parallel Generic Programming. PhD thesis, Indiana University, 1998.
Elizabeth Johnson and Dennis Gannon. HPC++: Experiments with the parallel standard library. In International Conference on Supercomputing, 1997.
K. R. Koch, R. S. Baker, and R. E. Alcouffe. Solution of the first-order form of the 3D discrete ordinates equation on a massively parallel processor. Transactions of the American Nuclear Society, 65:198–199, 1992.
David Musser, Gillmer Derge, and Atul Saini. STL Tutorial and Reference Guide, Second Edition. Addison-Wesley, 2001.
C.G. Plaxtion N.S. Arora, R.D. Blumofe. Thread scheduling for multiprogrammed multiprocessors. In Proceedings of the 10th ACM Symposium on Parallel Algorithms and Architectures, June 1998.
J. Reynders. Pooma: A framework for scientific simulation on parallel architectures, 1996.
Robert Sedgewick. Algorithms in C++. Addison-Wesley, 1992.
Thomas Sheffler. A portable MPI-based parallel vector template library. Technical Report RIACS-TR-95.04, Research Institute for Advanced Computer Science, March 1995.
Bjarne Stroustrup. The C++ Programming Language, Third Edition. Addison-Wesley, 1997.
Gregory Wilson and Paul Lu. Parallel Programming using C++. MIT Press, 1996.
Paul Wilson, Mark Johnstone, Michael Neely, and David Boles. Dynamic storage allocation: A survey and critical review. In International Workshop on Memory Management, September 1995.
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2003 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
An, P. et al. (2003). STAPL: An Adaptive, Generic Parallel C++ Library. In: Dietz, H.G. (eds) Languages and Compilers for Parallel Computing. LCPC 2001. Lecture Notes in Computer Science, vol 2624. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-35767-X_13
Download citation
DOI: https://doi.org/10.1007/3-540-35767-X_13
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-04029-3
Online ISBN: 978-3-540-35767-4
eBook Packages: Springer Book Archive