  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.
