Proceedings of the 2013 ACM SIGPLAN Symposium on Haskell 2013
DOI: 10.1145/2503778.2503782
|View full text |Cite
|
Sign up to set email alerts
|

Data flow fusion with series expressions in Haskell

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 sol… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
2
1
1
1

Citation Types

0
8
0

Year Published

2014
2014
2018
2018

Publication Types

Select...
4
2

Relationship

1
5

Authors

Journals

citations
Cited by 10 publications
(8 citation statements)
references
References 27 publications
0
8
0
Order By: Relevance
“…Lippmeier et al [18] present a line of work based on SERIES. They aim to transform first-order, non-recursive, synchronous, finite data-flow programs into fused pipelines.…”
Section: Related Workmentioning
confidence: 99%
“…Lippmeier et al [18] present a line of work based on SERIES. They aim to transform first-order, non-recursive, synchronous, finite data-flow programs into fused pipelines.…”
Section: Related Workmentioning
confidence: 99%
“…This relation arises naturally from Data Flow Fusion [12], as such an operation would be compiled into a single loop -with an iteration size identical to the size of the input array, and containing two nested if-expressions to perform the two layers of filtering.…”
Section: Iteration Sizementioning
confidence: 99%
“…Although we also have an implementation of our Data Flow Fusion system in terms of a GHC plugin [12], we report on hand-fused C code to provide a fair comparison to related work. As mentioned in [12], the current Haskell stream fusion mechanism introduces overhead in terms of a large number of duplicate loop counters, which increases register pressure unnecessarily. Hand fusing all code and compiling it with the same compiler (GCC) isolates the true cost of the various clusterings from low level differences in code generation.…”
Section: Benchmarksmentioning
confidence: 99%
See 1 more Smart Citation
“…The resulting functions of high arity create register pressure, which has performance implications. A newly developed Flow Fusion system [16], based on Series Expressions [31], attempts to address this problem. However, Flow Fusion targets static, first-order, non-recursive stream pipelines, which necessarily excludes concatM ap.…”
Section: Related Workmentioning
confidence: 99%