People of ACM European Chapters - Alastair Donaldson
September 26, 2017
Can you briefly describe your own line of research and how you became interested in this area?
My research focusses on correct and efficient programming of highly parallel systems, such as multicore CPUs and manycore GPUs. I got interested in this when working at Codeplay Software in Edinburgh, after I finished my PhD in Glasgow. At Codeplay, we were implementing a high-level parallel programming model called Offload, originally for the IBM/Sony/Toshiba Cell Broadband Engine processor that was in the PlayStation 3 games console. I was working on the runtime system for this implementation, and I introduced a concurrency-related bug that would only manifest occasionally but with serious consequences. It took me more than two weeks to actually get to the root cause of the bug, which turned out to be stack corruption due to a rogue direct memory access (DMA) transfer.
I had done a PhD on formal verification using model checking, and this experience with the Cell processor made me really wish that I'd had a model checker or systematic testing tool to help me find and fix this concurrency bug and others like it. Based on this, I wrote a proposal to EPSRC—one of the main UK funding agencies—for a postdoctoral fellowship, which I took to the University of Oxford to work on formal verification for multicore software, and I've worked on related topics since then.
In your area of research, what recent advance/emerging subfield will yield important advances in the years ahead?
I think the most exciting research will be around the design of customized accelerators to provide high performance in important domains. By exploiting domain-specific knowledge, one can pull all kinds of cool tricks, such as working with custom bit-widths for floating-point, equipping memory modules with processing capabilities, and generating bespoke cores for particular classes of application. This is going to present real challenges for programming languages (the boundaries between programming languages, compilers, and architectures will become blurred) and testing/verification. Exciting times ahead!
Can you tell us a little about the ACM Student Chapter at Imperial College London?
We typically have around 20 active student members per year, with the activities of the chapter being open to the whole department. The most important thing the chapter is doing right now is organising the 2017 edition of the Imperial College Computing Student Workshop (ICCSW), which is open to students from all universities worldwide, but organised by the members of our student chapter.
What advice would you give to a younger colleague just starting out in your field?
For someone starting out in programming languages, high performance computing or a related area, my main advice is to be brave about building tools and artifacts, in parallel with writing original research papers. A lot of non-theoretical academic work ends up dying due to a lack of long-lasting infrastructure; we end up with tools that only work on a few examples, evaluations that don’t use enough benchmarks, etc. You can have real impact by contributing tools that the broader community can use, or new benchmark suites that become de facto standards.
My mentor at Oxford was Daniel Kroening, whose C Bounded Model Checker (CBMC) tool is a really big deal in the analysis of system-level software. When I asked him about the time investment associated with building and maintaining CBMC, and the fact that one doesn't write papers about maintenance work, he said something along the lines of: "Hundreds of papers present works that aim to go beyond what CBMC can do, and of course all of those papers claim to be better than CBMC on a particular set of benchmarks. But most of those tools don't really work well beyond those benchmarks, so they quickly die, while CBMC becomes better and better known thanks to them citing it." My understanding is that his successful startup company diffblue is based on CBMC, so I think all those development efforts have paid off!
Alastair Donaldson is a Reader in the Department of Computing at Imperial College London, where he teaches courses on object-oriented programming and software reliability. He also leads Imperial’s Multicore Programming research group, serves as the Deputy Head of the Programming Languages and Systems section and is the faculty advisor for Imperial’s ACM Student Chapter.
Donaldson was recently recognized with the BCS Roger Needham Award for contributions to rigorous program analysis methods in the field of manycore programming.