2017 Needham Lecture

When: 20th Nov 2017, 18:00 - 20th Nov 2017, 21:30
Where: The Royal Society, 6-9 Carlton House Terrace, London, SW1Y 5AG
Town/City: London
Further Information: Further Information

Dr Alastair Donaldson, 2017 winner of the prestigious Needham Award, will deliver his lecture entitled 'Many-core programming: How to go really fast without crashing' at the renowned Royal Society.


Software must be reliable, working well enough, enough of the time. Software also needs to be efficient if it is to be useful. In some domains - robotic surgery, or self-driving cars, to name two examples - software needs to be both very efficient and very reliable. Due to the wide range of devices on which software now runs, software portability is also highly desirable.

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 will focus 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. Alastair will then showcase three different areas where he and his research group have 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.