Dataflow models promote parallelism by providing a representation in which independent computations of a program can be detected implicitly and executed concurrently. In the dataflow model, graphs represent programs, nodes represent operations and arcs indicate the flow of data between operations [Den74,KBB86]. It is the concurrent execution of every operation whose data is ready which promotes fast parallel execution. A dataflow graph is usually evaluated according to one of two standard execution schemes: the demanddriven scheme, or the data-driven scheme. The demanddriven execution scheme adopts the lazy mode of evaluation which delays the activation of an operation until its result is known to be useful (i.e. needed for the final results). This is usually implemented by propagating demands “backwards” through the dataflow graph and then activating only useful computations. However, the overhead incurred by the demand-driven execution scheme is high since the dataflow graph must be traversed twice once to propagate the demands for inputs, and once to calculate the results. Moreover, the actual evaluation of the dataflow graph does not begin until demands have propagated all the way through the dataflow graph. This prevents pipelined operation of ‘producer’ and ‘consumer’ parts of code. The data-driven execution scheme addresses this problem by activating an operation as soon as all of its inputs are available. This scheme adopts the principle of eager evaluation to the dataflow context.
[1]
Duane Albert Adams,et al.
A computation model with data flow sequencing
,
1968
.
[2]
Krishna M. Kavi,et al.
A Formal Definition of Data Flow Graph Models
,
1986,
IEEE Transactions on Computers.
[3]
Keshav Pingali,et al.
Efficient demand-driven evaluation. Part 1
,
1985,
TOPL.
[4]
Keshav Pingali,et al.
Efficient Demand-Driven Evaluation.
,
1983
.
[5]
D. E. Culler,et al.
RESOURCE MANAGEMENT FOR THE TAGGED TOKEN DATAFLOW ARCHITECTURE
,
1985
.
[6]
David E. Culler,et al.
Assessing the Benefits of Fine- Grain Parallelism in Dataflow Programs
,
1988
.
[7]
Jack B. Dennis,et al.
First version of a data flow procedure language
,
1974,
Symposium on Programming.
[8]
Francine Berman,et al.
Efficient Data-Driven Evaluation: Theory and Implementation
,
1990,
J. Parallel Distributed Comput..
[9]
David E. Culler,et al.
Assessing the benefits of fine-grain parallelism in dataflow programs
,
1988,
Proceedings. SUPERCOMPUTING '88.
[10]
H. M. Vin,et al.
Controlled eager evaluation in a Dynamic-Arc Tagged-Token Dataflow Model
,
1989
.