Process Network Demo

A process network description of the QR example is shown below:

In this description, the nodes ND_1, ND_2, ND_3, ND_4, and ND_5 describe processes and the edges between these nodes describe FIFO buffers that have a certain capacity. The processes read from these buffers using a blocking-read semantics. In the applet, we simulate this process network to get the value for the R matrix. The big difference between the Matlab program and the process network is that the process network executes in parallel whereas the Matlab description executes sequentially.

In process ND_2, a large matrix is stored that contains 500 real data samples taken from 16 antennas. From this matrix, the process reads a number of samples (the number of antenna's) and sends these samples to either node ND_3 or ND_4. This process is repeated a number of times, as many times as there will be a QR-update. Process ND_3 and process ND_4 read data from incoming edges and producing data on outgoing edges. After the numbers of QR-updates are done, the final matrix R is sent to process ND_5, which sends the matrix R to the Plotter and the StreamToMatrix actor. The latter one reconstructs from the incoming stream a matrix, which is sent to the MatrixViewer to be visualized. Process ND_1 is used to properly initialize the process network by sending a specific number of zeros to either process ND_3 or process ND_4.

Process networks have the characteristic that they execute deterministically, which means that the computation of the result is independent of the scheduled order of the processes. Thus, the thread scheduling strategy used by the Java virtual machine to run the applet has no effect on the results of the run.