Streaming systems are characterized by concurrent computation
kernels that process potentially infinite sequences of
data. Such systems are increasingly important in a wide range
of computing domains, ranging from embedded systems and DSPs
to large scale and high performance systems such as multimedia
editing consoles, internet routers, and cellular base
StreamIt is a programming language and a compilation
infrastructure, specifically engineered for modern streaming
systems. It is designed to facilitate the programming of large
streaming applications, as well as their efficient mapping to
a wide variety of target architectures, including
multicore architectures, and clusters of workstations.
The StreamIt programming and compilation paradigm makes
the following contributions:
StreamIt is the result of
several years of research and development under the
fearless leadership of Professor Saman Amarasinghe at
the Computer Science and
Artificial Intelligence Laboratory at MIT.
Language constructs that improve
programmer productivity for streaming, including hierarchical
structured streams, graph parameterization, circular buffer
management, and teleport messaging; these constructs also enable
novel compiler analyses [CC'02,
The language has been integrated into the Eclipse development
environment, making it easier for users to debug stream programs [P-PHEC'04].
An optimizing compiler infrastructure for the MIT Raw machine,
with fully automatic load balancing, graph layout, communication
scheduling, and routing [ASPLOS'02, ASPLOS'06]. In collaboration with the MIT graphics group, we have also developed a flexible graphics pipeline on Raw [Graphics Hardware'05].
A set of cache optimizations for embedded
and general-purpose processors, adjusting the granularity
and interleaving of filter executions to match the size of
the data and instruction caches [LCTES'05].
A set of domain-specific optimizations for
linear filters, in which each output is a weighted sum of the
inputs. For stateless filters (e.g., FIR, FFT, DCT), linear
analysis performs large-scale algebraic simplification of adjacent
components, as well as automated translation into the frequency
stateful filters (e.g., IIR, feedback loops), linear state space
analysis offers more general algebraic simplification, as well as
minimization of the number of states and reduction in the number
of system parameters [CASES'05].
A minimal latency scheduler that leverages phased scheduling to
produce a deadlock-free schedule for hierarchical stream graphs.
Phased scheduling also offers a flexible tradeoff between code size
and buffer size [LCTES'03].
A robust compilation infrastructure
that compiles to a C++ runtime library for execution on a
general-purpose uniprocessor. The infrastructure includes a
high-level stream IR (in Java) with a host of graph
transformations, including graph canonicalization, synchronization
removal, refactoring of parallel components, fusion of adjacent
filters (running in parallel or in sequence), and fission of
individual filters (into data-parallel or task-parallel
A set of
benchmarks for the
evaluation of streaming optimizations and architectures, including
a detailed study on MPEG-2 in StreamIt [IPDPS'06, details].
The StreamIt project is supported by DARPA, NSF, and the
MIT Oxygen Alliance.