As the computer industry has moved to multicore processors, the historic trend of exponential performance improvements will now depend on ordinary programmers and their ability to parallelize their code. However, most programmers are already overwhelmed by the complexity of modern software and are unwilling to expend extra effort on parallelization. Hence, for programmers to embrace a parallel abstraction, we believe that it must come with new capabilities--unrelated to parallelism--that simplify application development and lure programmers into changing their ways.
In this talk, I will describe stream programming: an inherently parallel model that also offers powerful new capabilities for the domain of multimedia, graphics, and digital signal processing (DSP). Programs with a streaming structure are naturally parallelized on a multicore target. At the same time, streaming language abstractions enable the compiler to automate tasks that are typically performed by a DSP expert, including whole-program algebraic simplification and translation from the time domain to the frequency domain. By automating such transformations, stream programming reduces the overall burden on programmers and enables them to transition to the multicore era.