Parallel Programming (IN2147) (Lecture)

Lecturer (assistant)
Duration2 SWS
TermSommersemester 2023
Language of instructionEnglish



  • There will be no lecture and exercise in the first week of the semester (Mo 17.04.2023 & Tue 18.04.2023)

This lecture will be held in English.


Participants need to have experience with working on Linux or Linux-like systems as well as experience in programming C/C++.

Course Content

The course starts with a motivation for parallel programming and a classification of parallel architectures. It focuses first on parallelization for distributed memory architectures with MPI. It introduces the major concepts, e.g., point to point communication, collective operations, communicators, virutal topologies, non-blocking communication, single-sided communication and parallel IO. In addition, it covers the overall parallelization approach based on four phases, i.e., decomposition, assignment, orchestration and mapping. The next section presents dependence analysis as the major theoretical basis for parallelization. It introduces program transformations and discusses their profitability and safety based on data dependence analysis. The second major programming interface in the course is OpenMP for shared memory systems. This section covers most of the language concepts as well as proposed extensions. In the last part, the lecture presents novel programming interfaces, such as PGAS languages, threading building blocks, CUDA, OpenCL, and OpenACC.

For more information, please see TUMOnline.