Data flow fusion with series expressions in Haskell

  • Authors:
  • Ben Lippmeier;Manuel M.T. Chakravarty;Gabriele Keller;Amos Robinson

  • Affiliations:
  • University of New South Wales, Sydney, Australia;University of New South Wales, Sydney, Australia;University of New South Wales, Sydney, Australia;University of New South Wales, Sydney, Australia

  • Venue:
  • Proceedings of the 2013 ACM SIGPLAN symposium on Haskell
  • Year:
  • 2013

Quantified Score

Hi-index 0.00

Visualization

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.