Class Notes Class Photo Data Flow Fast Links
Glossary MIMD Architectures Networks Parallel Algorithms
References Seminar Presentations SIMD Architectures Speedup and Efficiency
  Math 4674/CSC 6551 Home Page  

DATA FLOW

 

In Data Flow parallel processing, the data controls the flow of operations as opposed to the code, as in most other computing environments. Modules of code are written, but are only activated if data is sent to them. There are three parts to a Data Flow program:

  1. A Collection of input values.
  2. A set of operations partially ordered by flow dependencies.
  3. One or more results.

Therefore, a Data Flow program consists of data (1), which run the program, operations (2), which are activated when data is sent to them, and finally the results (3), which is what the program will return when completed.

When data reaches a procedure it activates or "fires off" that procedure. There are two different ways to perform this "firing".

  1. Static Data Flow: A procedure will begin when a piece of data is located at every input edge and no data is present at any output edge. Only one piece of data can reside on each edge.
  2. Dynamic Data Flow: Each piece of data has some way of identify which other data it belongs with, such as a color, and when all the input edges contain data of the same type, the procedure will begin. Any input or output edge can handle multiple pieces of data.

Overall, Data Flow can be a very powerful method of parallel programming; however it is very difficult to write programs in a Data Flow environment. Data Flow programs require a lot of storage and during execution there are scheduling problems, which must be controlled by hardware. As a result, very few machines have been developed for Data Flow and the chances are that very few will be developed for commercial use in the future since Data Flow is expensive and does not have a RAD (Rapid Application Development) programming environment.