English

Hybrid Static/Dynamic Schedules for Tiled Polyhedral Programs

Programming Languages 2016-10-25 v1 Distributed, Parallel, and Cluster Computing Performance

Abstract

Polyhedral compilers perform optimizations such as tiling and parallelization; when doing both, they usually generate code that executes "barrier-synchronized wavefronts" of tiles. We present a system to express and generate code for hybrid schedules, where some constraints are automatically satisfied through the structure of the code, and the remainder are dynamically enforced at run-time with data flow mechanisms. We prove bounds on the added overheads that are better, by at least one polynomial degree, than those of previous techniques. We propose a generic mechanism to implement the needed synchronization, and show it can be easily realized for a variety of targets: OpenMP, Pthreads, GPU (CUDA or OpenCL) code, languages like X10, Habanero, Cilk, as well as data flow platforms like DAGuE, and OpenStream and MPI. We also provide a simple concrete implementation that works without the need of any sophisticated run-time mechanism. Our experiments show our simple implementation to be competitive or better than the wavefront-synchronized code generated by other systems. We also show how the proposed mechanism can achieve 24% to 70% reduction in energy.

Keywords

Cite

@article{arxiv.1610.07236,
  title  = {Hybrid Static/Dynamic Schedules for Tiled Polyhedral Programs},
  author = {Tian Jin and Nirmal Prajapati and Waruna Ranasinghe and Guillaume Iooss and Yun Zou and Sanjay Rajopadhye and David Wonnacott},
  journal= {arXiv preprint arXiv:1610.07236},
  year   = {2016}
}
R2 v1 2026-06-22T16:29:00.626Z