Distributed, heterogeneous implementation of image processing applications

Project contacts: Roshan Dathathri and Keshav Pingali

Project description:  Halide is a domain specific language for image processing applications. Image processing kernels are essentially stencil codes on dense arrays. Unlike generic graph applications, the accesses are regular and can be analyzed statically by a compiler. Nonetheless, these applications can be viewed as operations on graph nodes and can be expressed easily in the operator formulation.

The goal of this project is to write image processing applications in Abelian (a distributed-memory, heterogeneous version of Galois), and use existing tools to run it on distributed heterogeneous architectures. The Abelian compiler can analyze the code and generate necessary synchronization. To get good performance on each host/node, the stencil code has to be tiled and parallelized, which can be done using existing polyhedral compilers like Pluto and PPCG for multicores and GPU respectively. The performance of the code thus generated can then be compared with that of Halide code.

Project deliverables and deadlines
  1. (Nov 1) A clear statement in English describing your project proposal.
  2. (Nov 8) A survey of Galois and Halide models as well as Pluto and PPCG compilers.
  3. (Dec 6) A compiler that takes image processing code expressed in Galois as input and generates efficient code using existing tools to run on distributed heterogeneous architectures.
  4. (Dec 6) A project report, written like an ACM conference, that summarizes the work you did.


  1. The tao of parallelism in algorithms. Keshav Pingali, Donald Nguyen, Milind Kulkarni, Martin Burtscher, M. Amber Hassaan, Rashid Kaleem, Tsung-Hsien Lee, Andrew Lenharth, Roman Manevich, Mario Mendez-Lojo, Dimitrios Prountzos, and Xin Sui. In Proceedings of the ACM SIGPLAN Conference on Programming Language Design and Implementation, PLDI '11, pages 12-25, 2011.
  2. A Lightweight Infrastructure for Graph Analytics. Donald Nguyen, Andrew Lenharth and Keshav Pingali. In Proceedings of ACM Symposium on Operating Systems Principles, SOSP '13, pages 456-471, 2013.
  3. Halide: A Language and Compiler for Optimizing Parallelism, Locality, and Recomputation in Image Processing Pipelines. Jonathan Ragan-Kelley, Connelly Barnes, Andrew Adams, Sylvain Paris, Fredo Durand, Saman Amarasinghe. ACM SIGPLAN Programming Languages Design and Implementation (PLDI), Jun 2013.
  4. A Practical Automatic Polyhedral Parallelizer and Locality Optimizer. Uday Bondhugula, A. Hartono, J. Ramanujan, P. Sadayappan. ACM SIGPLAN Programming Languages Design and Implementation (PLDI), Jun 2008.
  5. Polyhedral parallel code generation for CUDA. Sven Verdoolaege, Juan Carlos Juega, Albert Cohen, Jose Ignacio Gomez, Christian Tenllado, Francky Catthoor. ACM Transactions on Architecture and Code Optimization (TACO) 2013.