Halide: Decoupling Algorithms from Schedules for High-Performance Image Processing

被引:64
|
作者
Ragan-Kelley, Jonathan [6 ]
Adams, Andrew [1 ]
Sharlet, Dillon [1 ]
Barnes, Connelly [3 ]
Paris, Sylvain [5 ]
Levoy, Marc [1 ,4 ]
Amarasinghe, Saman [2 ]
Durand, Fredo [2 ]
机构
[1] Google, Mountain View, CA USA
[2] MIT CSAIL, Cambridge, MA 02139 USA
[3] Univ Virginia, Charlottesville, VA 22903 USA
[4] Stanford Univ, Stanford, CA 94305 USA
[5] Adobe, San Jose, CA USA
[6] Univ Calif Berkeley, Berkeley, CA 94720 USA
基金
美国国家科学基金会;
关键词
D O I
10.1145/3150211
中图分类号
TP3 [计算技术、计算机技术];
学科分类号
0812 ;
摘要
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 naive 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.
引用
收藏
页码:106 / 115
页数:10
相关论文
共 50 条
  • [41] A High Level Design of Reconfigurable and High-Performance ASIP Engine for Image Signal Processing
    Liao, Hsuan-Chun
    Asri, Mochamad
    Isshiki, Tsuyoshi
    Li, Dongju
    Kunieda, Hiroaki
    IEICE TRANSACTIONS ON FUNDAMENTALS OF ELECTRONICS COMMUNICATIONS AND COMPUTER SCIENCES, 2012, E95A (12): : 2373 - 2383
  • [42] High-performance graph algorithms from parallel sparse matrices
    Gilbert, John R.
    Reinhardt, Steve
    Shah, Viral B.
    APPLIED PARALLEL COMPUTING: STATE OF THE ART IN SCIENTIFIC COMPUTING, 2007, 4699 : 260 - +
  • [43] High-Performance Image Acquisition and Processing for Stereoscopic Diagnostic Systems with the Application of Graphical Processing Units
    Perek, Piotr
    Mielczarek, Aleksander
    Makowski, Dariusz
    SENSORS, 2022, 22 (02)
  • [44] High-performance optimization of genetic algorithms
    Royachka, Kremena
    Karova, Milena
    2006 29TH INTERNATIONAL SPRING SEMINAR ON ELECTRONICS TECHNOLOGY, 2006, : 99 - +
  • [45] High-Performance Broadcasting Algorithms on Cluster
    舒继武
    魏英霞
    王鼎兴
    Tsinghua Science and Technology, 2004, (01) : 30 - 37
  • [46] HIGH-PERFORMANCE SEM EQUIPPED WITH AN ONLINE DIGITAL IMAGE RECORDING AND PROCESSING SYSTEM
    OHO, E
    KANAYA, K
    JOURNAL OF ELECTRON MICROSCOPY, 1990, 39 (04): : 300 - 300
  • [47] Parallel colt: A high-performance java library for scientific computing and image processing
    Wendykier, Piotr
    Nagy, James G.
    ACM Transactions on Mathematical Software, 2010, 37 (03):
  • [48] High-Performance Image Acquisition & Processing Unit Fabricated using COTS Technologies
    Kimura, Shinichi
    Miyasaka, Akira
    Funase, Ryu
    Sawada, Hirotaka
    Sakamoto, Nobuomi
    Miyashita, Naoki
    IEEE AEROSPACE AND ELECTRONIC SYSTEMS MAGAZINE, 2011, 26 (03) : 19 - 25
  • [49] DESIGN of a spaceborne high-performance and real-time image processing platform
    Pan Zheng
    Feng Xingtai
    Peng Chengxiang
    INTERNATIONAL CONFERENCE ON OPTICAL AND PHOTONIC ENGINEERING, ICOPEN 2022, 2022, 12550
  • [50] Towards Portable Large-Scale Image Processing with High-Performance Computing
    Yuankai Huo
    Justin Blaber
    Stephen M. Damon
    Brian D. Boyd
    Shunxing Bao
    Prasanna Parvathaneni
    Camilo Bermudez Noguera
    Shikha Chaganti
    Vishwesh Nath
    Jasmine M. Greer
    Ilwoo Lyu
    William R. French
    Allen T. Newton
    Baxter P. Rogers
    Bennett A. Landman
    Journal of Digital Imaging, 2018, 31 : 304 - 314