Introduction
The
StreamIt Development Tool is an application for debugging and visualizing
programs written in StreamIt [1], a novel language for the streaming
application domain developed at MIT’s Computer Science and Artificial
Intelligence Laboratory [2]. As a
graphical programming environment, the tool can simply and intuitively convey
the hierarchical and structured nature of the StreamIt language by interpreting
and visually representing the stream graph and the dynamic behavior of a
StreamIt program. Built in a visual,
independent development environment (IDE) with a human-computer interface
(HCI), the tool is composed of the following modules: an IDE-integrated debugger, graphical text
editor, a runtime stream graph view, and a corresponding graph overview. The debugger is implemented in Java as an
Eclipse[3] plug-in. As such, the
StreamIt Program Development Guide assumes a working knowledge of Eclipse.
Background
Streaming systems are characterized
by concurrent computation kernels that process potentially infinite sequences
of data [4]. These systems are prevalent
in desktop applications such as streaming media, software radio, real-time
encryption, and graphics packages; hand-held computers, cell phones, and DSPs
in the embedded domain; and high-performance systems such as internet routers,
cell phone base stations, and multimedia editing consoles. StreamIt is a programming language and a
compilation infrastructure, specifically engineered for modern streaming
systems.
Modeled as a hierarchical graph, a
StreamIt program consists of stream elements (graph nodes) representing
computation kernels. There are four core
types of stream elements—filters, pipelines, split-joins, and feedback loops. Channels (graph edges) connect these stream
elements. Currently, programmers who
code in StreamIt compile and run their programs on a UNIX command line, while
analysis of StreamIt graphs (generated as separate files by the StreamIt
compiler) is done separately from program execution. Consequently, because there are no
StreamIt-specific tools that offer simultaneous code and graph-based debugging
and program visualization (e.g. observing stream graphs, data flow and values,
current state, filter execution status, channel data, and filter input/output rates,
etc), the StreamIt Development Tool aims to facilitate the coding and debugging
of large-scale stream programs.