Towards Effective Programming for Parallel Digital Signal Processing

H. John Reekie (johnr@eecs.berkeley.edu)

Research Report 92.1,
Key Centre for Advanced Computing Sciences,
University of Technology, Sydney,
PO Box 123,
Broadway NSW 2007,
Australia,
May 1992


Abstract

Parallel digital signal processing systems will become common for the more demanding classes of signal processing applications. Programming a parallel computer is not simple, and how one can write parallel programs that will execute on a variety of parallel machines remains an open question. In this paper, I propose a two-view development system that will aid development of parallel programs for loosely-coupled, distributed, signal-processing machines. The development system supports both a very-high-level programming language, and a block-diagram-style graphical interface.

A key element of the programming style is the use of higher-order functions to express high-level operations on vectors and streams of data. A number of examples demonstrate how these functions can be used to implement common signal processing operations and algorithms. Program transformation plays a key part in preparing a program for execution on a parallel machine, and I demonstrate transformations that alter the structure of programs that represent process networks. The graphical representation of the programs is used throughout, both to show how the graphical interface would appear, and to aid explanation of the programs.

Two algorithms are used as key examples in the paper: the FIR filter is developed during the explanation of the programming language, while the Fast Fourier Transform algorithm is treated in some detail in a separate chapter. These algorithms were chosen because they are well-known, non-trivial algorithms, yet simple enough to demonstrate the key aspects of parallel programming and transformation.