I-structures: data structures for parallel computing

It is difficult to achieve elegance, efficiency, and parallelism simultaneously 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, arrays using Update (both fine-grained operators), and arrays using make-array (a “bulk” operator). We then present I-structure as an alternative and show elegant, efficient, and parallel solutions for the program examples in Id, a language with I-structures. The parallelism in Id is made precise by means of an operational semantics for Id as a parallel reduction system. I-structures make the language nonfunctional, but do not lose determinacy. Finally, we show that even in the context of purely functional languages, I-structures are invaluable for implementing functional data abstractions.

[1]  W. B. Ackerman A STRUCTURE MEMORY FOR DATA FLOW COMPUTERS , 1977 .

[2]  KIM P. GOSTELOW,et al.  A view of dataflow* , 1979, 1979 International Workshop on Managing Requirements Knowledge (MARK).

[3]  David A. Padua,et al.  Dependence graphs and compiler optimizations , 1981, POPL '81.

[4]  Ken Kennedy,et al.  PFC: A Program to Convert Fortran to Parallel Form , 1982 .

[5]  Philip Wadler,et al.  Listlessness is better than laziness: Lazy evaluation and garbage collection at compile-time , 1984, LFP '84.

[6]  D. E. Culler,et al.  RESOURCE MANAGEMENT FOR THE TAGGED TOKEN DATAFLOW ARCHITECTURE , 1985 .

[7]  Thomas Johnsson,et al.  Lambda Lifting: Treansforming Programs to Recursive Equations , 1985, FPCA.

[8]  Gary Lindstrom,et al.  Functional programing and the logical variable , 1985, POPL.

[9]  David E. Culler,et al.  Dataflow architectures , 1986 .

[10]  Hendrik Pieter Barendregt,et al.  Functional Programming and the Language TALE , 1986, Current Trends in Concurrency.

[11]  David A. Padua,et al.  Advanced compiler optimizations for supercomputers , 1986, CACM.

[12]  Robert E. Tarjan,et al.  Making data structures persistent , 1986, STOC '86.

[13]  Paul Hudak A semantic model of reference counting and its abstraction (detailed summary) , 1986, LFP '86.

[14]  Philip Wadler A new array operation , 1986, Graph Reduction.

[15]  K. R. Traub,et al.  A COMPILER FOR THE MIT TAGGED-TOKEN DATAFLOW ARCHITECTURE , 1986 .

[16]  Simon L. Peyton Jones,et al.  The Implementation of Functional Programming Languages , 1987 .

[17]  Simon Peyton Jones,et al.  The Implementation of Functional Programming Languages (Prentice-hall International Series in Computer Science) , 1987 .

[18]  Keshav Pingali,et al.  Accumulators: A New Logic Variable Abstractions for Functional Languages , 1988, FSTTCS.

[19]  David E. Culler,et al.  Resource requirements of dataflow programs , 1988, [1988] The 15th Annual International Symposium on Computer Architecture. Conference Proceedings.

[20]  K. R. Traub,et al.  Sequential implementation of lenient programming languages , 1988 .

[21]  Zena M. Ariola,et al.  P-TAC: a parallel intermediate language , 1989, FPCA.

[22]  Radha Jagadeesan,et al.  A fully abstract semantics for a functional language with logic variables , 1989, [1989] Proceedings. Fourth Annual Symposium on Logic in Computer Science.

[23]  Arvind,et al.  Executing a Program on the MIT Tagged-Token Dataflow Architecture , 1990, IEEE Trans. Computers.