I’m currently a Research Fellow in the School of Computer Science and Statistics at TCD. I’m working on the EU H2020 project BONSEYES at present.

An overarching theme of my research is **domain-specific code generation**. In a nutshell, that means replacing libraries of hand-written code with tools that instead generate very good code for arbitrary instances of problems from the domain.

Many complex application domains such as custom-precision arithmetic, image signal processing, and deep learning have a nice mathematical structure that can be used to guide the generation of code using very complex domain- and computer-architecture-aware decision processes that a human would struggle with. If you were to write a library of hand-optimized functions to deal with these domains, you would end up with dozens or hundreds of variants of your library functions, specialized for all sorts of mathematical identities and special cases.

It turns out that a much easier and more flexible approach is to replace your library with a tool that automatically turns a *description of an instance* of your problem into code that implements that instance. That also means that we can throw decades of static analysis and optimization know-how at the problem, so the code you end up with is usually much more performant to boot!

Domain-specific code generation touches on many areas in computer science including old-school compiler optimization, computer architecture, parallel/concurrent programming, and algorithm design. It’s also very important to understand the mathematical structure of your specific problem domain, so that you can exploit those mathematical properties to make better decisions when generating code.

My work specifically has been in the areas of image processing, domain-specific parallel languages, streaming parallelism, customized floating point arithmetic, vectorization, and general-purpose ahead-of-time optimization. I’ve targeted embedded systems, general purpose processors, accelerators like the Xeon Phi, and GPGPU.

I’m currently working on domain-specific code generation for deep learning.

Our research group (the Software Tools Group) is led by David. We’re hiring!