Abstract
Existing approaches to array fusion can deal with straight-line producer consumer pipelines, but cannot fuse branching data flows where a generated array is consumed by several different consumers. Branching data flows are common and natural to write, but a lack of fusion leads to the creation of an intermediate array at every branch point. We present a new array fusion system that handles branches, based on Waters's series expression framework, but extended to work in a functional setting. Our system also solves a related problem in stream fusion, namely the introduction of duplicate loop counters.We demonstrate speedup over existing fusion systems for several key examples.
Original language | English |
---|---|
Pages (from-to) | 93-104 |
Number of pages | 12 |
Journal | ACM SIGPLAN Notices |
Volume | 48 |
Issue number | 12 |
Publication status | Published - 31 Jan 2014 |
Externally published | Yes |
Keywords
- Arrays
- Fusion
- Haskell