I-Structures: Data structures for parallel computing

  • Arvind
  • Rishiyur S. Nikhil
  • Keshav K. Pingali
Part of the Lecture Notes in Computer Science book series (LNCS, volume 279)


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.


Operational Semantic Functional Language Loop Body Dataflow Graph List Representation 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. [1]
    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.Google Scholar
  2. [2]
    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.Google Scholar
  3. [3]
    Arvind and David Ethan Culler. Dataflow architectures. In Annual Reviews in Computer Science, pages 225–253, Annual Reviews Inc., Palo Alto, CA, 1986.Google Scholar
  4. [4]
    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.Google Scholar
  5. [5]
    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.Google Scholar
  6. [6]
    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.Google Scholar
  7. [7]
    Kim P. Gostelow and Robert E. Thomas. A view of dataflow. AFIPS Conference Proceedings, 48:629–636, June 1979.Google Scholar
  8. [8]
    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.Google Scholar
  9. [9]
    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.Google Scholar
  10. [10]
    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.Google Scholar
  11. [11]
    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.Google Scholar
  12. [12]
    Rishiyur S. Nikhil. Id Nouveau Reference Manual. Technical Report (Forthcoming), Computation Structures Group, MIT Lab. for Computer Science, Cambridge, MA 02139, 1987.Google Scholar
  13. [13]
    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.Google Scholar
  14. [14]
    David A. Padua and Michael J. Wolfe. Advanced compiler optimizations for super-computers. Communications of the ACM, 29(12), December 1986.Google Scholar
  15. [15]
    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.Google Scholar
  16. [16]
    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.Google Scholar
  17. [17]
    Philip Wadler. A new array operation for functional languages. In Proceedings of the Graph Reduction Workshop, Santa Fe, New Mexico, October 1986, 1987.Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1987

Authors and Affiliations

  • Arvind
    • 1
  • Rishiyur S. Nikhil
    • 1
  • Keshav K. Pingali
    • 2
  1. 1.MIT Lab. for Computer ScienceCambridgeUSA
  2. 2.Dept. of Computer Science, 303A Upson HallCornell UniversityIthacaUSA

Personalised recommendations