This page describes this research topic briefly and (hopefully) simply.

The aim of parallel programming is to enable people to do bigger calculations more quickly. This is very useful for a wide variety of problems, including physics and chemistry calculations, graphics and weather forecasting. Many of these problems are so large that on ordinary computers they take a very long time, perhaps even days. However you can speed the calculations up if you split them into several pieces and get different computers to work on different pieces at the same time. These results can then be combined to produce the final answers.

However, parallel programming isn't easy. It can be hard to work out what pieces to split the program into so that the computers waste as little time as possible exchanging results with each other. You also need to keep track of many details, such as which computer is doing which calculation, and which computer holds which piece of data. The aim of my research is to make it easier to write parallel programs.

To do this, I use a branch of programming called functional programming. This is useful because it allows you to use a technique known as equational reasoning. When using this, you can replace a piece of a program with another piece which is different but produces the same results, and still be certain that the whole program produces the same results as before.

The method we use works as follows. We describe, or specify, the problem we want to solve simply using a functional language such as Haskell. We then use equational reasoning to change the program step-by-step, at each step introducing more details, until we end up with a parallel program which is written in a version of Haskell which is similar to the target parallel language. This program can then be transformed into a program in the target language. We aim to be able to use any parallel target language, but at the moment we are concentrating on C+MPI. You can find more details of how we go about this in the papers on my research page.

Joy GoodmanBack to my research page

Last updated: 14 Nov 2000