The course focuses on three fields:
- Parallel computer architecture and parallel software. This includes the presentation of processor and memory systems of parallel computers. Furthermore, different types of parallelism (on instruction level, on computational task level and data parallelism) as well as performance models for parallel systems is described.
- Programming of multicore systems with OpenMP. Introduction to basic as well as more advanced concepts of OpenMP.
- Programming of cluster systems with MPI. Presentation of MPI and approaches for the parallelisation of programs.
Hardware and software for different platforms on CSC and PDC will be introduced at the first laboratory session.
The general aim of the course is to give basic knowledge of theory as well as hardware and software methods for parallel computations, especially issues in hardware and software as well as the interaction between them. Special focus will be put on the programming of multicore and cluster architectures. Also research questions in this field will be brought up.
After passing the course, the student should be able to:
- account for properties of different parallel architectures,
- discuss the efficiency of multicore systems and cluster systems,
- assess the potential for and limitations of parallel computations as well as improve scalability and efficiency of parallel computations,
- choose between different techniques for parallelisation, depending on application and the current parallel system,
- write parallel programs for multicore processors and cluster systems with OpenMP and MPI.