Domain-Specific Optimizations in StreamIt
Bill Thies

High-performance streaming applications represent a new and distinct domain of programs that is becoming increasingly important. Within this domain, the StreamIt language is designed to satisfy two criteria: first, it provides high-level abstractions that improve programmer productivity, and second, it is amenable to straightforward compiler analyses for achieving high performance. In this talk, I will describe domain-specific optimizations that are enabled by the clean structure of the StreamIt language. We focus on filters that are linear; that is, each of their outputs can be represented as an affine combination of their inputs. Linearity is common in DSP components; examples include FIR filters, expanders, compressors, FFTs and DCTs.

We demonstrate that several algorithmic transformations, traditionally hand-tuned by DSP experts, can be completely automated by the compiler. First, we present a linear extraction analysis that automatically detects linear filters from the C-like code in their work function. Then, we give a procedure for combining adjacent linear filters into a single filter, as well as for translating a linear filter to operate in the frequency domain. We also present an optimization selection algorithm, which finds the sequence of combination and frequency transformations that will give the maximal benefit.

We have completed a fully-automatic implementation of the above techniques as part of the StreamIt compiler, and we demonstrate a 450% performance improvement over our benchmark suite.

This work was done primarily by Andrew Lamb as part of his M.Eng thesis. More information is available here.

Back to the Programming Systems Graduate Zeminar.


Last updated: Wed Jun 25 12:15:37 EDT 2003