The PreMapp Project

Modern computers at their heart consist of multiple processing elements. These multi-core processors have the capability of delivering high performance with reduced energy consumption, but are highly challenging to program. As the number of cores is relatively small in number at present, operating systems can make good use of them. In the near future, however, the number of cores will rise and vary in type and capability. Currently, this means that programmers will soon have to think in parallel and work out how to partition different parts of their programs to run on different types of cores. Each time this program is run on a new platfrom or the current one is upgraded, this task will have to be repeated. Due to the sheer complexity of this process, as hardware increases in size and complexity, software will not be able to utilise its potential, leading to software stagnation.

This project aims to prevent this software stagnation by investigating new techniques to automatically learn how to utilise new multi-core platforms. Using ideas and techniques first developed in artificial intelligence, we will develop a system that automatically learns how to adapt software to work on new platforms. It uses statistical machine learning to determine what type of cores to use to give the best performance and also predicts when software is out-of date.

The strategic aims of the project are to:

  • Solve the problem of mapping parallel programs to heterogeneous mult-cores.
  • Explore and develop a parallel mapping optimisations space suitable for supervised and reinforcement learning.
  • Explore and model the impact of external workload on optimal task mapping.
  • Demonstrate that automatic compiler techniques can quickly exploit new heterogeneous processing elements.

This project is sponsored by EPSRC grant EP/H051988/1.