Introduction to Parallel Computing

This page is presenting the course of Introduction to Parallel Computing. You can find all the information relative to this course on this page and some materials linked to the course. This course will be given in english in short lectures of 30 minutes with breaks of 5 minutes in-between).

Students are expected to know the **C language**,
to have followed a course on
algorithms and data structures, and know basics on computer
architecture.

This course is an introduction to parallel computing and aims at teaching basic models of parallel machines and tools to program them. It is an introduction to parallel programming, how to parallelize programs, and how to use basic tools like MPI and POSIX threads.

- Parallel Programming Platforms.
- Principles of Parallel Algorithm Design.
- Analytical Modeling of Parallel Programs.
- Parallel Programming Paradigms.
- Programming Shared Address Space Platforms.
- Programming Message Passing Platforms.
- pthreads.

In the morning we will explore the basic models for parallel machines, methods for decomposing problems into smaller tasks, and their mapping to processors. In the afternoon we will dive into the message passing and shared memory paradigms (pthreads). There we will go through some interesting algorithms and case-studies.

The lectures will be held in Kroghstræde 3 room 3.114
between 9-12h and 13-16h.

**Errata**: I mentioned Open MP during the
lectures. I meant Open MPI (the not-so-stable implementation of
MPI). Open MP is the directive based programming language (extension of C by using #pragma).

- Introduction slides.
- Platforms and PRAM slides.
- Analytical modeling slides.
- Task decomposition and mapping slides.
- Programming using MPI slides.
- Shared memory paradigm slides.
- Non-blocking algorithms slides.
- Matrix algorithms slides.
- Model-checker case-study slides.

Any question or remark relative to the course is welcome.

- Alexandre David homepage.