scispace - formally typeset
Open AccessJournal ArticleDOI

I-structures: data structures for parallel computing

TLDR
It is difficult to achieve elegance, efficiency, and parallelism simultaneously in functional programs that manipulate large data structures, and it is shown that even in the context of purely functional languages, I-structures are invaluable for implementing functional data abstractions.
Abstract
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.

read more

Content maybe subject to copyright    Report






Citations
More filters
Journal ArticleDOI

Hybrid Dataflow/von-Neumann Architectures

TL;DR: This paper classifies hybrid dataflow/von-Neumann models according to two different taxonomies: one based on the execution model used for inter- and intrablock execution, and the otherbased on the integration level of both control and dataflow execution models.
Proceedings ArticleDOI

Global analysis for partitioning non-strict programs into sequential threads

TL;DR: A new solution to the problem of compiling aneager, non-strict language into multiple se-quential threads is presented using an in-termediate program form developed for the programming language Id, and it is believed this method is also appropriate for lazy, purely functional languages such as Haskell.
Journal ArticleDOI

Architectures for statically scheduled dataflow

TL;DR: A class of parallel architectures consisting of Von Neumann processors and one or more shared memories, where the order of shared-memory accesses is determined at compile time and enforced at run time is described.
Journal ArticleDOI

Concurrent Aggregates (CA)

TL;DR: This paper describes and evaluates the use of aggregates in a programming langauge, and evaluates language support in CA for composing multiaccess data abstractions (delegation, first-class messages, and first- class and user-defined continuations).
Book ChapterDOI

FlowPools: A Lock-Free Deterministic Concurrent Dataflow Abstraction

TL;DR: This paper presents the design and implementation of a fundamental data structure for composable deterministic parallel dataflow computation through the use of functional programming abstractions, and provides a correctness proof, showing that the implementation is linearizable, lock-free, and deterministic.
References
More filters
Book

The implementation of functional programming languages

Peyton Jones, +1 more
TL;DR: My 1987 book is now out of print, but it is available here in its entirety in PDF form, in one of two formats: single-page portrait double-page landscape and fully searchable, thanks to OCR and Norman Ramsey.
Proceedings ArticleDOI

Making data structures persistent

TL;DR: This paper develops simple, systematic, and efficient techniques for making linked data structures persistent, and uses them to devise persistent forms of binary search trees with logarithmic access, insertion, and deletion times and O (1) space bounds for insertion and deletion.
Journal ArticleDOI

Advanced compiler optimizations for supercomputers

TL;DR: Compilers for vector or multiprocessor computers must have certain optimization features to successfully generate parallel code to be able to operate on parallel systems.
Proceedings ArticleDOI

Dependence graphs and compiler optimizations

TL;DR: This paper defines such graphs and discusses two kinds of transformations, simple rewriting transformations that remove dependence arcs and abstraction transformations that deal more globally with a dependence graph.
Journal ArticleDOI

Executing a program on the MIT tagged-token dataflow architecture

TL;DR: An overview of current thinking on dataflow architecture is provided by describing example Id programs, their compilation to dataflow graphs, and their execution on the TTDA, a multiprocessor architecture.
Related Papers (5)