Parallele Programmierung mit C++

Ziel der Vorlesung ist es, parallele Anwendungen insbesondere auf technischer Ebene zu modellieren und effizient zu implementieren. Die Inhalte sind sehr praxisorientiert und bieten eine Übersicht der gängigsten Parallelisierungstechniken und Architekturen. C++ kommt hier zum Einsatz, da es die einzige moderne Programmiersprache ist, die bei allen vorgestellten Techniken eingesetzt werden kann.

Termine

  • Vorlesung: Donnerstag, 16–18 Uhr, Helmholtzstraße 18, Raum E.60.
  • Übungen: Freitag, 14-16 Uhr, Helmholtzstraße 18, Raum E.44.

Inhalt

  • Modellierung paralleler Systeme mit der Prozessalgebra CSP
  • Architekturen paralleler Systeme, Speichermodelle
  • Parallelisierungstechniken: Threads, OpenMP, MPI, GPUs mit CUDA und OpenCL
  • Design-Patterns paralleler Systeme

Voraussetzungen

Es werden einführende Vorlesungen in die praktische Informatik vorausgesetzt. Hilfreich (aber nicht zwingend notwendig) wären grundlegende Kenntnisse in

  • systemnaher Programmierung,
  • Unix/Linux einschließlich der Shell-Ebene und
  • Netzwerkprogrammierung, insbesondere TCP/IP und BSD-Sockets, wie sie beispielsweise in Systemnahe Software II vermittelt werden.

Eine Einführung in C++ findet zu Beginn in den Übungen statt. Wer keine Vorkenntnisse zu C++ hat, sollte diese Gelegenheit nutzen.

Prüfungen

Die Vorlesung ist für die Master-Studiengänge Mathematik, Wirtschaftsmathematik, Informatik und Medieninformatik vorgesehen. Bei den Bachelor-Studiengängen Informatik und Software-Engineering kann dies als Schwerpunktfach gewählt werden. (Die Einzelheiten dazu lassen sich dem Modulhandbuch entnehmen.) Die Prüfung erfolgt mündlich zu individuell verabredeten Terminen.

Übungen

  • Melden Sie sich bitte für die Teilnahme in den Übungen bei SLC an.
  • Die Übungen sind zeitintensiv und integraler Teil einer praxisorientierten Vorlesung. Die Inhalte aus den Übungen sind prüfungsrelevant, die Teilnahme an den Übungen ist aber nicht Voraussetzung zur Prüfungsanmeldung.

Folien zur Einführung in C++:

Übungssitzungen:

Übungsblätter:

BlattAusgabeAbgabePDFMaterialLösung
126. April 20193. Mai 2019blatt01.pdfautomat.csp, fehlfunktion.csp
23. Mai 201910. Mai 2019blatt02.pdfhandshake.csp, dnsreq.csp
310. Mai 201917. Mai 2019blatt03.pdfcopyfile.cpp, mapped_file.hpp, readfile.cpp, regextest.cppengine.hpp, pgrep.cpp
417. Mai 201924. Mai 2019blatt04.pdfcondition.hppcondition.cpp, testit.cpp
524. Mai 20197. Juni 2019blatt05.pdfgdk-pixbuf-demo.tar, gen-mp.pl
613. Juni 201927. Juni 2019blatt06.pdfomp-jacobi.cpp
75. Juli 201912. Juli 2019blatt07.pdf
812. Juli 201919. Juli 2019blatt08.pdfvorlage.tar.gz
926. Juli 2019blatt09.pdf

Kontakt

Dr. Andreas F. Borchert
Helmholtzstr. 20
Raum 1.23