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.  Am 31. Mai, 14. Juni und am 21. Juni finden keine Übungen statt. (Der Termin am 14. Juni fällt wegen einer Stromabschaltung aus.)

Da die Vorlesungstermine am 30. Mai und am 20. Juni wegen Feiertagen ausfallen, werden diese in anderen Wochen nachgeholt, indem der Übungstermin am Freitag der darauffolgenden Woche für die Vorlesung genutzt wird.

Am 14. Juni finden wegen einer Stromabschaltung in der Helmholtzstraße 18 keine Übungen statt.

Am 21. Juni finden keine Übungen statt. Sowohl am 27. als auch 28. Juni finden Vorlesungen statt. Bitte beachten Sie, dass wir für die Vorlesung am Freitag, den 28. Juni (zum Übungstermin), in den Raum 1.20 in der Helmholtzstraße 18 gehen.

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.

Vorlesungen

Begleitend zur Vorlesungen werden hier kapitelweise die zugehörigen Vortragsfolien und ggf. weitere Materialien veröffentlicht:

Ü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.pdf

Kontakt

Dr. Andreas F. Borchert
Helmholtzstr. 20
Raum 1.23