Productive spatial accelerator programming
We propose a productive and efficient programming model to overcome the challenges posed by the end of Moore’s law. Our model bases on a fundamentally new spatial viewpoint that considers the computational structure of applications. The growth of the computing industry as well as the development of society at large has relied for 50 years on an exponential scaling law that is now coming to an end. The combination of multiple specialized components into a fundamentally heterogeneous system is one of the most promising approaches that drives the IT industry. Latest advances in computer architecture and silicon design enable cost-effective specialized accelerators. Those range from single-purpose designs, such as deep neural network chips, to general purpose graphics processing units and are combined into complex systems. However, programming these heterogeneous spatial systems that range from single systems on chip to million-core supercomputers is a fundamental challenge of our time. Prevalent parallel programming abstractions largely ignore the structure of the computation and guide programmers to design threads of execution that are scheduled to the machine. We depart from this temporal model to a spatial formulation where we express programs as parametric graphs that are mapped as first-class objects by a human-guided compilation system. We ensure productivity by designing a Python-based frontend and integrate the system with modern web technology. Our programming, compilation, and tuning system will substantially advance the state of the art in computing by supporting the graphical mapping of program graphs to spatial accelerators. We will demonstrate our methods on three challenging real-world applications in important domains. We strongly believe that, without holistic spatial programming, the growing complexity and inefficiency of heterogeneous programming will create a scaling wall that will severely limit our future computational capabilities.