FRATS: A parallel reduction strategy for shared memory
FRATS is a strategy for parallel execution of functional languages on shared memory multiprocessors. It provides fork-join parallelism through the explicit us-age of an annotation to (recursively) spark a set of parallel tasks. These tasks are executed by ordinary sequential graph reducers which share the program graph. FRATS avoids the consistency problem of graph reducers updating shared nodes by a special evaluation order: Before sparking a set of tasks, all (sub) redexes in those tasks are reduced to normal forms. Then the tasks can proceed in parallel without any synchronisation (e.g., locks) because tasks only share normalised graph nodes. The eager evaluation of shared redexes, however, does not preserve full laziness which might result in superfluous or, worse, infinite computation. The paper presents in detail program transformations to enforce termination and avoid superfluous computation. Analysis of a benchmark of parallel applications shows that these transformations are necessary and effective with negligible costs. Sometimes they even increase performance.
KeywordsShared Memory Parallel Task Program Transformation Graph Node Functional Language
Unable to display preview. Download preview PDF.
- [Augustsson89]L. Augustsson and T. Johnsson, “Parallel Graph Reduction with the < v, G>-machine”, Proc. Functional Programming Languages and Computer Architecture 1989, pp 202–213.Google Scholar
- [George89]L. George, “An Abstract Machine for Parallel Graph Reduction”, Proc. Functional Programming Languages and Computer Architecture 1989, pp 214–229.Google Scholar
- [Goldberg88]B. Goldberg, “Buckwheat: Graph Reduction on a Shared Memory Multiprocessor”, Proc. ACM Conf. on LISP and Functional Progr. 1988, pp 40–51.Google Scholar
- [Hartel88]P.H. Hartel and A.H. Veen, “Statistics on graph reduction of SASL programs”, Software practice and experience, Vol 18, no 3, pp 239–253, 1988.Google Scholar
- [Hartel89]P.H. Hartel, M.H.M. Smid, L. Torenvliet, and W.G. Vree, “A parallel functional implementation of range queries”, Computing Science in the Netherlands, pp 173–189, 1989, eds. P.M.G Apers, D. Bosman, and J. van Leeuwen.Google Scholar
- [Hertzberger89]L.O.H. Hertzberger and W.G. Vree. “A Coarse Grain Parallel Architecture for Functional Languages”, PARLE '89; Parallel Architectures and Languages Europe, Vol I, pp 269–285, Springer-Verlag LNCS 365, 1989.Google Scholar
- [Hughes82]R.J.M. Hughes “Super combinators — A new implementation method for applicative languages”, ACM Symp. on Lisp and functional programming, pp 1–10, 1982.Google Scholar
- [Loogen89]R. Loogen, H. Kuchen, K. Indermark, and W. Damm, “Distributed Implementation of Programmed Graph Reduction”, PARLE '89; Parallel Architectures and Languages Europe, Vol I, pp 136–157, Springer-Verlag LNCS 365, 1989.Google Scholar
- [Kingdon89]H. Kingdon, D.R. Lester, and G.L. Burn, “A Highly Distributed Graph Reducer for a Transputer Network”, Tech. Rep. 123, CEG Hirst Research Centre, 1989.Google Scholar
- [Turner79]D.A. Turner, “A new implementation technique for applicative languages”, Software practice and experience, Vol 9, no 1, pp 31–49, 1979.Google Scholar
- [Vree90]W.G. Vree, “Implementation of Parallel Graph Reduction by Explicit Annotation and Program Transformation”, Mathematical Foundations of Computer Science 1990, LNCS 452, pp 135–151.Google Scholar