home | news | research | people | documentation | download | links | contact


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 stations.

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 commercial-off-the-shelf uniprocessors, multicore architectures, and clusters of workstations. [StreamIt Publications].

The StreamIt programming and compilation paradigm makes the following contributions:

  • 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, PPoPP'05]. 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 domain [PLDI'03, details]. For 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 components.)

  • A set of benchmarks for the evaluation of streaming optimizations and architectures, including a detailed study on MPEG-2 in StreamIt [IPDPS'06, details].

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.

The StreamIt project is supported by DARPA, NSF, and the MIT Oxygen Alliance.