Parallelizing programs with streams
Abstract:
This paper shows that introducing streams in a conventional programming language can achieve parallel executions of programs without explicit parallel constructs programmed by the user. Streams enable pipelining and spatial parallelism including the ability to have multiple copies of the same computing element. We believe this approach can be useful in complex applications that are hard to program efficiently for parallel computers. We present the language extensions we have used, including operations on streams, and commutative assignments that model the situations in which the order within a group of operations is not significant. We briefly describe a tool that analyzes a sequential program with streams and transforms it into a program that can run on a parallel computer. The resulting program is then executed by simulation on a shared memory computer. The analysis tool and the simulator are both driven by a table containing information about run time of basic operations. Finally, we present two example programs, integral computation and quicksort, show their parallel run time performance, and compare them with their conventional versions. 1

