Abstract
It is difficult simultaneously to achieve elegance, efficiency and parallelism in functional programs that manipulate large data structures. We demonstrate this through careful analysis of program examples using three common functional data-structuring approaches—lists using Cons and arrays using Update (both fine-grained operators), and arrays using make-array (a “bulk” operator). We then present I-structures as an alternative, defining precisely the parallel operational semantics of Id, a language with I-structures. We show elegant, efficient and parallel solutions for the program examples in Id. I-structures make the language non-functional, but do not raise determinacy issues. Finally, we show that even in the context of purely functional languages, I-structures are invaluable for implementing functional data abstractions.
This research was done at the MIT Laboratory for Computer Science. Funding for this project is provided in part by the Advanced Research Projects Agency of the Department of Defense under the Office of Naval Research contract N00014-84-K-0099.
Keshav Pingali was also supported by an IBM Faculty Development Award.
Preview
Unable to display preview. Download preview PDF.
References
William B. Ackerman. A Structure Memory for Data Flow Computers. Master's thesis, Technical Report TR-186, MIT Lab. for Computer Science, Cambridge, MA 02139, 1978.
J.R. Allen and K. Kennedy. PFC: A Program to convert FORTRAN to Parallel Form. Technical Report MASC-TR82-6, Rice University, Houston, TX, March 1982.
Arvind and David Ethan Culler. Dataflow architectures. In Annual Reviews in Computer Science, pages 225–253, Annual Reviews Inc., Palo Alto, CA, 1986.
Arvind and Robert E. Thomas. I-structures: An Efficient Data Type for Parallel Machines. Technical Report TM 178, Computation Structures Group, MIT Lab. for Computer Science, Cambridge, MA 02139, September 1980.
Henk Barendregt and Marc van Leeuwen. Functional Programming and the Language TALE. Technical Report TR 412, Mathematical Institute, Budapestlaan 6, 3508 TA Utrecht, The Netherlands, 1985.
J. Driscoll, N. Sarnak, D. Sleator, and R. Tarjan. Making data structures persistent. In Proc. 18th Annual ACM Symposium on Theory of Computing, Berkeley, CA, pages 109–121, May 1986.
Kim P. Gostelow and Robert E. Thomas. A view of dataflow. AFIPS Conference Proceedings, 48:629–636, June 1979.
Paul Hudak. A semantic model of reference counting and its abstraction. In Proc. 1986 ACM Conf. on Lisp and Functional Programming, MIT, Cambridge, MA, pages 351–363, August 1986.
Thomas Johnsson. Lambda lifting: transforming programs to recursive equations. In Springer-Verlag LNCS 201 (Proc. Functional Programming Languages and Computer Architecture, Nancy, France), September 1985.
Robert M. Keller. FEL (Function Equation Language) Programmer's Guide. Technical Report AMPS Technical Memorandum No. 7, University of Utah, Department of Computer Science, April 1983.
David J. Kuck, R.H. Kuhn, D.A. Padua, B. Leasure, and M. Wolfe. Dependence graphs and compiler optimizations. In Proc. 8th ACM Symp. on Principles of Programming Languages, pages 207–218, January 1981.
Rishiyur S. Nikhil. Id Nouveau Reference Manual. Technical Report (Forthcoming), Computation Structures Group, MIT Lab. for Computer Science, Cambridge, MA 02139, 1987.
Rishiyur S. Nikhil, Keshav Pingali, and Arvind. Id Nouveau. Technical Report CSG Memo 265, Computation Structures Group, MIT Lab. for Computer Science, Cambridge, MA 02139, July 1986.
David A. Padua and Michael J. Wolfe. Advanced compiler optimizations for super-computers. Communications of the ACM, 29(12), December 1986.
Kenneth R. Traub. A Compiler for the MIT Tagged Token Dataflow Architecture. Master's thesis, Technical Report TR-370, MIT Lab. for Computer Science, Cambridge, MA 02139, August 1986.
Philip Wadler. Listlessness is better than laziness: Lazy evaluation and garbage collection at compile time. In Proc. 1984 ACM Conf. on Lisp and Functional Programming, Austin, TX, pages 45–52, August 1984.
Philip Wadler. A new array operation for functional languages. In Proceedings of the Graph Reduction Workshop, Santa Fe, New Mexico, October 1986, 1987.
Author information
Authors and Affiliations
Editor information
Rights and permissions
Copyright information
© 1987 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Arvind, Nikhil, R.S., Pingali, K.K. (1987). I-Structures: Data structures for parallel computing. In: Fasel, J.H., Keller, R.M. (eds) Graph Reduction. GR 1986. Lecture Notes in Computer Science, vol 279. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-18420-1_65
Download citation
DOI: https://doi.org/10.1007/3-540-18420-1_65
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-18420-1
Online ISBN: 978-3-540-47963-5
eBook Packages: Springer Book Archive