Table of Contents
Fetching ...

Guided Optimization for Image Processing Pipelines

Yuka Ikarashi, Jonathan Ragan-Kelley, Tsukasa Fukusato, Jun Kato, Takeo Igarashi

TL;DR

A proof-of-concept system, Roly-poly, is implemented, which integrates guided optimization, program visualization, and schedule cost estimation to support the comprehension and development of efficient image processing code.

Abstract

Writing high-performance image processing code is challenging and labor-intensive. The Halide programming language simplifies this task by decoupling high-level algorithms from "schedules" which optimize their implementation. However, even with this abstraction, it is still challenging for Halide programmers to understand complicated scheduling strategies and productively write valid, optimized schedules. To address this, we propose a programming support method called "guided optimization." Guided optimization provides programmers a set of valid optimization options and interactive feedback about their current choices, which enables them to comprehend and efficiently optimize image processing code without the time-consuming trial-and-error process of traditional text editors. We implemented a proof-of-concept system, Roly-poly, which integrates guided optimization, program visualization, and schedule cost estimation to support the comprehension and development of efficient Halide image processing code. We conducted a user study with novice Halide programmers and confirmed that Roly-poly and its guided optimization was informative, increased productivity, and resulted in higher-performing schedules in less time.

Guided Optimization for Image Processing Pipelines

TL;DR

A proof-of-concept system, Roly-poly, is implemented, which integrates guided optimization, program visualization, and schedule cost estimation to support the comprehension and development of efficient image processing code.

Abstract

Writing high-performance image processing code is challenging and labor-intensive. The Halide programming language simplifies this task by decoupling high-level algorithms from "schedules" which optimize their implementation. However, even with this abstraction, it is still challenging for Halide programmers to understand complicated scheduling strategies and productively write valid, optimized schedules. To address this, we propose a programming support method called "guided optimization." Guided optimization provides programmers a set of valid optimization options and interactive feedback about their current choices, which enables them to comprehend and efficiently optimize image processing code without the time-consuming trial-and-error process of traditional text editors. We implemented a proof-of-concept system, Roly-poly, which integrates guided optimization, program visualization, and schedule cost estimation to support the comprehension and development of efficient Halide image processing code. We conducted a user study with novice Halide programmers and confirmed that Roly-poly and its guided optimization was informative, increased productivity, and resulted in higher-performing schedules in less time.

Paper Structure

This paper contains 26 sections, 8 figures.

Figures (8)

  • Figure 1: The overview of Roly-poly.
  • Figure 2: A dependency graph of a Gaussian Blur algorithm.
  • Figure 3: A snapshot of Roly-poly's user interface during the scheduling task of Unsharp Masking (see Algorithm 2). (a) Visualization of tile sizes. Each tile corresponds to a for-loop block in (c). (b) A dependency graph of the functions obtained by a static analysis of the algorithm. (c) Schedule section showing the for-loop blocks of the current schedule. (d) Instruction from the system. (e) Scheduling cost estimation of possible compute locations.
  • Figure 4: A snapshot of (a) the compute location selection phase and (b) tile range selection phase in the Gaussian Blur task. (c) The cost details can be shown in both phases.
  • Figure 5: A box and whisker plot showing the distribution of the best runtime of unsharp masking by participants with manual and Roly-poly scheduling, the best runtime from expert interview (see Section \ref{['expert']}), runtime from the auto-scheduler, and runtime of the default inline schedule.
  • ...and 3 more figures