Vectorisation avoidance

  • Authors:
  • Gabriele Keller;Manuel M.T. Chakravarty;Roman Leshchinskiy;Ben Lippmeier;Simon Peyton Jones

  • Affiliations:
  • University of New South Wales, Sydney, Australia;University of New South Wales, Sydney, Australia;Not affiliated, London, United Kingdom;University of New South Wales, Sydney, Australia;Microsoft Research Ltd, Cambridge, United Kingdom

  • Venue:
  • Proceedings of the 2012 Haskell Symposium
  • Year:
  • 2012

Quantified Score

Hi-index 0.00

Visualization

Abstract

Flattening nested parallelism is a vectorising code transform that converts irregular nested parallelism into flat data parallelism. Although the result has good asymptotic performance, flattening thoroughly restructures the code. Many intermediate data structures and traversals are introduced, which may or may not be eliminated by subsequent optimisation. We present a novel program analysis to identify parts of the program where flattening would only introduce overhead, without appropriate gain. We present empirical evidence that avoiding vectorisation in these cases leads to more efficient programs than if we had applied vectorisation and then relied on array fusion to eliminate intermediates from the resulting code.