Halide: Decoupling Algorithms from Schedules for High-Performance Image Processing.
Writing high-performance code on modern machines requires not just locally optimizing inner loops, but globally reorganizing computations to exploit parallelism and locality--doing things such as tiling and blocking whole pipelines to fit in cache. This is especially true for image processing pipeli...
| Published in: | Communications of the ACM Vol. 61; no. 1; pp. 106 - 116 |
|---|---|
| Main Authors: | , , , , , , , |
| Format: | Article |
| Published: |
Association for Computing Machinery
Jan2018
|
| Subjects: | |
| Online Access: | View this record in EBSCOhost |
| fields | @attributes: recordID: 1 pdfLink: plink: https://search.ebscohost.com/login.aspx?direct=true&db=hlh&AN=127123946&site=ehost-live header: @attributes: shortDbName: hlh uiTerm: 127123946 longDbName: Humanities International Complete uiTag: AN controlInfo: bkinfo: jinfo: jid: 00010782 ACM jtl: Communications of the ACM issn: 00010782 maglogo: N pubinfo: dt: Jan2018 vid: 61 iid: 1 pid: 68 pub: Association for Computing Machinery artinfo: ui: 127123946 10.1145/3150211 ppf: 106 ppct: 10 formats: tig: atl: Halide: Decoupling Algorithms from Schedules for High-Performance Image Processing. aug: au: Ragan-Kelley, Jonathan Adams, Andrew Sharlet, Dillon Barnes, Connelly Paris, Sylvain Levoy, Marc Amarasinghe, Saman Durand, Frédo affil: UC Berkeley University of Virginia Adobe Stanford University & Google MIT CSAIL su: Mathematical decoupling Algorithms Image processing Computer scheduling High performance processors Computer vision Programming languages Computational photography Mathematics sug: subj: Mathematical decoupling Algorithms Image processing Computer scheduling High performance processors Computer vision Programming languages Computational photography Mathematics ab: Writing high-performance code on modern machines requires not just locally optimizing inner loops, but globally reorganizing computations to exploit parallelism and locality--doing things such as tiling and blocking whole pipelines to fit in cache. This is especially true for image processing pipelines, where individual stages do much too little work to amortize the cost of loading and storing results to and from off-chip memory. As a result, the performance difference between a naïve implementation of a pipeline and one globally optimized for parallelism and locality is often an order of magnitude. However, using existing programming tools, writing high-performance image processing code requires sacrificing simplicity, portability, and modularity. We argue that this is because traditional programming models conflate the computations defining the algorithm with decisions about intermediate storage and the order of computation, which we call the schedule. We propose a new programming language for image processing pipelines, called Halide, that separates the algorithm from its schedule. Programmers can change the schedule to express many possible organizations of a single algorithm. The Halide compiler then synthesizes a globally combined loop nest for an entire algorithm, given a schedule. Halide models a space of schedules which is expressive enough to describe organizations that match or outperform state-of-the-art hand-written implementations of many computational photography and computer vision algorithms. Its model is simple enough to do so often in only a few lines of code, and small changes generate efficient implementations for x86, ARM, Graphics Processors (GPUs), and specialized image processors, all from a single algorithm. Halide has been public and open source for over four years, during which it has been used by hundreds of programmers to deploy code to tens of thousands of servers and hundreds of millions of phones, processing billions of images every day. pubtype: Periodical doctype: Article src: R language: English refInfo: copyright: @attributes: flag: Y dt: @attributes: year: 2018 holdings: @attributes: islocal: N |
|---|