Distributed Halide

Language and compiler extensions to the Halide language to allow for distributed-memory execution of stencil pipelines.

Halide is a domain-specific language (DSL) embedded in C++ for portable and high-performance stencil pipelines. A programmer writes an algorithm only once, and manipulates a high-level scheduling language to easily optimize performance for different platforms and inputs. The compiler automatically generates code for different architectures (e.g. multithreaded CPU code or GPU code via OpenCL or CUDA).

Distributed Halide extends the scheduling language with two new primitives compute_rank() and distribute(), which allow the programmer to optimize distribution of computation. One new datatype, DistributedImage, allows the programmer to optimize distribution of input and output data.

Publications

Distributed Halide [pdf]
Tyler Denniston, Shoaib Kamil, Saman Amarasinghe.
Principles and Practice of Parallel Programming (PPoPP), 2016.

Terapixel Image Processing and Simulation with Distributed Halide [pdf]
Tyler Denniston
S.M. Thesis, Massachusetts Institute of Technology.
Cambridge, MA. 2016.