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:
- (Nov 1) A clear statement in English describing your
project proposal.
- (Nov 8) A survey of Galois and Halide models as well as
Pluto and PPCG compilers.
- (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.
- (Dec 6) A project report, written like an ACM conference,
that summarizes the work you did.
Papers:
- 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.
- 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.
- 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.
- 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.
- 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.