Thursday, August 09, 2012

Halide Simplifies Parallel Image Processing

EETimes, MIT News: Researchers at MIT’s Computer Science and Artificial Intelligence Laboratory (CSAIL) created a new programming language called Halide and optimized for image processing on parallel cores. The Halide programs are said to be easier to read, write and revise than image-processing programs written in a conventional language. Halide automates code-optimization procedures that would ordinarily take hours to perform by hand, they’re also significantly faster.

In tests, the MIT researchers used Halide to rewrite several common image-processing algorithms whose performance had already been optimized by seasoned programmers. The Halide versions were typically about one-third as long but offered significant performance gains — two-, three-, or even six-fold speedups. In one instance, the Halide program was actually longer than the original — but the speedup was 70-fold:

Jonathan Ragan-Kelley, a graduate student in the Department of Electrical Engineering and Computer Science, and Andrew Adams, a CSAIL postdoc, led the development of Halide, and they’ve released the code online. The SIGGRAPH 2012 paper is presented on-line too and its authors also have Adobe and Stanford University affiliations:

"Decoupling Algorithms from Schedules for Easy Optimization of Image Processing Pipelines", Jonathan Ragan-Kelley, Andrew Adams, Sylvain Paris, Marc Levoy, Saman Amarasinghe, Frédo Durand

The basic camera post-processing pipeline is a feedforward pipeline
in which each stage either considers only nearby neighbors (denoise
and demosaic), or is point-wise (color correct and tone curve). The
best schedule computes the entire pipeline in small tiles in order
to exploit producer-consumer locality. This introduces redundant
computation in the overlapping tile boundaries, but the reduction
in memory bandwidth more than makes up for it.

No comments:

Post a Comment

All comments are moderated to avoid spam and personal attacks.