Efficient Image Processing with Halide
Upcoming SlideShare
Loading in...5

Efficient Image Processing with Halide






Total Views
Views on SlideShare
Embed Views



1 Embed 1

https://www.linkedin.com 1


Upload Details

Uploaded via as Adobe PDF

Usage Rights

CC Attribution-NonCommercial-NoDerivs LicenseCC Attribution-NonCommercial-NoDerivs LicenseCC Attribution-NonCommercial-NoDerivs License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
Post Comment
Edit your comment

Efficient Image Processing with Halide Efficient Image Processing with Halide Presentation Transcript

  • Efficient ImageProcessing withHalidePresented by Adrián Palacios
  • Introduction• Image processing is a topicwhere optimization matters.• But optimization for multipleplatforms is hard andexpensive.• We want tools for obtaininghigh-performance coderegardless of the platform.• Halide is a tool that aims tosolve this problem.
  • Data-parallel and IP languages• Data-parallel languages:• CUDA and OpenCL propose a SIMDprogramming model for multi-core CPUsand GPUs.• Implementations can be very efficient atthe cost of losing portability.• IP languages:• MATLAB and other suites release kernellanguages.• But individual kernels are not enough.
  • Concretely, the problem is…
  • And the solution is…
  • The Halide language• Halide is a functional programming language (“àla Haskell”) for IP.• It makes a distinction between the algorithm andthe schedule:• The algorithm is what should be done.• The schedule is how it should be done.• Optimization is achieved by:• Using LLVM for generating simple code.• Using architecture-specific compilers forgenerating vectorized and parallel code.
  • Evaluation of Halide• Halide’s execution time is measured against:• ImageMagick.• MATLAB.• Mathematica.• OpenCV 2.• Two test images:• A normal sized image (512x512).• A big sized image (6400x4800).• For two methods:• RGB to grayscale.• Gaussian blur.
  • RGB to grayscale
  • RGB to grayscale resultsNormal sized image Time (ms) Time / Halide Time (%)Halide 8.486 1.000ImageMagick 64.000 7.542MATLAB 10.359 1.221Mathematica 13.000 1.532OpenCV 2 0.577 0.067Big sized image Time (ms) Time / Halide Time (%)Halide 188.829 1.000ImageMagick 1748 9.257MATLAB 192.501 1.019Mathematica 1586 8.399OpenCV 2 76.626 0.405
  • Gaussian blur
  • Gaussian blur resultsNormal sized image Time (ms) Time / Halide Time (%)Halide 2.674 1.000ImageMagick 304.000 113.687MATLAB 2.834 1.059Mathematica 117.003 43.755OpenCV 2 1.076 0.402Big sized image Time (ms) Time / Halide Time (%)Halide 219.274 1.000ImageMagick 12265 55.935MATLAB 277.388 1.265Mathematica 199203 908.466OpenCV 2 191.875 0.875
  • Conclusions• Halide beats each other tool(except OpenCV 2).• There’s a lot of room forimprovement.• Programming with Halide ishard-to-learn, easy-to-master.
  • Questions?• Halide’s repository at Github:• https://github.com/halide/Halide