Many-core architectures, including CPUs with tens of cores and GPUs with hundreds or thousands of cores, present exciting opportunities for constructing high-performance applications.  They also present serious programmability challenges for software developers.  Writing high-performance code that is correct, and in particular that is portable across a range of architectures, is difficult.  Innovations are required both in the design of programming languages and the provision of program analysis tools to better support developers in the construction of many-core software.

The Multicore Programming Group, led by Alastair Donaldson, work on various topics related to reliable many-core programming, all of which are relevant to the aims of the HiPEDS CDT.  We are interested in applications from prospective HiPEDS students in areas including, but not limited to:

* Testing concurrent software
* Reasoning formally about the correctness of parallel programs
* Designing language extensions to support reliable multi- and many-core programming
* Understanding the memory consistency models of modern processors
* Testing compilers for many-core languages
* Performance optimization for many-core programs

Please see the Multicore Programming Group web pages ( to get a flavour for the sort of work we do, and contact Alastair Donaldson ( if you wish to discuss a specific potential HiPEDS project.