2002 | William Thies, Michal Karczmarek, and Saman Amarasinghe
StreamIt is a language and compiler designed for high-performance streaming applications. It provides high-level abstractions to improve programmer productivity and program robustness in the streaming domain. The StreamIt compiler aims to enhance performance through stream-specific analyses and optimizations. The language features include a structured model of streams, a messaging system for control, a re-initialization mechanism, and a natural textual syntax.
Streaming applications are becoming increasingly important across various domains, including embedded systems, consumer devices, and high-performance servers. However, there is limited language and compiler support for practical, large-scale stream programming. General-purpose languages like C are inadequate for stream programming due to their lack of natural stream representation and inability to perform stream-specific optimizations.
StreamIt addresses these issues by providing high-level stream abstractions and a common machine language for grid-based processors. It allows for structured stream graphs, independent stream filters, stable computation patterns, and occasional modifications to stream structure. StreamIt also supports occasional out-of-stream communication and high performance expectations.
StreamIt includes constructs for composing filters into a communicating network, such as Pipeline, SplitJoin, and FeedbackLoop. It provides a dynamic messaging system for passing control information between filters and supports re-initialization of stream structures. StreamIt also includes latency constraints to restrict the latency of information wavefronts.
The paper presents a detailed example of a software radio implemented in StreamIt, demonstrating its capabilities. It also discusses the performance of the StreamIt compiler, showing that it can outperform existing implementations in some cases. The paper concludes that StreamIt is a viable language for high-performance streaming applications and outlines future work, including support for dynamically varying I/O rates and improved compiler optimizations.StreamIt is a language and compiler designed for high-performance streaming applications. It provides high-level abstractions to improve programmer productivity and program robustness in the streaming domain. The StreamIt compiler aims to enhance performance through stream-specific analyses and optimizations. The language features include a structured model of streams, a messaging system for control, a re-initialization mechanism, and a natural textual syntax.
Streaming applications are becoming increasingly important across various domains, including embedded systems, consumer devices, and high-performance servers. However, there is limited language and compiler support for practical, large-scale stream programming. General-purpose languages like C are inadequate for stream programming due to their lack of natural stream representation and inability to perform stream-specific optimizations.
StreamIt addresses these issues by providing high-level stream abstractions and a common machine language for grid-based processors. It allows for structured stream graphs, independent stream filters, stable computation patterns, and occasional modifications to stream structure. StreamIt also supports occasional out-of-stream communication and high performance expectations.
StreamIt includes constructs for composing filters into a communicating network, such as Pipeline, SplitJoin, and FeedbackLoop. It provides a dynamic messaging system for passing control information between filters and supports re-initialization of stream structures. StreamIt also includes latency constraints to restrict the latency of information wavefronts.
The paper presents a detailed example of a software radio implemented in StreamIt, demonstrating its capabilities. It also discusses the performance of the StreamIt compiler, showing that it can outperform existing implementations in some cases. The paper concludes that StreamIt is a viable language for high-performance streaming applications and outlines future work, including support for dynamically varying I/O rates and improved compiler optimizations.