Polymage: Automatic Optimization for Image Processing Pipelines
Ravi Teja Mallapudi, Vinay Vasista & Uday Bondhugula
Abstract :
This paper presents the design and implementation of PolyMage, a
domain-specific language and compiler for image processing pipelines.
An image processing pipeline can be viewed as a graph of interconnected
stages which process images successively. Each stage typically performs
one of point-wise, stencil, reduction or data-dependent operations on
image pixels. Individual stages in a pipeline typically exhibit abundant
data parallelism that can be exploited with relative ease. However, the
stages also require high memory bandwidth preventing effective
utilization of parallelism available on modern architectures. For
applications that demand high performance, the traditional options are
to use optimized libraries like OpenCV or to optimize manually. While
using libraries precludes optimization across library routines, manual
optimization accounting for both parallelism and locality is very
tedious.
The focus of our system, PolyMage, is on automatically generating
high-performance implementations of image processing pipelines expressed
in a high-level declarative language. Our optimization approach
primarily relies on the transformation and code generation capabilities
of the polyhedral compiler framework. To the best of our knowledge, this
is the first model-driven compiler for image processing pipelines that
performs complex fusion, tiling, and storage optimization automatically.
Experimental results on a modern multicore system show that the
performance achieved by our automatic approach is up to 1.81$\times$
better than that achieved through manual tuning in Halide, a
state-of-the-art language and compiler for image processing pipelines.
For a camera raw image processing pipeline, our performance is
comparable to that of a hand-tuned implementation
pdf