Unfortunately, these three requirements - reliability, efficiency and portability - are often at odds with each other. This is particularly the case in the world of "many-core" architectures, which use large numbers of processing elements to compute results in a highly parallel fashion. Many-core architectures can be used to accelerate software so that it runs very efficiently, and are present in every modern desktop, laptop, tablet and smartphone.
Many-core programming languages are usually low-level, providing the "close-to-the-metal" capabilities needed for high performance. Unfortunately, this makes it difficult to write portable many-core software, and the difficulty of low-level programming means that it is easy to accidentally introduce subtle errors into an application.
This has led to an interest in higher-level languages that offer better portability and reduce the scope for programmer errors, but which must be "compiled" down to lower-level forms. While appealing, such languages lead to layers of abstraction, and reliability suffers due to errors in translating code across abstraction layers.
This lecture focused on the challenges of "going really fast without crashing" in the context of many-core systems, using practical examples to demonstrate the main problems associated with programming many-core systems. The lecture also showcased three different areas where Alastair's research group contributed to getting a handle on these problems: (1) static analysis for low-level many-core code, (2) a high-level programming model for portable programming, and (3) a "fuzzing" technique to identify bugs in many-core compilers.
Watch Dr Alastair Donaldson's Needham lecture
More about Dr Alastair Donaldson
Alastair Donaldson is a Reader and EPSRC Early Career Fellow in the Department of Computing, Imperial College London, where he leads the Multicore Programming Group.
He has published more than 70 peer-reviewed papers on programming languages, formal verification, software testing and parallel programming, and leads the GPUVerify project on automatic verification of GPU kernels - a collaboration with Microsoft Research - and the GLFuzz project on automated testing for graphics shader compilers.
Alastair coordinated the FP7 project CARP: Correct and Efficient Accelerator Programming, which completed successfully in 2015. Before joining Imperial, Alastair was a Visiting Researcher at Microsoft Research Redmond, an EPSRC Postdoctoral Research Fellow at the University of Oxford and a Research Engineer at Codeplay Software Ltd. He holds a PhD from the University of Glasgow.