Bridging General-Purpose and Domain-Specific Compilers with Synthesis

Alvin Cheung, Shoaib Kamil, Armando Solar-Lezama

This paper describes a new approach to program optimization that allows general
purpose code to benefit from the optimization power of domain-specific
compilers. The key to this approach is a synthesis-based technique to raise the
level of abstraction of general-purpose code to enable aggressive
domain-specific optimizations.
We have been implementing this approach in an extensible system called \system.
The system is designed around a collection of parameterized \emph{kernel
translators}. Each kernel translator is associated with a domain-specific compiler,
%for a distinct domain,
and the role of each kernel translator is to scan the input code in search of code
fragments that can be optimized by the domain-specific compiler embedded within
each kernel translator. By leveraging
general synthesis technology, it is possible to have a generic kernel
translator that can be
specialized by compiler developers for each domain-specific compiler,
making it easy to build new domain knowledge into the overall system.
We illustrate this new approach to build optimizing compilers in two different
domains, and highlight research challenges that need to be addressed in order
to achieve the ultimate vision.