Skip to content

Latest commit

 

History

History
16 lines (11 loc) · 1.47 KB

File metadata and controls

16 lines (11 loc) · 1.47 KB

Halide

Halide is a framework for fast optimizations in image processing.

Halide main features

  • Halide is designed to make it easier to write efficient code that can be optimized for a variety of hardware architectures, including CPUs, GPUs, and specialized image processing hardware (with a single codebase).
  • The Halide approach is to decouple the algorithm from the schedule where "schedule" means how the algorithm is computed.
  • Halide uses a data-flow model, which means that computations are represented as directed graphs of operations (called "stages") that take inputs and produce outputs. The scheduling across loops needs to be consumer driven and is done manually by the programmer.
  • Halide framework supports only computation over regular grids.
  • Halide doesn't support feedback pipelines: a feedback pipeline is a pipeline where the output of one stage is feedback as input to a previous stage creating a loop in the data flow graph.
  • Halide only supports bounded depth recursion.
  • An example of schedule specified by user is: $f(x,y,z)$ performed over three dimensions $x$ ,$y$ and $z$ . While the default schedule loops serially over the three dimensions, it is possible to compute the specified dimension in parallel with the others or to vectorize one dimension, or again split, reorder and tile the loops.
  • Halide provides tools for profiling, tracing, and debugging, as well as optimization passes that can improve the performance of the generated code.