Verteilte Programmierung und numerische Algorithmen Übung
Allgemeine Informationen
Veranstalter: Peter Buchholz
Tel.: (0231) 755 4746
Email: peter.buchholz (at) udo.edu
Sprechstunde: Donnerstag 10:00-11.30 und n.V.
Zeit:
- Mi 10:15 - 12:00, OH 16 - R. 205 (Vorlesung)
- Mo 16:15 - 18.00, OH 16 - R. 205 (Übung)
Die Vorlesung führt in die Grundlagen der parallelen Programmierung ein. Dazu wird ein kurzer Überblick über parallele Rechnerarchitekturkonzepte gegeben. Anschließend beschäftigen wir uns mit theoretischen Konzepten zur Realisierung und Bewertung paralleler Programme. Den Schwerpunkt der Vorlesung bilden konkrete Programmierkonzepte und -bibliotheken zur Realisierung paralleler Software. Dazu werden der Standard MPI zur so genannten Message-Passing-Programmierung, sowie Pthreads und OpenMP zur Thread-Programmierung vorgestellt. Auch wenn Anbindungen der genannten Programmierumgebungen an unterschiedliche Programmiersprachen existieren, sind die Sprachen C und C++ doch die am weitesten verbreiteten Sprachen zur Realisierung paralleler Programme. Die Vorlesung nutzt deshalb C und C++ als Basissprachen und stellt die konkreten Algorithmen in diesen Sprachen vor. Grundkenntnisse in C und/oder C++ werden deshalb vorausgesetzt oder müssen vor Beginn des praktischen Teils der Vorlesung erworben werden.
Anwendungsbeispiele werden insbesondere aus dem Bereich der numerischen Mathematik gewählt, da diese Anwendungen ein sehr großes Parallelisierungspotenzial besitzen. Es werden nur numerische Basisprobleme wie die Multiplikation von Matrizen oder die Lösung linearer Gleichungssysteme untersucht, so dass über die im Informatikstudium üblichen Mathematikkenntnisse hinaus keine weiteren spezifischen Vorkenntnisse erforderlich sind.
Die Vorlesung basiert im Wesentlichen auf dem folgenden Buch
- T. Rauber, G. Rünger. Parallele Programmierung. Springer 3. Aufl. 2012
Das Buch ist als eBook in der TU-Bibliothek frei verfügbar.
Weitere relevante Bücher
- P. Pacheco. An Introduction to Parallel Programming. Morgan Kaufman 2011.
- D. P. Bertsekas, J. N. Tsitsiklis. Parallel and Distributed Computation - Numerical Methods. Prentice Hall 1989.
Web-Seiten zur den verwendeten Programmierbibliotheken
Gliederung der Vorlesung
1) | Einführung | Folien |
---|---|---|
2) | Parallele Rechnerarchitekturen | Folien |
3) | Parallele Programmiermodelle | Folien |
4) | Message-Passing-Programmierung mit MPI | Folien |
5) | Thread-Programmierung mit Pthreads | Folien |
7) | Beispiele paralleler Algorithmen | Folien |
Folien werden vorlesungsbegeitend zur Verfügung gestellt!
Übungen
In den Übungen sollen die theoretischen und konzeptionellen Inhalte der Vorlesung vertieft werden. Insbesondere soll das praktische Abreiten in den drei behandleten Programmierumgebungen eingeübt werden. Dies setzt voraus, dass die Teilnehmerinnen und Teilnehmer, die Übungsaufgaben praktisch bearbeiten, also wirklich Programmieren! MPI, Pthreads und openMP sind als freie Software unter Linux verfügbar.
Die Bearbeitung der Übungsaufgaben ist nicht Voraussetzung für die Modulprüfung, wird aber trotzdem dringend empfohlen.
Datum | Inhalt | Ü-Blatt |
---|---|---|
28.10. | Blatt 1 (Verbindungsnetzwerke, Einbettungen) | Blatt 1 |
4.11. | Blatt 2 (Verbindungsnetzwerke, Routing) | Blatt 2 |
11.11. | Blatt 3 (Caches) | Blatt 3 |
18.11. | Blatt 4 (Paralelitätskonzepte) | Blatt 4 |
25.11. | Blatt 5 (Parallele Vektor-Matrix-Algorithmen) | Blatt 5 |
2.12. | Blatt 6 (Kommunikationsoperationen) | Blatt 6 |
16.12. | Blatt 7 (MPI) | Blatt 7 |
13.1. | Blatt 8 (MPI, Pthreads) | Blatt 8 |
27.1. | Blatt 9 (Pthreads, OpenMP) | Blatt 9 |
Am 20.1. keine allgemeine Übung, sondern individuelles Arbeiten an den Programmieraufgaben.
Übungsblätter werden als pdf-Dateien übungsbegleitend zur Verfügung gestellt.