Data Flow Programming

AI Engine Programming: A Kahn Process Network Evolution (WP552)

Document ID
Release Date
1.0 English

This section describes how the data flow graph relates to data flow programming. Usually, a program is modeled as a series of sequential operations.

Data flow programming emphasizes the movement of data, which includes a series of connections, explicitly defined edges that connect nodes. The node fires as soon as all the input tokens are valid. Contrast this view to the algorithm representation shown on the right in the following figure.

Figure 1. Data Flow Programming

Although both the data flow graph on the left and the algorithmic form on the right represent the same function, the data flow graph illustrates the parallelism explicitly, while the algorithm form on the right hides the parallelism and appears sequential. For example, u and v can be computed in parallel provided inputs w, x, and y are all available. This is clear from the data flow graph but less so from the algorithm form.

In the figure in the Kahn Process Network section, assume function 1 is faster compared to function 2. Even though function 1 is faster compared to function 2, function 3 must wait for the input from both functions. This means there is no improvement to the performance overall by having a data flow model for these functions. It is important to accelerate the complete system rather than an individual function to achieve the performance improvement as a whole system. Data flow languages are inherently parallel, which works well in large decentralized systems.