Stream Fusion, to Completeness
Oleg Kiselyov, Aggelos Biboudis, Nick Palladinos, Yannis Smaragdakis

TL;DR
This paper introduces a comprehensive stream processing approach using staging that achieves high expressivity and performance, surpassing existing libraries by many times through a semantic model and code generation.
Contribution
It presents the first complete stream fusion technique that supports all common operations with guaranteed high performance via staging and semantic modeling.
Findings
Achieves many tens of times faster performance than previous stream libraries.
Supports full generality of stream operations including zipping, nesting, filtering, and mapping.
Provides portable, automatic code generation for high-performance stream processing.
Abstract
Stream processing is mainstream (again): Widely-used stream libraries are now available for virtually all modern OO and functional languages, from Java to C# to Scala to OCaml to Haskell. Yet expressivity and performance are still lacking. For instance, the popular, well-optimized Java 8 streams do not support the zip operator and are still an order of magnitude slower than hand-written loops. We present the first approach that represents the full generality of stream processing and eliminates overheads, via the use of staging. It is based on an unusually rich semantic model of stream interaction. We support any combination of zipping, nesting (or flat-mapping), sub-ranging, filtering, mapping-of finite or infinite streams. Our model captures idiosyncrasies that a programmer uses in optimizing stream pipelines, such as rate differences and the choice of a "for" vs. "while" loops. Our…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
