Fighting for Software Correctness in a Massively Parallel World
Senior Lecturer, leader of the Multicore Programming Group, Department of Computing, Imperial College London
The rise of multi- and many-core architectures has led to an explosion in both the number of systems on the market that exhibit massive parallelism, and the range of languages and libraries for programming these systems. This creates exciting opportunities for developing high performance applications, but the resulting heterogeneity in platforms and programming models presents a serious challenge for software developers and language implementers. Developers must grapple with a rapidly changing ecosystem of tools, and are faced with concurrency-related errors that only occur non-deterministically and evade traditional debugging methods. Implementers are constantly playing catch-up to make their compilers conform to the latest parallel programming language specs, while ensuring generation of efficient code for current and next-generation architectures. In this practically focussed talk I will demonstrate first-hand some of the perils associated with many-core programming, showcasing the effects of data races, relaxed memory behaviours and compiler defects. I will then give an overview of state-of-the-art techniques, both from the Multicore Programming Group at Imperial and from other researchers, that can help in the fight for correctness in this ever-changing massively parallel world.