Abstract
Lightweight threads can be used to cover latencies occurring in distributed-memory implementations of declarative programming languages. To keep the costs of thread management low, this paper proposes two techniques: first, to distinguish locally scheduled threads from globally distributed tasks; and second, to create both threads and tasks lazily. The paper focuses on the integration of these techniques into compiled graph-reduction, which was neglected by other researchers; in particular, their approach prohibits both tail call optimization and the use of the push-enter model of function evaluation.
Preview
Unable to display preview. Download preview PDF.
References
Guy E. Bleiloch, Phillip B. Gibbons, and Yossi Matias. Provably efficient scheduling for languages with fine-grained parallelism. In Proceedings of the Symposium on Parallel Algorithms and Architectures, pages 1–12, 1995.
Robert D. Blumofe, Christopher F. Joerg, Bradley C. Kuszmaul, Charles E. Leiserson, Keith H. Randall, and Yuli Zhou. Cilk: An efficient multithreaded runtime system. In Proceedings of the 5th ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming, pages 207–216, 1995.
Manuel M. T. Chakravarty. Integrating multi-threading into the Spineless Tagless G-machine. In David N. Turner, editor, Functional Programming, Glasgow 1995, London, 1996. University of Glasgow, Springer-Verlag.
Manuel M. T. Chakravarty. On the Massively Parallel Execution of Declarative Programs. PhD thesis, Technische Universität Berlin, Fachbereich Informatik, 1997.
Manuel M. T. Chakravarty, Yike Guo, Martin Köhler, and Hendrik C. R. Lock. Goffin: Higher-order functions meet concurrent constraints. Science of Computer Programming, 30(1–2): 157–199, 1998.
David E. Culler, Seth Copen Goldstein, Klaus Erik Schauser, and Thorsten von Eicken. TAM—a compiler controlled threaded abstract machine. Journal of Parallel and Distributed Computing, 18: 347–370, 1993.
Cormac Flanagan and Rishiyur S. Nikhil. pHluid: The design of a parallel functional language implementation on workstations. In Proceedings of the ACM SIGPLAN International Conference on Functional Programming. ACM Press, 1996.
Ian Foster, Carl Kesselman, and Steven Tuecke. The Nexus approach to integrating multithreading and communication. Journal of Parallel and Distributed Computing, 37(1): 70–82, 1996.
Guang R. Gao, Lubomir Bic, and Jean-Luc Gaudiot, editors. Advanced Topics in Dataflow Computing and Multithreading. IEEE Computer Society Press, 1995.
Seth Copen Goldstein, Klaus Erik Schauser, and David E. Culler. Enabling primitives for compiling parallel languages. In Boleslaw K. Szymanski and Balaram Sinharoy, editors, Languages, Compilers and Run-Time Systems for Scalable Computers, chapter 12, pages 153–168. Kluwer Academic Publishers, 1996.
Seth Copen Goldstein, Klaus Erik Schauser, and David E. Culler. Lazy threads: Implementing a fast parallel call. Journal of Parallel and Distributed Computing, 1997. Submitted; revised version of [10].
Robert H. Halstead. Multilisp: A language for concurrent symbolic computation. ACM Transactions on Programming Languages and Systems, 7(4): 501–538, 1985.
Herbert H.J. Hum et al. A design study of the EARTH multiprocessor. In Lubomir Bic, Wim Böhm, Paraskevas Evripidou, and Jean-Luc Gaudiot, editors, Proceedings of the IFIP WG 10.3 Working Conference on Parallel Architectures and Compilation Techniques, PACT '95, pages 59–68. ACM Press, 1995.
David A. Kranz, Robert H. Halstead, and Eric Mohr. Mul-T: A high-performance parallel lisp. In ACM SIGPLAN'89 Conference on Programming Languages Design and Implementation, pages 81–90. ACM Press, 1989.
A. Krishnamurthy, D. E. Culler, A. Dusseau, S. C. Goldstein, S. Lumetta, T. von Eicken, and K. Yelick. Parallel programming in Split-C. In Bob Borchers, editor, Proceedings of the Supercomputing '93 Conference, pages 262–273. IEEE Computer Society Press, November 1993.
Eric Mohr, David A. Kranz, and Robert H. Halstead, Jr. Lazy task creation: A technique for increasing the granularity of parallel programs. IEEE Transactions on Parallel and Distributed Systems, 2(3): 264–280, July 1991.
Simon L. Peyton Jones. Implementing lazy functional languages on stock hardware: the Spineless Tagless G-machine. Journal of Functional Programming, 2(2), 1992.
P. W. Trinder, K. Hammond, H.-W. Loidl, and S. L. Peyton Jones. Algorithm + strategy = parallelism. Journal of Functional Programming, 1998. To appear.
P. W. Trinder, K. Hammond, J. S. Mattson Jr, A. S. Partridge, and S. L. Peyton Jones. GUM: a portable parallel implementation of Haskell. In Proceedings of Programming Languages Design and Implementation, 1996.
Author information
Authors and Affiliations
Editor information
Rights and permissions
Copyright information
© 1998 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Chakravarty, M.M.T. (1998). Lazy thread and task creation in parallel graph-reduction. In: Clack, C., Hammond, K., Davie, T. (eds) Implementation of Functional Languages. IFL 1997. Lecture Notes in Computer Science, vol 1467. Springer, Berlin, Heidelberg. https://doi.org/10.1007/BFb0055434
Download citation
DOI: https://doi.org/10.1007/BFb0055434
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-64849-9
Online ISBN: 978-3-540-68528-9
eBook Packages: Springer Book Archive