Static Parallelization of Functional Programs: Elimination of Higher-Order Functions & Optimized Inlining
Functional programs have long been recognized as attractive subjects of an implicit static parallelization because functional programming excludes artificial dependences, which would restrict parallelism. One central concept which makes functional programming a powerful paradigm is the higher-order function, which can have functions appearing in its arguments or result. We present an automatic method of eliminating higher-order functions, which is based on earlier work by Bell, Bellegarde and Hook . The number of auxiliary functions added in the process is subsequently minimized by inlining transformations.
Keywordsfunctional programming Haskell higher-order function inlining parallelization skeletons
Unable to display preview. Download preview PDF.
- Alfred V. Aho, John E. Hopcroft, and Jeffrey D. Ullman. The Design and Analysis of Computer Algorithms. Series in Computer Science and Information Processing. Addison-Wesley, 1974.Google Scholar
- Richard Bird. Introduction to Functional Programming using Haskell. Series in Computer Science. Prentice Hall Europe, 2nd edition, 1998.Google Scholar
- Christoph A. Herrmann and Christian Lengauer. Size inference of nested lists in functional programs. In Kevin Hammond, Tony Davie, and Chris Clack, editors, Proc. 10th Int. Workshop on the Implementation of Functional Languages (IFL’98), pages 346–364. Department of Computer Science, University College London, 1998.Google Scholar
- Christoph A. Herrmann, Christian Lengauer, Robert Günz, Jan Laitenberger, and Christian Schaller. A compiler for HDC. Technical Report MIP-9907, Fakultät für Mathematik und Informatik, Universität Passau, May 1999.Google Scholar
- Zhenjiang Hu. Personal communication at the Dagstuhl Seminar on High-Level Parallel Programming, April 1999.Google Scholar
- Thomas Johnsson. Lambda lifting: Transforming programs to recursive equations. In Jean-Pierre Jouannaud, editor, Proc. Conf. on Functional Programming Languages and Computer Architecture (FPCA’85), LNCS 201. Springer-Verlag, 1985.Google Scholar
- Lehrstuhl für Programmierung, Universität Passau. The HDC compiler project. http://www.fmi.uni-passau.de/cl/hdc/.
- Simon L. Peyton Jones. Compiling Haskell by program transformation: A report from the trenches. In Hanne Riis Nielson, editor, Programming Languages and Systems (ESOP’96), LNCS 1058, pages 18–44. Springer-Verlag, 1996.Google Scholar
- Christian Schaller. Elimination von Funktionen höherer Ordnung in Haskell-Programmen. Diplomarbeit, Fakultät für Mathematik und Informatik, Universität Passau, September 1998. In German.Google Scholar
- Hannu Toivonen. Discovery of Frequent Patterns in Large Data Collections. PhD thesis, Department of Computer Science, University of Helsinki, 1996.Google Scholar