Edinburgh Research Archive

Program lifting for acceleration

Abstract

The fast evolution of computer architectures brings the promise of increased performance. To leverage these advances and achieve high-performance, leg- acy code must be ported to new hardware. However, emerging hardware is increasingly complex and specialized, making the task of porting code highly challenging. Compilers must have a solid knowledge of the target architecture to generate efficient code, and developing such compilers for each new device is prohibitively costly in a scenario of rapid and constant change. New hardware is often programmed by specific interfaces or higher-level domain-specific languages (DSLs). DSLs embed knowledge about the applic- ation’s domain which is crucial for optimization. Hence, automatic translation or lifting of existing programs to hardware-oriented languages can bridge the gap between legacy implementations and unseen architectures and improve code portability. This thesis presents new solutions to automatically porting existing code to new architectures with Program Lifting: the translation of general-purpose code to higher-level application programming interfaces (APIs) or DSLs. It presents lifting techniques in the context of dense and sparse linear/tensor algebra, the fundamental blocks of many modern workloads, such as data science and ma- chine learning. This thesis shows that program lifting facilitates portability of code, enabling enormous performance gains on specialized hardware.

This item appears in the following Collection(s)