Parallel Programming

Preface

The main objective of the course on Parallel Programming is to introduce the students into the most important parallel programming concepts, computation models, languages and developments tools. Accordingly the course can be divided into three main parts. Part 1 introduces the main concepts, computation models and languages. Chapter 1-4 belong to this part. The second part gives detailed description of the most important programming paradigms and their language supports. Finally, the third part describes those techniques and tools that are necessary for developing parallel programs.

We tried to include materials that are still relevant for the students and not only parallel programming pecularities. As a consequence there is no chapter for data parallel programming which has lost practical importance recently as SIMD type parallel computers have died out. Only a short introduction to data parallel programming can be found in Chapter 4.

On the contrary, we believe that message passing programming become very important and popular in the 90s and hence we allocated even two chapters for explaining this paradigm. Chapter 6 introduces message passing parallel programming based on Occam. Though Occam has also lost its practical importance, it is an excellent, clean language to introduce the message passing programming paradigm. More than that our parallel computing labs are equipped with transputers and hence it is important to teach students how to program these devices. Chapter 7 describes MPI the most up-to-date message passing programming environment which is a standard supported by every parallel computer vendor.

Finally, real-time programming is not considered as a parallel programming paradigm. Why is it included in the course material? It shows many similarities with the shared-memory and object-oriented paradigm extending them with the strict real-time requirements. Many embedded systems that use multiple processors are constructed to work in real-time environments. That is the reason why we believed that the current course cannot be complete without describing the real-time programming paradigm.