Using program synthesis to make your code run faster

Talk by Elizabeth Polgreen (University of Edinburgh)

The computer landscape has changed significantly over the last decade with the proliferation of specialised hardware accelerators. While they promise excellent performance, they are often idiosyncratic and difficult to program. To overcome this a range of languages and DSLs have been proposed which ease the burden of programming and allow the generation of highly efficient code. However, this means existing legacy code must be rewritten for each newly emerging language. This is an onerous task and a massive barrier to adopting new languages and hence hardware. So what if we could automate this?

In this talk, I will present an overview of our work [1] [2] using program synthesis techniques to automatically lift code in low-level languages to high-level DSLs. Specifically, we develop custom synthesis algorithms, based on techniques in the formal synthesis literature, and demonstrate that they can lift tensor-manipulating code in real-world low-level code into high-level DSLs, enabling speed-ups of up to 20x with minimal developer effort.

[1] C2TACO: Lifting Tensor Code to TACO – José Wesley De Souza Magalhães, Jackson Woodruff, Elizabeth Polgreen, Michael F P O’Boyle

[2] mlirSynth: Automatic, Retargetable Program Raising in Multi-Level IR using Program Synthesis – Alexander Brauckmann, Elizabeth Polgreen, Tobias Grosser, Michael F P O’Boyle

Slides