LUCID, the dataflow programming language
LUCID, the dataflow programming language
Countable nondeterminism and random assignment
Journal of the ACM (JACM)
Proc. of the IFIP TC 10 working conference on Fifth generation computer architectures
Static scheduling of synchronous data flow programs for digital signal processing
IEEE Transactions on Computers
Communications of the ACM
Communication and concurrency
I-structures: data structures for parallel computing
ACM Transactions on Programming Languages and Systems (TOPLAS)
TDFL: a task-level dataflow language
Journal of Parallel and Distributed Computing - Special issue: software tools for parallel programming and visualization
Computer Languages
Compile-time analysis of functional programs
Research topics in functional programming
Automatic mapping of large signal processing systems to a parallel machine
Automatic mapping of large signal processing systems to a parallel machine
Theoretical Computer Science
Tutorial notes on partial evaluation
POPL '93 Proceedings of the 20th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
The expressive power of indeterminate dataflow primitives
Information and Computation
Performance studies of Id on the Monsoon dataflow system
Journal of Parallel and Distributed Computing - Special issue on dataflow and multithreaded architectures
Compile-time scheduling of dataflow program graphs with dynamic constructs
Compile-time scheduling of dataflow program graphs with dynamic constructs
Nonexpressibility of fairness and signaling
Journal of Computer and System Sciences
Software synthesis for DSP using Ptolemy
Journal of VLSI Signal Processing Systems - Special issue on design environments for DSP
Integrating functional and imperative programming
LFP '86 Proceedings of the 1986 ACM conference on LISP and functional programming
A Transformation System for Developing Recursive Programs
Journal of the ACM (JACM)
Communicating sequential processes
Communications of the ACM
Correspondence between ALGOL 60 and Church's Lambda-notation: part I
Communications of the ACM
Recursive functions of symbolic expressions and their computation by machine, Part I
Communications of the ACM
Synchronous Programming of Reactive Systems
Synchronous Programming of Reactive Systems
A Discipline of Programming
Fast Prototyping of Datapath-Intensive Architectures
IEEE Design & Test
Consistency in Dataflow Graphs
IEEE Transactions on Parallel and Distributed Systems
IEEE Transactions on Parallel and Distributed Systems
Declustering: A New Multiprocessor Scheduling Technique
IEEE Transactions on Parallel and Distributed Systems
Proceedings of the 3rd Workshop on Mathematical Foundations of Programming Language Semantics
Scenarios: A Model of Non-Determinate Computation
Proceedings of the International Colloquium on Formalization of Programming Concepts
From SIGNAL to fine-grain parallel implementations
PACT '94 Proceedings of the IFIP WG10.3 Working Conference on Parallel Architectures and Compilation Techniques
Data-Flow Synchronous Languages
A Decade of Concurrency, Reflections and Perspectives, REX School/Symposium
Scheduling Dynamic Dataflow Graphs with Bounded Memory
Scheduling Dynamic Dataflow Graphs with Bounded Memory
Looped Schedules for Dataflow Descriptions of Multirate DSP Algorithms
Looped Schedules for Dataflow Descriptions of Multirate DSP Algorithms
Proof-techniques for recursive programs.
Proof-techniques for recursive programs.
The Calculi of Lambda Conversion. (AM-6) (Annals of Mathematics Studies)
The Calculi of Lambda Conversion. (AM-6) (Annals of Mathematics Studies)
An approach for describing concurrency and communication of heterogeneous systems
Proceedings of the Third Workshop on Behavioural Modelling
A monad for deterministic parallelism
Proceedings of the 4th ACM symposium on Haskell
An experimental workflow development platform for historical document digitisation and analysis
Proceedings of the 2011 Workshop on Historical Document Imaging and Processing
Hi-index | 0.01 |
We review a model of computation used in industrial practice in signal processing software environments and experimentally in other contexts. We give this model the name "dataflow process networks," and study its formal properties as well as its utility as a basis for programming language design. Variants of this model are used in commercial visual programming systems such as SPW from the Alta Group of Cadence (formerly Comdisco Systems), COSSAP from Synopsys (formerly Cadis), the DSP station from Mentor Graphics, and Hypersignal from Hyperception. They are also used in research software such as Khoros from the University of New Mexico and Ptolemy from the University of California at Berkeley, among many others.Dataflow process networks are shown to be a special case of Kahn process networks, a model of computation where a number of concurrent processes communicate through unidirectional FIFO Channels, where writes to the channel are nonblocking, and reads are blocking. In dataflow process networks, each process consists of repeated "firings" of a dataflow "actor". An actor defines a (often functional) quantum of computation. By dividing processes into actor firings, the considerable overhead of context switching incurred in most implementations of Kahn process networks is avoided. We relate dataflow networks to other dataflow models, including those used in dataflow machines, such as static dataflow and the tagged-token model. We also relate dataflow process networks to functional languages such as Haskell, and show that modern language concepts such as higher-order functions and polymorphism can be used effectively in dataflow process networks. A number of programming examples using a visual syntax are given.