A language for fast, portable computation on images and tensors

Halide is a language and compiler focused on efficiently expressing and compiling array computation for image processing, computer vision, scientific computation, and machine learning. It provides a concise syntax and powerful code optimizations to achieve both ease of use and high performance. It also provides automatic gradient generation features for machine learning and optimization applications. Halide is used for code generation for several commercial applications including Youtube, Google Pixel, and Adobe Photoshop.

The central idea of Halide is to decouple the algorithm ("what" we want to compute) and schedule ("how" are we going to compute it). The algorithm defines the high-level semantics of the program, and the schedule defines the lower-level computation details such as parallelism, order, or storage. The users would define the two separately and explore different ways to accelerate an algorithm. By following this philosophy, we have been able to generate fast Fourier transform code that is faster than fftw, and depthwise separable convolution code that is faster than TensorFlow.

See Alex Reinking's cppcon talk for an introduction to Halide: https://www.youtube.com/watch?v=1ir_nEfKQ7A

lightbulb_outline View ideas list

Technologies

  • llvm
  • c++

Topics

comment IRC Channel
mail_outline Contact email

Halide 2021 Projects

  • Evan Lee
    Assessing the Performance Effects of Adding New Synthesized Rewrite Rules to Halide
    Halide is a programming language that facilitates writing high-performance image processing pipelines. Its compiler internally uses a Term Rewriting...
  • Jack FENG
    Performance Tracking in CI
    Create a web application that integrates with an existing buildbot infrastructure to fully automatically track the performance of many aspects of...
close

2021