Hasso-Plattner-Institut25 Jahre HPI
Hasso-Plattner-Institut25 Jahre HPI

Parallele Programmierung und Heterogenes Rechnen (Sommersemester 2021)

Dozent: Prof. Dr. Andreas Polze (Betriebssysteme und Middleware) , Sven Köhler (Betriebssysteme und Middleware) , Lukas Wenzel (Betriebssysteme und Middleware) , Max Plauth (Betriebssysteme und Middleware)
Website zum Kurs: https://osm.hpi.de/parProg/2021/

Allgemeine Information

  • Semesterwochenstunden: 4
  • ECTS: 6
  • Benotet: Ja
  • Einschreibefrist: 18.03.2021 - 09.04.2021
  • Lehrform: Vorlesung / Projekt
  • Belegungsart: Wahlpflichtmodul
  • Lehrsprache: Deutsch

Studiengänge, Modulgruppen & Module

Data Engineering MA
IT-Systems Engineering MA
  • IT-Systems Engineering
    • HPI-ITSE-E Entwurf
  • IT-Systems Engineering
    • HPI-ITSE-K Konstruktion
  • OSIS: Operating Systems & Information Systems Technology
    • HPI-OSIS-K Konzepte und Methoden
  • OSIS: Operating Systems & Information Systems Technology
    • HPI-OSIS-S Spezialisierung
  • OSIS: Operating Systems & Information Systems Technology
    • HPI-OSIS-T Techniken und Werkzeuge
  • SAMT: Software Architecture & Modeling Technology
    • HPI-SAMT-K Konzepte und Methoden
  • SAMT: Software Architecture & Modeling Technology
    • HPI-SAMT-S Spezialisierung
  • SAMT: Software Architecture & Modeling Technology
    • HPI-SAMT-T Techniken und Werkzeuge


Note: First meeting on Wednesday, 14.04.2021. No meetings on Mondays.

In this lecture you will learn the theoretical and practical solution available for parallel software development.

Since the very beginning of computers, processors were build with ever-increasing clock frequencies and instruction-level optimizations for faster serial code execution, such as ILP, caches, or speculative engines. Software developers and industry got used to the fact that applications get faster by just exchanging the underlying hardware. For several years now, these rules are proven to be no longer valid. Moore’s law about the ever-increasing number of transistors per die is still valid, but decreased structural sizes and increased power consumption demand stalling, or even reduced, clock frequencies. Due to this development, serial execution performance no longer improves automatically with the next processor generation.

In the many-core era that happens now, additional transistors are used not to speed up serial code paths, but to offer multiple execution engines (cores) per processor. This changes every desktop-, server-, or even mobile system into a parallel computer. The exploitation of additional transistors is therefore now the responsibility of software, which makes parallel programming a mandatory approach for all software with scalability demands.

The following topics and technologies will be covered:

  • Theory: Flynn’s Taxonomy, Strategies, Memory Models
  • Shared Memory: PThreads, C++11 Threads, Futures, OpenMP, TBB
  • Non-Uniform Memory Access: libnuma, PGASUS
  • On-Chip Accelerators: SIMD (SSE, AVX, AltiVec), Compression, LLVM-IR
  • External Accelerators: GPUs (CUDA), FGPAs (CAPI SNAP/MetalFS)
  • Shared Nothing: MPI, CloudCL, Actors (Erlang)
  • Profiling and monitoring with Hardware Performance Counters
  • Energy-Aware Computing


Participants should be familiar with the C and C++ programming languages, as well as basics of computer architecture and operating systems (concurrency, caching, memory management).

Lern- und Lehrformen

This lecture will follow a flipped classroom approach, with the following time distribution:

  • 75 % Follow the lecture on Tele-Task/Vimeo (pre-recorded and new material)
  • 25 %: Zoom meet-ups

About one hour per week will be an video-conferencing discussion, where we can cover your questions. You will also receive updates over the lecture, hands-on demos and tipps for your assignments.

Apart from the video discussion you can always ask questions in our GitLab forum.

All slides will be available in English. Newly recorded lecture videos and the online-discussion will be held in German, unless English is requested.


This lecture includes five pratical assignments.

Assignments have to be solved in teams of three persons. The oral exam admittance is granted if you achieve at least 50% in each assignment. We may provide one non-mandatory assignment at the end of the semester, that can be used to cancel out one failed assignment.

All assigments are submitted to and validated by our submission system at osm.hpi.de/submit. Submissions failing the validation script will be treated like not handed in (thus failed).


Although noted, in the timetable there will be no lectures on Monday morning. This is an reserved slot, where you can watch pre-record videos, but you can pick any time as convenient to you.

Our weekly Zoom meetups will take place each Wednesday, 11am.

For a detailed time table, video links and meetup links, visit https://osm.hpi.de/parProg/2021/ for updates.