Abstract
Writing a parallel program can be a difficult task which has to meet several, sometimes conflicting goals. While the manual approach is time-consuming and error-prone, the use of compilers reduces the programmer’s control and often does not lead to an optimal result. With our approach, PolyAPM, the programming process is structured as a series of source-to-source transformations. Each intermediate result is a program for an Abstract Parallel Machine (APM) on which it can be executed to evaluate the transformation. We propose a decision tree of programs and corresponding APMs that help to explore alternative design decisions. Our approach stratifies the effects of individual, self-contained transformations and enables their evaluation during the parallelisation process.
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
William Blume, Rudolf Eigenmann, Keith Faigin, John Grout, Jay Hoeflinger, David Padua, Paul Petersen, William Pottenger, Lawrence Rauchwerger, Peng Tu, and Stephen Weatherford. Polaris: Improving the effectiveness of parallelizing compilers. In Keshav Pingali, Uptal Banerjee, David Gelernter, Alex Nicolau, and David Padua, editors, Proceedings of the 7th International Workshop on Languages and Compilers for Parallel Computing, LNCS 892, pages 141–154. Springer-Verlag, 1995.
Thomas Brandes. ADAPTOR Programmer’s Guide, Version 6.0, June 1998. Available via anonymous ftp from ftp://gmd.de as gmd/adaptor/docs/pguide.ps.
Nils Ellmenreich and Christian Lengauer. Comparative Parallel Programming with PolyAPM using Abstract Parallel Machines. In Peter Knijnenburg and Paul van der Mark, editors, Proc. 10th Intl. Worksh. on Compilers for Parallel Computers (CPC 2003). Leiden Institute of Advanced Computer Science, January 2003. http://www.infosun.fmi.uni-passau.de/cl/papers/EllLen03.html.
Ian Foster. Design and Building Parallel Programs. Addison-Wesley, 1995.
Martin Griebl and Christian Lengauer. The loop parallelizer LooPo. In Michael Gerndt, editor, Proc. Sixth Workshop on Compilers for Parallel Computers (CPC’96), Konferenzen des Forschungszentrums Julich 21, pages 311–320. Forschungszentrum Julich, 1996.
Joy Goodman. Incremental Program Transformations using Abstract Parallel Machines. PhD thesis, Department of Computing Science, University of Glasgow, September 2001.
Christian Lengauer. Loop parallelization in the polytope model. In Eike Best, editor, CONCUR’93, Lecture Notes in Computer Science 715, pages 398–416. Springer-Verlag, 1993.
John O’Donnell and Gudula Rünger. A methodology for deriving abstract parallel programs with a family of parallel abstract machines. In Christian Lengauer, Martin Griebl, and Sergei Gorlatch, editors, EuroPar’97: Parallel Processing, LNCS 1300, pages 662–669. Springer-Verlag, 1997.
Constantine Polychronopoulos, Milind B. Girkar, Mohammad R. Haghighat, Chia L. Lee, Bruce P. Leung, and Dale A. Schouten. The structure of Parafrase-2: An advanced parallelizing compiler for C and Fortran. In David Gelernter, Alex Nicolau, and David Padua, editors, Languages and Compilers for Parallel Computing (LCPC’90), Research Monographs in Parallel and Distributed Computing, pages 423–453. Pitman, 1990.
Sven-Bodo Scholz. Single Assignment C — Functional Programming Using Imperative Style. In John Glauert, editor, Proceedings of the 6th International Workshop on the Implementation of Functional Languages. University of East Anglia, 1994.
Phil Trinder, Kevin Hammond, Jim S. Mattson Jr, Andrew Partridge, and Simon Peyton Jones. GUM: A portable parallel implementation of Haskell. In Proc. of ACM SIPGLAN Conf. on Programming Languages Design and Implementation (PLDI’96), pages 79–88. ACM Press, May 1996.
Robert P. Wilson, Robert S. French, Christopher S. Wilson, Saman P. Amarasinghe, Jennifer M. Anderson, Steve W. K. Tjiang, Shih-Wei Liao, Chau-Wen Tseng, Mary W. Hall, Monica S. Lam, and John L. Hennessy. SUIF: An infrastructure for research on parallelizing and optimizing compilers. In Proc. Fourth ACM SIGPLAN Symp. on Principles & Practice of Parallel Programming (PPoPP), pages 31–37. ACM Press, 1994. http://suif.stanford.edu/suif/.
Noel Winstanley. Staged Methodologies for Parallel Programming. PhD thesis, Department of Computing Science, University of Glasgow, April 2001.
Michel Wolfe. Iteration space tiling for memory hierarchies. In G. Rodrigue, editor, Parallel Processing for Scientific Computing, pages 357–361. SIAM, 1987.
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
Ellmenreich, N., Lengauer, C. (2003). PolyAPM: Parallel Programming via Stepwise Refinement with Abstract Parallel Machines. In: Peña, R., Arts, T. (eds) Implementation of Functional Languages. IFL 2002. Lecture Notes in Computer Science, vol 2670. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-44854-3_8
Download citation
DOI: https://doi.org/10.1007/3-540-44854-3_8
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-40190-2
Online ISBN: 978-3-540-44854-9
eBook Packages: Springer Book Archive