StreamIt: A Compiler for Streaming Applications ⁄

Streamingprogramsrepresentanincreasinglyimportantand widespread class of applications that holds unprecedented opportunities for high-impact compiler technology. Unlike sequentialprogramswithobscureddependenceinformation and complex communication patterns, a stream program is naturally written as a set of concurrent fllters with regular steady-state communication. The StreamIt language aims to provide a natural, high-level syntax that improves programmer productivity in the streaming domain. At the same time, the language imposes a hierarchical structure onthestreamgraphthatenablesnovelrepresentationsand optimizations within the StreamIt compiler. We deflne the \stream dependence function", a fundamental relationship betweentheinputchannelsoftwoflltersinastreamgraph. We also describe a suite of stream optimizations, a denotational semantics for validating these optimizations, and a novel phased scheduling algorithm for stream graphs. In addition,wehaveimplementedaprototypeoftheStreamIt optimizing compiler thatis showingpromising results.

[1]  Rudy Lauwereins,et al.  Geometric parallelism and cyclo-static data flow in GRAPE-II , 1994, Proceedings of IEEE 5th International Workshop on Rapid System Prototyping.

[2]  William J. Dally,et al.  Smart Memories: a modular reconfigurable architecture , 2000, ISCA '00.

[3]  Todd A. Proebsting,et al.  Filter fusion , 1996, POPL '96.

[4]  Praveen K. Murthy,et al.  Shared buffer implementations of signal processing systems usinglifetime analysis techniques , 2001, IEEE Trans. Comput. Aided Des. Integr. Circuits Syst..

[5]  Gérard Berry,et al.  The Esterel Synchronous Programming Language: Design, Semantics, Implementation , 1992, Sci. Comput. Program..

[6]  Edward A. Lee,et al.  Overview of the Ptolemy project , 2001 .

[7]  William Thies,et al.  StreamIt: A Language for Streaming Applications , 2002, CC.

[8]  Pascal Raymond,et al.  The synchronous data flow programming language LUSTRE , 1991, Proc. IEEE.

[9]  Steve Goddard,et al.  Managing memory requirements in the synthesis of real-time systems from processing graphs , 1998, Proceedings. Fourth IEEE Real-Time Technology and Applications Symposium (Cat. No.98TB100245).

[10]  Vivek Sarkar,et al.  Baring it all to Software: The Raw Machine , 1997 .

[11]  Edward A. Lee,et al.  Software Synthesis from Dataflow Graphs , 1996 .

[12]  Karthikeyan Sankaralingam,et al.  A Technology-Scalable Architecture for Fast Clocks and High ILP , 2001 .

[13]  Guy L. Steele,et al.  The Java Language Specification , 1996 .

[14]  William J. Dally,et al.  A bandwidth-efficient architecture for media processing , 1998, Proceedings. 31st Annual ACM/IEEE International Symposium on Microarchitecture.

[15]  Robert Stephens,et al.  A survey of stream processing , 1997, Acta Informatica.

[16]  Guang R. Gao,et al.  Minimizing memory requirements in rate-optimal schedules , 1994, Proceedings of IEEE International Conference on Application Specific Array Processors (ASSAP'94).

[17]  David L. Tennenhouse,et al.  The SpectrumWare approach to wireless signal processing , 1996, Wirel. Networks.

[18]  Parag A. Pathak,et al.  Massachusetts Institute of Technology , 1964, Nature.