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
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.
Tyler Denniston, Shoaib Kamil, Saman Amarasinghe.
Principles and Practice of Parallel Programming (PPoPP), 2016.
Terapixel Image Processing and Simulation with Distributed Halide
S.M. Thesis, Massachusetts Institute of Technology.
Cambridge, MA. 2016.