Universität Ulm, Fakultät für Mathematik und Wirtschaftswissenschaften, IAI, Vorlesungen, WS 2013/2014
Parallele Programmierung mit C++
im Wintersemester 2013/2014
Veranstalter Dr. Andreas F. Borchert
TypVorlesung mit Übungen
Umfang 2 V + 2 Ü (6 LP)
Termin Termine:
Vorlesung: Montag 10-12 Uhr, Helmholtzstraße 18, E20
Übungen: Mittwoch 10-12 Uhr, Helmholtzstraße 18, E44
Es finden keine weiteren Vorlesungen oder Übungen mehr statt.
Beginn

Montag, den 14. Oktober, 10 Uhr in der Helmholtzstraße 18, E20

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üfungsmodalitäten hängen von der Zahl der Teilnehmer ab.

Inhalte
  • Modellierung paralleler Systeme
  • Architekturen paralleler Systeme
  • Parallelisierungstechniken:
    • Threads
    • OpenMP
    • MPI einschließlich dem Studium einer einfachen Implementierung auf Basis von TCP/IP
    • GPUs mit CUDA, ggf. auch OpenCL
  • Design-Patterns paralleler Systeme
Skript

Die in der Vorlesung verwendeten Folien und Beispiele werden hier begleitend veröffentlicht:

Voraussetzungen

Es werden einführende Vorlesungen in die praktische Informatik vorausgesetzt. Denkbar sind entweder Allgemeine Informatik I und II oder Praktische Informatik I und II. Insbesondere hilfreich (aber nicht zwingend notwendig) wären

  • Grundlegende Kenntnisse in Unix/Linux
  • Grundlegende Kenntnisse von Netzwerken, 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.
Übungen

Bitte melden Sie sich zu den Übungen im SLC an.

Die ersten Übungsstunden dienen u.a. auch der Einführung von C++ für all diejenigen, die mit C++ noch nicht vertraut sind. Die hierzu verwendeten Folien stehen zur Verfügung.

Blatt Abgabetermin Angabe Sonstiges Lösung
1 23.10.2013 [PDF] Vorgegebene Schnittstelle: Nim.hpp; eine Vorlage für Nim.cpp; zum Testen fertige Objekte für Debian-Linux, 64 Bit: Nim.o TestNim.o; und zum Zusammenbau ein makefile.

Hinweis zu den Aufgaben 1 und 2: Achten Sie darauf, dass die erste Prozessdefinition diejenige ist, die die einzelnen anderen Prozesse mit dem ||-Operator kombiniert. Sonst werden die anderen Prozessdefinitionen von dem trace-Werkzeug aus dem csp.tar.gz-Werkzeug ignoriert.

Aufgabe 1: handshake.csp, handshake2.csp; Aufgabe 2: pipe.csp; Aufgabe 3: Nim.cpp TestNim.cpp
2 30.10.2013 [PDF] Computer.cpp, Computer.hpp, Game.cpp, Game.hpp, Human.cpp, Human.hpp, Nim.cpp, Nim.hpp, Player.hpp, PlayerVsComputer.cpp, makefile
3 06.11.2013 [PDF] dnsreq.csp, matrix.hpp
4 13.11.2013 [PDF] mapped_file.hpp pgrep.cpp pgrep2.cpp
5 20.11.2013 [PDF] condition.hpp condition.cpp
6 27.11.2013 [PDF] gen-mp.pl Makefile, barrier.hpp, jacobi-thread.hpp, jacobi.hpp, matrix.hpp, testit.cpp
7 04.12.2013 [PDF] chash.hpp, testit.cpp
8 11.12.2013
verlängert bis zum 18.12.2013
[PDF] Makefile, prootfinder.hpp, romberg.hpp, rootcnt.hpp, rootfinder.hpp, testcount.cpp, testfinder.cpp, testpfinder.cpp, testpool.cpp, testtpfinder.cpp, tpool.hpp, tprootfinder.hpp
9 18.12.2013
verlängert bis zum 8.01.2014
[PDF] Makefile, integer.hpp, mpi-primes.cpp, primes.cpp, primes.hpp
10 08.01.2014
[PDF] mandelbrot.tar.gz
11 15.01.2014
[PDF] sharedmem.tar.gz
12 22.01.2014
[PDF] tracer.tar.gz (nicht-parallelisierte Vorlage, Aufruf von gdk_pixbuf_save korrigiert am 16.01.2014) cuda-tracer.tar.gz (Hinweis: erzeugt jetzt anders als in der Vorlage PNGs statt JPGs)
13 29.01.2014
[PDF] jacobi.tar.gz (Vorlage ohne geeignetes Abbruchkriterium)
14 10.02.2014
[PDF] (Wurde unmittelbar nach den Übungen aktualisiert. Ich hatte mich hier zunächst geirrt. Eine Synchronisierung der Schreibzugriffe auf den Hauptspeicher ist hier nicht notwendig. Die Hinweise im Übungsblatt wurden entsprechend vereinfacht und das Blatt wird dadurch auch deutlich einfacher.) Noch zwei Hinweise: Beachten Sie bitte, dass die Erzeugung von PNG-Dateien recht aufwendig ist. Es ist ggf. sinnvoller, die Realzeit ohne die Erzeugung der PNG-Datei zu messen bzw. statt PNG-Dateien das JPG-Format zu wählen, das sich sehr viel schneller erzeugen lässt. Die Vorlage sollte noch dahingehend korrigiert werden, dass sie mit nicht durch 32 teilbaren Höhen- und Weitenangaben korrekt umgehen kann. mandelbrot.tar.gz (Konventionelle Vorlage)
Weitere Materialien