• Make 9 month plan for ASPLOS
  • Prototype multi-slice synthesis (first with Rosette)

It’s clear to me that there exists a process of searching for and taking advantage of hardware primitives. Currently, this task is completely unnamed. It’s taken as a given that it has to be done by hand. Nobody is claiming it can’t be automated, because nobody’s aware of exactly what it is…you can’t work on automating something that doesn’t have a name.

We search for computational primitives by hand. It’s done by our physicists, electrical engineers, hardware designers, computer architects. Similarly, as we search for the primitives, we build the tools which can harness the primitives: compilers.

But why couldn’t primitive search be done automatically? When it’s done automatically, its byproduct will be a compiler. The primitive-finding algorithm will be looking for a way to implement a given computation using a primitive; it seems natural, then, that when such a primitive is found, it will come with a “proof”, which is hopefully in the form of a reusable compilation routine to compile from an instance of the computation down to the primitive.

Reflection on Goals