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

Introduction to Parallel and Heterogeneous Computing (Sommersemester 2019)

Dozent: Prof. Dr. Andreas Polze (Betriebssysteme und Middleware) , Max Plauth (Betriebssysteme und Middleware) , Sven Köhler (Betriebssysteme und Middleware)
Website zum Kurs: https://www.dcl.hpi.uni-potsdam.de/teaching/parProg19/

Allgemeine Information

  • Semesterwochenstunden: 4
  • ECTS: 6
  • Benotet: Ja
  • Einschreibefrist: 26.04.2019
  • Lehrform: Vorlesung / Übung
  • Belegungsart: Wahlpflichtmodul
  • Lehrsprache: Englisch

Studiengänge, Modulgruppen & Module

IT-Systems Engineering BA


In this lecture you will learn basic theoretical and practical solutions 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 are planned be covered:

  • Theory: Flynn's Taxonomy, Strategies, Memory Models
  • Shared Memory Systems: 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 (OpenCL/CUDA), Xeon Phi, FGPAs (CAPI SNAP/MetalFS)
  • Shared Nothing Systems: MPI, CloudCL, Actors (Erlang)
  • Future Developments: RISC-V, OpenCAPI, Gen-Z

All slides will be available in English. The lecture will be held in German, unless English is requested.


All participents should be familiar with the usage of Linux based systems.

A fair knowledge of the C or C++ programming language is highly recommended


Grades will be determined by an oral exam at the end of the semester.

Assignments have to be solved in teams of two persons. The oral exam admittance is achieved if 50% of each assignment is solved correctly. We will 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 valided by our submission system at https://www.dcl.hpi.uni-potsdam.de/submit/. Submissions failing the validator script will be treated like not handed in (thus failed).


Wed, 11:00 - 12:30, H.E-51
Thu, 13:30 - 15:00, H.E-51

During the first week of the semester, the Wednesday lecture has been moved to H-2.57 due to the Future SOC Symposium. The lecture on Thursday (11. April) will not take place. We highly encourage you to visit the symposium instead.